Есть ли какое-либо значение для использования тройника?
Почему почти все инструкции относительно добавления текста в системные файлы, такие как fstab а также /etc/apt/sources.list.d/<name>.list включать использование tee а также echo добавить указанный текст?
Возьмите следующие примеры, которые запускаются от имени пользователя root:
## 1
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee -a file1
## 2
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' >> file2
Бег diff -u file1 file2 ничего не возвращает; Бег md5sum file1 file2 показывает, что их md5sums идентичны, что возвращает меня к моему первоначальному вопросу:
Почему | tee <FILENAME> это распространено в документации по Ubuntu, это просто хорошая практика, иначе было бы проще просто использовать пример 2 вместо передачи вывода из echo в tee?
3 ответа
Есть разница: тройник дублирует вывод: он отправляет его как в файл, так и на дисплей.
Но есть еще:
Например, если вы хотите записать некоторую строку в два файла одновременно, вы можете использовать команду с tee:
echo "some text" | tee file1 > file2Еще одна вещь, которая может вам помочь, - это избежать одной проблемы при использовании sudo. Обычный оператор перенаправления вывода всегда выполняется с вашими правами пользователя, даже когда вы пишете sudo перед командой, которая генерирует текст STDOUT. Другими словами, это не удастся, если у вас нет разрешения на запись в этот файл:
sudo echo "something" > barНо с тройником все пойдет хорошо
echo "something" | sudo tee bar
2 примера с этого сайта. Это еще немного.
tee берет стандартный поток ввода и записывает его как в стандартный поток вывода, так и в поток файла. Если это помогает людям помнить, имя команды происходит от Т-сплиттера в сантехнике. Есть хорошая статья в Википедии, где я узнал о происхождении названия команды.
Прежде всего, tee сам не добавляет текст и не делает >,
это tee -a и его дополнение, >> что добавляет текст.
Я не верю, что все снаряды поддерживают >> функция, так вот почему tee чаще используется. (Подумайте только о старой sh). Ти это команда, а >> это оператор.
Если вы используете (мой личный фаворит) bash, > а также >> намного лучше / проще.
С помощью tee также позволяет вам sudo ПРОСТО эту команду, чтобы вам не пришлось sudo весь оператор, как в sudo sh -c "echo foo > bar", tee также позволяет разделить вывод. Конечно, все это можно увидеть в man tee, Это в основном только ваши личные предпочтения.
