Я ищу только одну команду — ничего с &&
или |
— который создает каталог, а затем немедленно изменяет текущий каталог на вновь созданный каталог. (Это вопрос, который кто-то получил для своих экзаменов "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 создаст каталог, а вторая строка изменится на созданный каталог.