Права
- chmod -R 741 /var/www/files - Сменить права рекурсивно (-R) во всей папке files на rwx r-- --x, где: 4 – чтение (r), 2 – запись (w), 1 – выполнение (x)
- chmod -R u+rwx,g+r-xw,a-rw+x /var/www/files - Смена прав рекурсивно (-R) во всей папке files на rwx r-- --x, где u+rwx - u (user - владелец файла) добавить rwx, g+r-xw (group - пользователи группы владельца) добавить r убрать xw, a-rw+x (all - все остальные пользователи) убрать rw добавить x, где r - чтение, w – запись, x - выполнение
- chattr +Sai - Добавление атрибутов к файлу, синхронное изменение всех данных на диск, без кэширования (S); только добавление данных, удаление и переименование запрещено (a); запрещено удаление, изменение или переименование (i) (immutable).
Поиск
- locate foo - Быстрый поиск по заранее проиндексированным файлам с помощью updatedb.
- pinfo bash - Удобная замена info.
- find /usr/bin -type f -mtime -10 -iname '*.log' - Найти все файлы в '/usr/bin', созданные или изменённые в течении последних 10 дней, с именем заканчивающимся на ".log" без учета регистра.
- find /usr/project \( -name *.htm -o -name '*.html' \) -exec enconv -V --convert-to=UTF-8 {} \; - Конвертировать найденные файлы в правильную кодировку.
- find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1 - Конвертация тегов в UTF-8 (должен быть установлен python-mutagen).
- find /bakdir -name bak-20??-??-??.tar.gz | sort | head -n -7 | egrep -v 20[01][0-9]-[01][0-9]-01 | while read I ; do rm -v "$I" ; done - Вымученная изящная конструкция, по очистке бэкап архивов, которая оставляет файлы за последнюю неделю и каждое первое число. find выводит список наших бэкап файлов, формат которых bak-год-месяц-число.tar.gz, sort правильно сортирует, head передает все файлы, кроме последних 7-ми, egrep исключает файлы за первое число, конструкция while удаляет остальное.
- ls /bakdir/bak-20??-??-??.tar.gz | head -n -7 | egrep -v 20[01][0-9]-[01][0-9]-01 | while read I ; do rm -v "$I" ; done - Еще более изящная и ресурсоемкая конструкция.
Вывод
- tar -cjvf /home/user/etc_`date '+%Y-%m-%d'`.tar.bz2 /etc - (с)Запаковать в (f)tar-архив и (j)сжать bzip2 папку /etc c текущей датой в имени файла, с (v)подробным выводом.
- tar -xzvf /home/user/Downloads/centerim-4.22.6.tar.gz -С /opt/ - (x)Распаковать (z)gzip-архив в /opt
- tar --use-compress-program=xz -xvf kernel.txz - Распаковать xz-архив.
- cat /etc/mail.conf | grep -v "#" | sed -e '/^ *$/d' - Показать файл без комментариев и пустых строк (неоптимально).
- egrep -v '^#|^$' /etc/mail.conf - Показать файл без комментариев и пустых строк (оптимально:).
- ls -f1 /var/log/packages/ | wc -l - Вывести количество строк (wc -c - байт).
- diff -y httpd.conf httpd.con.new - Сравнение в две колонки.
- diff -u httpd.conf httpd.con.new - Унифицированное cравнение (в один столбец, но читаемо). (рек. colordiff).
- tail -n +5 /file - Вывести строки, начиная с 5-ой
- egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' - Вывести только IP.
- ... | awk '{print($1"SRTING")}' - Вывести то что в пайпе, добавив STRING.
- awk '$1=="string" {print $2}' file1 >> file2 - Считать файл file1 , если данные в первом столбце равны 'string' добавить в файл file2 данные из второго столбца этой строки
- ... | tr '\n' ' ' - Заменить все переносы строки на пробелы.
- ... | awk '{s += $2} END {print s*9}' - Сложить второй столбец и вывести результат умноженный на 9.
Модификация
- sed -i 's/foo/too/' - Заменить foo на too.
- sed -i '14d' /file - Удалить 14ю строку.
- sed -i '/[Nn]etwork/d' /file - Удалить строку содержащую Network или network.
- sed -i '$ a \\n[mounts]\nuser root' /etc/munin/config - Добавить в конец файла "[mounts]" затем перенос на новую строка и "user root".
- sed '14a\ echo \"graph_category logger\"' /etc/munin/plugins/command - После 14ой строки добавить "echo "graph_category logger"".
- sed '1i \# vim: ft=ruby\n' - Вставить в начало файла '# vim: ft=ruby' и перенос строки.
|