@(文件和目錄操作命令) 前言 這期呢主要說一說Linux中文件與目錄相關的命令,一共包含19個命令 cd 切換目錄 1、簡介 cd 是“change directory” 中每個單詞的首字母,其功能是從當前目錄切換到目標路徑。 2、語法格式 cd [參數選項] [目標路徑] 3、參數說明 這裡呢只 ...
@
目錄- 前言
- cd 切換目錄
- pwd 顯示當前路徑
- ls 顯示目錄下內容及相關屬性信息
- mkdir 創建目錄
- tree 以樹形結構顯示目錄下的內容
- touch 創建空白文件或改變文件的時間戳屬性
- cp 複製文件或目錄
- mv 移動或重命名文件
- rm 刪除文件或目錄
- chown 改變文件或目錄的用戶用戶組
- chmod 改變文件或目錄的許可權
- chgrp 更改文件用戶組
- ln 硬鏈接與軟連接
- redlink 查看符號連接文件的內容
- find 查找目錄下的文件
- xargs 將標準輸入轉換成命令行參數
- rename 重命名文件
- file 顯示文件類型
- md5sum 計算和校驗文件的MD5值
前言
這期呢主要說一說Linux中文件與目錄相關的命令,一共包含19個命令
cd 切換目錄
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
pwd 顯示當前路徑
1、簡介
pwd 是“print working directory”每個單詞的首字母,功能是列印/顯示當前所在目錄姐絕對路徑。在實際工作中,我們經常會在各個目錄之間切換,切換的多了,很容易忘記走到哪了,這時就需要有一幅地圖指引我們,使我們不至於迷路。由此可見這個命令的重要性
2、語法格式
pwd [參數選項]
3、參數說明
一般不需要加參數
4、實踐操作
① 進入到/usr/local後顯示路徑
[root@xiezhr ~]# cd /usr/local/
[root@xiezhr local]# pwd
/usr/local
ls 顯示目錄下內容及相關屬性信息
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 是倒序的意思
mkdir 創建目錄
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
tree 以樹形結構顯示目錄下的內容
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 命令回車
① 不帶參數的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
尾部帶/的為目錄
touch 創建空白文件或改變文件的時間戳屬性
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
②更改文件時間戳屬性(文件的時間戳屬性:訪問時間、修改時間、狀態改變時間)
- stat 查看文件時間戳屬性
- -m 更改文件修改時間
- -a 更改文件的訪問時間
[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: -
cp 複製文件或目錄
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
mv 移動或重命名文件
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
rm 刪除文件或目錄
1、簡介
rm 時rmove 英文單詞的縮寫,功能時刪除一個或多個文件、目錄。rm是Linux中最危險的命令。如果刪錯了那隻有跑路了~ 慎重慎重慎重