Почему почти все инструкции по добавлению текста в системные файлы, такие как 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?
Прежде всего, tee сам не добавляет текст, а также >.
Это tee -a и его дополнение, >>, что APPENDS текст.
Я не верю, что все оболочки поддерживают функцию >>, поэтому именно поэтому tee ] чаще используется. (Подумайте о простом старом sh). Tee - это команда, а >> - оператор.
Если вы используете (мой личный фаворит) bash, > и >> намного приятнее / проще.
4] Использование tee также позволяет вам использовать эту команду, поэтому вам не нужно выполнять всю инструкцию, как в sudo sh -c "echo foo > bar". tee также позволяет разделить выход. Конечно, все это можно увидеть в man tee. Это, в основном, ваши личные предпочтения.Для дальнейшего чтения см. Здесь и здесь.
tee принимает стандартный поток ввода и записывает его как в стандартный выходной поток, так и в поток файлов. Если это помогает людям помнить, имя команды происходит от T-splitter в сантехнике. Есть хорошая статья в Википедии, где я узнал о происхождении имени команды.