по большей части вам не нужно беспокоиться о таких вещах, как:
if [ -e "$file" ]
then echo exists
else echo not exists
fi
когда люди делают такие вещи, они на самом деле просто крутят свои колеса. это также может быть проблематичным, поскольку мало что связывает поведение и формат вывода одного сценария с другим. и все это в любом случае потрачено впустую, потому что:
sh -c 'exec <not_exist; echo can i\?' my_zero
my_zero: 1: my_zero: cannot open not_exist: No such file
скриптовая оболочка POSIX умирает с причиной, записанной в stderr, когда специальная встроенная оболочка является объектом любого неудачного перенаправления оболочки. к специальным встроенным командам относятся:
: continue break exec set . shift unset
times trap exit export readonly eval return
их особый статус можно понизить, вызвав их с помощью команды
:
sh -c 'command exec <not_exist; echo can i\?' my_zero
my_zero: 1: my_zero: cannot open not_exist: No such file
can i?
, и поэтому наиболее простой и эффективный способ надежной работы с файлами чтения / записи - поставить файл непосредственно в дескрипторе файла, с которым вы собираетесь взаимодействовать, и позволить оболочке обрабатывать любые / все сообщения об ошибках по мере необходимости. это просто произойдет, если это произойдет, и если вы напишете свои сценарии с прицелом на то, чтобы действия говорили сами за себя.
sh -c '
cat_fname()
for f
do exec <"$f"
printf "\n%-5s%-$((${#f}+2))s%s\n" === "$f" ===
cat
done
cat_fname a[1-9]/a[1-9].txt not_exist /dev/fd/0'
=== a1/a1.txt ===
1 1 1 11 1 1 1 1
=== a2/a2.txt ===
2 2 2 12 2 2 2 2
=== a3/a3.txt ===
3 3 3 13 3 3 3 3
=== a4/a4.txt ===
4 4 4 14 4 4 4 4
=== a5/a5.txt ===
5 5 5 15 5 5 5 5
=== a6/a6.txt ===
6 6 6 16 6 6 6 6
=== a7/a7.txt ===
7 7 7 17 7 7 7 7
=== a8/a8.txt ===
8 8 8 18 8 8 8 8
=== a9/a9.txt ===
9 9 9 19 9 9 9 9
sh: 4: cannot open not_exist: No such file
Каталог rcars
сначала должен быть частью rcars
группы, (владелец папки или корень может выполнить эту операцию ).
Синтаксис:chgrp <groupName> -R <folderName>
chgrp rcars -R rcars
Затем группе rcars
потребуются rw
права доступа к каталогу.
Синтаксис:chmod g+rw <folderName>
chmod g+rw -R rcars
Чтобы запретить другим доступ:
chmod o-rw -R rcars
-R
для рекурсивного разрешения (всех подкаталогов -и файлов в нем ).