Linux 文件及目錄管理命令(CentOS7)

linux文件系統(tǒng)結(jié)構(gòu)

  • 顯示linux根目錄下所有文件,其中/為根目錄
ls -l /
total 24
lrwxrwxrwx.   1 root root    7 Jun 30 23:11 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Jul 11 13:03 boot
drwxr-xr-x.  21 root root 3360 Jul 11 13:23 dev
drwxr-xr-x. 143 root root 8192 Jul 11 13:23 etc
drwxr-xr-x.   3 root root   25 Jun 30 23:19 home
lrwxrwxrwx.   1 root root    7 Jun 30 23:11 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jun 30 23:11 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   3 root root   16 Jun 30 23:14 opt
dr-xr-xr-x. 226 root root    0 Jul 11 13:23 proc
dr-xr-x---.   5 root root  184 Jun 30 23:21 root
drwxr-xr-x.  40 root root 1220 Jul 11 13:24 run
lrwxrwxrwx.   1 root root    8 Jun 30 23:11 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Jul 11 13:23 sys
drwxrwxrwt.  25 root root 4096 Jul 11 13:25 tmp
drwxr-xr-x.  13 root root  155 Jun 30 23:11 usr
drwxr-xr-x.  21 root root 4096 Jun 30 23:21 var

路徑表示

  • 文件路徑,例如在cat文件的完整目錄名為/home/cat,有兩個(gè)特殊的工作目錄,一個(gè)是用戶當(dāng)前工作目錄.,另一個(gè)是當(dāng)前目錄的上一層目錄..
cd ..
  • 絕對(duì)路徑是指從根目錄開(kāi)始一直寫(xiě)到所需文件為止,例如我要查找panjianqiao文件
cd /home/panjianqiao
  • 相對(duì)路徑是指在當(dāng)前的工作目錄下,直接查找所在目錄及以下的文件,例如我現(xiàn)在在panjianqiao文件夾下,要尋找Desktop文件
cd Desktop

假如我在Desktop下要切換到Downloads,可以有兩種辦法:

絕對(duì)路徑

cd /home/panjianqiao/Downloads

相對(duì)路徑

cd ../Downloads

cd(change directory縮寫(xiě))命令

Linux 命令按照來(lái)源方式,可分為兩種,分別是shell內(nèi)置命令外部命令

Shell 內(nèi)置命令,就是 Shell 自帶的命令,這些命令是沒(méi)有執(zhí)行文件的。

外部命令就是由程序員單獨(dú)開(kāi)發(fā)的,是命令,所以會(huì)有命令的執(zhí)行文件。

Linux中的絕大多數(shù)命令是外部命令,而 cd 命令是一個(gè)典型的 Shell 內(nèi)置命令,所以 cd 命令沒(méi)有執(zhí)行文件所在路徑。

cd ~ #回到自己的主目錄
cd ~panjianqiao #返回指定用戶的主目錄(這里為panjianqiao)
cd - #返回上次所在目錄
cd . #返回當(dāng)前所在目錄
cd .. #返回父目錄

pwd(print working directory)命令

[panjianqiao@localhost ~]$ whoami #用于返回當(dāng)前登陸用戶
panjianqiao
[panjianqiao@localhost ~]$ pwd #顯示當(dāng)前工作路徑
/home/panjianqiao

ls(list)命令

[panjianqiao@localhost ~]$ ls -a #返回全部文件,包括隱藏文件
.              .bash_profile  .dbus      .esd_auth      Music     Templates
..             .bashrc        Desktop    .ICEauthority  Pictures  Videos
.bash_history  .cache         Documents  .local         .pki
.bash_logout   .config        Downloads  .mozilla       Public

[panjianqiao@localhost ~]$ ls -A #返回全部文件,不包括.和..文件
.bash_history  .bashrc  .dbus      Downloads      .local    Pictures  Templates
.bash_logout   .cache   Desktop    .esd_auth      .mozilla  .pki      Videos
.bash_profile  .config  Documents  .ICEauthority  Music     Public

