когда использовать тег -f или -a в цикле if

Я запутался между двумя тегами, которые можно использовать в операторе if в скриптах bash.

Один из них -f, а другой - -a.

Их описание гласит следующее:

[ -f FILE ] True if FILE exists and is a regular file.
[ -a FILE ] True if FILE exists.

Теперь, используя условие if в моем сценарии оболочки, как я могу узнать, какой тег использовать. Как у меня есть сценарий, который выполняет регулярное резервное копирование с использованием tar и создает файл file-name.tar.gz, так как я могу узнать, какой файл является обычным. Благодаря.

0
задан 9 December 2013 в 12:22

2 ответа

Для файлов tar - и в основном для любого другого файла, который вы создаете - -f - правильный выбор.

-a предназначен для специальных файлов, таких как узлы устройств, fifos и тому подобное, которые в соответствии с философией Unix Все представляет собой файл , представленные в виде файлов в вашей файловой системе.

0
ответ дан 9 December 2013 в 12:22

Обычные файлы - это текстовые файлы или файлы данных, это также может быть двоичный файл. Для обычных файлов вывод ls -l будет выглядеть следующим образом:

-rw-rw-r-- 1 username group 74 Nov 27 16:03 mytext.txt

В общем, первое место для обычного файла a - должно появиться. В таких случаях if [ -f FILE ] было бы целесообразно.

Нерегулярные файлы - это устройства, каналы, сокеты, tty и т. Д., Все остальное, что подпадает под философию «Все есть файл», как указано в drc. Вы можете пройти Unix_file_types для получения дополнительной информации.

Вы можете проверить вывод ls -l, например,

crw-rw---- 1 root tty 4, 1 Dec  9 13:41 /dev/tty1
brw-rw---- 1 root disk 1, 11 Dec  9 13:41 /dev/ram11

. Для всех нестандартных файлов следует использовать if [ -a FILE ]

.
0
ответ дан 9 December 2013 в 12:22

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

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