if
, elif
, then
и fi
все зарезервированные ключевые слова, используемые для реализации одной из конструкций, называемых составной командой в оболочке, что означает, что в оболочке не может быть команды (или, скорее, другой команды) с любым из этих имен. Назначение ;
в целом - не разделение команд, а завершение списка команд . Например, следующий допустимый оператор if
:
if echo foo; echo bar; echo baz; then echo done; echo really done; fi
Условием оператора if
является список команд echo foo; эхо-бар; echo baz
. Синтаксический анализатор знает, что условие выполнено, потому что , затем
, которое следует сразу за точкой с запятой, не может быть командой, потому что это зарезервированное ключевое слово. Таким образом, он знает, что то, что следует за , тогда
является началом тела.Аналогично, fi
является зарезервированным ключевым словом и, следовательно, не может быть третьей командой в теле оператора if
, но отмечает конец составной команды.
Первый символ ls
, являющийся s
, означает, что этот файл является сокетом .
Это немного похоже на сокет TCP, но для связи между клиентом и серверным процессом на одной машине, используя в качестве имени файловую систему / путь / к / сокету вместо номера порта TCP.
Вы можете узнать больше о сокетах с помощью man 2 socket
, но это немного технически.