Командная строка
Заменить повторяющиеся пустые строки на одну пустую строку
Допустим у вас есть файл в котором множество повторяющихся пустых строк. А вам
хотелось бы повторяющиеся пустые строки заменить на одну пустую строку (что бы
было легче читать например).
sed -e ':a;/^$/N;/\n$/{D;ba}' file.txtПримечание:
В *BSD системах, однострочник придется оформить так:
sed -e :a -e '/^$/N;/\n$/{D;ba' -e '}' file.txtтак как после имени метки и перед } необходим перевод строки.
Объяснение как это работает
Боремся с писком в консоли
Иногда когда судьба заносит людей в текстовую консоль, надолго запоминается громкий писк из PC-Speaker который сопровождает каждое неверное движение в настроенном по умолчанию bash Ж:-)
Отключить звук в консоли можно так:
setterm -blengthМассовое переименование файлов с пробелами и разными регистрами
Переименование файлов с использованием перловых выражений s/// tr///
$ rename 'tr/ /_/;$_=lc;' *
команда переводит все файлы в директории в нижний регистр и заменяет " " на _
Как создать файл нужного размера
Часто нужно создать файл заданного размера, не всегда есть возможность использовать самописный скриптик. Можно создать файл нужного размера с помощью dd
$ dd if=/dev/zero of=~/file count=1 bs=100Mпишем нули в file, всего 100M
Логи в отдельной консоли
Чтобы быстро посмотреть последние сообщения в логах - не обязательно писать в командной строке "tail /var/log/messages". Можно вместо этого выводить нужные сообщения в отдельную консоль. Для этого пропишите в файле /etc/syslog.conf
Математически вычисления с плавающей точкой в консоли
$ echo "22/7" | bc -l 3.14285714285714285714 $если вас не устраивает 20 символов после запятой, то можно изменить их кол-во командой bc
$ echo "scale=4; 22/7" | bc 3.1428 $кстати максимальное кол-во знаков после запятой ограничено 2147483647 (в идеале) и кол-вом вашей оперативной памяти (в реале Ж:-)
на самом деле ключ -l подключает к bс стандартную математическую библиотеку С, и по умполчанию ставит scale=20.
за одно можно использовать множество математических функций типа cos, ln, exp....
Горячие клавиши в elinks
Подсмотреть горячие клавиши можно через меню: Справка -> Клавиши
стрелки вправо и влево - перейти по текущей линке и вернутся на предыдущую страницу соответственно
g - (go) запрос на вводе нового URL,
G - тоже смое что g, но при этом подставляется текущий URL. Удобно для того что бы подправить текущий,
E - тоже самое что G, но при этом подставляется URL который находится в текущей ссылке на котором стоит курсор,
% - переключать тип отображения цветов по кругу. у меня (без цвета -> 16 цветов -> 256 цветов)
. - вкл./выкл. нумерацию ссылок.
цифры - прыгнуть на ссылку с введенным номером
* - вкл./выкл. отображение [IMG] на месте изображений. Удобно для галерей Ж%-)
\ - показать/убрать код HTML текущей страницы
q - выйти
Q - выйти без запроса на выход
a - добавить страницу в букмарки
s - панель букмарков
d - скачать то на что ссыллается текущая ссылка
D - мененжер закачек
Поиск как в vi
/ - поиск
? - обратный поиск
n - найти следующее соответствие
N - найти предыдущее соответственные
# - поиск с пыжками на частично найденные слова
f - текущий фрейм на все окно
ps
это то что испольщую я постоянно, на самом деле всего намного больше Ж:-)
Копирование содержимого файла в буфер обмена из командной строки
Скопировать содержимое файла в буфер обмена в Linux, не используя выделение или Ctrl-C можно несколькими способами:
1) стандартный буфер X с помощью xclip
скопировать: cat file | xclip
вставить: xclip -o
2) стандартный буфер X с помощью xsel
скопировать: cat file | xsel
вставить: xsel
утилиты xsel и xclip очень похожи, но xsel имеет больше опций (несколько буферов, возможность работать с различными дисплеями, добавление в буфер к существующей информации, и т.д. За подробностями - в man xsel
3) буфер klipper от KDE:
скопировать: dcop klipper klipper setClipboardContents "$(cat file)"
вставить: dcop klipper klipper getClipboardContents
добавляйте свои способы ;)
Автоматическое переименование закладок в Konsole
Тем, кто использует Konsole для работы в командной строке, наверняка приходилось сталкиваться с тем, что Konsole нумерует закладки в стиле Shell#1, Shell#2 и т.д. Конечно, закладки можно переименовать, но это неудобно. Лучше было бы сделать это автоматически. Например, при логине на удаленную машину закладка переименовывалась бы в username @ hostname.
Как оказалось, данная возможность в Konsole имеется, но скрыта от глаз мирских (т.е. ее нельзя найти в опциях настроек). Для того, чтобы включить опцию в нужно сделать следующее:
для tcsh
alias sess 'echo "\033]30;\!*\007\c"'
для bash - добавить в .bashrc
export PS1=$PS1"\[\e]30;\w\a\]"
или если в закладке также хочется иметь имя хоста:
export PS1=$PS1"\[\e]30;\u at \H:\w\a\]"
Отображения размеров файлов и директорий в удобной для человека формe
ramok:pts/20[~/ ls -lh .zshrc -rw-r--r-- 1 ramok ramok 25K 2006-12-22 17:56 .zshrc ramok:pts/20[~/сразу видно что файл .zshrc занимает 25 килобайт
ramok:pts/16[~/ cd /home ramok:pts/16[/home/ sudo du -hs * 32K bat 60M eggdrop 77M ftp 80M kirval 15G ramok 24K kostya 1,5G lesha 40K nwarrior ramok:pts/16[/home/видно кто больше всего отъедаем места на компьютере Ж:-)
я часто фильтрую что бы видеть только то что занимает гигабайты например
Цветной gcc, make, и diff
раз уж пошел разговор о цветах, то установив цветные фантики, можно также установить цветной gcc, make, и diff.
устанавливается пакетами:
colorgcc, colormake, colordiff
вызывается тоже с аналогичными именами. Мануалы пакетов содержат информацию о том, как перенастроить систему на использование данных оберток по умолчанию.
Поиск и замена текста в нескольких файлах
Чтобы заменить foo на bar в нескольких файлах, выполните следующую команду:
perl -pi~ -e 's/foo/bar/' [files]
Оригинальные файлы при этом будут сохраны с именами filename~
Скриншот консоли
Если консоль использует фреймбуффер, то можно воспользоваться программой fbgrab. Если же консоль обыкновенная текстовая, то достаточно просто прочитать содержимое экрана из соответствующего устройства. Например, чтобы сделать скриншот первой консоли, достаточно написать cat /dev/vcs1 > screen.txt. Если вместо /dev/vcs1 указать /dev/vcsa1, то кроме чистого текста в файл запишутся и цвета символов (буква 'a' в имени устройства связана с 'атрибутом символа'). Часто для успешного выполнения этой команды надо иметь права root. Еще один способ - использовать программу screen (которую весьма рекомендую не только по этой причине) и воспользоваться заложенными в нее возможностями.
by ams
PS
перенесено отсюда
http://linsovet.com/node/204#comment-350
Печать из консоли в UTF8
Чтобы распечатать текстовый файл в UTF8 из консоли, нужно установить пакет gnome-u2ps.
Использование:
u2ps file-utf8.txt | lpr
Как сравнить 2 каталога
diff -qr dir1 dir2
grep с перловыми регекспами в Debian
Как известно многим, в Debian grep собран без поддержки перловых регулярных выражений:
t:~$ grep -P 123
grep: Ключ -P не поддерживается
Но немногие знают о существовании программы pcregrep, поведение которой аналогично grep-у, вызванному с ключом P.
Переодический запуск программ с выводом результатов на терминал
В линуксах есть команда watch. Например
$ watch -n 5 df -hбудет с переодичностью 5 секунд перезапускать команду df -h
(читаем дальше...)
Временное приостановление консольных программ
Ecли консольная программа слишком быстро выводит слишком много текста и/или слишком быстро или слишком грузит систему(как например http://linsovet.com/node/7#comment-488 Ж:-) и хочется приостановить временно её выполнение, приостановить можно ctrl-s. Продолжить выполнение ctrl-q. Часто случается случайно нажать ctrl-s и создается впечатление что консоль "зависла". Это можно отколючить если вы хотите использовать эти клавиши для своих целей
$ stty -ixon
Другой способ приостановить программу ctrl-z. Этим вы приостановите полцесс и забросите в фон.
alias howtime
FreeBSD, tcsh
Для определения времени исполнения команд используется /usr/bin/time ....
Удобно использовать эту команду как алиас
echo alias howtime (/usr/bin/time -h) >> ~/.cshrc
source ~/.cshrc
параметр "-h" нужен для вывода времени в часах, минутах, и секундах, а не в машинных тактах ("h" от "human")
и теперь вместо построения строки команд вводите нужную вам команду после алиаса например:
howtime mplayer video_file.avi
в конце фильма вы увидите сколько это заняло времени для компьютера
(естественно этот алиас важен не для проигрывания фильмов , а для того чтобы знать например узнать время ко


