Я ищу только одну команду — ничего с && или | — который создает каталог, а затем немедленно изменяет текущий каталог на вновь созданный каталог. (Это вопрос, который кто-то получил для своих экзаменов "linux-usage", он сделал новую команду, которая сделала это, но это не дало ему очков.) Это на сервере debian, если это имеет значение.
Одна команда для создания и изменения каталога
Ответ 1
Я считаю, что вы ищете это:
mkdir project1 && cd "$_"
Ответ 2
определите функцию bash для этой цели в $HOME/.bashrc например.
function mkdcd () {
mkdir "$1" && cd "$1"
}
затем введите mkdcd foodir в свою интерактивную оболочку
Таким образом, строгое понимание того, чего вы хотите достичь, невозможно без функции оболочки, содержащей некоторую && (или по крайней мере a ;)... Другими словами, целью упражнения было сделать вы понимаете, почему функции (или псевдонимы) полезны в оболочке....
PS это должна быть функция, а не script (если она была script, cd повлияла бы только на оболочку [sub]], которая запускает script, а не интерактивную родительскую оболочку); невозможно сделать одну команду или исполняемый файл (не функцию оболочки), которая изменит каталог вызывающей интерактивной родительской оболочки (поскольку каждый процесс имеет свой собственный текущий каталог, и вы можете только изменить текущий каталог своего собственного процесса, а не вызывающего процесса оболочки).
ПФС. В оболочках Posix вы должны удалить ключевое слово function и иметь первую строку mkdcd() {
Ответ 3
Для пользователей oh-my-zsh: take 'directory_name'
Ссылка: Официальный wh-my-zsh github wiki
Ответ 4
Ввод следующего в ваш .bash_profile (или эквивалент) даст вам команду mkcd, которая сделает то, что вам нужно:
# mkdir, cd into it
mkcd () {
mkdir -p "$*"
cd "$*"
}
Эта статья объясняет это более подробно
Ответ 5
Я не думаю, что это возможно, но всем людям интересно, что самый простой способ сделать это (что я знаю), который не требует, чтобы вы создали свой собственный script:
mkdir /myNewDir/
cd !$
Таким образом, вам не нужно дважды записывать имя нового каталога.
!$ извлекает последний ($) аргумент последней команды (!).
(Есть более полезные сочетания, такие как !!, !* или !startOfACommandInHistory. Поиск в сети для получения дополнительной информации)
Печально mkdir /myNewDir/ && cd !$ не работает: он извлекает последний аргумент предыдущей команды, а не последнюю команду mkdir.
Ответ 6
Возможно, я не совсем понимаю вопрос, но
>mkdir temp ; cd temp
создает каталог temp и затем переходит в этот каталог.
Ответ 7
mkdir temp ; cd temp ; mv ../temp ../myname
Вы можете использовать псевдоним так:
alias mkcd 'mkdir temp ; cd temp ; mv ../temp ../'
Ответ 8
Вы не сказали, хотите ли вы назвать каталог самостоятельно.
cd 'mktemp -d'
Создает временный каталог и превращается в него.
Ответ 9
Возможно, вы можете использовать некоторую оболочку script.
Первая строка в оболочке script создаст каталог, а вторая строка изменится на созданный каталог.