В чем разница между echo 0>file.txt и echo 0 > file.txt?

Вы не можете отменить в Thunar (см. комментарий 9 , в частности ). Вместо этого вы можете использовать что-то вроде Dolphin, более мощное .

28
07.10.2021, 13:08
2 ответа

В echo 0 > file.txtс пробелами > file.txtзаставляет оболочку перенаправить стандартный вывод так, чтобы он был записан вfile.txt(после усечения файла, если он уже существует ). Остальная часть команды echo 0выполняется с установленными перенаправлениями.

Когда перед оператором перенаправления стоит число без кавычек без разделения, перенаправление применяется к соответствующему файловому дескриптору вместо значения по умолчанию. 0 — это файловый дескриптор для стандартного ввода , поэтому 0> file.txtперенаправляет стандартный ввод на file.txt. (1 — стандартный вывод, 2 — стандартная ошибка. )Число рассматривается как часть оператора перенаправления, а не как часть аргументов команды; осталось только echo.

Вы можете увидеть, как это происходит, если вы включите больше контента в аргументы echo:

$ echo number 0 > file.txt
$ echo number 0> file.txt
number

numberотображается во втором случае, потому что стандартный вывод не перенаправляется.

Этот вариант оператора перенаправления чаще всего выполняется со стандартной ошибкой, 2> file.txt.

Перенаправление стандартного ввода таким образом сломает все, что на самом деле пытается читать из стандартного ввода; если вы действительно хотите перенаправить стандартный ввод, разрешив запись, вы можете сделать это с помощью оператора <>:

cat 0<> file.txt
56
07.10.2021, 13:18

Нулевой файловый дескриптор является входным потоком. 0>filename поместит входной поток в имя файла. 0 > имя файла поместит 0 в имя файла файла. Обратите внимание на интервал.

0
08.10.2021, 13:45

Теги

Похожие вопросы