1.文件管理概述
1.Bash Shell對文件進行管理
談到Linux文件管理,首先我們需要了解的就是,我們要對文件做些什么事情? 其實無非就是對一個文件進行、創建、復制、移動、查看、編輯、壓縮、查找、刪除、等等 例如 : 當我們想修改系統的主機名稱,是否應該知道文件在哪,才能去做對應的修改?
2.內容摘要
系統目錄結構 文件路徑定位 文件管理命令 文件類型file 鏈接文件ln 文件編輯vim
2.系統目錄結構
幾乎所有的計算機操作系統都是使用目錄結構組織文件。具體來說就是在一個目錄中存放子目錄和文件, 而在子目錄中又會進一步存放子目錄和文件,以此類推形成一個樹狀的文件結構,由於其結構很像一棵樹的分支, 所以該結構又被稱為“目錄樹”。 Windows: 以多根的方式組織文件 C: D: Linux:以單根的方式組織文件 /
如下圖為Centos7的目錄結構
1.存放命令相關的目錄
/bin, 普通用戶使用的命令 /bin/ls, /bin/date /sbin,管理員使用的命令 /sbin/service,poweroff,useradd…
只要看到bin路徑,就應該意識到放的是可執行文件
2.存放用戶相關數據的家目錄,比如:windows不同的用戶登陸系統顯示的桌面背景不一樣
/home,普通用戶的家目錄, 默認為/home/username
環境變量的東西不要刪,刪掉試一下
/root,超級管理員root的家目錄, 普通用戶無權操作
3.系統文件目錄
/usr,相當於C:Windows /usr/local,軟件安裝的目錄,相當於C:Program /usr/bin/,普通用戶使用的應用程序(重要) /usr/sbin,管理員使用的應用程序(重要) /usr/lib,庫文件Glibc 32bit /usr/lib64,庫文件Glibc 64bit
# 1
df -h #df -h查看系統中文件的使用情況
Size 分割區總容量
Used 已使用的大小
Avail 剩下的大小
Use% 使用的百分比
Mounted on 路徑地址
# 2
du -sh * 查看當前目錄下各個文件及目錄占用空間大小
du -sh /usr/
# 3 標准是實現自動化的基礎
不通主機的相同的軟件,都放在相同路徑下,便於管理,實現自動化
現在一般安裝的軟件,不放在/usr/local下了
# 4 總共有一千來個命令
ls /usr/bin/ | wc -l
ls /usr/sbin/ | wc -l
# 5 查看命令依賴那些庫文件
ldd /bin/ls
4.啟動目錄
/boot 存放的系統啟動相關的文件,例如:kernel,grub(引導裝載程序)
ls /boot
# linux內核
# 啟動機器時可以選擇的啟動模式
5.配置文件目錄
/etc,極其重要,后續所有服務的配置都在這個目錄中 /etc/sysconfig/network-script/ifcfg-,網絡配置文件 /etc/hostname,系統主機名配置文件,主機名很重要,有些特殊服務要依賴主機名,沒有主機名會報錯起不來;修改了要重啟:reboot /etc/resolv.conf,dns客戶端配置文件,域名解析服務器,一般我們不配置,因為網卡的配置好了,會覆蓋掉它,網卡的優先級高 /etc/hosts,本地域名解析配置文件,域名解析,先找自己的hosts,再去域名解析
# 1
/etc/hosts 對應windows C:windows/system32/drivers/etc/hosts,黑客釣魚網站
# 2 測試修改
yum install httpd -y
systemctl stop firewalld
echo "lqz NB" >/var/www/html/index.html
systemctl start httpd
6.可變的目錄與臨時目錄
/var,存放一些變化文件,比如/var/log/下的日志文件,登陸日志 /var/tmp,進程產生的臨時文件 /tmp,系統臨時目錄(類似於公共廁所),誰都可以使用
# 1 查看登陸日志
cat /var/log/secure #查看登陸時間
# 2 進程產生的臨時文件(360清理垃圾,就是會清理)
7.設備目錄文件
/dev,存放設備文件,比如硬盤,硬盤分區,光驅,等等 /dev/sd 硬盤設備 /dev/null,黑洞設備,只進不出。類似於垃圾回收站 /dev/random,生成隨機數的設備 /dev/zero,能遠遠不斷的產生數據,類似於取款機,隨時隨地取錢
# 1 sda sdb sdc sda1 sdb4
linux中磁盤文件叫sd,第一個硬盤叫a,第二個叫b,sda1表示第一個磁盤的第一個分區,sdb4:第二個硬盤的第四個分區(服務可以插很多硬盤)
# 2 /dev/null
ls >/dev/null
# 3 /dev/random 生成隨機數
echo $RANDOM
echo lqz_$RANDOM
批量創建隨機用戶,批量設置密碼
# 4 源源不斷取數據
dd if=/dev/zero of=/opt/test.txt bs=1M count=1024
'''
dd:用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。
if=文件名:輸入文件名,缺省為標准輸入。即指定源文件。< if=input file >
of=文件名:輸出文件名,缺省為標准輸出。即指定目的文件。< of=output file >
bs=bytes:同時設置讀入/輸出的塊大小為bytes個字節。
count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的字節數。
'''
ll /opt/test.txt
ll -h /opt/test.txt
8.虛擬的文件系統(如對應的進程停止則/proc下對應目錄則會被刪除)
/proc,反映系統當前進程的實時狀態 :process PS:類似於小汽車的儀表板,能夠看到汽車是否有故障,或者是否缺油了。
ls /proc # 可以看到很多id號,pid號,進程號,唯一
ls 進程id號的文件夾
如果進程被關閉,id號的文件夾就沒了
id號每次啟動都不唯一,只有一個進程唯一,systemd 是進程號1的進程,所有進程都是基於它派生出來的
9 其他
#1 media:提供設備的掛載點,媒體文件
# linux 新增了盤符,需要手動掛載
# 把光盤里的數據,掛載到media目錄
mount /dev/cdrom /media/
# 2 mnt:提供設備的掛載點(同上)
# 3 opt:第三方工具,第三方軟件默認安裝的(mysql...)
# run :下有pid,log結尾的文件
ls /run
cat sshd.pid # 進程運行的pid號,放在文件中
ps aux |grep sshd
# .lock文件的作用,鎖機制
# 假設現在執行
yum install tree
# 再開一個窗口執行相同命令
yum install tree
'''
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 71 M RSS (470 MB VSZ)
Started: Tue Aug 18 00:26:31 2020 - 00:24 ago
State : Sleeping, pid: 6191
'''
cat /run/yum.pid
10.PS: 在Linux7系統中,
/bin, /sbin, /lib, /lib64都以軟鏈接的形式鏈接到/usr/目錄下
/bin –> /usr/bin /sbin –> /usr/sbin lib -> usr/lib lib64 -> usr/lib64
3.文件路徑定位
在我們開始操作文件前,首先需要對文件進行定位,比如: 你要在哪創建什么文件? 你要將文件復制到什么地方? 或者你要刪除的文件在什么地方? 那什么是定位: 比如/etc/hostname,整個文件中包含文件名稱以及文件所在的位置,我們將這個叫做路徑,那么路徑就是對文件進行定位的一種方式。例:如下圖的message所在的路徑是? 提問FQ: /home/oldboy/file 和/home/oldgirl/file是否是同一個文件?
1.每個目錄下都有一個.和..的目錄是干啥的?
一個點代表當的是當前目錄, 兩個點代表的是當前目錄的上層目錄。 假設當前目錄在/usr/
下, 那么它的上層(/)目錄用../
表示, 而/usr/
的下層(local)目錄則用./local
表示。
2.那什么是絕對路徑,什么又是相對路徑呢?
絕對路徑: 只要從/開始的路徑,比如/home/alice/file 相對路徑: 相對於當前目錄來說,比如 a.txt ./a.txt ../bob/a.mp3 [加入: 此時在目錄/home/alice] 小結: 所謂的(.)和(..)目錄實際上屬於相對路徑的一種表示形式。
3.絕對路徑與相對路徑示例
#絕對路徑
[root@bgx /]# useradd alice
[root@bgx /]# touch /home/alice/file1
[root@bgx /]# touch ~/file2
[root@bgx /]# touch ~alice/file3
#相對路徑
[root@bgx /]# mkdir abc
[root@bgx /]# touch ../file3
[root@bgx /]# touch file4
[root@bgx /]# touch abc/file5
cd改變目錄,常見的使用方法
# cd 絕對路徑 cd /etc/hostname
# cd 相對路徑 cd test/abc cd . cd ..
# cd #切換目錄,例: cd /etc
# cd - #切換回上一次所在的目錄
# cd ~ #切換回當前用戶的家目錄,注意:root和普通用戶是否有所不同嗎?
# cd . #代表當前目錄,一般在拷貝、移動等情況下使用 cp /etc/hostname ./
# cd .. #切換回當前目錄的上級目錄
4.系統文件管理
1.文件管理之: 創建/復制/移動/刪除
創建
1.文件創建命令touch
# touch file #無則創建,有則修改時間
# touch file2 file3
# touch /home/od/file4 file5
# touch file{a,b,c} #{}集合,等價 touch a b c
# touch file{1..10}
# touch file{a..z}
2.目錄創建命令mkdir
# 選項:-v 顯示詳細信息 -p 遞歸創建目錄
# mkdir dir1
# mkdir /home/od/dir1 /home/od/dir2
# mkdir -v /home/od/{dir3,dir4}
# mkdir -pv /home/od/dir5/dir6
# mkdir -pv /home/{od/{diu,but},boy}
3.以樹狀顯示目錄結構命令tree
# 選項: -L: 顯示目錄樹的層級
# tree /home/od/ #顯示當前目錄下的結構
/home/od/
├── but
├── dir1
├── dir2
├── dir3
├── dir4
├── dir5
│ └── dir6
└── diu
cp復制
#選項: -v:詳細顯示命令執行的操作 -r: 遞歸處理目錄與子目錄 -p: 保留源文件或目錄的屬性
# cp file /tmp/file_copy
# cp name /tmp/name #不修改名稱
# cp file /tmp/ #不修改名稱
# cp -p file /tmp/file_p #-p保持原文件或目錄的屬性
# cp -r /etc/ /tmp/ #復制目錄需要使用-r參數, 遞歸復制
# cp -rv /etc/hosts /etc/hostname /tmp #拷貝多個文件至一個目錄
# cp -rv /etc/{hosts,hosts.bak}
# cp -rv /etc/hosts{,-org}
mv移動
# mv file file1 #原地移動算改名
# mv file1 /tmp/ #移動文件至tmp目錄
# mv /tmp/file1 ./ #移動tmp目錄的文件至當前目錄
# mv dir/ /tmp/ #移動目錄至/tmp目錄下
# touch file{1..3}
# mv file1 file2 file3 /opt/ #移動多個文件或至同一個目錄
# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt #移動多個目錄至同一個目錄
rm刪除
#選項:-r: 遞歸 -f: 強制刪除 -v: 詳細過程
# rm file.txt #刪除文件, 默認rm存在alias別名,rm -i所以會提醒是否刪除文件
# rm -f file.txt #刪除文件, 不提醒
# rm -r dir/ #遞歸刪除目錄,會提示
# rm -rf dir/ #強制刪除目錄,不提醒(慎用)
#1.rm刪除示例
# mkdir /home/dir10
# touch /home/dir10/{file2,file3,.file4}
# rm -f /home/dir10/ //不包括隱藏文件
# ls /home/dir10/ -a
. .. .file4
#2.rm刪除示例2
# touch file{1..10}
# touch {1..10}.pdf
# rm -rf file
# rm -rf .pdf
2.文件管理之:查看文件內容(cat tac less more head tail tailf grep …)
#------cat
# cp /etc/passwd ./pass
# cat pass #正常查看文件方式
# cat -n pass #-n顯示文件有多少行
# cat -A pass #查看文件的特殊符號,比如文件中存在tab鍵
# tac pass #倒序查看文件
cat >> test2.txt <<EOF
ads
adf
EOF
#------less、more
# less /etc/services #使用光標上下翻動,空格進行翻頁,q退出
# more /etc/services #使用回車上下翻動,空格進行翻頁,q退出(有百分比)
#------head
# head pass #查看頭部內容,默認前十行
# head -n5 pass #查看頭部5行,使用-n指定
# ps aux | head -5 # 只看頭部5個進程
#------tail
# tail pass # 查看文件尾部,默認10行
# tail -20 /var/log/secure # 查看文件尾部20行
# tail -f /var/log/messages #-f動態查看文件尾部的變化
# tailf /var/log/messages #查看文件尾部的變化
# ps aux | tail -2
#------grep過濾文件內容
# grep "^root" pass #匹配以root開頭的行
# grep "bash$" pass #匹配以bash結尾的行
# grep -i "ftp" pass #忽略大小寫匹配
# grep -Ei "sync$|ftp" pass #匹配文件中包含sync結尾或ftp字符串
# grep -n -A 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,並打印它的下2行
# grep -n -B 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,並打印它的上2行
# grep -n -C 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,並打印它的上下2行
# 上翻,下翻
control+b:下翻
control+f:上翻
3.文件管理之:聯網下載文件(wget、curl)、文件上傳與下載(rz、sz)
wget、curl聯網下載文件
yum install wget -y
#選項: -O: 指定下載地址
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# crul:瀏覽網絡上資源,-o保存到本地
#選項: -o: 指定下載地址
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
rzsz上傳下載文件
# yum install lrzsz -y #不安裝軟件則無法執行該命令
# rz #只能上傳文件文件上傳(不能大於4g)
# sz /path/file #只能下載文件
4.文件管理之:文件或命令查找(locate、which、whereis、find)
文件查找
# locate /etc/sh #搜索etc目錄下所有以sh開頭的文件
# locate -i /etc/sh #搜索etc目錄下,所有以sh開頭的文件,忽略大小寫
命令查找
# which ls #查找ls命令的絕對路徑
# whereis ls //查找命令的路徑、幫助手冊、等
# whereis -b ls //僅顯示命令所在的路徑,僅看二進制
# 對於內核相關的一些命令,用which whereis 是無法查詢到的,需要使用type采查詢
# type -a ls #查看命令的絕對路徑(包括別名)
# type -a for
5.文件管理之:字符處理命令(sort、uniq、cut、sed、awk、wc、)
sort排序
在有些情況下,需要對應一個無序的文本文件進行數據的排序,這時就需要使用sort進行排序了。
sort [OPTION]... [FILE]...
# -r:倒序 -n:按數字排序 -t:指定分隔符(默認空格) -k:指定第幾列, 指定幾列幾字符(指定1,1 3.1,3.3)
#1.首先創建一個文件,寫入一寫無序的內容
[root@lqz ~]# cat >> file.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF
#2.使用sort下面對輸出的內容進行排序
[root@lqz ~]# sort file.txt
a:4
b:3
c:2
d:1
e:5
f:11
#結果並不是按照數字排序,而是按字母排序。
#可以使用-t指定分隔符, 使用-k指定需要排序的列。
# -t 指定分隔符,-k指定列,按第二列排序
[root@lqz ~]# sort -t ":" -k2 file.txt
d:1
f:11 #第二行為什么是11?不應該按照順序排列?
c:2
b:3
a:4
e:5
#按照排序的方式, 只會看到第一個字符,11的第一個字符是1, 按照字符來排序確實比2小。
#如果想要按照數字的方式進行排序, 需要使用 -n參數,按數字排序。
[root@lqz ~]# sort -t ":" -n -k2 file.txt
d:1
c:2
b:3
a:4
e:5
f:11
#測試案例,下載文件http://fj.xuliangwei.com/public/ip.txt,對該文件進行排序
[root@lqz ~]# sort -t. -k3.1,3.1nr -k4.1,4.3nr ip.txt
uniq去重 如果文件中有多行完全相同的內容,當前是希望能刪除重復的行,同時還可以統計出完全相同的行出現的總次數, 那么就可以使用uniq
命令解決這個問題(但是必須配合sort
使用,相鄰的才能去重,所以要配合sort)。
uniq [OPTION]... [INPUT [OUTPUT]]
#選項:-c 計算重復的行
#1.創建一個file.txt文件:
[root@lqz ~]# cat >>file2.txt <<EOF
abc
123
abc
123
EOF
#2.uniq需要和sort一起使用, 先使用sort排序, 讓重復內容連續在一起
[root@lqz ~]# cat file.txt |sort
123
123
abc
abc
#3.使用uniq去除相鄰重復的行
[root@lqz ~]# cat file.txt |sort|uniq
123
abc
#4.-c參數能統計出文件中每行內容重復的次數
[root@lqz ~]# cat file.txt |sort|uniq -c
2 123
2 abc
cut截取字段
cut OPTION... [FILE]...
#選項:-d 指定分隔符 -f 數字,取第幾列 –f3,6三列和6列 -c 按字符取(空格也算)
#echo "Im lqz, is QQ 306334678" >file.txt
#過濾出文件里 lqz以及306334678
#實現上述題目幾種思路
# cut -d " " -f2,5 file.txt
# cut -d " " -f2,5 file.txt |sed 's#,##g'
# sed 's#,# #g' file.txt | awk -F " " '{print $2 " " $5}'
# awk '{print $2,$5}' file.txt |awk -F ',' '{print $1,$2}'
# awk -F "[, ]" '{print $2,$6}' file.txt
# awk -F '[, ]+' '{print $2,$5}' file.txt
# awk 取列
awk '{print $2,$5}' file.txt
# -F 指定分隔符
awk '{print $2,$5}' file.txt | awk -F "," '{print $1,$2}'
# sed 替換 sed 's###g'
# sed 's###g' 固定寫法
# sed 's#,##g' 把逗號替換成空
cut -d " " -f2,5 file.txt | sed 's#,##g'
wc統計行號
wc [OPTION]... [FILE]...
#選項:-l顯示文件行數 -c顯示文件字節 -w顯示文件單詞
# wc -l /etc/fstab #統計/etc/fstab文件有多少行
# wc -l /etc/services #統計/etc/services 文件行號
# ls |wc -l #統計當前路徑下有多少文件和文件夾
#擴展方法
# grep -n "." /etc/services | tail -1
# awk '{print NR $0}' /etc/services | tail -1
# cat -n /etc/services | tail -1
習題: 分析如下日志,統計每個域名被訪問的次數。
[root@student tmp]# cat web.log
http://www.lqz.com/index.html
http://www.lqz.com/1.html
http://post.lqz.com/index.html
http://mp3.lqz.com/index.html
http://www.lqz.com/3.html
http://post.lqz.com/2.html
# awk -F '/' '{print $3}' web.log|sort -rn|uniq –c
# cut -d / -f3 web.log|sort -rn|uniq –c
習題: 使用awk取出系統的IP地址圖解
5.系統文件屬性
當我們使用ls -l列目錄下所有文件時,通常會以長格式的方式顯示,其實長格式顯示就是我們Windows下看到的文件詳細信息,我們也將其稱為文件屬性,那整個文件的屬性分為十列。
[root@lqz ~]# ls -l ks.cfg
[root@lqz ~]# ll -h ks.cfg
-rw-------. 1 root root 4434 May 30 13:58 ks.cfg
#
-rw-------. ①:第一個字符是文件類型,其他則是權限
1 ②:硬鏈接次數
root ③:文件屬於哪個用戶
root ④:文件屬於哪個組
4434 ⑤:文件大小
May30 13:58 ⑥⑦⑧:最新修改的時間與日期
ks.cfg ⑨:文件或目錄名稱
6.系統文件類型
1.通常我們使用顏色或者后綴名稱來區分文件類型,但很多時候不是很准確,所以我們可以通過ls -l以長格式顯示一個文件的屬性,通過第一列的第一個字符來近一步的判斷文件具體的類型。
[root@lqz ~]# ll -d /etc/hosts /tmp /bin/ls /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x. 1 root root 117656 Jun 30 2016 /bin/ls
srw-rw-rw-. 1 root root 0 Jan 20 10:35 /dev/log
brw-rw----. 1 root disk 8, 0 Jan 20 10:36 /dev/sda
crw--w----. 1 root tty 4, 1 Jan 20 10:36 /dev/tty1
lrwxrwxrwx. 1 root root 22 Jan 13 11:31 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 199 Jan 20 11:03 /etc/hosts
prw-------. 1 root root 0 Jan 20 10:36 /run/dmeventd-client
drwxrwxrwt. 61 root root 8192 Jan 21 13:01 /tmp
#說明
- #普通文件(文本, 二進制, 壓縮, 圖片, 日志等)
d #目錄文件
b #設備文件(塊設備)存儲設備硬盤 /dev/sda1, /dev/sda2
c #設備文件(字符設備),終端 /dev/tty1, /dev/zero
s #套接字文件, 進程間通信(socket)
p #管道文件
l #鏈接文件
2.但有些情況下,我們無法通過ls -l文件的類型,比如: 一個文件,它可能是普通文件、也可能是壓縮文件、或者是命令文件等,那么此時就需要使用file來更加精准的判斷這個文件的類型。
[root@lqz ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@lqz ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
[root@lqz ~]# file /dev/sda
/dev/sda: block special
[root@lqz ~]# file /dev/tty1
/dev/tty1: character special
[root@lqz ~]# file /etc/grub2.cfg
/etc/grub2.cfg: broken symbolic link to `../boot/grub2/grub.cfg'
[root@lqz ~]# file /home
/home: directory
[root@lqz ~]# file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)
[root@lqz ~]# ll but
-rw-r--r-- 1 root root 42125 Apr 1 12:26 but
[root@lqz ~]# file but
but: Zip archive data, at least v1.0 to extract
PS: Linux文件擴展名不代表任何含義,僅為了我們能更好的識別該文件是什么類型。
7.系統鏈接文件
文件有文件名與數據,在Linux上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。 用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方,我們將其稱為Block 元數據,即文件的附加屬性,如文件大小、創建時間、所有者等信息。我們稱其為Inode 在Linux中,inode是文件元數據的一部分但其並不包含文件名,inode號即索引節點號) 文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。圖1.展示了程序通過文件名獲取文件內容的過程。
Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)
ll -i 查看inode
1.什么是軟鏈接
軟鏈接相當於Windows的快捷方式,軟鏈接文件會將inode指向源文件的block,當我們訪問這個軟鏈接文件時,其實訪問的是源文件本身。那么當我們對一個文件創建多個軟鏈接,其實就是多個inode指向同一個block。當我們刪除軟鏈接文件時,其實只是刪除了一個inode指向,並不會對源文件源文件造成影響,但如果刪除的是源文件則會造成所有軟鏈接文件失效。
2.什么是硬鏈接
若一個inode號對應多個文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名,如下圖hard link 就是 file 的一個別名,他們有共同的 inode。
3.軟鏈接實踐
#文件軟鏈接示例
touch /root/file
ln -s /root/file /tmp/file_bak
ll /tmp/file_bak //root下file鏈接到/tmp下並重命名為file_bak
#目錄軟鏈接示例
mkdir /soft/nginx1.1 -p
ln -s /soft/nginx1.1/ /soft/nginx
ll /soft/nginx //查看鏈接指向
#軟鏈接使用場景
1.軟件升級
2.企業代碼發布
3.不方便目錄移動
4.硬鏈接實踐
#文件硬鏈接示例
ln /root/file /tmp/file_hard
ll /tmp/file_hard
#PS:目錄不能創建硬鏈接,硬鏈接文件可以用rm命令刪除
5.硬鏈接與軟鏈接區別 1)ln命令創建硬鏈接,ln -s命令創建軟鏈接。 2)目錄不能創建硬鏈接,並且硬鏈接不可以跨越分區系統。 3)目錄軟鏈接特別常用,並且軟鏈接支持跨越分區系統。 4)硬鏈接文件與源文件的inode相同,軟鏈接文件與源文件inode不同。 5)刪除軟鏈接文件,對源文件及硬鏈接文件無任何影響。 6)刪除文件的硬鏈接文件,對源文件及鏈接文件無任何影響。 7)刪除鏈接文件的源文件,對硬鏈接無影響,會導致軟鏈接失效。 8)刪除源文件及其硬鏈接文件,整個文件會被真正的刪除。