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

Что означает "cd $_"?

Я видел эту команду в учебнике для создания нового каталога:

mkdir my-new-project && cd $_

Я знаю, что команда mkdir my-new-project используется для создания нового каталога, но что делает cd $_?

4b9b3361

Ответ 1

$_ расширяется до последнего аргумента предыдущей простой команды * или предыдущей команде, если у нее не было аргументов.

mkdir my-new-project && cd $_

^ Здесь у вас есть команда из двух простых команд. Последний аргумент для первого - my-new-project, поэтому $_ во второй простой команде будет расширяться до my-new-project.

Чтобы привести еще один пример:

echo a b; echo $_
#Will output:
#a b
#b

В любом случае mkdir some_dir && cd $_ является очень распространенным комбо. Если вы устали печатать его, я думаю, что это хорошая идея, чтобы сделать его функцией:

mkdircd() {
  #Make path for each argument and cd into the last path 
  mkdir -p "[email protected]" && cd "$_" 
}

* Руководство bash определяет простую команду как "последовательность необязательных назначений переменных, за которыми следуют пробельные слова и перенаправления, и завершается управляющий оператор" , где оператор управления относится к одному из || & && ; ;; ( ) | |& <newline>.

На практике $_ работает, как описано мной, но только с ||, &&, ; или новой строкой в ​​качестве управляющего оператора.