Упростите использование last
отображение записей завершения работы системы и уровня выполнения изменяются и фильтрация на shutdown
и reboot
:
last -x shutdown reboot
В <<< "$ (
zsh
(где <<<
] впервые был введен, вдохновленный тем же оператором в порту Unix rc
), ksh93
(оператор $ (
ksh
), mksh
и bash
),
Для $ (
(блокирует NUL байтов, кроме для zsh
), удаляет все завершающие символы новой строки, что приводит к расширению $ (
Для <<< some-text
оболочка сохраняет some-text
, за которым следует один символ новой строки, во временный файл, и открывает этот временный файл в файловом дескрипторе 0.
Таким образом, в основном <<< "$ (
файла
, где конечные символы новой строки были заменены только одним (и с различные виды неправильного поведения, если файл содержит байты NUL, кроме zsh
).
В то время как в <файл
, это файл
, который напрямую открывается для чтения на стандартном вводе.
Конечно,
<<< "$ (
файл
, как в tr 1 2 <<< "$ (
).
Обратите внимание, что yash
поддерживает оператор <<<
(хотя реализует его с конвейером (а не с обычным файлом ) вместо временного файла). . но не $ (
<<< "$ (cat
yash
строки являются только символами, поэтому "$ (cat
Все эти команды будут записывать (txt) (не пытайтесь использовать это в двоичных файлах) содержимое файла:
cat file
cat <file
echo "$(<file)"
cat <<<"$(<file)"
Но это потому, что cat - очень адаптируемая команда, а не потому, что команды равны.
Команда cat file
распечатывает содержимое файла, в данном случае cat работает с реальным файлом. Аналогичен less file
. Но чем меньше, тем строже, нужен настоящий файл.
Команда cat
В этом случае echo "$ (<файл)"
, "$ (<файл)"
в точности равно (за исключением некоторых деталей вспомогательной оболочки) ] "$ (файл кошки)"
. Это означает, что выполняется команда cat. Затем его вывод преобразуется в текстовую строку при выполнении команды $ (...)
, и, наконец, эта текстовая строка печатается с помощью echo. Снова видим содержимое файла.
Команда cat <<< "$ (<файл)"
следует этой последовательности:
"$ (<файл)"
файл читается и выводится как строка
<<<
отправляет строку на стандартный ввод (stdin)
, а cat печатает то, что получает на своем входе (stdin).
Мы видим то же содержимое файла.
Мы видим один и тот же вывод во всех случаях. Но содержимое файла меняется в зависимости от того, "что оно есть" (имя файла, поток, строка и т. Д.) В каждой части команды.