新しいディレクトリを作成してそこへ移動するためのエイリアス

新しいディレクトリを作成してそこへ移動するためのエイリアス

そこで、コマンドライン引数を受け入れ、その名前で新しいディレクトリを作成し、そこに移動するコマンドのエイリアスを作成しました (少なくとも作成しようとしました)。

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

ノート:

  1. オプションは、必要に応じて不足している親ディレクトリを作成するよう-pmkdir指示します。上記の例では、 はdir1存在しませんでしたが、と のmkdir -p dir1/dir2両方が作成されました。dir1dir2

  2. シェル演算子を使用しているため&&、コマンドが成功したcd場合にのみコマンドが実行されますmkdir

  3. エイリアスは、固定文字列を単語の代わりに使用できる非常に単純なケースで役立ちます。エイリアスは引数を処理しません。

  4. エイリアスの代わりにシェル関数を使用しているため、$1必要に応じて、この場合は などの引数を参照できます。

関連情報