Я знаю, как изменить каталог с терминала, набрав
cd <directory>
но вот сценарий. Я использовал терминал, чтобы зайти в папку моего репозитория git.
- glennRepositories
- Glenn-remdroid-хранилище
Учитывая структуру папок выше, я хочу включить, glenn-remdroid-repository
потому что это мой репозиторий.
cd glennRepositories
Перед переключением в glenn-remdroid-repository я по ошибке набрал команду
cd &
вместо cd *
. Я использовал, cd *
потому что имя папки длинное для меня, извините за то, что ленивый.
Когда я выполняю cd &
, терминал отвечает
[1] 7519
Когда я выполняю cd *
это сейчас произошло
[1]+ Done cd (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)
Кто-нибудь что cd &
значит и выводит? Google не знает мой вопрос :)
shell
cd-command
Glenn
источник
источник
cd <TAB>
и имя уникальной папки будет расширен автоматически.Ответы:
Написав в
&
конце командной строки, вы даете команду своей оболочке взять командный конвейер (в данном случае одну команду) и запустить его в под-оболочке в фоновом режиме (не ожидая результата).cd
это встроенный bash, но это не важно здесь. Это никак не повлияет на вашу «родительскую» оболочку, поэтому ваш рабочий каталог не изменится.Эта строка сообщает, что в фоновом режиме выполняется задание, идентифицированное номером 1, а идентификатор процесса - 7519. Аналогичная вещь будет напечатана, если вы запустите, например,
vim
и затем нажмите Ctrl+, Zчтобы приостановить его. Когда процесс завершится, оболочка не сообщит об этом до следующего цикла обработки (например, просто нажмите Returnеще раз), а затем напечатает список обновленных заданий.Для получения более подробной информации, пожалуйста, прочитайте
man bash
и разделJOB CONTROL
.Для справки вопрос почему
exit &
не работает? имеет некоторое сходство.источник
fish
иzsh
это сразу сообщается. Вbash
и других оболочках POSIX или (t) csh это зависит от настройкиnotify
параметра (по умолчанию отключено) (zsh
поскольку оболочка, подобная POSIX, также имеетnotify
параметр, но по умолчанию она отключена, если не указано эмулировать другую оболочку)&
Оператор посылает процесс в фоновом режиме; какcd
можно запустить без аргументов, вы запускаете его и отправляете в фоновый режим. Если вы возьмете справочную страницу:Вы можете видеть, что аргументы необязательны. Так
cd &
обрабатывается какcd
и затем отправляется на задний план. Когдаcd
вызывается без аргумента, обработка не требуется. Таким образом, он уходит на задний план, как «сделано» (обработано).Некоторая информация о
&
Bash&
(амперсанд) - встроенный оператор управления, используемый для разветвления процессов. Со страницы руководства Bash: «Если команда завершается оператором управления&
, оболочка выполняет команду в фоновом режиме в подоболочке».При входе в интерактивную оболочку процессу присваивается номер задания и отображается дочерний PID. Номер задания ниже один.
Обратите внимание, что когда процесс разветвляется, дочерний PID сохраняется в специальной переменной
$!
Вы можете прекратить работу по номеру вакансии следующим образом:
источник
cd
запускается, а потом отправляется на задний план. Фоновый процесс фактически создается до запуска программы в случае обычной команды; в случае встроенного, это поведение эмулируется. Команда запускается этим фоновым процессом, заменяя его. Во- вторых,cd
без аргументов , делает что - то делать: он принимает вас вHOME
каталог. Но, поскольку вы разветвляли его на задний план, в этом случае эффекта нет.