Linux 查找find,grep,cat,echo等命令

Linux中的命令非常多,本節僅介紹一些在開發Android過程中常用的Linux命令。
• man
m an的含義是 m anual,即手冊。當我們不清楚某個Linux命令的作用和用法時,可 以 使 用 man
command進行查詢,command爲具體的命令名稱,比如man Is。
• find
find命令用於查找某個文件或者文件夾,比如:

$ find . -name" *.java"

該命令用於查找當前目錄下擴展名爲Java的所有文件,find命令後面的“點” 代表當前目錄,*爲
通配符,代表任何名稱。
• grep
grep命令爲正則表達式匹配命令,該命令用於字符串匹配。比如,想 查 找 hello.java文件中包含
“Activity” 字符串的所有地方,可使用如下命令。

$ grep "Activity" hello.java

grep和 find的區別在於,find用於查找目錄或者文件,而 grep用於查找指定的字符串,並且字符

串可以由正則表達式描述。關於正則表達式請參考其他相關資料。
• xargso
確切的說,xargs並不是一個命令,而是一個標識,代表了上一個命令的執行結果,並作爲下一個
命令的參數。Linux命令可以流水線執行,也 叫 做 “多管道” 執行,即兩個命令用“|” 分隔符隔開。比
如,想查找當前目錄下文件名中包含“oa” 的所有文件,可使用以下命令:

$ls丨xargs grep "oa"

該命令中Is用於列出所有文件,“多管道”後面的命令把前面命令的輸出結果作爲後面命令的參數。
再舉一個例子,想查找當前目錄下所有包含“Activity” 字符串的Java文件,命令如下:

$ find . -namen *.java 丨xargs grep "Activity "

再舉例,想查找當前目錄下子目錄名稱爲res下的所有.xm l文件,並且列出這些.xm l文件中包含
“status__bar_size” 字符串的地方。注意,本例的限制條件是,查找的是res目錄下的.xml文件,而不是
所有的.xml文件。命令如下:
$ find 'f i n d , - n a m e r e s ’ - n a m e | x a r g s g r e p s t a t u s — b a r 一s i z e
該命令中,find命令進行了嵌套使用,內部find包 含 在 符 號 之 中 。注意這不是單引號,而是
鍵盤上數字鍵1左邊對應的那個符號。內嵌的find命令用於查找名稱爲res的目錄或文件,外部的find
命令從得到的這些目錄下繼續查找.xml文件,“多管道” 後面的命令用於查找指定的字符串。
• cat。
cat命令用於連接文件內容並在Terminal中輸出文件內容,該命令後面如果只有一個文件名稱,則
僅輸出該文件內容。cat參數中的文件可以是普通意義上的有存儲空間的文件,也可以是Linux系統中
的設備文件。比如,可以查看當前目錄下main.java的文件內容,使用如下命令:

$cat main.java

也可以查看設備文件,以下命令用於查看/dev/disk0的內容:

$ sudo cat /dev/disk0

該命令中sudo的含義是使用管理員權限執行後續的命令,因爲有些命令要求有管理員的權限。
• chmodo
在 Linux系統中,文件的訪問者被劃分爲三類,並針對這三類用戶指定不同的訪問權限。這三類訪
冋者是:
• user(u),用戶自身,即創建該文件的用戶。
• group (g ),用戶所在組,即與創建在一個組裏面的用戶。
• other (o ),其他用戶。
chmod命令就是用於設置這三類訪問者對某文件的訪問權限。訪問權限分爲讀 r ) 權限、寫 w)
權限、執 行 X )權限,文件類型不同,“執行” 的含義不同。可以通過Is-1命令查看文件的訪問權限,
Linux系統使用10位 b it)數據表示訪問的權限,比如某文件的訪問權限如下。
$ls -1 mybin

t o t a l 32
I - r w - r - - r - - @ 1 k e y d s t a f f 73 M a r 9 2 3 : 3 2 M a k e f i l e . m k
! d r w x r - x r - x 4 k e y d s t a f f 1 3 6 A u g 27 2 0 1 0 b a s h
• bito:使 用 - 或 者 d 表示,前者表示這是一個文件,後者表示這是一個目錄 directory)。
• bit l-bit 3:用 戶 自 身 user)對該文件的訪問權限。
• bit4 bit6 : 用 戶 組 group)對該文件的訪問權限。
• bit 7 bit 9 : 其 他 用 戶 other)對該文件的訪問權限。
舉例,某個文件的屬性爲-rwxrwx ,這表示它是個文件,用戶對該文件擁有讀取、寫入、執行權
限,用戶組對該文件也擁有讀取、寫入、執行權限,而其他用戶則不能讀取、不能寫入、不能執行。
再舉一個例子,dr-x-x 表示它是一個文件夾。用戶對該文件夾擁有讀取、執行權限,但不能修改;
用戶組對該文件擁有執行權限,即只能打開該文件夾,但不能讀取和修改;其他用戶則不能讀取、不能
修改,也不能打開該文件夾。
下面來看chmod命令如何修改文件的訪問權限。假設有一個腳本文件copy.sh,創建該文件時,默
認的訪問權限不包括執行 x ) ,但要運行該腳本,用戶必須擁有對該文件的執行權限,於是使用以下命
令爲用戶添加執行權限:

$ chmod u+x copy.sh

命令中u+x的含義是給user添 加 執 行 x ) 的權限,類似的也可以是o+x、o+rw、g+rwx等。爲了
便於使用,可以用a 代表三類用戶,比如a+x、a+rwx等,這裏的a 代 表 a ll,即所有三類用戶。
對於某些Linux系統,比如Android手機底層的Linux,chmod命令不識別r、w、x 這樣的參數,
而只能使用8 進制數字值來表示,比如:

$ chmod 777 copy.sh

其中的777爲 8 進制的數,對應的二進制數據爲111 111 111, 這就分別代表了 u、g、o 三類用戶的
訪問權限。
• ps,kill
ps用於列出當前運行的所有進程,kill用於殺死某個進程。這兩個命令多用於系統調試,比如,可
以先用ps列出所有進程,從輸出信息中得到每個進程的id值,即 pid,然後調用k ill-9 pid,就可以殺
死指定pid對應的進程。-9是一個參數,詳情可使用man kill查看。
• export。
該命令用於將某個變量值的作用域設爲全局範圍。比如,可以將某個路徑賦值給系統環境變量
PATH,然後再export PATH,從而,其他所有程序都可以使用該路徑。
該命令還有另外一個巧用。有些公司爲了資產管理的需求,往往會給每一臺PC機進行編號、命名,
比如xxxcom_yyypart—username,這就導致打開Terminal後提示符之前的字符串太長。此時,可以使用
export PSl=me命令,PS 1 —般代表了當前Terminal,等號後面的字符串則任由用戶定製,它將代替那
串冗長的提示符。執行完後,用戶會發現Terminal變得簡單多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章