Так, принятие Вас хочет позволить пользователям www-data
и netbeans
к доступу /var/www/project
путем добавления их обоих к группе netbeans
:
# you might have done this already, but no harm will be done by
# executing these commands again:
groupadd netbeans
adduser www-data netbeans
adduser netbeans
# set the user 'www-data' and the group 'netbeans' as the owners
chown www-data:netbeans -R /var/www/project
# allow group members to read and write files
chmod g+rw -R /var/www/project
Это легко динамически построить последовательность и оценить его:
eval "$(echo -n 'pr -mt '; while read ext; do echo "<(ls -1 *.$ext)"; done < list |tr '\n' ' ' )"
где list
будет файл (возможно, fifo), представляющий список расширений, из которых вы хотите построить команду.
< ()
по существу создает неназванные FIFO. Альтернативой без оценки может быть использование именованных файлов:
while read ext; do mkfifo ${ext}.pipe; ls -1 *.$ext > ${ext}.pipe & done
pr -mt *.pipe
rm *.pipe #remove the named pipes when done
Выше предполагается, что в каталоге отсутствуют другие имена файлов, оканчивающиеся на «.pipe».
-121--139523- Вероятно, полученное сообщение об ошибке указывает на то, что ни один файл не соответствует имени образца .swp $
. Как правило, более безопасный способ сделать то, что вы написали (потому что он будет обрабатывать любое имя файла):
find . -name '*.swp' -print0 | xargs -0 rm -i --
В фрагменте выше я использовал -print0
, чтобы найти
отделяет
записи с нулевыми символами; значение по умолчанию - newlines, что
к сожалению, он допустим в пределах имени файла. Команда -print0
работает с любыми именами файлов, включая те, которые встраивают
новые строки. Аналогично, xargs -0
обрабатывает свои входные данные как разделенные нулями
записей.
*
расширяется оболочкой перед выполнением tar
. Таким образом, изменение tar
в каталоге делает недействительными аргументы, которые *
расширены в. Вы можете просто сказать tar
, чтобы сжать каталог:
tar -czf /backupmnt/abc.tar.gz -C /backupmnt/statusService/ .
.
представляет текущий каталог, который изменяется при изменении tar
каталогов. Это приведет к появлению скрытых файлов (начиная с .
), включенной в архив.
-C
все равно не является переносной опцией. Это вариант GNU, а не UNIX.
tar
в любом случае больше не указана в Единой Спецификации UNIX, так как между реализациями есть большая разница. Она имеет pax
для создания архивов portable.
Можно сделать:
pax -ws '|.*//||' /backupmnt/statusService//. /some/other/dir//./*.ext |
xz > file.tar.xz
(xz
/gzip
не указан POSIX).
Это использование //.
для обозначения того, какая часть путей должна быть удалена.
Почему не использовать явное изменение каталога?
cd /backupmnt/statusService && tar -czf /backupmnt/abc.tar.gz *
Или вы можете использовать относительные пути:
cd /
tar -czf /backupmnt/abc.tar.gz backupmnt/statusService1/* backupmnt/statusService2/* backupmnt/statusService3/*
Что может быть даже лучшим решением, поскольку вы будете хранить файлы разделены по папкам и избегают перезаписи повторяющихся имен файлов