iOS之認識Shell2-常用的命令參考1

語言: CN / TW / HK

這是我參與11月更文挑戰的第13天,活動詳情檢視:2021最後一次更文挑戰

常用命令參考

linux-command\ linux-command

ag命令

ag超快的檔案搜尋工具,與grep相比,搜尋速度更快。 https://www.cnblogs.com/michael-xiang/p/10466890.html

c++filt命令

c++filt命令可用於解析C++Java中被修飾的符號,比如變數與函式名稱。 https://blog.csdn.net/K346K346/article/details/88225726

tree命令

tree命令以樹狀圖列出目錄的內容。

https://wangchujiang.com/linux-command/c/tree.html

cp命令

cpcopy的縮寫,cp命令用於複製檔案/資料夾。

https://jianrry.com/archives/100/

引數:

-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 複製目錄及目錄內的所有專案 -t --target-directory=DIRECTORY 將所有原始檔拷貝到目標目錄 -T, --no-target-directory 目標為檔案而不是資料夾

ln命令

所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種:

  • 硬連結(hard link),意思是一個檔案可以有多個名稱;

    1. 硬連結,以檔案副本的形式存在。但不佔用實際空間;
    2. 不允許給目錄建立硬連結;
    3. 硬連結只有在同一個檔案系統中才能建立;
  • 軟連結(symbolic link),意思是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。

    1. 軟連結,以路徑的形式存在。類似於快捷方式;
    2. 軟連結可以跨檔案系統,硬連結不可以;
    3. 軟連結可以對一個不存在的檔名進行連結;
    4. 軟連結可以對目錄進行連結。

https://wangchujiang.com/linux-command/c/ln.html

sed命令

通常要進行文字處理,sed是一個非常強大的文字處理命令工具。 配合正則表示式可以進行文字搜尋、替換、插入、刪除等操作。處理時,把當前處理的行儲存在臨時緩衝區中,稱為模式空間(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變。

https://man.linuxde.net/sed

grep

grep命令全稱是Global Regular Expression Print,是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來。\ 主要引數: https://wangchujiang.com/linux-command/c/grep.html

ls命令

ls命令用來顯示目標列表。 https://wangchujiang.com/linux-command/c/ls.html#!kw=grep drwxr-xr-x 2 root root 48 2020-11-27 13:34 test/ 第一個欄位,表示檔案的屬性。件基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。數字表示:1表示可執行許可權,2表示可寫許可權,4表示可讀許可權。\ 第一個字母表示檔案型別: - -,普通檔案。 - d,目錄,是dirtectory的縮寫。 - l,符號連結。 - b,塊裝置檔案。 - c,字元裝置檔案。 緊接著的3*3個字元分3組,各指示此檔案的讀、寫、執行許可權,對於ownergroupothers而言。

因為Linux/Unix是多使用者多工系統,所以一個檔案可能同時被許多人使用,所以我們一定要設好每個檔案的許可權,其檔案的許可權位置排列順序是(以-rwxr-xr-x為例):

``` rwx(Owner)r-x(Group)r-x(Other)  
第二個欄位,表示檔案個數。如果是檔案的話,那這個數目自然是1了,如果是目錄的話,那它的數目就是該目錄中的檔案個數了。

第三個欄位,表示該檔案或目錄的擁有者。若使用者目前處於自己的Home,那這一欄大概都是它的賬號名稱。

第四個欄位,表示所屬的組(group)。每一個使用者都可以擁有一個以上的組,不過大部分的使用者應該都只屬於一個組,只有當[系統管理員]希望給予某使用者特殊許可權時,才可能會給他另一個組。

第五欄位,表示檔案大小。檔案大小用byte來表示,而空目錄一般都是1024byte,當然可以用其它引數使檔案顯示的單位不同,如使用ls –k就是用kb顯示一個檔案的大小單位,不過一般我們還是以byte為主。  

第六個欄位,表示最後一次修改時間。以“月,日,時間”的格式表示,如Aug 15 5:46表示8月15日早上5:46分

第七個欄位,表示檔名。我們可以用ls –a顯示隱藏的檔名。

–rwxr-xr-x轉換成許可權數字為755。即: 1. rwx即4+2+1=7; 2. r-x即4+1=5; 3. r-x即4+1=5。

```

stat命令

stat命令用於顯示檔案或檔案系統的詳細資訊。在顯示檔案資訊時,比ls命令更加詳細。

https://wangchujiang.com/linux-command/c/stat.html ```` 引數: -L, --dereference: 跟隨符號連結解析原檔案而非符號連結; -f, --file-system: 顯示檔案所在檔案系統資訊而非檔案資訊; -c,--format=FORMAT: 以指定格式輸出,而非預設格式; --printf=FORMAT: 以指定格式輸出,而非預設格式。與--format作用類似,但可以解釋反斜槓轉義字元,比如換行符\n; -t, --terse: 簡潔模式輸出,只顯示摘要資訊; --help: 顯示幫助資訊; --version: 顯示版本資訊。 顯示檔案資訊可用格式控制符如下: %a:以八進位制顯示訪問許可權 %A:以可讀形式顯示訪問許可權 %b:顯示佔有塊數 %B:顯示每一塊佔有的位元組數 %C:SELinux security context string %d:十進位制顯示檔案所在裝置號 %D:十六進位制顯示檔案所在裝置號 %f:十六進位制顯示檔案型別 %F:檔案型別。Linux下檔案型別主要分為普通檔案、目錄、字元裝置檔案、塊裝置檔案、符號連結檔案、套接字等 %g:檔案所有者組ID %G:檔案所有者組名稱 %h:檔案硬連結數 %i:inode號 %m:檔案所在磁碟分割槽掛載點,比如/data %n:檔名稱 %N:單引號括起來的檔名稱,如果是軟連結,則同時顯示指向的檔名稱 %o:optimal I/O transfer size hint %s:實際檔案大小,單位位元組 %t:major device type in hex, for character/block device special files %T:minor device type in hex, for character/block device special files %u:所有者使用者ID %U:所有者使用者名稱稱 %w:檔案建立時間,輸出-表示無法得知 %W:檔案建立時間,輸出Unix時間戳,0表示無法得知 %x:可讀形式輸出最後訪問時間atime %X:Unix時間戳輸出最後訪問時間atime %y:可讀形式輸出最後修改時間mtime %Y:Unix時間戳輸出後修改時間mtime %z:可讀形式輸出最後狀態改變時間ctime %Z:Unix時間戳輸出最後狀態改變時間ctime ``` 顯示檔案系統資訊可用格式控制符有:

%a:非超級使用者可使用的自由block數 %b:檔案系統總block數 %c:檔案系統總檔案節點數 %d:可用檔案節點數 %f:可用檔案block數 %i:十六進位制檔案系統ID %l:最大檔名稱長度 %n:檔名稱 %s:一個塊的大小,單位位元組(for faster transfers) %S:一個塊的基本大小,單位位元組(用於統計block的數量) %t:十六進位制輸出檔案系統型別 %T:可讀形式輸出檔案系統型別