@
這期呢主要說一說Linux中檔案與目錄相關的命令,一共包含19個命令
1、簡介
cd 是「change directory」 中每個單詞的首字母,其功能是從當前目錄切換到目標路徑。
2、語法格式
cd [引數選項] [目標路徑]
3、引數說明
這裡呢只列出常用引數
引數選項 | 引數說明 |
---|---|
- | 從當前目錄切換到使用者上一次所在目錄 |
~ | 從當前目錄切換到家目錄,即假設當前登入的使用者是xiezhr,執行命令後路徑將切換到/home/xiezhr |
.. | 從當前目錄切換到上一級目錄 |
在使用cd命令時,配合「tab」鍵的自動補全功能,可以大大提高效率。
既然說到了切換路徑,我們這裡就說一說什麼時相對路徑?什麼時絕對路徑?
簡單來說,從「/」根目錄開始的路徑為絕對路徑,不從「/」開始的為相對路徑。
/home/xiezhr、/home/user/local 是絕對路徑,而 date/,webapp/log/ 為相對路徑
4、實踐操作
① 進入系統 /usr/local 目錄 。這裡我們會用到pwd命令來顯示當前所在路徑,這個命令我們會在下一個命令中講,這裡知道即可
[root@xiezhr ~]# cd /usr/local/
[root@xiezhr local]# pwd
/usr/local
② 切換到上級目錄
[root@xiezhr local]# pwd
/usr/local
[root@xiezhr local]# cd ..
[root@xiezhr usr]# pwd
/usr
③ 切換到父目錄的父目錄
[root@xiezhr local]# pwd
/usr/local
[root@xiezhr local]# cd ../../
[root@xiezhr /]# pwd
/
④ 返回當前使用者上一次所在的目錄
[root@xiezhr ~]# cd /usr/local/
[root@xiezhr local]# cd /root/
[root@xiezhr ~]# pwd
/root
[root@xiezhr ~]# cd -
/usr/local
⑤ 返回家目錄【當前使用者為root使用者,家目錄為/root】
[root@xiezhr local]# cd /usr/local/
[root@xiezhr local]# pwd
/usr/local
[root@xiezhr local]# cd ~
[root@xiezhr ~]# pwd
/root
1、簡介
pwd 是「print working directory」每個單詞的首字母,功能是列印/顯示當前所在目錄姐絕對路徑。在實際工作中,我們經常會在各個目錄之間切換,切換的多了,很容易忘記走到哪了,這時就需要有一幅地圖指引我們,使我們不至於迷路。由此可見這個命令的重要性
2、語法格式
pwd [引數選項]
3、引數說明
一般不需要加引數
4、實踐操作
① 進入到/usr/local後顯示路徑
[root@xiezhr ~]# cd /usr/local/
[root@xiezhr local]# pwd
/usr/local
1、簡介
ls 是「list」 英文單詞的縮寫,功能是列出當前目錄下的內容和內容屬性資訊。類似於DOS系統下的dir命令
2、語法格式
ls [引數選項] [檔案或目錄]
由於用的比較少,這裡就不作說明了,大概知道就好了
3、引數說明
引數 | 引數說明 |
---|---|
-l | 使用長格式列出檔案即目錄資訊 相當於直接使用ll |
-a | 顯示目錄下的所有檔案,包括.開頭的隱藏檔案 |
-t | 根據最後修改時間(time)排序,預設是按檔名排序的 |
-r | 以相反次序排序 |
-F | 在條目後加上檔案型別的只是符號(*、/、=、@、|中的一個) |
-d | 當遇到目錄時,列出目錄本身而非目錄內檔案 |
-h | 以人類可讀資訊顯示檔案或目錄大小,如1KB,23M,3GB等 |
4、實踐操作
① 直接使用ls命令,不帶引數,顯示當前目錄下的檔案和路徑
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3
②加上【-a】引數,顯示所有檔案,包含隱藏檔案("."開頭的為隱藏檔案),如下所示,ls沒有顯示隱藏檔案,ls -a 顯示了隱藏檔案.d.txt
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3
[root@xiezhr test]# ls -a
. .. a.txt b.txt c.txt dir1 dir2 dir3 .d.txt
③ 加上【-l】引數,顯示檔案目錄的詳細資訊
這個引數時我們最常用的,這個命令會列出檔案或目錄型別、許可權、所屬組、建立修改時間(最後一次修改時間,如果時新建立的檔案則為建立時間),需要熟練掌握
[root@xiezhr test]# ls -l
total 12
-rw-r--r-- 1 root root 0 Mar 10 23:39 a.txt
-rw-r--r-- 1 root root 0 Mar 10 23:39 b.txt
-rw-r--r-- 1 root root 0 Mar 10 23:39 c.txt
drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir1
drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir2
drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3
小技巧:上面的命令我們會發現,時間沒顯示年份,那麼怎麼才能顯示出我們肉眼既可以看懂的時間呢?
[root@xiezhr test]# ls -l --time-style=long-iso
total 16
-rw-r--r-- 1 root root 22 2022-03-10 23:44 a.txt
-rw-r--r-- 1 root root 0 2022-03-10 23:39 b.txt
-rw-r--r-- 1 root root 0 2022-03-10 23:39 c.txt
drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir1
drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir2
drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir3
哇哦,上面命令這麼長,使用起來真的不方便,我們給它起個別名吧,這樣叫起來也比較方便
[root@xiezhr test]# alias lst='ls -l --time-style=long-iso'
[root@xiezhr test]# alias |grep lst
alias lst='ls -l --time-style=long-iso'
[root@xiezhr test]# lst
total 16
-rw-r--r-- 1 root root 22 2022-03-10 23:44 a.txt
-rw-r--r-- 1 root root 0 2022-03-10 23:39 b.txt
-rw-r--r-- 1 root root 0 2022-03-10 23:39 c.txt
drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir1
drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir2
drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir3
④ 加上【-F】引數,F是大寫,在檔案尾部加上檔案型別符號(、/、=、@、|)中一個
**""表示普通可執行檔案、"/"表示目錄、"="表示通訊端、"@"表示符號連結、"|"表示FIFOs**
具體檔案型別可以參照【檔案型別】這篇文章
[root@xiezhr test]# ls -F
a.txt b.txt c.txt dir1/ dir2/ dir3/ # 三個目錄尾部加上了/
小技巧:通過【-F】引數,可以過濾出所有目錄和普通檔案
[root@xiezhr test]# ls -F # 當前路徑下一共包含三個檔案和三個目錄
a.txt b.txt c.txt dir1/ dir2/ dir3/
[root@xiezhr test]# ls -F|grep / # 過濾出所有路徑
dir1/
dir2/
dir3/
[root@xiezhr test]# ls -F|grep -v / #過濾出普通檔案
a.txt
b.txt
c.txt
⑤ 假設一個目錄下面有很多很多個檔案,我們忘記了最近改過的檔案的名字(年紀大了,記性越來越不好),這時候要找出它,可以用如下命令
[root@xiezhr test]# touch xiezhr.txt
[root@xiezhr test]# ls -lt
total 16
-rw-r--r-- 1 root root 0 Mar 11 23:02 xiezhr.txt
-rw-r--r-- 1 root root 0 Mar 11 22:52 tt.txt
-rw-r--r-- 1 root root 22 Mar 10 23:44 a.txt
-rw-r--r-- 1 root root 0 Mar 10 23:39 c.txt
-rw-r--r-- 1 root root 0 Mar 10 23:39 b.txt
drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3
drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir2
drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir1
我們最近建立或修改的檔案就排在最前面了,有沒有很方便哦
當然了,可以讓你最顯目,也可以讓你排到最後去。ls -lrt 即可按照時間倒序排。-r 是倒序的意思
1、簡介
mkdir 是"make directoy" 英文單詞的縮寫,功能是建立目錄。如果目錄存在則提示已存在,不會繼續建立
2、語法格式
mkdir [引數選項] [目錄]
3、引數說明
引數 | 引數說明 |
---|---|
-p | 遞迴建立目錄。即可以父目錄兒子目錄孫子目錄重孫目錄....等一起建立 |
-m | 建立目錄的同時授予許可權 |
4、實踐操作
① mkdir 不帶任何引數
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr.txt
[root@xiezhr test]# mkdir xiezhr
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt
② 同時建立多個目錄
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mkdir dir4 dir5 dir6
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3 dir4 dir5 dir6 tt.txt xiezhr xiezhr.txt
③ 使用【-p】引數遞迴建立目錄
[root@xiezhr test]# ls
a.txt b.txt c.txt dir1 dir2 dir3 tt.txt xiezhr.txt
[root@xiezhr test]# mkdir -p xiezhr/test
[root@xiezhr test]# tree
.
├── a.txt
├── b.txt
├── c.txt
├── dir1
├── dir2
├── dir3
├── tt.txt
├── xiezhr
│ └── test
└── xiezhr.txt
5 directories, 5 files
④ 使用【-m】引數,建立目錄同時授權
[root@xiezhr test]# mkdir -m 755 dir
1、簡介
tree 一看到這個命令,我們就知道是樹的意思,當然了這裡的樹並非種的樹,而是以樹形結構顯示目錄下內容。
2、語法格式
tree [引數選項] [目錄]
3、引數說明
引數 | 引數說明 |
---|---|
-d | 只顯示目錄 |
-L level | 遍歷目錄的最大層數,level為大於0的整數 |
4、實踐操作
注意:個別Linux版本可能沒有預設安裝tree,大家也不用慌,我們按照如下步驟安裝即可
wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
tar -zxvf tree-1.7.0.tgz
cd tree-1.7.0
make install
① 不帶引數的tree
[root@xiezhr test]# tree
.
├── a.txt
├── b.txt
├── c.txt
├── dir
├── dir1
├── dir2
├── dir3
├── tt.txt
├── xiezhr
│ └── test
└── xiezhr.txt
6 directories, 5 files
② 加上【-d】引數,只顯示目錄
[root@xiezhr test]# tree -d
.
├── dir
├── dir1
├── dir2
├── dir3
└── xiezhr
└── test
6 directories
③ 加上【-L leave】 列出目錄下第leave層結構
[root@xiezhr test]# tree -L 1
.
├── a.txt
├── b.txt
├── c.txt
├── dir
├── dir1
├── dir2
├── dir3
├── tt.txt
├── xiezhr
└── xiezhr.txt
5 directories, 5 files
④ 加上【-f】顯示完整的路徑名稱 加上【-i】則不顯示樹枝部分
[root@xiezhr test]# tree -f
.
├── ./a.txt
├── ./b.txt
├── ./c.txt
├── ./dir
├── ./dir1
├── ./dir2
├── ./dir3
├── ./tt.txt
├── ./xiezhr
│ └── ./xiezhr/test
└── ./xiezhr.txt
6 directories, 5 files
[root@xiezhr test]# tree -i
.
a.txt
b.txt
c.txt
dir
dir1
dir2
dir3
tt.txt
xiezhr
test
xiezhr.txt
6 directories, 5 files
[root@xiezhr test]# tree -fi
.
./a.txt
./b.txt
./c.txt
./dir
./dir1
./dir2
./dir3
./tt.txt
./xiezhr
./xiezhr/test
./xiezhr.txt
6 directories, 5 files
⑤ 加上【-F】引數區分目錄和檔案
[root@xiezhr test]# tree -F
.
├── a.txt
├── b.txt
├── c.txt
├── dir/
├── dir1/
├── dir2/
├── dir3/
├── tt.txt
├── xiezhr/
│ └── test/
└── xiezhr.txt
6 directories, 5 files
尾部帶/的為目錄
1、簡介
touch 是觸控的意思,摸一下檔案可以建立空白檔案或改變檔案時間屬性
touch 不能建立目錄但是能改變目錄的時間戳屬性
2、語法格式
touch [引數選項] [檔案]
3、引數說明
引數 | 引數說明 |
---|---|
-a | 只更改檔案最後存取時間 |
-m | 只更改檔案最後修改時間 |
-d string | 使用字串string代表的時間模板設定指定檔案的時間屬性 |
4、實踐操作
① 不帶任何引數
[root@xiezhr test]# touch xiezhr.txt
[root@xiezhr test]# ls
a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt
②更改檔案時間戳屬性(檔案的時間戳屬性:存取時間、修改時間、狀態改變時間)
[root@xiezhr test]# stat xiezhr.txt
File: ‘xiezhr.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 2661 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-03-12 21:04:32.681919249 +0800
Modify: 2022-03-12 21:04:32.681919249 +0800
Change: 2022-03-12 21:04:32.681919249 +0800
Birth: -
[root@xiezhr test]# touch -m xiezhr.txt
[root@xiezhr test]# stat xiezhr.txt
File: ‘xiezhr.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 2661 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-03-12 21:04:32.681919249 +0800
Modify: 2022-03-12 21:08:22.344330251 +0800
Change: 2022-03-12 21:08:22.344330251 +0800
Birth: -
[root@xiezhr test]# touch -a xiezhr.txt
[root@xiezhr test]# stat xiezhr.txt
File: ‘xiezhr.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 2661 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-03-12 21:08:42.528893719 +0800
Modify: 2022-03-12 21:08:22.344330251 +0800
Change: 2022-03-12 21:08:42.528893719 +0800
Birth: -
1、簡介
cp 是copy 英文單詞的縮寫,功能是複製檔案或目錄
2、語法格式
cp [引數選項] [原始檔] [目標檔案]
3、引數說明
引數 | 引數說明 |
---|---|
-p | 複製時保持原始檔的許可權、時間屬性 |
-d | 如果複製的檔案時符號連結,那麼僅賦值符號連結本身,而且保留符號連結所指向的目標檔案或目錄 |
-r | 遞迴複製目錄,即複製目錄下所有層級的子目錄及檔案 |
-a | 等同於-p、-d、-r三個命令總和 |
-i | 覆蓋已有檔案提示使用者確認 |
4、實踐操作
① 將檔案a.txt 複製為 aaa.txt
[root@xiezhr test]# cp a.txt aaa.txt
[root@xiezhr test]# ls
aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
②複製目錄,將dir 目錄複製為dir_bak
[root@xiezhr test]# ls
aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# cp -r dir dir_bak
[root@xiezhr test]# ls
aaa.txt a.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
1、簡介
mv 是 move 的縮寫,功能是移動重新命名檔案
2、語法格式
mv [引數選項] [原始檔] [目標檔案]
3、引數說明
引數 | 引數說明 |
---|---|
-f | 若目標檔案已經存在,則不會詢問直接覆蓋 |
-i | 若目標檔案已存在,則會詢問是否覆蓋 |
-n | 不覆蓋已經存在的檔案 |
-u | 在原始檔比目標檔案新,或目標檔案不存在時才進行移動 |
4、實踐操作
① 給檔案改名(如果a1.txt 不存在,則將aaa.txt 重新命名為a1.txt)
[root@xiezhr test]# ls
aaa.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv aaa.txt a1.txt
[root@xiezhr test]# ls
a1.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
② 給檔案重新命名(如果a2.txt存在,則將a1.txt 覆蓋為a2.txt)
[root@xiezhr test]# ls
a1.txt a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv a1.txt a2.txt
mv: overwrite ‘a2.txt’? y
[root@xiezhr test]# ls
a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
③ 移動單個檔案或多個檔案
[root@xiezhr test]# ls
a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv a2.txt dir/
[root@xiezhr test]# ls
b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv b.txt c.txt dir/
[root@xiezhr test]# ls
dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
④移動目錄 如果目錄存在則將檔案移動到目錄中,如果不存在則將目錄改名
[root@xiezhr test]# ls
a2.txt b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv a2.txt dir/
[root@xiezhr test]# ls
b.txt c.txt dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv b.txt c.txt dir/
[root@xiezhr test]# ls
dir dir1 dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv dir1 dir
[root@xiezhr test]# ls
dir dir2 dir3 dir_bak tt.txt xiezhr xiezhr.txt
[root@xiezhr test]# mv dir2 dir5
[root@xiezhr test]# ls
dir dir3 dir5 dir_bak tt.txt xiezhr xiezhr.txt
1、簡介
rm 時rmove 英文單詞的縮寫,功能時刪除一個或多個檔案、目錄。rm是Linux中最危險的命令。如果刪錯了那只有跑路了~ 慎重慎重慎重