1. 程式人生 > >Linux操作命令(二)

Linux操作命令(二)

本次實驗將介紹 Linux 命令中 mkdir、rm、mv、cp、cat、nl 命令的用法。

 1.mkdir

mkdir命令用來建立指定名稱的目錄,要求建立目錄的使用者在當前目錄中具有寫許可權,並且指定的目錄名不能是當前目錄中已有的目錄。

mkdir是make directory的縮寫。

【命令格式】:mkdir [選項] 目錄

【常用引數】:

-m 
--mode=模式:設定許可權<模式>

-p
--parents:可以是一個路徑名稱。若路徑中的某些目錄尚不存在,
加上此選項後,系統將自動建好那些尚不存在的目錄,即一次可以建立多個目錄。
-v-- vetbose:每次建立新目錄都顯示資訊

 

【常用範例】:

1.遞迴建立多個目錄

mkdir -p zhou/test

 

2.建立許可權為777的目錄

mkdir -m 777 zhou

 

3.建立目錄顯示資訊

mkdir -vp zhou/test

 

【思考題】:

嘗試一下下列命令,看看有什麼神奇的事發生(tree需要單獨安裝)

sudo apt-get update;sudo apt-get install tree
mkdir -vp shiyanlou(lib/,bin/,doc{info
,product}) tree shiyanlou/

 

2.rm

rm是最常用的命令,該命令的功能為刪除一個目錄中的一個或多個檔案或目錄,也可以將某個目錄及其下的所有檔案及子目錄均刪除。對於連結檔案只是刪除了連結,原有檔案均保持不變

rm是一個危險的命令,使用的時候要特別當心,尤其對於新手,否則整個系統就會毀在這個命令(比如在/根目錄下執行rm * -rf)。所以我們在執行rm之前最好先確認一下在哪個目錄,到底要刪除什麼東西,操作時保持高度清醒的頭腦!

rm是remove的縮寫。

【命令格式】:rm [選項] 檔案或目錄

【常用引數】:

-f --force:忽略不存在的檔案,從不給出提示
-i --interactive:進行互動式刪除 -r --recursive:指示rm將引數中列出的全部目錄和子目錄均遞迴地刪除 -v --verbose:詳細顯示進行地步驟

 

【常用範例】:

(首先建立一個測試文字

sudo touch shiyanlou.log

1.刪除檔案,系統會先詢問是否刪除

rm shiyanlou.log

 

2.強行刪除檔案,系統不再提示

rm -f shiyanlou.log

 

3.刪除字尾名為.log地所有,刪除前逐一詢問

rm *.log
rm -i *.log

 

【思考題】:思考下列命令有什麼作用

myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); 

mkdir -p $D; mv "[email protected]" $D && echo "moved to $D ok"; }

3.mv

mv命令功能是用來移動檔案或更改檔名,是Linux系統下常用的命令,經常用來備份檔案或目錄。

mv命令根據第二個引數(是目標檔案還是目標目錄)來決定執行將檔案重新命名將其移動至一個新的目錄當中

當第二個引數型別是檔案時,mv命令完成檔案重新命名,此時原始檔只能有一個(也可以是源目錄名),它將所給的原始檔或目錄重新命名為給定的目標檔名。

當第二個引數是已存在的目錄名稱時,原始檔或目錄引數可以有多個,mv命令將各引數指定的原始檔均移至目標目錄中。mv命令是move縮寫。

【命令格式】:mv [選項] 原始檔或目錄 目標檔案或目錄  【常用引數】:
-b --back:若覆蓋檔案,則覆蓋前先行備份

-f --force:如果目標檔案已存在,不會詢問直接覆蓋

-i --interactive:若目標檔案已經存在時,就會詢問是否覆蓋

-u --update:若目標檔案已經存在,且原始檔比較新,才會更新

-t --target:該選項適用於移動多個原始檔到一個目錄的情況,此時目標目錄在前,原始檔在後

 

【常用範例】: 1.將檔案shiyanlou.log重新命名為zhou.log
mv dhiyanlou.log zhou.log

 

2.將檔案zhou.log移動到test目錄下(test目錄必須已經存在,否則執行重新命名)
mv zhou.log test

 

3.將檔案a.txt 移動到test1目錄下,若檔案存在,覆蓋前會詢問是否覆蓋  
mv -i a.txt test1

 

4.cp

