alias
Удобный алиас в zsh для copy/paste примеров из советов
На linsovet.com многие советы содержат примеры запуска команд из командной строки в формате в подобном формате
$ echo команда 1 $ echo команда 2
Этот формат неудобен если вы хотите скопировать сразу несколько команд и скопировать прямо в терминал. Если добавить в ~/.zshrc алиас
alias \$=''
то эта проблема будет решена. Если команда начинается с $, то он будет автоматически убран
Идея взята отсюда
простенькая напоминалка для xchat
из-за ирц постоянно забываю что запланировал сделать через 5 минут.
(16:37) (муха_тоже_верталет) через минуты три напомните что я кофе поставил...
(16:45) (InFant) иди плиту мой...
короче простой алиас в xchat надеюст поможет мне:
setting - advanced - user command:
remind -> exec sleep %2 && zenity --info --text="&3"<code>
будет принимать команду
[geshifilter-code] /remind 180 выключи на кухне газ и через 3 минуты выскочет соответствующий попап) остальсь запомнить что надо использовать эту напоминалку когда возвращаюсь к чату.[/geshifilter-code]
Persistent ZSH aliases (в bash тоже можно :)
Три уровня реальности.
Нулевой. В незапамятные времена я вынес определение aliases из .zshrc в другой файл, .zsh_aliases. Это разгрузило и без того тучный .zshrc, в котором остался только вызов
if [[ -f $ZDOTDIR/.zsh_aliases ]] { . $ZDOTDIR/.zsh_aliases; }
Первый. Теперь .zsh_aliases можно обрабатывать автоматически! Допустим, я по ходу работы придумал полезный alias. Но вот отвлекаться для редактирования .zsh_aliases не хочется. Что за беда? сделал alias с именем mkalias:
mkalias='alias | grep -v "='\''LC_ALL" | sed "s/^/alias /" > ~/.zsh_aliases'
Теперь зафиксировать сделанные в списке alias-ов изменения можно одной командой. И даже вставить её в .zlogout, чтобы управиться с задачей за 0 команд :).
Второй. А что это за "grep" такой лишний в mkalias? А это вот что. Есть несклько команд, которые я хочу запускать не в кодировке по умолчанию, а в другой. Например, man-ы хочу читать по-английски. Или GTK1-программы -- в кодировке всегда KOI8-R. Или, наоборот, stardict-gtk всегда в кодировке UTF-8. Помогает проставить LC_ALL: LC_ALL=соответств_кодировка команда, но лучше это превратить в alias. Вот у меня и заведены файлы .locale.кодировка, которые читаются из .zshrc так:
# alias some LC_ALL changes when running command for N ($ZDOTDIR/.locale.*) { T="${N##*.locale.}" for F (`cat $N`) alias "$F"="LC_ALL=$T $F" } || :
Так что строчки с '="LC_ALL' запоминать не надо, они генерируются. Отсюда и grep -v в mkalias. Более того, .zshrc и .zsh_aliases у меня на всех машинах одинаковые (и на Linux разных конфессий, и на FreeBSD разных версий). А вот .locale.* -- везде разный, т. к. на некоторых машинах по умолчанию стоит одна кодировка, на некоторых -- другая, там одни программы капризничают, тут другие.
Каким способом .zshrc и .zsh_aliases у меня на всех машинах получаются одинаковые? А это к alias-ам отношения не имеет.
Алиас для показа самых больших файлов и директорий в текущей директории
"Резиновый винчестер это не игрушка, это мечта" Ж:-)
Как всегда не хватает места, и при поиске чего бы такого удалить может помочь алиас который показывает файлы и директории которые занимают больше мегабайта.
для bash, заносим в ~/.bashrc
alias dud="(shopt -s dotglob;du -ks * | sort -nr | sed -e 's/^\([0-9]\{1,\}\)[0-9]\{6\}[^0-9]/\1G\t/;t;s/^\([0-9]\{1,\}\)[0-9]\{3\}[^0-9]/\1M\t/;t;d')" #или альтернативный вариант с perl alias dud="(shopt -s dotglob;du -ks * | sort -nr | perl -pe 's/^(\d+)\d{6}[^\d]/\$1G\t/ || s/^(\d+)\d{3}[^\d]/\$1M\t/ || s/.*\n//')"
для zsh, заносим в ~/.zshrc
alias dud="(setopt globdots;du -ks * | sort -nr | sed -e 's/^\([0-9]\{1,\}\)[0-9]\{6\}[^0-9]/\1G\t/;t;s/^\([0-9]\{1,\}\)[0-9]\{3\}[^0-9]/\1M\t/;t;d')" #или альтернативный вариант с perl alias dud="(setopt globdots;du -ks * | sort -nr | perl -pe 's/^(\d+)\d{6}[^\d]/\$1G\t/ || s/^(\d+)\d{3}[^\d]/\$1M\t/ || s/.*\n//')"
Цифры примерные, так как считается что в мегабайте не 1024 байт, а 1000.
Пример использования:
Подсветка потока ошибок в zsh
Часто сообщения об ошибках теряются в общем потоке вывода данных, и их хотелось бы как нибуть выделять. Тут опять пригодятся глобальные алиасы zsh.
Добавим в ~/.zshrc
autoload colors # подключим цвета colors alias -g HE='2>>( sed -ue "s/.*/$fg_bold[red]&$reset_color/" 1>&2 )' # Highlight Errors
После перезагрузки zsh у нас появится глобальный алиас HE который можно использовать на ряду с другими фильтрами. Алиас запускает в фоне sed который подсвечивает строки, и перенаправляет ему в на выход стандартный поток ошибок
Пример работы: мы хотим найти в /etc все файлы в названии которых есть zsh и при этом подсветить в каких каталогах поиск не удался.

Пояснения: строка
$ find /etc HE GI zshРазвернется в
find /etc 2>>( sed -ue "s/.*/$fg_bold[red]&$reset_color/" 1>&2 ) | grep -i zsh
Глобальный алиас GI описан здесь.
Подсведка результатов grep описана здесь
BUGS: алиас запускает асинхронный процесс подсведки цветов, что обозначает что подсвеченые ошибки могут выводится не синхронно с потоком стандартного вывода.
PS
Для пользователей bash существует полезный скрипт по подсвечиванию потока ошибок для программы переденной как параметр.


