Все эти команды будут записывать (txt) (не пытайтесь использовать это в двоичных файлах) содержимое файла:
cat file
cat <file
echo "$(<file)"
cat <<<"$(<file)"
Но это потому, что cat - очень адаптируемая команда, а не потому, что команды равны.
Команда cat file
распечатывает содержимое файла, в данном случае cat работает с реальным файлом. Аналогичен less file
. Но чем меньше, тем строже, нужен настоящий файл.
Команда cat
В этом случае echo "$ (<файл)"
, "$ (<файл)"
в точности равно (за исключением некоторых деталей вспомогательной оболочки) ] "$ (файл кошки)"
. Это означает, что выполняется команда cat. Затем его вывод преобразуется в текстовую строку при выполнении команды $ (...)
, и, наконец, эта текстовая строка печатается с помощью echo. Снова видим содержимое файла.
Команда cat <<< "$ (<файл)"
следует этой последовательности:
"$ (<файл)"
файл читается и выводится как строка
<<<
отправляет строку на стандартный ввод (stdin)
, а cat печатает то, что получает на своем входе (stdin).
Мы видим то же содержимое файла.
Мы видим один и тот же вывод во всех случаях. Но содержимое файла меняется в зависимости от того, "что оно есть" (имя файла, поток, строка и т. Д.) В каждой части команды.
sync
специально не используется, потому что задействован /dev/urandom
; он используется для обеспечения того, чтобы все ожидающие записи были отправлены на устройство. Это особенно важно при использовании съемных устройств :с работающим sync
и ожидании его завершения, что гарантирует безопасное извлечение устройства.
Если при очистке устройства пропустить sync
и отключить устройство, возможно, вы не завершили очистку устройства...
Вызов sync()
относится к файловым системам -, а не к устройствам.
Если вы записываете в блочное устройство, sync()
может привести к очистке буфера, но если вы используете необработанное устройство, как рекомендуется в этом случае, sync()
не имеет смысла.
ПРЕДУПРЕЖДЕНИЕ. :В Linux могут возникнуть трудности с определением соответствующего необработанного устройства. Ознакомьтесь с документацией Linux о том, как получить соответствующее необработанное устройство.