cp命令用來複制檔案或目錄,是Linux系統中最常用的命令之一。一般情況,shell會設定一個別名,在命令列下複製檔案時,如果目標檔案已經存在,就會詢問是否覆蓋,不管你是否使用-i引數。但是如果是在shell指令碼中執行cp時,沒有-i引數時不會詢問是否覆蓋。這說明命令列和shell指令碼的執行方式有些不同。cp命令式copy的縮寫。

【命令格式】:cp[選項] 原始檔 目錄 cp [選項] -t 目錄 原始檔 【常用引數】:
-t --target-directory:指定目標目錄

-i--interactive:覆蓋前詢問(使前面的-n選項失效)

-n--no-clobber:不要覆蓋已存在的檔案(使前面的-i選項失效)

-s--symbolic-link:對原始檔艱苦符號連結,而非複製檔案

-f--force:強行復制檔案或目錄,不論目的檔案or目錄是否已存在

-u--update:使用這項引數之後,只會在原始檔的修改時間較目的檔案更新時,
或是對應的目的檔案並不存在才複製檔案.

 

【常用範例】: 1.對檔案shiyanlou.log 建立一個符號連結zhou.log
cp -s shiyanlou.log zhou.log

 

2.將test1 目錄下的所有檔案複製到test2目錄下,覆蓋前詢問
cp -i test1/* test2

 

    3.將test1目錄下的最近更新的檔案複製到 test2目錄下,覆蓋前詢問  
cp -iu test1/* test2

 


5.cat

cat命令的功能是將檔案或標準輸入組合輸出到標準輸出。這個命令常常用來顯示檔案內容,或者將幾個檔案連線起來顯示,或者從標準輸入讀取內容並顯示!它常與重定向符號配合使用。cat命令式concatenate的縮寫。

【命令格式】:cat [選項] [檔案] 【常用引數】:
-A --show-all :等價於-vET

-b--number-nonblank:對非空輸出行編號

-e:等價於-vE

-E--show-ends:在每行結束處顯示¥

-n--number:對輸出的所有行編號,由1開始對所有輸出的行數編號

-s--squeeze-blank:由連續兩行以上的空白行,就代換為一行的空白行

-t:與-vT等價

-T--sjow-tabs:將跳格字元顯示為^|

-u:(被忽略)

-v--show-nonprinting:使用^和M-引用,除了LFD和TAB之外

 

【常用範例】: 1. 把shiyanlou.log 的檔案內容加上行號後輸入 zhou.log這個檔案裡
cat -n shiyanlou.log > zhou.log

 

2. 把shiyanlou.log的檔案內容加上行號後輸入 zhou.log這個檔案裡,多行空行換成一行輸出
cat -ns shiyanlou.log > zhou.log

 

3. 將zhou.log的檔案內容反向顯示
tac zhou.log

說明:tac 是將 cat 反寫過來,所以它的功能就跟 cat 相反,cat 是由第一行到最後一行連續顯示在螢幕上,而 tac 則是由最後一行到第一行反向在螢幕上顯示出來。

 

【思考題】:執行下列命令會輸出什麼
[[email protected] ~]# cat -A << EOF
> 'ls -l'
> EOF
'ls -l'$

 


6.nl

nl命令在Linux系統中用來計算檔案中行號。nl可以將輸出的檔案內容自動的加上行號。其 預設的結果與cat -n有點不同,nl可以將行號做比較多的顯示設計,包括位數與是否自動補齊0等等的功能。

nl命令是number of lines縮寫。

【命令格式】:nl [選項] [檔案] 【常用引數】:
-b:指定行號指定的方式,主要由兩種:
-b a:表示不論是否為空行,也同樣列出行號(類似cat -n)
-b t:如果有空行,空的那一行不要列出行號(預設值)

-n:列出行號表示的方法,主要有三種
-n ln:行號在螢幕的最左方顯示
-n rn:行號在自己欄位的最右方顯示,且不加0
-n rz:行號在自己欄位的最右方顯示,且加0

-w:行號欄的佔用的位數

 

【常用範例】: 1.把shiyanlou.log的檔案內容加上行號後顯示,空行不加行號
nl -b t shiyanlou.log

 

2.把shiyanlou.log的檔案內容加上行號後顯示,

行號分別在螢幕最左方、最右方不加0和最右方加0顯示

nl -n ln shiyanlou.log
nl -n rn shiyanlou.log
nl -n rz shiyanlou.log

3.把shiyanlou.log的檔案內容加上行號後顯示,行號在螢幕最右方加0顯示,行號欄目佔位數為3

nl -n rz -w 3 shiyanlou.log