Маленькие хитрости

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Маленькие хитрости

Сообщение t.t »

У каждого бывалого линуксоида наверняка есть свой запас "маленьких хитростей", которые могли бы пригодиться и другим. Давно хотел, да всё забывал. Давайте попробуем? Если тема не получит развития, подклею к упомянутой ниже соседней теме.

Вообще-то, это навеяно соседней темой про переменные, а конкретно моим собственным упоминанием про HISTIGNORE. У меня в этот список добавлена строка " *", таким образом можно набрать любую команду без запоминания в истории просто добавив в начале пробел. Я сам активно пользуюсь.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux
Контактная информация:

Re: Маленькие хитрости

Сообщение polachok »

отличная тема - сам давно хотел создать :)
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7274
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Маленькие хитрости

Сообщение alv »

(t.t @ Понедельник, 01 Августа 2005, 19:40) писал(а):У каждого бывалого линуксоида наверняка есть свой запас "маленьких хитростей", которые могли бы пригодиться и другим. Давно хотел, да всё забывал. Давайте попробуем? Если тема не получит развития, подклею к упомянутой ниже соседней теме.

думаю, получит. только давайте всегда явным образом указывать шелл - потому что эти штуки от шелла зависят больше, чем все остальное
Спасибо сказали:
Аватара пользователя
Warderer
Модератор
Сообщения: 1056
Статус: киберпИнгвин на гусеничном ходу
ОС: Debian unstable

Re: Маленькие хитрости

Сообщение Warderer »

На всякий случай, мало ли кто не знает: <ctrl+r> в баше включает режим поиска строки в истории комманд bash. Пользуюсь просто постоянно.
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания.
И восемь строк матом...(бесплатно)
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7274
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Маленькие хитрости

Сообщение alv »

(Strangerrr @ Вторник, 02 Августа 2005, 7:29) писал(а):На всякий случай, мало ли кто не знает: <ctrl+r> в баше включает режим поиска строки в истории комманд bash. Пользуюсь просто постоянно.

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


alv добавил в 02.08.2005 08:46

если вам надоело, что лишнее случайное нажатие Control-D (Control-C) выкидывает вас из сеанса шелла, внесите такие строки:

в zsh (~/.zshrc)
setopt IGNORE_EOF

в tcsh (~/.cshrc)
set ignoreeof

в bash тоже есть такая фича

Для zsh:
Разворот сокращенного ввода типа cd d/e в docs/editors достигается такими строками в ~/.zshrc

autoload -U compinit
compinit
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux
Контактная информация:

Re: Маленькие хитрости

Сообщение polachok »

если вам надоело, что лишнее случайное нажатие Control-D (Control-C) выкидывает вас из сеанса шелла, внесите такие строки:

IMHO, наоборот, полезная фича :)
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Маленькие хитрости

Сообщение sash-kan »

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

Код: Выделить всё

grep -vE '(^$|^[#;!])' config.file
убирает пустые строки и строки, начинающиеся с "#", ";" и "!"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux
Контактная информация:

Re: Маленькие хитрости

Сообщение polachok »

такая конструкция закодирует в mp3 все wav текущей директории
ls *.wav | while read f ; do lame $f $f.mp3 ; done
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Маленькие хитрости

Сообщение sash-kan »

такая конструкция закодирует в mp3 все wav текущей директории
ls *.wav | while read f ; do lame $f $f.mp3 ; done
а в более политкорректный формат ogg файлы *.wav в текущем каталоге превращаются так:

Код: Выделить всё

oggenc *.wav
для этого, конечно же, программа oggenc должна быть установлена.
в debian это делается командой

Код: Выделить всё

sudo aptitude install vorbis-tools
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Grom
Сообщения: 260
ОС: Debian Etch, RHEL-5.4

Re: Маленькие хитрости

Сообщение Grom »

