псевдоним для создания нового каталога и перехода в него

псевдоним для создания нового каталога и перехода в него

Итак, я создал или, по крайней мере, попытался создать псевдоним для команды, которая принимает аргумент командной строки, создает новый каталог с этим именем и переходит в него.

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. Параметр -pto mkdirсообщает ему о необходимости создания отсутствующих родительских каталогов. В приведенном выше примере dir1не существовало, но mkdir -p dir1/dir2были созданы dir1и dir2.

  2. Поскольку мы используем оператор оболочки &&, cdкоманда будет выполнена только в случае mkdirее успешного выполнения.

  3. Псевдонимы полезны в очень простых случаях, когда фиксированная строка может быть заменена словом. Псевдонимы не обрабатывают аргументы.

  4. Поскольку мы используем функцию оболочки вместо псевдонима, мы можем ссылаться на аргументы, например, в данном случае, $1, в соответствии с нашими потребностями.

Связанный контент