Linux是目前服務器應用最廣泛的系統,對於Linux的學習也是程序員必須具備的衆多技能之一,先從Linux系統結構圖來看,學習的整個過程大致圍繞常用指令來學習:
ls 常用命令
1.列出某個文件夾下的所有文件和目錄詳細資料
$ ls -l -R Directory_Path 或者
$ ls -lR Directory_Path
2.列出當前目錄中以某個字母或字符串開頭的文件信息。
如:
$ ls -l abc*
3.只列出文件下的子目錄
$ ls -F /home |grep /$ //列出/home文件下的子目錄
$ ls -l /home |grep "^d" //列出/home文件下子目錄詳細情況
4.列出當前目錄下的所有文件和詳細信息,倒序排列
$ ls -lrt *
5.列出當前目錄下所有檔案及目錄
$ ls -AF
6.計算當前目錄下的文件數和目錄數
$ ls -l * |grep "^-"|wc -l //文件個數
$ ls -l * |grep "^d"|wc -l //目錄個數
7.列出當前目錄下的所有文件包括隱藏文件的絕對路徑。
$ find $PWD -maxdepth l | xargs ls -ld //對目錄不做遞歸
$ find $PWD | xargs ls -ld //對目錄遞歸
cd命令(切換當前目錄至dirName)
1.進入系統根目錄
$ cd /
2.使用cd命令進入當前用戶主目錄
$ cd
3.返回進入此目錄之前所在的目錄
$ cd -
4.把上個命令的參數作爲cd參數使用
$ cd !$
pwd命令(查看當前目錄的絕對路徑)
1.默認命令
$ pwd
2.目錄聯接鏈接時,顯示實際路徑
$ pwd -p
mkdir(創建目錄)
1.遞歸創建多個目錄
$ mkdir -p test1/test11
2.創建權限爲777的目錄
$ mkdir -m 777 test
3.創建新目錄並顯示信息
$ mkdir -v test
rm(刪除命令)
命令參數:
-f, –force 忽略不存在的文件,從不給出提示。
-i, –interactive 進行交互式刪除
-r, -R, –recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
-v, –verbose 詳細顯示進行的步驟
–help 顯示此幫助信息並退出
–version 輸出版本信息並退出
1.刪除某個子目錄及子目錄中所有檔案
$ rm -rf test
2.刪除以 -f 開頭的文件
$ rm -- -f
3.自定義回收站功能
$ myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
$ alias rm='myrm'
mv命令
命令參數:
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,纔會更新(update)
-t : –target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後。
1.移動當前文件夾下的所有文件到上一級目錄
$ mv * ../
2.把當前目錄下的子目錄中的文件移動到另一個目錄
$ mv test/*.txt test2
3.文件被覆蓋前做簡單備份,前面加參數-b
$ mv hello.txt -b helloworld.txt
cp命令
命令參數:
-a, –archive 等於-dR –preserve=all
–backup[=CONTROL 爲每個已存在的目標文件創建備份
-b 類似–backup 但不接受參數
–copy-contents 在遞歸處理是複製特殊文件內容
-d 等於–no-dereference –preserve=links
-f, –force 如果目標文件無法打開則將其移除並重試(當 -n 選項存在時則不需再選此項)
-i, –interactive 覆蓋前詢問(使前面的 -n 選項失效)
-H 跟隨源文件中的命令行符號鏈接
-l, –link 鏈接文件而不復制
-L, –dereference 總是跟隨符號鏈接
-n, –no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, –no-dereference 不跟隨源文件中的符號鏈接
-p 等於–preserve=模式,所有權,時間戳
–preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果可能保持附加屬性:環境、鏈接、xattr 等
-R, -r, –recursive 複製目錄及目錄內的所有項目
touch命令
命令參數:
-a 或–time=atime或–time=access或–time=use 只更改存取時間。
-c 或–no-create 不建立任何文檔。
-d 使用指定的日期時間,而非現在的時間。
-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
-m 或–time=mtime或–time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間。
1.更新兩個文件的時間戳相同
$ touch -r test1.log test2.log
2.設定文件的時間戳
$ touch -t test.log
cat命令
cat主要有三大功能:
- 一次顯示整個文件:cat filename
- 從鍵盤創建一個文件:cat > filename 只能創建新文件,不能編輯已有文件
- 將幾個文件合併爲一個文件:cat file1 file2 > file
命令參數:
-A, –show-all 等價於 -vET
-b, –number-nonblank 對非空輸出行編號
-e 等價於 -vE
-E, –show-ends 在每行結束處顯示 $
-n, –number 對輸出的所有行編號,由1開始對所有輸出的行數編號
-s, –squeeze-blank 有連續兩行以上的空白行,就代換爲一行的空白行
-t 與 -vT 等價
-T, –show-tabs 將跳格字符顯示爲 ^I
-u (被忽略)
-v, –show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
1.顯示文件加上行號然後輸出到另一個文件中
$ cat -n test.log test2.log
2.把log2015.log 和 log2016.log 的文件內容加上行號(空白不加),之後將內容附加到 log201609.log
$ cat -b log2015.log log2016.log log201609.log
3.把 log2015.log 的文件內容加上行號後輸出到 log2016.log 這個文件中
$ cat -n log2015.log > log2016.log
4.使用 here doc 來生成文件
$ cat > log.txt <<EOF
nl命令
nl命令在Linux系統中用來計算文件中行號。nl可以將輸出的文件內容自動的加上行號。其默認的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。
命令參數:
-b :指定行號指定的方式,主要有兩種:
-b a :表示不論是否爲空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認值);
-n :列出行號表示的方法,主要有三種:
-n ln :行號在螢幕的最左方顯示;
-n rn :行號在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號在自己欄位的最右方顯示,且加 0 ;
-w :行號欄位的佔用的位數。
-p 在邏輯定界符處不重新開始計算。
命令功能:
nl 命令讀取 File 參數(缺省情況下標準輸入),計算輸入中的行號,將計算過的行號寫入標準輸出。 在輸出中,nl 命令根據您在命令行中指定的標誌來計算左邊的行。 輸入文本必須寫在邏輯頁中。每個邏輯頁有頭、主體和頁腳節(可以有空節)。 除非使用 -p 標誌,nl 命令在每個邏輯頁開始的地方重新設置行號。 可以單獨爲頭、主體和頁腳節設置行計算標誌(例如,頭和頁腳行可以被計算然而文本行不能)。
1.用nl列出文件中的內容
$ nl log.txt
2.列出文件中的內容,空本行也加上行號
$ nl -b a log.txt
3.行號前自動補0,統一輸出格式
$ nl -b a -n rz log.txt //默認顯示六位數
$ nl -b a -n rz -w 3 log.txt //指定輸出格式爲三位數顯示
more命令
more命令功能類似cat,cat命令是整個文件的內容從上到下顯示在屏幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能 。more命令從前向後讀取文件,因此在啓動時就加載整個文件。
格式:
$ more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file...]
功能:
more命令和cat的功能一樣都是查看文件裏的內容,但有所不同的是 more 可以按頁來查看文件的內容,還支持直接跳轉行等功能。
命令參數:
+n 從笫n行開始顯示
-n 定義屏幕大小爲n行
+/string 在每個檔案顯示前搜尋該字串(string),然後從該字串前兩行之後開始顯示
-c 從頂部清屏,然後顯示
-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字符
-p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
-s 把連續的多個空行顯示爲一行
-u 把文件內容中的下畫線去掉
常用操作:
Enter 向下n行,需要定義。默認爲1行
Ctrl+F 向下滾動一屏
空格鍵 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
V 調用vi編輯器
!命令 調用Shell,並執行命令
q 退出more
實例:
1.從第幾行開始顯示文件內容
$ more +n filename //n值自定義,可以是任意數字
2.從文件中查找第一次出現某個字符串的行,並從此處顯示
$ more +/string filename //如more +/hello hello.txt 從有hello的行開始顯示
3.設置屏幕顯示的行
$ more -n filename //n值自定義,可以是任意整數
4.使用分頁顯示一個文件下的所有目錄
$ ls -l | more -n //使用管道分割設置每頁顯示行數
less命令
less 與 more 類似,less 在查看之前不會加載整個文件,可以隨意瀏覽,more只能向前瀏覽。
命令參數:
-b <緩衝區大小> 設置緩衝區的大小
-e 當文件顯示結束後,自動離開
-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
-g 只標誌最後搜索的關鍵詞
-i 忽略搜索時的大小寫
-m 顯示類似more命令的百分比
-N 顯示每行的行號
-o <文件名> 將less 輸出的內容在指定文件中保存起來
-Q 不使用警告音
-s 顯示連續空行爲一行
-S 行過長時間將超出部分捨棄
-x <數字> 將“tab”鍵顯示爲規定的數字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重複前一個搜索(與 / 或 ? 有關)
N:反向重複前一個搜索(與 / 或 ? 有關)
b 向後翻一頁
d 向後翻半頁
h 顯示幫助界面
Q 退出less 命令
u 向前滾動半頁
y 向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁
[pagedown]: 向下翻動一頁
[pageup]: 向上翻動一頁
head命令
1.顯示文件的前幾行
$ head -n num filename //如顯示前10行,n就是10
2.顯示除了最後n行之外的全部內容
$ head -n -num filename
3.顯示文件前n個字節
$ head -c num filename //如num=10,顯示前10個字節
4.顯示除最後n個字節以外的內容
$ head -c -num filename
tail命令
用於顯示指定文件末尾內容,不指定文件時,作爲輸入信息進行處理,常用查看日誌文件。
命令參數:
-f 循環讀取
-q 不顯示處理信息
-v 顯示詳細的處理信息
-c<數目> 顯示的字節數
-n<行數> 顯示行數
–pid=PID 與-f合用,表示在進程ID,PID死掉之後結束.
-q, –quiet, –silent 從不輸出給出文件名的首部
-s, –sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒
1.顯示文件末尾內容
$ tail -n num filename
2.循環查看文件內容
$ tail -f filename
3.從第n行開始顯示文件
$ tail -n +num filename
which命令
查看可執行文件的位置
命令參數:
-n 指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。
-p 與-n參數相同,但此處的包括了文件的路徑。
-w 指定輸出時欄位的寬度。
-V 顯示版本信息
whereis命令
查看文件位置
命令參數:
-b 定位可執行文件。
-m 定位幫助文件。
-s 定位源代碼文件。
-u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
-B 指定搜索可執行文件的路徑。
-M 指定搜索幫助文件的路徑。
-S 指定搜索源代碼文件的路徑。