Перенаправление вывода в оболочке в другой файл, если файл существует - PullRequest
1 голос
/ 13 марта 2011

Я использую следующую команду для перенаправления вывода в другой файл.

ls -l >>foo.txt

Эта команда добавит вывод ls -l в файл foo.txt.И если файл не существует, он создаст новый файл foo.txt и перенаправит вывод в новый foo.txt.

Теперь есть ли способ перенаправить / добавить вывод ls -lв файл, если он существует, и только если файл уже существует, в противном случае он не будет перенаправлять вывод или отклонит его .

В моем случае, если файл foo.txt уже существует, он добавит выводв foo.txt в противном случае он будет отбрасывать вывод.

Есть ли какая-либо команда для этого?

Ответы [ 3 ]

4 голосов
/ 13 марта 2011
ls -l |
    if [ -f "$file" ]
        then cat >> "$file"
        else cat # or whatever you want to do with the output
    fi

Обратите внимание, что операция не является атомарной: можно отсоединить файл после проверки его существования и до того, как он будет открыт для записи.

3 голосов
/ 13 марта 2011

Проверяет, существует ли foo.txt и является ли он обычным файлом, перед запуском команды ls -l >> foo.txt:

test -f foo.txt && ls -l >> foo.txt
3 голосов
/ 13 марта 2011

Не знаю никакого встроенного синтаксиса, чтобы сделать это, но что-то вроде следующего должно работать:

if [ -f foo.txt ] ; then
  out=foo.txt
else
  out=/dev/null
fi
ls -l >> $out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...