在詳解常用命令之前,先對Linux的樹型目錄結構做個簡單的了解,如下所示:
簡單說明:
/ #根目錄 /bin #基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, cd等等。這個目錄中的文件都是可執行的,一般的用戶都可以使用。 /dev #設備文件,比如聲卡、磁盤、鼠標、鍵盤等。 /etc #系統管理和配置文件 /etc/init.d #啟動配置文件和腳本,可在這里添加啟動腳本。 /etc/rc.local #用戶添加啟動項 /home #用戶主目錄,比如用戶user的主目錄就是/home/user,可以用~user表示 /lib #標准程序設計庫存放路徑,又叫動態鏈接共享庫,作用類似windows里的.dll文件 /sbin #超級管理命令,這里存放的是系統管理員使用的管理程序。 /tmp #臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。 /tmp就用來存放臨時文件的。 /root #系統管理員的主目錄 /mnt #用來臨時掛載其他的文件系統 /lost+found #這個目錄平時是空的,系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsck工具會檢查這里,並修復已經損壞的文件系統。 /media #即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載后,會在這個目錄下產生一個目錄 /proc #虛擬文件目錄,可直接訪問這個目錄來獲取系統信息。 /var #所有服務的登錄文件或錯誤訊息檔案(log files)都在 /var/log 里面 /boot #包含Linux內核及系統引導程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一 般情況下,GRUB或LILO系統引導管理器也位於這個目錄; /usr #最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄,其中包含: usr/bin #眾多的應用程序 /usr/sbin #超級用戶的一些管理程序 /usr/include #Linux下開發和編譯應用程序所需要的頭文件 /usr/lib #常用的動態鏈接庫 /usr/share/man #幫助文檔 /usr/src #源代碼,Linux內核的源代碼就放在/usr/src/Linux里 /usr/local/bin #本地增加的命令 /usr/local/lib #本地增加的庫根文件系統 . :代表當前路徑 .. :代表上一級目錄 ~ :代表用戶目錄路徑
二.常用命令詳解
2.1 ls 命令
ls是英文單詞list的縮寫.用來查看文件目錄的屬性。
例如直接輸入ls按回車,查看根目錄的文件以及目錄。
2.1.1 ls -l命令
ls -l l參數代表以列表的方式顯示。 #第一個字符d 代表這是一個目錄文件。 # ‐ 代表普通文件 # c 字符設備文件 # b 塊設備文件 # p 管道文件 # l 鏈接文件 # s socket文件 #后面的rwxr‐xr‐x字符,代表user、group、other對文件所擁有的權限,rwx代表該用戶擁有讀寫執行的權限。r‐x 代表同一組的用戶擁有的讀和執行權限,后一個r‐x代表其他用戶擁有讀和執行權限。 # 2代表文件硬鏈接的計數,表示該文件有兩個硬鏈接。 # where 文件所屬的用戶名。 # where 文件所屬的用戶組。 # 4096 文件大小,單位字節。 # 6月 25 16:53 文件最后被修改的日期。 # Videos 文件名
2.1.2 ls -a命令
ls -a a參數代表all的意思,表示把所有的文件都羅列出來,包括隱藏文件,點號開頭的在Linux中都表示隱藏文件。
ls ‐ld [filename] 代表只列出目錄文件的屬性。
2.2 stat命令
查看文件的訪問時間,修改時間等
訪問時間,是指通過指令如cat、vi等來查看的文件的最近一次時間。更改時間,是指修改文件內容的最近一次時間。
改動時間,是指修改文件屬性的最近一次時間。
注意:訪問時間是內容更改后,第一次訪問的時間,后面再次訪問的時候訪問時間不會改變
2.3 cd命令
cd 是 change directory的縮寫,表示改變當前所在路徑。
2.4 pwd命令
pwd 是英文print working directory 顯示當前所在路徑。
2.5 which命令
尋找可執行文件 ,並在PATH環境變量里面尋找
2.6 touch命令
將每個文件的訪問及修改時間都更新為目前的時間。
如果文件不存在,則創建一個字節數為0的文件。
‐a #只更新訪問時間,不改變修改時間
‐c #不創建不存在的文件
‐m #只更新修改時間,不改變訪問時間
‐r file #使用文件file的時間更新文件的時間
‐t #將時間修改為參數指定的日期,如:07081556代表7月8號15點56分
2.7 mkdir 命令
mkdir 是make directory的英文縮寫。
創建目錄DIRECTORY,可以一次創建多個。OPTION如果是p,表示可以連同父目錄一起創建。
2.8 rmdir 命令
rmdir是remove directory的英文縮寫。
刪除空目錄,可以一次刪除多個。OPTION如果是p,表示可以連同空的父目錄一起刪除。但是一旦父目錄中還包含其他文件,則刪除失敗。
2.9 rm 命令
rm是remove的英文縮寫。
可以用來刪除普通文件,也可以用來刪除目錄,特別用來刪除目錄中嵌套有子目錄的目錄文件。
常用參數:
‐f ‐‐force #強制刪除,不詢問是否要刪除。
‐r ‐‐recursive #遞歸刪除,包括文件夾中的內容。
2.10 mv命令
mv是英文單詞move的縮寫。可以用來移動文件夾或者文件,也可以用來更改文件名。 mv file / #把文件file移動到根目錄中 mv file file_bak #把文件file重命名為file_bak。
2.11 cp命令
cp是英文單詞copy的縮寫,表示拷貝文件。
可以用來拷貝普通文件:
cp file file_bak #拷貝一份file為file_bak
可以用來拷貝目錄
cp dir dir_bak ‐r #拷貝一個目錄dir為dir_bak, ‐r參數代表遞歸拷貝,把dir目錄中的文件也拷貝過去
2.12 cat命令
cat英文單詞concatenate連鎖的縮寫,用來查看文件內容,以及將幾個文件連成一個文件,
不填文件參數,默認的情況下是從標准輸入中獲取內容:
查看文件: cat fileName
將文件file1 file2連成file3文件
cat file1 file2 > file3
2.13 more命令
more 是我們最常用的工具之一,最常用的就是顯示輸出的內容,然后根據窗口的大小進行分頁顯示,並且提示文件的百分比。 參數如下: +num #從第num行開始顯示; ‐num #定義每屏顯示num行; 打開之后的動作:
2.14 less命令
less工具也是對文件或其它輸出進行分頁顯示的工具
參數如下:
‐f #強制打開文件,二進制文件顯示時,不提示警告;
‐N #在每行前輸出行號;
打開之后的動作:
2.15 locate 命令
全盤尋找文件,文件名部分匹配,只要有包含該字符串的都羅列出來,這個指令查找速度很快,它需要一個數據庫,這個數據庫由每天的例行工作(crontab)程序來更新。當我們建立好這個數據庫后,就可以方便地來搜尋
所需文件了。
馬上創建的文件沒辦法使用locate查找到:如果想馬上更新可以使用一下指令:updatedb
2.16 find 命令
直接在全文件系統上搜尋,功能強大,速度慢。 格式: find [path] [‐option] [ ‐print ‐exec ‐ok command ] {} \; path: #要執行查找的目錄。 ‐option: #查找的具體方法。 ‐print: #find命令將匹配的文件輸出到標准輸出。 ‐exec: #find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' {} \;,注意{}和 \;之間的空格。 ‐ok: #和‐exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令 之前,都會給出提示,讓用戶來確定是否執行。 find / ‐name filename #在根目錄里面搜索文件名為filename的文件 find /etc ‐name *s* #在目錄里面搜索帶有s的文件 find /etc ‐name *S #在目錄里面搜索以s結尾的文件 find /etc ‐name s* #在目錄里面搜索以s開頭的文件 find / ‐amin ‐10 #在系統中搜索最后10分鍾訪問的文件 find / ‐atime ‐2 #查找在系統中最后48小時訪問的文件 find / ‐mmin ‐5 #查找在系統中最后5分鍾修改過的文件 find / ‐mtime ‐1 #查找在系統中最后24小時修改過的文件 find / ‐ctime ‐1 #查找在系統中最后24小時被改變狀態的文件 find / ‐user username #查找在系統中屬於用戶username的文件 find / ‐group groupname #groupname 查找在系統中屬於groupname的文件 find / ‐empty #查找在系統中為空的文件或者是文件夾 find / ‐inum 3 #查找inode號為3的文件 find / ‐type d #查找為文件類型為文件夾的文件d為文件夾 f #普通文件 d #目錄文件 l #鏈接文件 b #塊設備文件 c #字符設備文件 p #管道文件 s #socket文件
2.17 grep 命令
搜索內容中是否包含指定的字符串,並打印出該行。 常用參數有: ‐i ‐‐ignore‐case #忽略字符大小寫的差別。 ‐v #輸出沒有指定字符串的文件 ‐c #只輸出匹配行的計數。 ‐R #連同子目錄中所有文件一起查找。
2.18 ln命令
ln是英文單詞link的縮寫,用來創建鏈接的命令。
Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認情況下,ln命令產生硬鏈接。
【硬鏈接】
硬鏈接指通過索引節點來進行鏈接。在Linux的文件系統中,保存在磁盤分區中的文件不管是什么類型都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個文件名指向同一索引節點,一般這種鏈接就是硬鏈接。
硬鏈接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬鏈接到重要文件,以防止“誤刪”。
如果有多個硬鏈接,只刪除一個鏈接並不影響本身和其它的鏈接,只有當最后一個鏈接被刪除后,文件的才會被正在刪除。也就是說,文件真正刪除的條件是與之相關的所有硬鏈接文件均被刪除。
【軟鏈接】
另外一種鏈接稱之為符號鏈接(Symbolic Link),也叫軟鏈接。軟鏈接文件有類似於Windows的快捷方式。它實際上是一個特殊的文件。符號鏈接文件實際上是一個文本文件,其中包含的有另一文件的位置信息。
給flie文件創建一個硬鏈接
touch file
ln file file_hard
給file文件創建一個軟鏈接
touch file
ln ‐s file flie_soft
注意: 軟鏈接的時候盡量使用絕對路徑,避免由於鏈接文件移動后,造成文件失效。
2.19 wc 命令
Linux系統中的wc為英文Word Count的縮寫,命令的功能為統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。
命令功能:
統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。如果沒有給出文件名,則從標准輸入讀取。wc同時也給出所指定文件的總統計數。
命令參數:
‐c #統計字節數。
‐l #統計行數。
‐m #統計字符數。這個標志不能與 ‐c 標志一起使用。
‐w #統計字數。一個字被定義為由空白、跳格或換行字符分隔的字符串。
‐L #打印最長行的長度。
2.20 od命令
od是英文octal dump的縮寫,功能是把文件用8進制或者其他的格式顯示出來,通常用於查看特殊格式文件的內容,可以用來查看不可見字符。 2.21 du命令 du是英文Disk usage的縮寫,表示計算某個目錄在硬盤中所占的空間大小,默認情況下以kb為單位。通過遞歸統計每一個目錄中所占用的空間大小。 常用參數如下:
2.22 df命令
df是英文Disk free的縮寫,用來統計磁盤是使用情況。
2.23 gedit命令
gedit全稱 GNU edit 是一個文本編輯器,類似windows里面的txt文本編輯器。編輯file文本。
2.24 管道命令
用法: command 1 | command 2 他的功能是把第一個命令command 1執行的結果作為command 2的輸入。管道命令操作符是:”|”它只能處理經由前面一個指令傳出的正確輸出信息,對錯誤信息信息沒有直接處理能力.
2.25 重定向
在shell中,標准輸入是0,標准輸出是1,標准錯誤是2. 使用>表示重定向。1>表示標准輸出重定向,2>表示標准錯誤重定向。默認情況下>表示輸出重定向。 例如: ls > list.txt #ls的輸出重定向到文件list.txt中。 find / ‐name "*.c" 2>/dev/null #標准錯誤重定向到無底洞文件。 find / ‐name "*.c" 2>/dev/null #標准錯誤重定向到無底洞文件。 find / ‐name "*.c" >/dev/null 2>&1 #標准輸出、標准錯誤重定向到無底洞文件。
2.26 后台運行
Linux中可以使用&,讓程序在后台運行。如:cat &
2.27 awk命令
awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。 格式:awk [‐F field‐separator] 'commands' [input‐file(s)] 其中,commands 是真正awk命令,[F 域分隔符]是可選的。 inputfile(s) 是待處理的文件。 print 是awk打印指定內容的主要命令, $1 分割出來的第一段,$2分割出來的第二段,依次類推,$0代表所有 字段例如: ls ‐l | awk '{print $1 "\t" $2 "\t" $3 "\t" $4}' 將/proc/meminfo文件中的字段提取出來,並且在每個字段前面添加meminfo: awk ‐F ':' '{print "meminfo:" $1}' /proc/meminfo
原文鏈接:https://blog.csdn.net/weixin_39951988/java/article/details/87613816