Подтвердить что ты не робот

Одна команда для создания и изменения каталога

Я ищу только одну команду — ничего с && или | — который создает каталог, а затем немедленно изменяет текущий каталог на вновь созданный каталог. (Это вопрос, который кто-то получил для своих экзаменов "linux-usage", он сделал новую команду, которая сделала это, но это не дало ему очков.) Это на сервере debian, если это имеет значение.

4b9b3361

Ответ 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() {

Ответ 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 создаст каталог, а вторая строка изменится на созданный каталог.