Shell
將返回的文本塊拆分為終端中的行?
當我發出
echo $PATH
or之類的命令時which program
,我經常會得到一大塊由多個目錄組成的文本。這是相當沒用的,例如,如果我想看看它們之間是否存在一條特定的路徑。有沒有辦法將它們分開,以便每個條目都從新行開始?
輸出不包括換行符,但我可以看到
:
我可以使用適當的分隔符。
> echo foo:bar:baz | tr : '\n' foo bar baz > text=foo:bar:baz > echo -e "${text//:/\n}" foo bar baz
使用
csh
,tcsh
或zsh
,$PATH
映射到$path
數組,您可以使用以下命令每行列印一個元素:printf '%s\n' $path
僅使用 zsh:
print -rl $path
(這裡假設的組件
$PATH
不以開頭-
且不為空,print -rl -- "$path[@]"
否則使用)。使用類似 Bourne 的 shell,假設路徑不包含萬用字元(如果有,請添加
set -f;
beforeprintf
):(IFS=:; printf '%s\n' $PATH)
添加一些
|grep something
來搜尋特定的字元串。如果要在 的值中搜尋
$path
,zsh
可以執行以下操作:vared path
然後像往常一樣使用
Ctrl+S
,Ctrl+R
向後搜尋(或vi
?
//
如果您使用vi
模式,則使用等效項)。