Руту в .zlogin прописываю ifdown eth0 (на случай, если хакер забредеть на комп), а в .zlogout - ifup eth0.
Послужной список: Slackware-3.x, RedHat-4.x,5.x,6.x,7.x, FedoraCore-3, Debian Etch/Lenny
Осваиваю: RHEL-5.4
Спасибо сказали:
Аватара пользователя
Trueash
Сообщения: 976
Статус: Вещий Кассандр
Контактная информация:

Re: Маленькие хитрости

Сообщение Trueash »

(Grom @ Пятница, 05 Августа 2005, 20:03) писал(а):Руту в .zlogin прописываю ifdown eth0 (на случай, если хакер забредеть на комп), а в .zlogout - ifup eth0.

А можно ли поподробнее? Что есть .zlogin/ .zlogout, где он водится и с чем его едят? У себя я такого не нашел :(
"...Вы имеете право хранить молчание, все, что вы скажете, может быть использовано против вас..."
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux
Контактная информация:

Re: Маленькие хитрости

Сообщение polachok »

оболочка root'a у человека zsh. Это файлы которые выполняются при входе(логине) и выходе(logout).
вероятно команды рута выполняются через su/sudo.
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Маленькие хитрости

Сообщение t.t »

(polachok @ Воскресенье, 07 Августа 2005, 0:40) писал(а):оболочка root'a у человека zsh. Это файлы которые выполняются при входе(логине) и выходе(logout).
вероятно команды рута выполняются через su/sudo.
А в пролетарском баше логаут-файл есть?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Маленькие хитрости

Сообщение serg_sk »

Для t.t:
Я такого не видел. При запуске он читает .bashrc
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Маленькие хитрости

Сообщение t.t »

(serg_sk @ Воскресенье, 07 Августа 2005, 21:24) писал(а):При запуске он читает .bashrc
Ну, это известно.

(serg_sk @ Воскресенье, 07 Августа 2005, 21:24) писал(а):Я такого не видел.
Я так подозреваю, что его и нет. Но на всякий случай спросил.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: Маленькие хитрости

Сообщение flook »

(t.t @ Воскресенье, 07 Августа 2005, 18:26) писал(а):
(polachok @ Воскресенье, 07 Августа 2005, 0:40) писал(а):оболочка root'a у человека zsh. Это файлы которые выполняются при входе(логине) и выходе(logout).
вероятно команды рута выполняются через su/sudo.
А в пролетарском баше логаут-файл есть?


~/.bash_logout? Или это не пролетарский?
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Маленькие хитрости

Сообщение t.t »

(flook @ Понедельник, 08 Августа 2005, 8:52) писал(а):~/.bash_logout? Или это не пролетарский?
Нет, почему? Очень даже :) Просто в info bash я почему-то ничего о нём не нашёл.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: Маленькие хитрости

Сообщение flook »

$ man bash
...
When a login shell exits, bash reads and executes commands from the
file ~/.bash_logout, if it exists.
...
$ bash --version
GNU bash, version 2.05b.0(1)-release (i686-pc-linux-gnu)
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Маленькие хитрости

Сообщение t.t »

Хм..

t:~$ man bash|grep logout
Reformatting bash(1), please wait...
t:~$ bash --version
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)

Первое, где посмотрел, естественно.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Маленькие хитрости

Сообщение serg_sk »

Код: Выделить всё

serg_sk@Elvenhome ~ $ less /usr/share/man/man1/bash.1.gz | grep logout
       file ~/.bash_logout, if it exists.
       logout Exit a login shell.
       ~/.bash_logout
serg_sk@Elvenhome ~ $

Просто man bash | grep logout почему-то не катит, хотя я с ним поизвращался маленько :)

Код: Выделить всё

