Посты по тегу: консольные полезности

Консольные полезности 5

Пинг с префиксом в виде времени:

$ stdbuf -i0 -o0 ping 192.168.42.1 | while read l; do echo "[$(date '+%H:%M:%S')] $l"; done

В bash, выполнить предыдущю команду с заменой foo на bar:

$ ^foo^bar

Показать процессы по потреблению питания (полезно для ноутбуков):

$ sudo powertop

Не очищать экран при выходе из less:

alias less='less -FX'

Принудительная проверка диска после перезагрузки:

Читать далее...

HowTo: использование команды grep в Linux - примеры

grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их, если вывод не отменён специальным ключом.

Синтаксис

Синтаксис может быть следующим:

grep 'word' filename
grep 'word' file1 file2 file3
grep 'string1 string2'  filename
cat otherfile | grep 'something'
command | grep 'something'
command option1 | grep 'data'
grep --color 'data' fileName

Поиск по файлу

Чтобы выполнить поиск пользователя boo в файле /etc/passwd запустите:

$ grep boo /etc/passwd

Вывод будет примерно таким:

boo:x:1000:1000:boo,,,:/home/boo:/bin/ksh

Так же вы можете выполнить регистронезависимый поиск строки boo (например, bOo, Boo, BOO и т.п.):

$ grep -i "boo" /etc/passwd

Рекурсивный поиск

Можно искать во всех файлах в каталоге:

$ grep -r "192.168.1.5" /etc/

или

$ grep -R "192.168.1.5" /etc/

Пример ла, в котором встречается искомая строка (например, /etc/ppp/options). Такое поведение можно отключить, т.е. grep не будет вставлять в результаты поиска имена файлов, добавив ключ -h:

$ grep -h -R "192.168.1.5" /etc/

или

$ grep -hR "192.168.1.5" /etc/

Пример вывода:

# ms-wins 192.168.1.50
# ms-wins 192.168.1.51
addresses1=192.168.1.5;24;192.168.1.2;

Использование grep для поиска только слов

Если вы ищете boo, то grep найдет и такое сочетание fooboo, boo123, 123boofoo и т.п. Для того чтоб grep нашел именно слово boo можно указать ключ -w:

$ grep -w "boo" file

Поиск двух разных слов

$ egrep -w 'word1|word2' /path/to/file

Подсчет количества

grep может посчитать количество вхождений слова в файл:

$ grep -c 'word' /path/to/file

Опция -n позволит вывести пронумерованные строки из файла номером этой строки:

$ grep -n 'root' /etc/passwd

Пример вывода:

1:root:x:0:0:root:/root:/bin/bash
1042:rootdoor:x:0:0:rootdoor:/home/rootdoor:/bin/csh
3319:initrootapp:x:0:0:initrootapp:/home/initroot:/bin/ksh

Инвертированный вывод

Вы можете использовать параметр -v для инвертирования вывода, т.е. вывести все строки кроме тех, в которых встречается искомое слово:

$ grep -v bar /path/to/file

Unix / Linux конвеер и grep

grep можно комбинировать с конвеером (pipe). Этот пример выведет имена жестких дисков:

# dmesg | egrep '(s|h)d[a-z]'

Показать модель CPU:

# cat /proc/cpuinfo | grep -i 'Model'

Эта же команда может быть выполнена по другому без pipe:

# grep -i 'Model' /proc/cpuinfo

Пример вывода:

model       : 30
model name  : Intel(R) Core(TM) i7 CPU       Q 820  @ 1.73GHz
model       : 30
model name  : Intel(R) Core(TM) i7 CPU       Q 820  @ 1.73GHz

Вывести только список файлов

Передав параметр -l можно вывести только имена файлов:

$ grep -l 'main' *.c

И, наконец, можно вывести результат с подсветкой:

$ grep --color vivek /etc/passwd

Консольные полезности 4

Последние добавленные файлы логов

ls -ltr /var/log | tail

Скопировать права с одного файла на другой

chmod --reference=foo.txt bar.txt

Удалить дубли строк

awk '!seen[$0]++' app.logfile

Хак для cd (смена каталога)

CDPATH=/etc:/usr/local/etc 
cd httpd # cd to /etc/httpd 
cd foo # cd /usr/local/etc/foo

