Круглые скобки всегда запускают подоболочку. То, что происходит, - то, что удар обнаруживает это sleep 5
последняя команда, выполняемая той подоболочкой, таким образом, она звонит exec
вместо fork
+exec
. sleep
управляйте заменяет подоболочку в том же процессе.
Другими словами, основной случай:
( … )
создайте подоболочку. Исходные вызовы процесса fork
и wait
. В подпроцессе, который является подоболочкой: sleep
внешняя команда, которая требует подпроцесса подпроцесса. Вызовы подоболочки fork
и wait
. В subsubprocess: exec
.exit
.wait
завершается в подоболочке.wait
завершается в исходном процессе.Оптимизация:
( … )
создайте подоболочку. Исходные вызовы процесса fork
и wait
. В подпроцессе, который является подоболочкой, пока он не звонит exec
: sleep
внешняя команда, и это - последняя вещь, которую должен сделать этот процесс.exec
.exit
.wait
завершается в исходном процессе.Когда Вы добавляете что-то еще после вызова sleep
, подоболочка должна иметься в наличии, таким образом, этой оптимизации не может произойти.
Когда Вы добавляете что-то еще перед вызовом к sleep
, оптимизация могла быть сделана (и ksh делает это), но удар не делает этого (это очень консервативно с этой оптимизацией).
ls -F
добавляет символы к именам файлов. Эти символы показывают полезную информацию о файлах.
@
символьная ссылка средств (или что файл расширил атрибуты).*
исполняемый файл средств.=
сокет средств.|
именованный канал средств.>
дверь средств./
каталог средств.Если Вы хотите, чтобы это поведение было значением по умолчанию, добавьте это к своей конфигурации оболочки: alias ls='ls -F'
.
Добавлю, как я нашел эту информацию. Как указано внизуman ls
:
Full documentation at: https://www.gnu.org/software/coreutils/ls or available locally via: info '(coreutils) ls invocation'
После этого мы видим
‘-F’ ‘--classify’ ‘--indicator-style=classify’ Append a character to each file name indicating the file type. Also, for regular files that are executable, append ‘*’. The file type indicators are ‘/’ for directories, ‘@’ for symbolic links, ‘|’ for FIFOs, ‘=’ for sockets, ‘>’ for doors, and nothing for regular files. Do not follow symbolic links listed on the command line unless the --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir options are specified.
наhttps://www.gnu.org/software/coreutils/manual/coreutils.html#General-output-formatting
l
иметь-F и цвет, иll
чтобы также иметь-l – ctrl-alt-delor 30.06.2016, 14:03