某社の某所のSlackで$PATHを見やすく表示するワンライナーのいろんな方法を紹介してたので転載。
個人的な 備忘録。
zshで動作確認してます。
% zsh --version zsh 5.0.7 (x86_64-apple-darwin14.0.0)
置換処理をperlに任せる
echo $PATH | perl -pe 's/:/\n/g'
echoプロセスを省略して、省エネする
perl -E 'say for split /:/, $ENV{PATH}’
perlの%ENVではなく元々のシェルの$PATHを参照するパターン
perl -E "say qq{$PATH} =~ s/:/\n/gr"
変数展開するパターン。自分が紹介したパターン。(zsh)
echo ${PATH//:/ }
クオートすれば¥nが使えるの(zsh)
echo ${PATH//:/"\n"}
変数展開覚えとくと便利。
ここから追記
twitterでツッコミをいただいたんですが、これzsh前提でbashだとうまく動かない様子。
zsh 使いかな? 最後の "\n" を解釈しているのはデフォルト設定の場合の echo 組込みコマンドだろうから、echo -e ${PATH//:/"\n"} か echo "${PATH//:/$'\n'}" が確実。 https://t.co/iCZhVuAOII
— ふみやす%シェルまおう的なにか@通販生活 (@satoh_fumiyasu) April 26, 2015
$ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14) Copyright (C) 2007 Free Software Foundation, Inc.
echo -e ${PATH//:/\\n} # or echo "${PATH//:$'/\n'}"
他の方法としては、sed使うパターン。実は私普段はPerlのワンライナーよりsedを使う方が自分は慣れてます。
ぼくは、sedちゃん!
$ echo ${PATH} | sed -e "s/:/\n/g" https://t.co/rMQFHEQtIo
— (っ´・‿・`)っ へー (@nullpopopo) April 26, 2015
echo ${PATH} | sed -e "s/:/\n/g"
trを使うパターンがあります。trは普段全く使わないのでなるほどと言う感じでした。
POSIX原理主義者としては、
echo "$PATH" | tr : \\n
一択だな。 https://t.co/7BRPALt0kA
— Rich Mikan (@richmikan) April 26, 2015
echo "$PATH" | tr : \\n
思いがけないところで、シェルの知見が深まって感謝です。