そのため、ここではコマンドライン引数を受け入れるコマンドのエイリアスを作成するか、少なくとも作成しようとし、その名前で新しいディレクトリを作成してからそのディレクトリに変更しました。
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
この場合と同様に、必要に応じてパラメータを引用できます。