[panjianqiao@localhost ~]$ ls -l #使用長(zhǎng)格式列出文件和目錄信息
total 0
drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Documents
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Downloads
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Music
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Pictures
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Public
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Templates
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Videos

mkdir(make directory)命令

  • -m 選項(xiàng)用于手動(dòng)配置所創(chuàng)建目錄的權(quán)限,而不再使用默認(rèn)權(quán)限。
  • -p 選項(xiàng)遞歸創(chuàng)建所有目錄,以創(chuàng)建 /home/test/demo 為例,在默認(rèn)情況下,你需要一層一層的創(chuàng)建各個(gè)目錄,而使用 -p 選項(xiàng),則系統(tǒng)會(huì)自動(dòng)幫你創(chuàng)建 /home、/home/test 以及 /home/test/demo。
[panjianqiao@localhost ~]$ mkdir test
[panjianqiao@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test  Videos

[panjianqiao@localhost ~]$ mkdir -p ./test2/demo
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test2
Documents  Music      Public    test       Videos

[panjianqiao@localhost ~]$ mkdir -p test3/demo
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test2  Videos
Documents  Music      Public    test       test3

[panjianqiao@localhost ~]$ mkdir -m 711 test4
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test2  test4
Documents  Music      Public    test       test3  Videos
[panjianqiao@localhost ~]$ ls -l
total 0
drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Documents
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Downloads
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Music
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Pictures
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Public
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Templates
drwxrwxr-x. 2 panjianqiao panjianqiao  6 Jul 13 14:18 test
drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:19 test2
drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:20 test3
drwx--x--x. 2 panjianqiao panjianqiao  6 Jul 13 14:25 test4
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Videos

rmdir(remove empty directory)命令

此命令只能刪除空目錄(此命令并不常用)

  • -p 選項(xiàng)遞歸刪除所有目錄
[panjianqiao@localhost ~]$ rmdir test
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test3  Videos
Documents  Music      Public    test2      test4

[panjianqiao@localhost ~]$ rmdir ./test2 #只能刪除空目錄,這里的test2中還存在demo
rmdir: failed to remove ‘./test2’: Directory not empty

[panjianqiao@localhost ~]$ rmdir ./test2/demo #刪除了test2中的demo目錄,test2還存在
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test3  Videos
Documents  Music      Public    test2      test4

touch 命令

創(chuàng)建文件以及修改文件參數(shù)(當(dāng)文件不存在會(huì)創(chuàng)建文件,文件存在時(shí)會(huì)修改文件參數(shù))

Linux 系統(tǒng)中,每個(gè)文件主要擁有 3 個(gè)時(shí)間參數(shù)(通過(guò) stat 命令進(jìn)行查看),分別是文件的訪問(wèn)時(shí)間、數(shù)據(jù)修改時(shí)間以及狀態(tài)修改時(shí)間:

  • 訪問(wèn)時(shí)間(Access Time,簡(jiǎn)稱 atime):只要文件的內(nèi)容被讀取,訪問(wèn)時(shí)間就會(huì)更新。例如,使用 cat 命令可以查看文件的內(nèi)容,此時(shí)文件的訪問(wèn)時(shí)間就會(huì)發(fā)生改變。
  • 數(shù)據(jù)修改時(shí)間(Modify Time,簡(jiǎn)稱 mtime):當(dāng)文件的內(nèi)容數(shù)據(jù)發(fā)生改變,此文件的數(shù)據(jù)修改時(shí)間就會(huì)跟著相應(yīng)改變。
  • 狀態(tài)修改時(shí)間(Change Time,簡(jiǎn)稱 ctime):當(dāng)文件的狀態(tài)發(fā)生變化,就會(huì)相應(yīng)改變這個(gè)時(shí)間。比如說(shuō),如果文件的權(quán)限或者屬性發(fā)生改變,此時(shí)間就會(huì)相應(yīng)改變。
[panjianqiao@localhost ~]$ touch bols #創(chuàng)建bols文件
[panjianqiao@localhost ~]$ ls
bols  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[panjianqiao@localhost ~]$ ll --time=atime bols #查看文件的訪問(wèn)時(shí)間,ll相當(dāng)于ls -l
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:03 bols

[panjianqiao@localhost ~]$ touch bols
[panjianqiao@localhost ~]$ ll --time=atime bols #即使bols文件存在,也不會(huì)報(bào)錯(cuò),只會(huì)修改訪問(wèn)時(shí)間
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols
[panjianqiao@localhost ~]$ ll --time=ctime bols #查看bols文件的狀態(tài)修改時(shí)間
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols

ln 命令

linux文件操作系統(tǒng)主要使用的是ext4文件系統(tǒng),ext4文件系統(tǒng)會(huì)把分區(qū)分為兩大部分,一部分為inode(節(jié)點(diǎn)),另一部分為block(數(shù)據(jù)塊)。

inode默認(rèn)大小為128Byte,用來(lái)記錄文件的權(quán)限(r,w,x)、文件的所有者和大小、文件的atime、ctime和mtime以及其真正保存文件數(shù)據(jù)的block編號(hào)。每個(gè)文件都有一個(gè)inode,其中文件名是不包含在inode中的,文件名存在于文件所在目錄中的block中。

block用于存放數(shù)據(jù),大小可以是1KB、2KB、4KB,默認(rèn)大小為4KB,如果單個(gè)block存放不下數(shù)據(jù),則可以使用多個(gè)block,其中多個(gè)block數(shù)據(jù)可能是連續(xù)的也可能是分散的。

因此,想要讀取一個(gè)文件首先應(yīng)該在目錄的block中找到該文件的inode,通過(guò)inode索引到實(shí)際存放數(shù)據(jù)的block上。

ln命令用于給文件創(chuàng)建鏈接,根據(jù)linux文件系統(tǒng)特點(diǎn)分為硬鏈接和軟鏈接

  • 硬鏈接:通過(guò)給文件的inode信息分配多個(gè)文件名
  • 軟鏈接:相當(dāng)于給文件產(chǎn)生快捷方式(類比于windows)
  • 無(wú)-s:建立硬鏈接
  • -s :建立軟鏈接
  • -f:強(qiáng)制建立鏈接,如果文件存在,則刪除文件后再建立鏈接文件
[panjianqiao@localhost ~]$ touch demo
[panjianqiao@localhost ~]$ ln /home/panjianqiao/demo /tmp #建立硬鏈接,其中tmp下的文件屬于臨時(shí)文件,若未標(biāo)識(shí)文件名則與原文件名保持一致
[panjianqiao@localhost ~]$ touch demo2
[panjianqiao@localhost ~]$ ln -s /home/panjianqiao/demo2 /tmp #建立軟鏈接。注意!軟鏈接文件路徑必須為絕對(duì)路徑,硬鏈接文件路徑無(wú)此要求
[panjianqiao@localhost ~]$ cd /tmp
[panjianqiao@localhost tmp]$ ls #由于篇幅限制,只顯示相關(guān)信息,鏈接文件存在于tmp文件夾下
demo
demo2

硬鏈接

[panjianqiao@localhost tmp]$ ls -i /home/panjianqiao/demo /home/panjianqiao/demo2 #查看兩個(gè)文件的inode編號(hào)
2982387 /home/panjianqiao/demo  2982388 /home/panjianqiao/demo2
[panjianqiao@localhost tmp]$ ls -i /tmp/demo /tmp/demo2 #查看兩個(gè)鏈接文件的inode編號(hào)
 2982387 /tmp/demo  17540877 /tmp/demo2 

從上述分析可以看出,硬鏈接只是文件名字不同,其實(shí)兩個(gè)文件名都可以映射到同一個(gè)inode編號(hào)上,因此硬鏈接的特點(diǎn)如下:

  • 無(wú)論修改原文件demo還是修改硬鏈接文件demo,另一個(gè)文件數(shù)據(jù)都會(huì)改變。
  • 無(wú)論刪除原文件還是鏈接文件,只要還有一個(gè)文件存在就可以被訪問(wèn)。
  • 硬鏈接不會(huì)建立新的inode信息,同時(shí)也不能垮文件系統(tǒng)建立。
  • 硬鏈接不能鏈接目錄,太過(guò)復(fù)雜。

軟鏈接(符號(hào)鏈接)

[panjianqiao@localhost tmp]$ ls -il /home/panjianqiao/demo2 /tmp/demo2 #查看文件demo2和軟鏈接文件demo2的長(zhǎng)格式文件信息包括inode編號(hào)
 2982388 -rw-rw-r--. 1 panjianqiao panjianqiao  0 Jul 14 13:28 /home/panjianqiao/demo2
17540877 lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2

軟鏈接可以通過(guò)命令顯示中的/tmp/demo2 -> /home/panjianqiao/demo2識(shí)別出原文件的位置,軟鏈接的原文件和鏈接文件的inode編號(hào)不一致,說(shuō)明軟鏈接文件存放的block為當(dāng)前文件名索引到原文件inode編號(hào)信息。與硬鏈接相比,軟鏈接沒(méi)有了許多限制,應(yīng)用的更為廣泛。軟鏈接的特點(diǎn)如下:

  • 無(wú)論是修改原文件還是軟鏈接文件,另一個(gè)文件的數(shù)據(jù)都發(fā)生改變
  • 刪除軟鏈接文件,原文件不受影響,反之若刪除原文件則會(huì)導(dǎo)致軟鏈接文件找不到原文件。
  • 軟鏈接文件會(huì)新建inode和block信息,而在block中不存放真正的數(shù)據(jù)。
  • 軟鏈接可以跨文件系統(tǒng)
  • 軟鏈接可以鏈接目錄

windows系統(tǒng)下產(chǎn)生快捷方式的原因在于原文件的位置太深,不好操作,新建一個(gè)快捷方式在桌面容易操作

cp 命令

此命令可以用于復(fù)制文件和目錄,同時(shí)還可以用于對(duì)比兩文件的新舊等。

選項(xiàng):

  • -a:相當(dāng)于-d、-p、-r選項(xiàng)的集合
  • -d:如果源文件為軟鏈接(對(duì)硬鏈接無(wú)效),則復(fù)制出的目標(biāo)文件也為軟鏈接
  • -i:詢問(wèn),如果目標(biāo)文件已經(jīng)存在,則會(huì)詢問(wèn)是否覆蓋
  • -l:把目標(biāo)文件建立為源文件的硬鏈接文件,而不是復(fù)制源文件
  • -s:把目標(biāo)文件建立為源文件的軟鏈接文件,而不是復(fù)制源文件
  • -p:復(fù)制后目標(biāo)文件保留源文件的屬性(包括所有者、所屬組、權(quán)限和時(shí)間)
  • -r:遞歸復(fù)制,用于復(fù)制目錄
  • -u:若目標(biāo)文件比源文件有差異,則使用該選項(xiàng)可以更新目標(biāo)文件,此選項(xiàng)可用于對(duì)文件的升級(jí)和備用

復(fù)制文件

[panjianqiao@localhost ~]$ ls
bols  demo2    Documents  Music     Public     Videos
demo  Desktop  Downloads  Pictures  Templates
[panjianqiao@localhost ~]$ cp bols /tmp/ #復(fù)制文件
[panjianqiao@localhost ~]$ cp bols /tmp/clangs #改名復(fù)制文件

復(fù)制目錄

[panjianqiao@localhost ~]$ mkdir test
[panjianqiao@localhost ~]$ cp -r test /tmp/ #復(fù)制目錄

復(fù)制軟鏈接文件

[panjianqiao@localhost ~]$ ls -l /tmp/demo2 #demo2文件為一個(gè)軟鏈接文件
lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2
[panjianqiao@localhost ~]$ cp /tmp/demo2 /tmp/demo2_t1 #復(fù)制的文件為原文件
[panjianqiao@localhost ~]$ cp -d /tmp/demo2 /tmp/demo2_t2 #復(fù)制的文件為軟鏈接文件
[panjianqiao@localhost ~]$ ls -l /tmp/demo2_t1 /tmp/demo2_t2
-rw-rw-r--. 1 panjianqiao panjianqiao  0 Jul 16 19:04 /tmp/demo2_t1
lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 16 19:04 /tmp/demo2_t2 -> /home/panjianqiao/demo2

在復(fù)制軟鏈接文件時(shí),需要對(duì)在cp的選項(xiàng)添加-d,對(duì)硬鏈接無(wú)效。

rm(remove)命令

此命令用于刪除文件、目錄

選項(xiàng):

  • -f:強(qiáng)制刪除(force),和 -i 選項(xiàng)相反,使用 -f,系統(tǒng)將不再詢問(wèn),而是直接刪除目標(biāo)文件或目錄。
  • -i:和 -f 正好相反,在刪除文件或目錄之前,系統(tǒng)會(huì)給出提示信息,使用 -i 可以有效防止不小心刪除有用的文件或目錄。
  • -r:遞歸刪除,主要用于刪除目錄,可刪除指定目錄及包含的所有內(nèi)容,包括所有的子目錄和文件。
[panjianqiao@localhost ~]$ ls
bols  demo2    Documents  Music     Public     test
demo  Desktop  Downloads  Pictures  Templates  Videos
[panjianqiao@localhost ~]$ rm bols
[panjianqiao@localhost ~]$ rm -i demo
rm: remove regular empty file ‘demo’? y
[panjianqiao@localhost ~]$ rm -ir /tmp/test 
rm: remove directory ‘/tmp/test’? y

mv(move)命令

此命令可以在不同的目錄下移動(dòng)文件或目錄,也可以對(duì)文件和目錄進(jìn)行重命名

選項(xiàng):

  • -f:強(qiáng)制覆蓋,如果目標(biāo)文件已經(jīng)存在,則不詢問(wèn),直接強(qiáng)制覆蓋
  • -i:交互移動(dòng),如果目標(biāo)文件已經(jīng)存在,則詢問(wèn)用戶是否覆蓋(默認(rèn)選項(xiàng))
  • -n:如果目標(biāo)文件已經(jīng)存在,則不會(huì)覆蓋移動(dòng),而且不詢問(wèn)用戶
  • -v:顯示文件或目錄的移動(dòng)過(guò)程
  • -u:若目標(biāo)文件已經(jīng)存在,但兩者相比,源文件更新,則會(huì)對(duì)目標(biāo)文件進(jìn)行升級(jí)

移動(dòng)文件

[panjianqiao@localhost ~]$ touch demo
[panjianqiao@localhost ~]$ mv demo /tmp
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只顯示相關(guān)信息
demo
...

移動(dòng)目錄

[panjianqiao@localhost ~]$ mkdir -p ./test/demo
[panjianqiao@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test  Videos
[panjianqiao@localhost ~]$ mv test /tmp
[panjianqiao@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[panjianqiao@localhost ~]$ ls /tmp/test
demo

文件重命名

[panjianqiao@localhost ~]$ mv /tmp/demo /tmp/demo1 #在同一目錄下移動(dòng)文件相當(dāng)于重命名
[panjianqiao@localhost ~]$ ls tmp
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只顯示相關(guān)信息
demo1
...

目錄重命名

[panjianqiao@localhost ~]$ mv /tmp/test /tmp/test_change
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只顯示相關(guān)信息
...
test_change
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容