serg_sk@Elvenhome ~ $ bash --version
GNU bash, version 3.00.16(1)-release (i686-pc-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Маленькие хитрости

Сообщение t.t »

(serg_sk @ Понедельник, 08 Августа 2005, 11:41) писал(а):$ less /usr/share/man/man1/bash.1.gz | grep logout
      file ~/.bash_logout, if it exists.
      logout Exit a login shell.
      ~/.bash_logout
Вот это меня вообще удивляет. А именно, less /usr/share/man/man1/bash.1.gz . Ты точно ничего не перепутал?

Хм.. Интересно. Сделал zcat /usr/share/man/man1/bash.1.gz | grep logout -- получилось. Всегда делал man fa-fa | grep fu-fu -- всё работало...
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Маленькие хитрости

Сообщение serg_sk »

Для t.t:
Так и сделал. :)

Код: Выделить всё

serg_sk@Elvenhome ~ $ cat .bash_history | tail -n 3
less /usr/share/man/man1/bash.1.gz | grep logout
bash --version
exit
serg_sk@Elvenhome ~ $
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Маленькие хитрости

Сообщение sash-kan »

Для t.t:
в debian по умолчанию less <> zless и cat <> zcat :

Код: Выделить всё

zcat `man -w bash` | grep logout
zless `man -w bash` | grep logout


Sash Kan добавил в 08.08.2005 13:31

(t.t @ Понедельник, 08 Августа 2005, 12:13) писал(а):Всегда делал man fa-fa | grep fu-fu -- всё работало...

а можно и так:

Код: Выделить всё

man -Z fa-fa | grep fu-fu
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Маленькие хитрости

Сообщение t.t »

(Sash Kan @ Понедельник, 08 Августа 2005, 12:29) писал(а):Для t.t:
в debian по умолчанию less <> zless и cat <> zcat :
Я уже догадался.

t.t добавил в 08.08.2005 13:34

(Sash Kan @ Понедельник, 08 Августа 2005, 12:31) писал(а):а можно и так:
CODE
man -Z fa-fa | grep fu-fu
Понял, спасибо. век живи -- век учись.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
sNEO
Сообщения: 32

Re: Маленькие хитрости

Сообщение sNEO »

Для консоли. Может кому понадобится.
Напоминалка:
Создаем например в ~/bin файл remind в нем пишем:
(sleep $1; echo Прошло $*) &
делаем его выполняемым chmod +x remind, напоминалка готова
первый агрумент задает время
второй словосочитание для напоминания
Пример: remind 5'm' Чай готов
Через 5 минут будет сообщение Прошло 5'm' Чай готов
('m' - минуты 'h' - часы 'd' - дни, секунды по умолчанию или 's')
На мой взгляд полезная вещь, так как я все время забываю за компьютером,
что поставил заваривать чай, а вспоминаю только через 2 часа.

Телефонная электронно-поисковая книга:
Создаем например в ~/lib обычный текстовый файл telbook, куда будем заносить всю информацию (телефоны, адреса, имена)
Главное правило - один адресат в одной строке:
ФИО телефон адрес
ФИО телефон адрес
ФИО телефон адрес
...
А далее все просто. Опять же в ~/bin создаем файл tel в нем пишем:
grep -i "$*" /полный/путь/где/лежит/telbook
(Примечание: ключ i для игнорирования регистра букв)
Сохраняем, делаем выполняемым: chmod +x tel. И все готово.
Набираем tel ФИО и видим на экране все про этого ФИО, можно набирать также телефоны и адреса.

Незабудте указать путь к bin в переменной PATH, что бы запускать из любого места.
Все программки были взяты из книги Б.Кернигана и Р.Пайка "Программное окружение UNIX", и немного доделаны.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Маленькие хитрости

Сообщение sash-kan »

(sNEO @ Вторник, 09 Августа 2005, 11:51) писал(а):Для консоли. Может кому понадобится.
Напоминалка:

в принципе, команда at делает примерно то же самое.
(sNEO @ Вторник, 09 Августа 2005, 11:51) писал(а):Телефонная электронно-поисковая книга:

