С GNU diffutils пакет diff
это произведет только строки из файла b, которые или были изменены или недавно вставлены:
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
Вторые выполнения в качестве примера echo
под sudo
, но перенаправление происходит под исходной оболочкой.
sudo bash -c "echo > a4"
sudo
просто команда.
Таким образом для Вашего первого примера: sudo echo>a2
sudo
команда. И в то время как Вам бодали перенаправление против эха, которое ничего не означает.
Например: echo cat /etc/passwd > /tmp/foo
Вы не получите содержание/etc/passwd в/tmp/foo. Вы будете просто иметь cat /etc/passwd
. sudo не отличается. Часть эха является просто аргументом sudo. sudo, действительно использует его для выполнения вещей, но оболочка не знает это.
Это - один из путей, где sudo доступ очень отличается от выполнения вещей как корень.
Для Вашего примера, где Вы используете sudo vim a3
выполнения sudo vim a3
для Вас как корень. И выполнения энергии как корень, таким образом, файл принадлежит корню.
sudo echo>a2
: исходная 1-я оболочка создает файл, и затем sudo выполняется. Таким образом, когда оболочка создает файл, она делает одного владельца файла, который ответственен за выполнение полной командыsudo echo>a2
– Ravi 08.10.2013, 11:21sudo
, таким образом, владелец совпадает с, если Вы только что работалиecho > a2
. Можно получить ошибку еслиsudo
у пользователя нет разрешения записи дляa2
(Я сталкиваюсь, это с NFS монтирует, что это только для чтения дляroot
.) – chepner 08.10.2013, 16:39