これは、コマンドラインでPythonを使用して解決することもできます。
python -c "import os,sys;[os.system(' '.join(sys.argv[1:]).format(p)) for p in os.getenv('PATH').split(':')]" echo {}
またはエイリアスとして:
alias foreachpath="python -c \"import os,sys;[os.system(' '.join(sys.argv[1:]).format(p)) for p in os.getenv('PATH').split(':')]\""
使用例:
foreachpath echo {}
このアプローチの利点は{}
、各パスに連続して置き換えられることです。これを使用して、あらゆる種類のコマンドを作成できます。たとえば、のディレクトリ内のすべてのファイルとディレクトリのサイズを一覧表示できます$PATH
。名前にスペースが含まれるディレクトリを含める:
foreachpath 'for e in "{}"/*; do du -h "$e"; done'
$PATH
内のすべてのファイルとディレクトリへのシンボリックリンクを作成することにより、変数の長$PATH
さを短縮する例を次に示します$HOME/.allbin
。これは日常の使用には役立ちませんが、コマンドラインの一部としてfullを使用するため、コンテナにエラーメッセージが表示される場合に役立つことがあります...too many arguments
docker
bitbake
$PATH
mkdir -p "$HOME/.allbin"
python -c "import os,sys;[os.system(' '.join(sys.argv[1:]).format(p)) for p in os.getenv('PATH').split(':')]" 'for e in "{}"/*; do ln -sf "$e" "$HOME/.allbin/$(basename $e)"; done'
export PATH="$HOME/.allbin"
これにより、理論的には、実行されるすべてのコマンドを検索するパスが少なくなるため、通常のシェルの使用とシェルスクリプトが高速化されます。ただし、かなりハッキーなので、このように短くすることはお勧めしません$PATH
。
ただし、foreachpath
エイリアスは便利な場合があります。