題:
如何在Mac Terminal中找到所有可用的工具?
Spear A1
2019-04-16 01:00:30 UTC
view on stackexchange narkive permalink

我正在嘗試在Mac中設置一系列開發項目。我必須運行各種工具,例如python,ruby,scala,groovy等。 要查看工具是否可用,我使用

之類的選項
  ruby --version。
 

相反,我想通過一個命令查看Mac終端中可用的所有工具列表。它的命令/選項是什麼?

該列表將比信息量大得多。在macOS 10.14.4上,我在/ bin,/ sbin,/ usr / bin和/ usr / sbin中看到1,302個可執行文件。它們中的大多數晦澀難懂和/或用途單一。例如:“ hpftodit”,它將來自HP標記字體度量(TFM)格式的字體轉換為與帶有`groff -Tlj4`的HP Laser-Jet 4系列(或更新版本)打印機一起使用。好的,這是一個極端的例子,我聲稱這一觀點仍然有效。
六 答案:
jksoegaard
2019-04-16 01:14:54 UTC
view on stackexchange narkive permalink

最簡單的方法是打開終端,然後按兩次TAB鍵。系統將詢問您是否要查看所有可能性-回答“ y”,您將獲得完整列表。

slm
2019-04-16 01:45:03 UTC
view on stackexchange narkive permalink

請參閱此U&L Q&A的答案,標題為: 列出外殼程序知道的所有命令

我個人最喜歡的是利用 compgen ,因為這是當您在終端中並按下 tab> kbd時用於構建所有製表符完成功能的工具系列的一部分> + tab kbd>兩次。

  $ compgen -c
 

示例

  $ compgen -c |尾巴
深度複製
kube-controller-manager
信息人
李斯特氏
等
gen-apidocs
kube-apiserver
Kubectl
kubebuilder
轉換代
 

順便說一句,如果您想知道這些可執行文件之一在硬盤上的哪個位置,請使用 type -a <cmd> 來找到它:

  $ type-一個ansible
ansible別名為“ ANSIBLE_CONFIG =〜/ .ansible.cfg ansible”
ansible是/ usr / local / bin / ansible
 

這表明命令 ansible 是別名,並且也位於HDD的本地位置: / usr / local / bin / ansible

參考文獻

fd0
2019-04-16 01:39:49 UTC
view on stackexchange narkive permalink

您可以使用PATH變量,然後 tr 將冒號插入空格,然後在這些目錄中列出文件。

  ls $(tr':'''<<<“ $ PATH”)
 

並且正如Peter Cordes所指出的,如果目錄路徑的名稱中包含空格,則以上內容將失效。在子外殼中,將IFS(內部字段分隔符)更改為僅換行符,然後 tr 將冒號附加到換行符。

 (IFS = $'\ n'; ls $(tr':''\ n'<<<“ $ PATH”)))
 
如果您的$ PATH包含空格但不包含換行符,則可以在((IFS = $'\ n'; ls $(...)))子外殼內將空格換成換行符,以便僅在換行符上進行單詞拆分。
David Anderson
2019-04-16 16:14:56 UTC
view on stackexchange narkive permalink

安裝命令後,應在 whatis 數據庫中放置一個條目。但是,不需要這樣做。要獲得數據庫中命令的一行描述,請輸入 whatis ,然後輸入命令。例如,下面顯示輸入 whatis“ ruby​​” 的輸出。

  erb(1)-Ruby模板化
irb(1)-交互式Ruby Shell
ri(1)-Ruby API參考前端
ruby(1)-解釋的面向對像腳本語言
 

whatis 命令將接受正則表達式。因此,要獲取數據庫中所有命令的列表,請輸入下面給出的命令。

 什麼是“。”
 

whatis 的手冊頁指出以下內容:

whatis在一組包含系統命令簡短描述的數據庫文件中搜索關鍵字,並將結果顯示在標準輸出上。僅顯示完整的單詞匹配。

也存在一個類似的命令,稱為 apropos apropos 的手冊頁指出以下內容:

apropos在一組包含系統命令簡短描述的數據庫文件中搜索關鍵字,並將結果顯示在標準輸出上。

基本上,區別是 apropos 不需要完整的單詞匹配。例如,遇到字符串 string>時, whatis“ string” 不會找到匹配項,但是遇到 apropos“ string” 時,會找到匹配項。

Nimesh Neema
2019-04-16 18:45:45 UTC
view on stackexchange narkive permalink

第二個@jksoegaard已經提到,最簡單的方法是在Bash中使用 Tab kbd>自動完成功能。兩次按下 Tab kbd>鍵會列出所有可用的Shell內部命令,外部命令和可用的別名。如果輸入命令的初始字符,則在按 Tab kbd>鍵兩次時會列出匹配的命令。

有適用於macOS的第三方軟件包管理器,可讓您安裝命令行工具,這些工具在macOS的本機安裝中不可用,或者已安裝舊版本。在軟件開發人員中,一些受歡迎的軟件包管理器是 Homebrew MacPorts

因此,如果您對可在Mac上運行的更廣泛的開發人員工具感興趣,則還可以通過執行 brew search code列出所有易於安裝和運行的命令行工具。 >用於Homebrew,而 port search 用於MacPorts。執行上述命令需要在您的系統上安裝相應的軟件包管理器。

Kevin
2019-04-17 00:44:21 UTC
view on stackexchange narkive permalink

出於完整性考慮,如果使用 zsh ,則可以使用 ls“ $ {(@)path}(N)” 。要獲取按目錄分組的列表,請使用 ls“ $ {(@)path}” / *(-* N) printf“%s \ n”“ $ {(@) path}“ / *(-* N)(未排序,但按照找到的順序); printf“%s \ n”“ $ {(@)path}” / *(-* N)| xargs -L 1基本名稱| sort -u 將為您提供不帶路徑的命令列表。

請注意,這僅顯示可執行文件,而不顯示別名或函數。要獲取這些,請使用 alias typeset -f + | grep -v'^ _'分別。

每個的樣本輸出:

 %ls“ $ {(@)path}”(N)
/ bin:
[貓cp
[...]
 同步測試wait4path

/ sbin:
apfs_hfs_convert fsck fstyp
[...]
 
 %ls“ $ {(@)path}” / *(-* N)
/ bin / [/ usr / bin / nc / usr / local / bin / gmktemp
/ bin / bash / usr / bin / ncal / usr / local / bin / gmv
/ bin / cat / usr / bin / ncctl / usr / local / bin / gnice
/ bin / chmod / usr / bin / ncdestroy / usr / local / bin / gnl
/ bin / cp / usr / bin / ncinit / usr / local / bin / gnohup
/ bin / csh / usr / bin / nclist / usr / local / bin / gnproc
 
 %printf“%s \ n”“ $ {(@)path}” / *(-* N)
/ usr / local / bin / 2to3
/ usr / local / bin / 2to3-2
/usr/local/bin/2to3-2.7
[...]
/ usr / sbin / AppleFileServer
/ usr / sbin / BootCacheControl
/ usr / sbin / DevToolsSecurity
/ usr / sbin / DirectoryService
[...]
 
 %printf“%s \ n”“ $ {(@)path}” / *(-* N)| xargs -L 1基本名稱|排序-u
2對3
2對3
2至3-2
2至3-2.7
2至3-3.7
7z
7za
7zr
蘋果文件服務器
AssetCacheLocatorUtil
AssetCacheManagerUtil
[...]
新
zprint
sh
zsh-5.7.1
 


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...