Если вы действительно хотите, чтобы это была всего одна команда, я предлагаю добавить что-то подобное в ваш .bashrc:
md () { mkdir -p "$@" && cd "$1"; }
Входящий md foo в командной строке затем будет создан каталог с именем foo и cd в него сразу же после этого. Пожалуйста, имейте в виду, что вам придется перезагрузить свой .bashrc чтобы изменения вступили в силу (например, откройте новую консоль или запустите source ~/.bashrc).
Для этого нет встроенной функции, но вы можете использовать функциональность оболочки, чтобы вам не приходилось вводить аргумент cd повторите команду после запуска mkdir:
Тип cd , затем Esc. (или Alt+.), чтобы вставить последний аргумент из предыдущей команды.
cd !$ выполняет cd на последнем аргументе предыдущей команды.
Нажмите Up чтобы вызвать предыдущую командную строку, затем отредактируйте ее, чтобы изменить mkdir в cd.
Вы можете определить простую функцию создания и изменения каталога в вашем ~/.bashrc:
mkcd () { mkdir "$1" && cd "$1"; }
Перезагрузите свой .bashrc (. ~/.bashrc) или перезапустите bash, и теперь вы можете ввести mkcd new-directory.
Эта простая версия терпит неудачу в некоторых необычных случаях, связанных со странными именами каталогов или .. и символические ссылки. Вот один из них, который работает. Пояснения см. в разделе версия этого вопроса для Unix и Linux.
mkcd () { case "$1" in /*) mkdir -p "$1" && cd "$1";; */../*) (cd "./${1%/../*}/.." && mkdir -p "./${1##*/../}") && cd "$1";; ../*) (cd .. && mkdir -p "${1#.}") && cd "$1";; *) mkdir -p "./$1" && cd "./$1";; esac}