Linux零基礎入門第四課
根據直播講義整理的內容,從第四課開始。前三課的內容若後面有精力會一並整理進來。
文件的基本操作(上)
創建、刪除、復制、移動和重命名
touch
命令創建文件語法
>$ touch file0 [file1 file2 ...] >$ touch file{0..9}.txt
touch
命令可以創建空文件,將文件名作為參數即可。傳遞多個文件名可同時創建多個文件。
若使用 file{0..9} 作為參數,將自動創建10個空文件,名字分別為file0.txt
、file1.txt
、...、file9.txt
。
若傳遞給touch
的文件已存在於磁盤上,則不會創建此文件,但會更新該文件的時間戳。
mkdir
命令創建目錄
語法
>$ mkdir [-p] dir1 [dir2 dir3 ...]
>$ mkdir [-p] dir1{0..9}
mkdir
命令可以創建目錄,將目錄名作為參數即可。
傳遞多個目錄名可同時創建多個目錄。
若想同時創建子目錄,則需要使用-p
參數,否則只能創建空目錄。
示例
# 在當面目錄下創建名為 dir1 的空目錄。 >$ mkdir dir1 # 在當前目錄的子目錄 dir1 內創建子目錄 dir2。 >$ mkdir dir1/dir2 # 錯誤:dir3 不存在,創建多級子目錄應使用 -p 參數。 >$ mkdir dir3/dir4 # 同時創建 dir3 目錄及其子目錄 dir4。 >$ mkdir -p dir3/dir4 # 創建 3 個目錄,名字分為為 dir5、dir6、dir7。 >$ mkdir dir{1..3}
rm
命令刪除文件或目錄
語法
>$ rm [-rf] dir1/file1 [dir2/file2 ...]
rm
命令可以刪除文件或目錄。
-r
參數表示要刪除一個目錄。
-f
參數表示強制刪除,且靜默刪除,不會詢問用戶,被刪除的文件不存在也不會報錯。
註意:此命令較危險,被刪除的文件幾乎無法恢復,使用時需謹慎。
cp
命令復制目錄或文件
語法
>$ cp [-rfv] src dest
cp
命令將src
參數所指定的文件或目錄復制到dest
參數所指定的位置。
-r
參數用於遞歸復制目錄中的文件,若復制目錄時未使用此參數,則僅復制目錄本身,目錄中的文件及子目錄不會被復制。
-f
參數表示強制復制。
-v
參數表示打印復制的過程。
mv
命令移動或重命名文件及目錄
語法
>$ mv [-fv] src dest
mv
命令有兩個作用,當src
參數所指定的文件或目錄與dest
參數所指定的路徑為同一個目錄時,相當於做重命名,否則相當於將src
移動到dest
。
-f
參數表示強制移動或重命名。
-v
參數表示打印移動的過程。
示例
# 當前目錄 dir 與文件 file1 在相同的目錄中。
>$ tree
.
├── dir
└── file1
1 directory, 1 file
# 將 file1 重命名為 file2。
>$ mv file1 file2
>$ tree
.
├── dir
└── file2
1 directory, 1 file
# 將 file2 移動到 dir 目錄下。
>$ mv file2 dir
>$ tree
.
└── dir
└── file2
1 directory, 1 file
文件讀寫
echo
命令輸出字符串
語法
echo [-n] "string"
使用echo
命令可以將string
參數的字符串打印到控制臺上。
-n
參數表示不要輸出換行符\n
。
實際上echo
命令是將string
參數的字符串寫入到其標準輸出流stdout
中了,但由於默認的情況下stdout
就是控制臺,所以看上去echo
命令就是向控制臺打印了字符串。
Shell重定向運算符>
與>>
通過Shell的重定向運算符>
和>>
可以將標準輸出流(stdout
)本來應該打印到控制臺的內容寫入(重定向)到文件中去。
語法
>$ echo "abc" > file1.txt
>$ echo "def" >> file1.txt
>
重定向運算符將echo
命令向標準輸出流(stdout
)打印的字符串abc
寫入到文件file1.txt
中,此處file1.txt
的內容為abc\n
。
其中\n
是Linux
系統的換行符。
若file1.txt
不存在則由重定向運算符自動創建。
>>
重定向運算符將echo
命令向標準輸出流(stdout
)打印的字符串def
追加寫入到文件file1.txt
的末尾,此處file1.txt的內容為abc\ndef\n
。
cat
命令查看文件全部內容
語法
>$ cat [-n] file1 [file2 ...]
cat
命令將文件fileN
的內容從頭至尾讀取出來,並打印到控制臺(實際上是打印到標準輸出stdout
中)。
-n
參數表示打印行號。
示例
>$ cat file1.txt
abc
def
若file1.txt
為空文件,則cat
命令無任何輸出。
head
查看文件開頭部分
語法
>$ head [-n N] file
head
命令會從文件file
的第1行開始讀取數據,共讀取10行,打印到控制臺。
-n
參數可以要求head
命令讀取N
行數據,N
默認為10。
tail
查看文件末尾部分
語法
>$ tail [-n N] [-f] file.log
tail
命令與head
命令恰恰相反,從文件的末尾第N
行開始讀取數據,並打印到控制臺,N
默認為10行,同樣可以通過-n
參數來指定。
-f
參數非常有用,若file.log
文件中不斷有內容寫入,則tail
命令可以監聽到這種變化,並不斷的將最新的內容打印到控制臺上。通常查看日誌的時候會用到此參數。
more
命令按頁查看文件
語法
>$ more file.txt
當要查看的文件file.txt
的內容特別長的時候,使用cat
命令查看並不方便,而more
命令剛好可以滿足這種需求。
more
命令會從頭讀取file.txt
文件的內容,剛好讀滿整個屏幕的數據作為一頁顯示。當我們按下回車鍵(Enter)時,滾動顯示下一行的內容;當我們按下空格鍵(Space)時,滾動顯示下一頁的內容。直到到達文件file.txt
的末尾時more
命令才會退出。
more
命令適合瀏覽長文件時使用或在純Shell(非模擬終端)場景使用。
less
命令更靈活的按頁查看文件
語法
>$ less file.txt
less
命令與more
命令非常相似,可以看做是加強版的more
命令。
less
命令不僅支持與more
命令相同的分頁顯示、回車鍵
和空格鍵
向後讀取文件,還支持使用光標控制鍵(上下箭頭)
、vim光標控制鍵(j、k)
和Emacs光標控制鍵(C-n、C-p)
來向後或向前讀取文件。使用戶可以用更加靈活的方式查看文件。
Linux零基礎入門第四課