
そこで、コマンドライン引数を受け入れ、その名前で新しいディレクトリを作成し、そこに移動するコマンドのエイリアスを作成しました (少なくとも作成しようとしました)。
alias newfolder='mkdir $2 ; cd "$(history | tail -2 | awk '\''NR == 1'\'' | awk '\''{print $3}'\'')"'
エイリアスは正常に作成されましたが、コマンドライン引数を使用してコマンドを実行しようとすると、このエラー メッセージが表示されます。
username:~/workspace (master) $ newfolder a
mkdir: missing operand
Try 'mkdir --help' for more information.
bash: cd: newfolder='mkdir: No such file or directory
答え1
エイリアスではなく関数が必要です。次を試してください:
newfolder() { mkdir -p "$1" && cd "$1"; }
例:
$ pwd
/tmp
$ newfolder dir1/dir2
$ pwd
/tmp/dir1/dir2
ノート:
オプションは、必要に応じて不足している親ディレクトリを作成するよう
-p
にmkdir
指示します。上記の例では、 はdir1
存在しませんでしたが、と のmkdir -p dir1/dir2
両方が作成されました。dir1
dir2
シェル演算子を使用しているため
&&
、コマンドが成功したcd
場合にのみコマンドが実行されますmkdir
。エイリアスは、固定文字列を単語の代わりに使用できる非常に単純なケースで役立ちます。エイリアスは引数を処理しません。
エイリアスの代わりにシェル関数を使用しているため、
$1
必要に応じて、この場合は などの引数を参照できます。