echo $PATH
あるいは、同じコマンドを実行すると、which program
可能なディレクトリで構成された非常に大きなテキストブロックを受け取ることがよくあります。たとえば、特定のパスがあることを確認したい場合、これはかなり役に立ちません。
各項目が新しい行から始まるように区切る方法はありますか?
出力には改行文字は含まれていませんが、:
使用できるものなどの適切な区切り文字があることがわかります。
答え1
> echo foo:bar:baz | tr : '\n'
foo
bar
baz
> text=foo:bar:baz
> echo -e "${text//:/\n}"
foo
bar
baz
答え2
配列にマップされたcsh
、tcsh
またはをzsh
使用すると、次のようにして1行にその要素を印刷できます。$PATH
$path
printf '%s\n' $path
ただzshを使用してください:
print -rl $path
(これは、コンポーネントが$PATH
次から始まらず空では-
ないと仮定します。print -rl -- "$path[@]"
そうしないと使用されます。)
Bourneに似たシェルの場合、パスにワイルドカードが含まれていないと仮定します(含まれている場合はset -f;
前に追加printf
)。
(IFS=:; printf '%s\n' $PATH)
|grep something
特定の文字列を検索するには、一部を追加してください。
$path
値を取得するには、zsh
次のようにします。
vared path
次に、通常どおりにをCtrl+S使用して前後に検索します(またはCtrl+Rパターンを使用している場合vi
?
/該当する項目)。/
vi
答え3
GNU経由でsed
、
echo $PATH | sed 's/:/\n/g'
例:
$ echo $PATH | sed 's/:/\n/g'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games