Есть ли смысл использовать тройник?

Почему почти все инструкции по добавлению текста в системные файлы, такие как 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?

1
задан 31 January 2017 в 04:04

2 ответа

Прежде всего, tee сам не добавляет текст, а также >.

Это tee -a и его дополнение, >>, что APPENDS текст.

Я не верю, что все оболочки поддерживают функцию >>, поэтому именно поэтому tee ] чаще используется. (Подумайте о простом старом sh). Tee - это команда, а >> - оператор.

Если вы используете (мой личный фаворит) bash, > и >> намного приятнее / проще.

4] Использование tee также позволяет вам использовать эту команду, поэтому вам не нужно выполнять всю инструкцию, как в sudo sh -c "echo foo > bar". tee также позволяет разделить выход. Конечно, все это можно увидеть в man tee. Это, в основном, ваши личные предпочтения.

Для дальнейшего чтения см. Здесь и здесь.

8
ответ дан 24 May 2018 в 12:46
  • 1
    Уточнение в отношении «sudo JUST the command» для тех, кто считает это немного сложным: использование формы, такой как sudo somecommand >> filea, будет работать sudo somecommand, а затем, как пользователь , вызывающий пользователя , добавит вывод в [ f3]. Использование sudo sh -c "somecommand >> filea" работает, но может вызвать кошмары с вложенными котировками. Использование somecommand | sudo tee -a filea запускает somecommand в качестве вызывающего пользователя, а затем добавляет вывод к filea как root - обычно это то, что пользователь хотел. – Darael 21 January 2014 в 00:55
  • 2
    @Darael Я отредактировал сообщение. Спасибо за разъяснение. – Kaz Wolfe 21 January 2014 в 09:47

tee принимает стандартный поток ввода и записывает его как в стандартный выходной поток, так и в поток файлов. Если это помогает людям помнить, имя команды происходит от T-splitter в сантехнике. Есть хорошая статья в Википедии, где я узнал о происхождении имени команды.

Статья в Википедии

0
ответ дан 24 May 2018 в 12:46

Другие вопросы по тегам:

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