Игнорирование в истории комманд

export HISTIGNORE="&:[ ]*:exit:ls:bg:fg:history:clear"

Удалить предыдущую строку из истории и вызов этого алиаса

alias hideprev='history -d $((HISTCMD-2)) && history -d $((HISTCMD-1))'

Поиск заражлить миллионы файлов

rsync -a -delete empty/ foo/

Усыпить процесс и перенсти его в screen

longcmd ; [Ctrl-Z] ; bg ; disown ; screen ; reptyr $( pidof longcmd )

Посмотреть SELECT'ы и ответы MySQL (не работает с Unix соккетом)

ngrep -d eth0 -i 'select' port 3306

Удалить все сообщения за 20 января из почтовой очереди Postfix

mailq |grep " Jan 20 " |awk {'print $1'} |xargs -n 1 postsuper -d

Преобразовать все в нижний регистр

tolower(){ echo ${@,,}; }

Если игра вышла и не восстановила разрешение экрана, то попробуйте это

xrandr -s 0

Нет telnet, netcat? Не беда

curl -v telnet://blt.evedder\.otv:4240

Наблюдаем за несколькими командами одновременно. Все знаки (кавычки, точки с запятой, etc) имеют значение!

watch -n 10 '{ uptime ; free ; df -h; }'

Список файлов, сгруппированный по расширениям

ls -X

Детальная статистика по дисковому разделу

vmstat -p /dev/sda6

Отсортировать список IP адресов

sort -V ipv4addrs.txt

Консольные полезности 3

Отправить первые 80 гигабайт диска на удаленный хост:

dd if=/dev/sda bs=1G count=80 |pv -s80G |pbzip2 -c |ssh user@remote 'cat > /tmp/sda-80GB.bz2'

Удалить слово перед курсором:

<Ctrl+W>

Как выйти из vim:

<ESC>:q!

Запустить htop на удаленном сервере с локальным отображением:

ssh host -t htop

Консольная утилита для чтения PDF:

pdftohtml -stdout my.pdf > my.pdf.html; elinks my.pdf.html

Архивирование множества лог файлов в параллельных потоках по количеству ядер сервера:

ls *.log | parallel xz -v

Консольные полезности 2

В Линукс найти процесс dd и вывести прогресс его работы:

kill -USR1 $( pidof dd )

Найти к какому пакету относится файл. Перед этим необходимо установить apt-file.

apt-file search /usr/bin/apxs2

Найти строки с eval( в PHP файлах в пользовательский www каталогах:

find /home/*/www -name "*.php" -exec grep --color -H -n 'eval(' {} +

Скачать файлы в диапазоне от IMG_0001.JPG до IMG_1000.JPG:

curl --remote-name http://www.example.com/images/IMG_[0001-0100].JPG

[Ctrl+\] - более "жесткая" версия Ctrl+C, посылает SIGQUIT, который убивает большинство программ. Многие до сих пор это обрабатывают. "Сильнее" только kill -9.

Найти все файлы больше 100М и вывести их с человеческими размерами:

find / -size +100M -exec ls -sh {} \;

Перейти в предыдущую ветку, где был до этого:

git checkout -

Команда mirror для использования камеры и mplayer в качестве зеркала:

mirror(){ mplayer -vf mirror -v tv:// -tv device=/dev/video0:driver=v4l2; }

Консольные полезности

Функция-разделитель:

separator(){ printf '%*s\n' $(tput cols) '' | tr ' ' -; }

Перенести процесс в другую консоль:

$ reptyr <pid>

Перевести процесс в фон и уведомить, когда он завершится:

<ctrl-z> bg ; wait %1 ; echo "done" | mail -s "done" you@example.com

Сгенерить данные персонажа для тестов:

rig

Какие сервисы используют не обновленные библиотеки:

$ sudo lsof -n | grep ssl | grep DEL

Послать запрос в unix socket:

printf "GET / HTTP/1.1\r\nHost: http://example.com\r\nConnection: close\r\n\r\n" | nc -U /tmp/unicorn.sock

Послать запрос серверу с указанием протокола HTTPS:

curl -v -H "X-FORWARDED-PROTO: https" http://localhost/