
/etc/profile
私のサーバーには、次のコマンドに基づいてランダムなディレクトリを作成するエイリアスがあります。
alias rdir="mkdir -p ./`cat /dev/random | tr -cd 'a-z0-9' | head -c 8`/"
しかし、これは常に同じ文字列(この場合はディレクトリ)を生成することがわかりました。私はこれがsource
設定ファイルに関連しているようですsource /etc/profile
。
rdir
次の例のように、エイリアスを呼び出すときに常に変更されるエイリアスからランダムな文字列を生成する方法を知りたいと思います。 (再びではないsource
?)
答え1
二重引用符の代わりに一重引用符を使用してください。
alias rdir='mkdir -p ./$(cat /dev/urandom | tr -cd 'a-z0-9' | head -c 8)/'
エイリアスが呼び出されるたびに、ステートメントが評価されます。エイリアスを定義すると、ステートメントは二重引用符を使用して評価されるため、静的です。
現在の作業ディレクトリに任意のディレクトリを作成するより簡単な解決策は、次のものを使用することですmktemp
。
alias rdir='mktemp -d --tmpdir=./'
答え2
代わりにingとフィルタリングを使用することもできますpwgen
。cat
/dev/random
alias mkranddir='mkdir $(pwgen -s 8 1)'