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