Что делает “CD &\” средний?

Из страницы справочника:

ssh-keygen может создать ключи RSA для использования версией протокола 1 SSH и DSA, ECDSA или ключами RSA для использования версией протокола 2 SSH. Тип ключа, который будет сгенерирован, указан с-t опцией. Если вызвано без любых аргументов, ssh-keygen генерирует ключ RSA для использования в соединениях протокола 2 SSH.

Таким образом, это - RSA по умолчанию. Отметьте это ssh-keygen распечатывает, какой ключ это генерирует в его первой строке вывода.

8
23.08.2013, 03:53
2 ответа

Путем записи & на конце командной строки Вы даете своей оболочке команду брать конвейер команд (в этом случае единственная команда) и выполнять его в подоболочке в фоновом режиме (не ожидающий результата). cd встроенный удар, но это не важно здесь. Это не будет влиять на Вашу "родительскую" оболочку всегда, таким образом, Ваш рабочий каталог не будет изменен.

[1] 7519

Эта строка сообщает, что существует задание, работающее в фоновом режиме определенный номером 1, и идентификатор процесса 7519. Подобная вещь будет распечатана, если Вы будете работать, например. vim и затем нажмите Ctrl+Z для приостановки его. Когда процесс закончится, оболочка не сообщит, что до следующего цикла обработки (например, просто поражают Возврат еще раз) и затем он распечатает законченные задания списка обновлений.

Для получения дальнейшей информации читайте man bash и раздел JOB CONTROL.

Для ссылки, вопрос, Почему делает exit & не работают? есть некоторое сходство.

20
27.01.2020, 20:08
  • 1
    Сообщают ли о конце задания немедленно, или при следующей подсказке зависит от оболочки. В fish и zsh, об этом немедленно сообщают. В bash и другие оболочки POSIX или (t) csh это зависят от установки notify опция (прочь по умолчанию) (zsh быть подобной POSIX оболочкой также имеет a notify опция, но это прочь по умолчанию, если этому не говорят эмулировать другую оболочку), –  Stéphane Chazelas 27.02.2017, 11:55

& оператор отправляет процесс в фон; как cd может быть выполнен без аргументов, Вы выполняете его и отправляете его в фон. Если Вы берете страницу справочника:

Имя:

CD - Изменение оболочка рабочий каталог.

РЕЗЮМЕ

cd [-L|-P] [dir]

ОПИСАНИЕ

Измените оболочку рабочий каталог.

Измените текущий каталог на DIR. DIR по умолчанию является значением HOME переменная оболочки.

Переменная CDPATH определяет путь поиска для каталога, содержащего DIR. Альтернативные имена каталогов в CDPATH разделяются двоеточием (:).
Пустое имя каталога совпадает с текущим каталогом. Если DIR начинается с наклонной черты (/), затем CDPATH не используется.

Если каталог не найден, и опция оболочки cdable_vars установлен, слово, как предполагается, является именем переменной. Если та переменная имеет значение, его значение используется для DIR.

Опции:

-L вынудите символьные ссылки сопровождаться
-P используйте физическую структуру каталогов, не переходя по символьным ссылкам

Значение по умолчанию должно перейти по символьным ссылкам, как будто -L были указаны.

Статус выхода:

Возвраты 0, если каталог изменяется; ненулевой иначе.

См. также

bash(1)

РЕАЛИЗАЦИЯ

Удар GNU, версия 4.1.5 (1) - выпуск (i486-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
Лицензия GPLv3 +: GNU версия 3 GPL или позже

Вы видите, что аргументы являются дополнительными. Так

cd & обрабатывается как cd и затем отправьте к фону. Когда cd назван без аргумента, никакая обработка не необходима. Таким образом, это переходит к фону, как "сделано" (обработано).

Некоторая информация относительно & Bash & (амперсанд) является встроенным оператором управления, используемым для разветвления процессов. Из страницы справочника Bash, "Если команда завершается оператором управления &, оболочка выполняет команду в фоновом режиме в подоболочке".

Если вошли интерактивная оболочка, процессу присваивают, номер задания и дочерний PID отображены. Число задания ниже является тем.

bash$ sleep 30 &
[1] 3586

Обратите внимание, что, когда процесс разветвлен, дочерний PID хранится в специальной переменной $!

bash$ echo $!
3586

Можно завершить задание его числом задания как так:

bash$ jobs
[1]+ Running sleep 30 &
bash$ kill %1
[1]+ Terminated sleep 30
bash$
1
27.01.2020, 20:08
  • 1
    Близко, но не совсем. Во-первых, дело не в этом cd выполняется и затем отправляется в фон. Фоновый процесс на самом деле создается перед прогонами программы в случае регулярной команды; в случае встроенного эмулировано это поведение. Команда выполняется этим фоновым процессом, заменяя его. Во-вторых, cd без аргументов действительно делает что-то: это берет Вас к Вашему HOME каталог. Но, так как Вы разветвили его прочь в фон, в этом случае нет никакого эффекта. –  Warren Young 23.08.2013, 03:52
  • 2
    @WarrenYoung из страницы справочника, это говорит, что CD возьмет корневой каталог, если никакое значение не будет присвоено ему. На успешное изменение каталога разве это не получает значение $pwd? –  vfbsilva 23.08.2013, 03:55
  • 3
    Текущий рабочий каталог фонового процесса затронут, не приоритетная оболочка Bash. –  Warren Young 23.08.2013, 04:07

Теги

Похожие вопросы