Online video hd

Смотреть 4k видео

Официальный сайт tali-sk 24/7/365

Смотреть видео бесплатно

cppmm 25.07.2009 09:56

Жизнь в консолиЗаметки о жизни в консоли.

По заказу рассказываю о маленьких радостях жизни без иксов.



Было время, когда большинство программ, которые я использовал были именно консольные. Это centericq(ныне centerim), mcabber и irssi для общения; orpheus для прослушивания музыки; pine для работы с почтой и ещё целая куча всего(уже не вспомню) для совершенно разных задач.



Сейчас, конечно, я нашёл для себя удобный GUI'шный софт, но многие задачи без консоли сделать всё-таки неудобно. Вот, некоторые из них(при прочтении рекомендую прикидывать, сколько времени и действий займёт каждый из примеров при выполнении их в GUI).



Работа с файлами.

Перемещение, копирование файлов.

Когда я настраивал систему печати с необычным принтером, надо было стянуть много разных фильтров foomatic. В итоге в директории, в которую я всё загружал собралось много архивов tar.gz(около сотни). Надо их всех разархивировать в этой же директории, а сами архивы переместить куда-нибудь, чтобы не мешались.

1
find ./ -type f -exec tar -xzvf '{}' \; && rm -f ./*.tar.gz && tar -xjvf /backups/foomatic_filters.tar.bz2 ./



Командой find я нашёл вс файлы в этой директории и отдал их на рстерзание архиватору, после чего кдалил все архивы, а всё, что получилось сжал в один большой архив и положил его в /backups/

Вообще, для работы с большим количеством файлов рекомендую учить regexp'ы. С их помощью можно творить чудеса.

Копирование и права доступа.

На одном из моих компьютеров заведено две учётные записи. Для меня и для жены. Но есть файлы, доступ к которым нужен нам обоим. Та же музыка. И вот, появилось у меня несколько сотен песен какой-нибудь группы, и надо этим всем поделиться. Моя музыка лежит в /home/cppmm/music/%groupname%

В домашней директории жены я создаю симлинк на нужную директорию, а на саму директорию и все файлы в ней ставлю права, с которыми любой пользователь, состоящий в группе users, может спокойно работать:

1
ln -s /home/cppmm/music/%groupname%/ /home/username/%groupname% && chown -Rv cppmm:users /home/cppmm/music/%groupname% && chmod -R ug+rw /home/cppmm/music/%groupname%



Изменение файлов.

Был такой случай. Надо было в движке сайта во всех php-файлах сменить одну функцию на другую.

1
find ./ -name *.php | xargs perl -pi -e 's/oneword/anotherword/g'



Тут я лично менял perl'ом, никто не мешает использовать для этого sed или awk, или ещё что-нибудь.



Поиск и работа с информацией в файлах.

Иногда надо что-то найти в файле. Какую-то запись, или какую-то строку. Я покажу возможности консольных утилит на примере работы с логами.

Возьмём для примера лог икс-сервера. Сделаем так:

1
2
3
4
5
6
7
$ head -n 13 Xorg.0.log | tail -n 3

Markers: (--) probed, (**) from config file, (==) default setting,

(++) from command line, (!!) notice, (II) informational,

(WW) warning, (EE) error, (NI) not implemented, (??) unknown.



Мы прочитали первые 13 строк лога, но на консоль вывели только последние три из низ. Проще говоря, мы увидели 11-ую, 12-ую и 13-ую строки. Но интересно нам другое. В этих строках указываются ключи, которые ставятся перед каждой записью в логе и их пояснение.

Попробуем прочитать все предупреждения(warning), полученные при старте иксов.

1
2
3
$ grep WW Xorg.0.log

(WW) warning, (EE) error, (NI) not implemented, (??) unknown.



У меня, к сожалению, варнингов нет, потому что я уже таким образом ранее grep'ал и исправил все ошибки. :)

Попробуем тогда информационные сообщения. Если просто grep'нуть по II, выводит очень много. Надо как-то ограничить вывод. Как вариант выведем только интересные(а не общие) сообщения, касающиеся драйвера видеокарты.

 1
2
3
4
5
6
7
8
9
10
11
$ grep II Xorg.0.log | grep NVIDIA | grep -v NVIDIA\(0\)

(II) Module glx: vendor="NVIDIA Corporation"

(II) NVIDIA GLX Module 173.14.18 Mon Mar 2 12:43:12 PST 2009

(II) Module nvidia: vendor="NVIDIA Corporation"

(II) NVIDIA dlloader X Driver 173.14.18 Mon Mar 2 12:22:46 PST 2009

(II) NVIDIA Unified Driver for all Supported NVIDIA GPUs



Сначала я получил всё, что связано с II, потом из этого вывода всё, что связано с NVIDIA, а потом отсеял неинтересующие меня сообщения с NVIDIA(0).

И вот мне стало интересно, что же подробнее написано в следующих строках после вот этой:(II) NVIDIA GLX Module 173.14.18 Mon Mar 2 12:43:12 PST 2009

1
2
3
$ cat -n Xorg.0.log | grep  GLX\ Module

93 (II) NVIDIA GLX Module 173.14.18 Mon Mar 2 12:43:12 PST 2009



Теперь я знаю, что это 93-я строка. А дальше дело техники - читаем первые 103 строчки, но выводим только последние 10 из них. Но с одним ньансом. Эти 10 строк мы не выводим на экран, а сохраняем в отдельный файл, чтобы, к примеру, потом его проанализировать.

1
$ head -n 103 Xorg.0.log | tail -n 10 > glx.log



Теперь, можно посмотреть этот файл.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ cat glx.log

(II) Loading extension GLX

(II) LoadModule: "dbe"



(II) Loading /usr/lib/xorg/modules/extensions//libdbe.so

(II) Module dbe: vendor="X.Org Foundation"

compiled for 1.5.3, module version = 1.0.0

Module class: X.Org Server Extension

ABI class: X.Org Server Extension, version 1.1

(II) Loading extension DOUBLE-BUFFER

(II) LoadModule: "record"



А можно добавить в него пометку:

1
$ echo "`date +%d.%m.%y` Интересный кусок лога" >> glx.log



После этого мы получим в конце файла строку "25.07.09 Интересный кусок лога", где вместо 25.07.09 будет сегодняшняя дата.



Ну и напоследок небольшой пример, который вряд ли понадобится обычному пользователю, но очень показателен в плане принципов работы в консоли вообще. Есть такая утилита - tcpdump. Это сниффер траффика. Так вот работа с этой утилитой - это основной принцип консоли, а именно - разговор.

Возьмём запрос:

1
$ tcpdump -ntpi eth0 host 192.168.1.1 or host 192.168.1.2 and not tcp port 22 and not tcp port 80 and not icmp



Этой командой я сказал показать все пакеты проходящие на интерфейсе eth0 для адресов 192.168.1.1 или 192.168.1.2, кроме 22-го и 80-го портов и пингов.

Как видите, по сути я просто напечатал предложение на английском языке. В этом и есть вся консоль - это разговор с компьютером. Я ему ставлю условия, говорю, что делать, а он мне отвечает.



Конечно, в такой статье всех радостей консоли не описать. Тысячи их. :)

И, конечно, для работы с ней надо знать язык консоли. Надо уметь с ней разговаривать. Для этого придётся потратить немного времени на чтение манов и изучение различных хитростей и особенностей. Но не забывайте, что время, потраченное на такое обучение в будущем сэкономит сотни часов по сравнению с мышковозюканьем и кнопочкотыканьем.



В этом описании я показал только несколько приёмов. Но намеренно обошёл стороной одну неотъемлемую часть работы в консоли - написание скриптов. По сути своей shell-скрипты - это те же самые команды, только записанные в файл(с некоторыми особенностями). Освоив работу в консоли и создание самых простеньких скриптов, времени тратится ещё меньше. Пример я уже выкладывал тут. Полчаса потраченные на написание скрипта окупаются слихвой при работе с ним.



И главное - не пугаться этих команд и больших конструкций. Всё это всего лишь небольшие утилитки, работающие в связке. И даже зачастую не приходится писать их вручную и запоминать сотни параметров. Всегда есть bash-completion и подсказки вида %commandname% --help.



Удачи!


Тэги: bash консоль
+ 19 -
Похожие Поделиться

lwilis 25.07.2009 18:36 #
+ 5 -
А смысл использовать конструкции grep |head |tail, когда у грепа есть опции -А -В -С?
cppmm 26.07.2009 11:10 #
+ 0 -
Чтобы показать возможности конвееров в консоли.

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн