Path
如何在單行中從 PATH 中提取所有 bin 目錄?
我想從中提取所有
bin
目錄PATH
並將其設置為變數。我很困惑,因為所有目錄都出現在一行中,:
但我只想要這些目錄bin
。/home/jo52900/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/local/bin:/opt/universal/ucmdmgr/bin
我該怎麼做?
我不知道您為什麼要
bin
特別對待目錄,我猜您只是想在自己的行上查看每個目錄。如果是這樣,你可以這樣做:printf '%s\n' "$PATH" | tr : '\n'
例如,在我的系統上,我有許多
$PATH
名稱不包含的目錄bin
,這給出:$ printf '%s\n' "$PATH" | tr : '\n' /home/terdon/perl5/bin /home/terdon/Setups/cd-hit-v4.5.4-2011-03-07 /sbin /usr/local/sbin /usr/bin /usr/sbin /home/terdon/Setups/PfamScan /home/terdon/research/data/python /home/terdon/scripts /home/terdon/bin
如果您真的只想查看
bin
目錄,可以提取它們:$ printf '%s\n' "$PATH" | tr : '\n' | grep '/bin$' /home/terdon/saphetor/bin /home/terdon/perl5/bin /usr/bin /home/terdon/bin
或者,如果您想做您在答案中顯示的內容,並且還包括
bin
在其名稱中的任何位置包含字元串的任何目錄,而不僅僅是那些實際命名bin
的目錄,您可以執行以下操作:$ printf '%s\n' "$PATH" | tr : '\n' | grep 'bin' /home/terdon/saphetor/bin /home/terdon/perl5/bin /sbin /usr/local/sbin /usr/bin /usr/sbin /home/terdon/bin
另一種方法是要求外殼拆分
$PATH
:( IFS=: ; printf "%s\n" $PATH )
您可以根據需要對其進行後期處理
grep
。