Краткий ответ - что делает >>
?
С помощью >>
вы добавляете вывод команды в файл.
Ваш пример команды состоит из нескольких частей, в основном:
команда >> имя файла
Таким образом, результат command
будет добавлен filename
.
Что происходит в конкретном случае echo
?
В вашем конкретном случае echo "…"
команда выводит свои входные аргументы в «stdout», который является так называемым «стандартным дескриптором вывода». За входными аргументами echo
следует новая \n
строка ( ), чтобы вы получили разрыв строки.
Здесь «стандартный выходной дескриптор» - это не что иное, как выходной поток, который отображается в вашей оболочке при выполнении команды. (То есть, когда вы набираете echo foo
и нажимаете Enter, foo\n
это фактический вывод echo
команды, который отображается вашей оболочкой, foo
за которым следует новая строка.)
В основном все, что пишет в вашу командную строку, использует stdout. Существует также другой дескриптор, называемый «stderr», который обычно используется для сообщений об ошибках. Он также будет напечатан как stdout, поэтому иногда их можно перемежать. И есть дескриптор стандартного ввода, который используется для ввода. Смотрите эту статью для получения дополнительной информации.
Как вы перенаправляете вывод в оболочку?
Вы всегда можете перенаправить стандартный вывод в файловый дескриптор, что можно сделать с помощью одного из следующих операторов:
>
перенаправляет на дескриптор файла. Он создает файл, если он не существует, или, если он уже существует, обрезает файл перед записью. Поэтому файл будет перезаписан stdout.>>
добавляет к дескриптору файла. Он создает файл, если он не существует.
Вы также можете перенаправить stderr с помощью 2>
или 2>>
аналогичным образом. Или вы можете объединить stderr и stdout в один файл: 2>&1
делает это. Для получения дополнительной информации о перенаправлении и некоторых других примерах вы можете прочитать этот небольшой учебник .
Как я могу понять, что означает конкретный фрагмент кода оболочки?
Как правило, вы можете захотеть попробовать на сайтеhellhell.com, который даст вам визуальное руководство и информацию о конкретной команде оболочки.