Многие из вас, вероятно, видели команду, которая позволяет писать файл, требующий прав root, даже если вы забыли открыть vim с помощью sudo:
:w !sudo tee %
Дело в том, что я не понимаю, что здесь происходит.
Я уже понял это:
w
для этого
*:w_c* *:write_c*
:[range]w[rite] [++opt] !{cmd}
Execute {cmd} with [range] lines as standard input
(note the space in front of the '!'). {cmd} is
executed like with ":!{cmd}", any '!' is replaced with
the previous command |:!|.
поэтому он передает все строки в качестве стандартного ввода.
Часть !sudo tee
вызывает tee
с правами администратора.
Для всех, чтобы иметь смысл, %
должен вывести имя файла (в качестве параметра для tee
), но я не могу найти ссылки на справку для этого поведения.
tl; dr Может ли кто-нибудь помочь мне проанализировать эту команду?