а вот это надо будет себе присобачить :)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89
Контактная информация:

Re: Маленькие хитрости

Сообщение brazhe »

Кусочек из ~/.zshrc :

Код: Выделить всё

mof() {

        echo 'mounting floppy...';;
        mount /mnt/floppy && \
        echo 'Files on this floppy: ' && \
        echo '----------------------------' && \
        ls --color=never -A /mnt/floppy && \
        echo '----------------------------' && \
        echo 'Space used: ' &&\
        df -h | grep Filesystem && \
        df -h | grep floppy && \
        #echo 'done';
}

flash_on() {
        echo 'Mounting JetFlash device...';
        mount /mnt/jetflash && \
        echo 'Files on this flash: ' && \
        echo '----------------------------' && \
        ls --color=never -A /mnt/jetflash && \
        echo '----------------------------' && \
        echo 'Space used: ' &&\
        df -h | grep Filesystem && \
        df -h | grep jetflash && \
}
flash_off() {
        echo 'Unmounting JetFlash device...';
        umount /mnt/jetflash && \
        echo 'done.'
}

photo_on() {
        echo 'Mounting  Photo device...';
        mount /mnt/usb && \
        ls /mnt/usb/dcim/100km008 && \
        echo 'done.'
}
photo_off() {
        echo 'Unmounting Photo  device...';
        umount /mnt/usb && \
        echo 'done.'
}
PHOTODIR=/home/graph/photo
photo_trans(){
        photo_on;
        DATE=$(date +%Y_%m_%d)
        echo "Moving photos to " $PHOTODIR/$DATE;
        mkdir -p $PHOTODIR/$DATE;
        mv -v /mnt/usb/dcim/100km008/* $PHOTODIR/$DATE;
        photo_off;
        gqview $PHOTODIR/$DATE &;
}


И еще кусочек из ~/.fluxbox/keys :)

Код: Выделить всё

Control F2 :StickWindow
Control F3 :ToggleDecor
Control F9 :MinimizeWindow
Mod1 F9 :MaximizeWindow
Control Mod1 Right :NextWorkspace
Control Mod1 Left :PrevWorkspace
Control Right :NextTab
Control Left :PrevTab
Mod4 x :CLose
Mod4 k :KillWindow
Mod4 i :Iconify
Mod4 s :Shade
Mod4 v :MaximizeVertical
Mod4 h :MaximizeHorizontal
Mod4 Right :MoveRight 5  # Moves the window to the right
Mod4 Left :MoveLeft 5
Mod4 Up  :MoveUp 5
Mod4 Down :MoveDown 5
Mod4 F1 :SendtoWorkspace 1
Mod4 F2 :SendtoWorkspace 2
Mod4 F3 :SendtoWorkspace 3
Mod4 F4 :SendtoWorkspace 4
Mod4 F5 :SendtoWorkspace 5
Mod1 Mod4 Right :ResizeHorizontal 1
Mod1 Mod4 Left  :ResizeHorizontal -1
Mod1 Mod4 Up    :ResizeVertical -1
Mod1 Mod4 Down    :ResizeVertical 1

#------ Media keys ----
None XF86PowerDown :ExecCommand sudo /sbin/halt -p
Mod1 XF86PowerDown :ExecCommand sudo /sbin/reboot
None XF86AudioLowerVolume :ExecCommand amixer set Master 5%-
None XF86AudioRaiseVolume :ExecCommand amixer set Master 5%+
None XF86AudioMute :ExecCommand amixer set Master 0%
None XF86AudioPlay :ExecCommand beep-media-player -t
None XF86AudioStop :ExecCommand beep-media-player -s
None XF86AudioPrev :ExecCommand beep-media-player -r
None XF86AudioNext :ExecCommand beep-media-player -f
None XF86AudioMedia :ExecCommand beep-media-player


P.S. Строго не судите :)
Спасибо сказали:
Ответить