Видимо <и |ведут себя аналогично </em>
Есть незначительное сходство, но вы не можете зайти так далеко.Они оба представляют перенаправление .
<
перенаправляет стандартный поток ввода (stdin
) команды слева для ссылки на файл справа.Команда будет выполняться в своем собственном процессе, только если она является внешней программой (например, wc
).
|
перенаправляет стандартный поток вывода (stdout
) командыслева от стандартного потока ввода (stdin
) команды справа.Используемый механизм называется анонимный канал , и обе команды выполняются в своем собственном дочернем процессе.
<
и |
не являются командами, они являются частью грамматики оболочки, поэтому для них не будет страниц man
.Как часть языка bash
вы должны использовать man bash
, а затем искать REDIRECTION
(для <
) или Pipelines
(для |
).
Раздел 1 man
страницы предназначены для программ, а не для отдельного языка, такого как оболочка, раздел 2 - для API-интерфейсов ядра, вызываемых из C и т. Д. Поэтому не ожидайте, что детали вашей конкретной оболочки будут отображаться как отдельныесправочные страницы.Таким образом, man bash
, man sh
, man csh
, man zsh
и т. Д.
Удивительно, но [
является встроенной оболочкой:
$ type [
[ is a shell builtin
и такжеизвестный как test
.Но:
$ type [[
[[ is a shell keyword
[
, test
, [[
- это все команды , а дополнительная документация доступна в bash
с использованием help
, например,
$ help [
Итак, как вы узнаете, является ли символ командой или частью грамматики?Изучая язык, другого пути нет.Следуйте инструкциям, прочитайте man bash
, посмотрите на примеры, но прежде всего экспериментируйте сами и попробуйте.
Для новичка не легко, но вы должны помнить, что синтаксис оболочки был написан для программистов , чтобы использовать и понимать, он никогда не был предназначен для конечных пользователей.
Вы замечаете (жалуетесь?), Что один и тот же символ используется для разных значений.Это распространено в языках программирования.Например, в C *
используется, чтобы квалифицировать объявление указателя, как двоичный оператор умножения, как половину символа комментария и как унарный оператор для разыменования указателя.Есть много других многоцелевых символов на разных языках.Это отчасти потому, что ранние клавиатуры были способны печатать только часть набора из 128 символов ASCII.Попытки использовать операторы Unicode (например, Perl 6) не получили широкого распространения.