Puede pensar en <( somecommand )
como el nombre de archivo de un archivo temporal que contiene la salida de somecommand
. En otras palabras,
utility < <( somecommand )
es un atajo para
somecommand >tempfile
utility <tempfile
rm -f tempfile
y
utility <( somecommand )
es un atajo para
somecommand >tempfile
utility tempfile # notice the lack of redirection here (utility expected to read from "tempfile")
rm -f tempfile
Del mismo modo, >( somecommand )
puede considerarse como el nombre de archivo de un archivo temporal que se introducirá en somecommand
en su entrada estándar. En otras palabras,
utility > >( somecommand )
es un atajo para
utility >tempfile
somecommand <tempfile
rm -f tempfile
y
utility >( somecommand )
posiblemente podría ser un atajo para
mkfifo temppipe
somecommand <temppipe &
utility temppipe # utility is expected to write to "temppipe"
rm -f temppipe
(o algo similar)
Невыровненный ввод-вывод происходит всякий раз, когда логические блоки (файла или файловой -системы )не совпадают с физическими блоками (диска ). Так что виноват тот, кто разделил диск. В случае введения дополнительных уровней абстракции (, то есть LVM или виртуализации ), появляется больше возможностей для несогласованности. Эта статья иллюстрирует проблему с красивой графикой (, не скопированной из-за авторских прав ).