Как изменить alias по умолчанию в iterm
Перейти к содержимому

Как изменить alias по умолчанию в iterm

  • автор:

Alias (алиасы\скрипты)

Aspecto скоро будет известенAspecto скоро будет известенAspecto скоро будет известенAspecto скоро будет известенAspecto скоро будет известен

В дополнение темы о конфигах представляю вам руководство по написанию алиасов. Сразу говорю, статья не моя, это рерайт статьи взятой с сайта какого то клана. Ссылку на их сайт, увы, не запомнил.

Собственно что такое алиас?


Алиас — своего рода скрипт, который выполняет последовательность заданных вами команд.

В терминах программирования алиас (alias) — это функция (function или subroutine), а команда (command) — это вызов (call или executor).

Алиасы выглядят примерно так:
alias [имя алиаса] «[команда1]; [команда2]; [команда#]. «

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

Алисы прописывают в файлах .cfg . Это может быть autoexec.cfg, userconfig.cfg или ваш основной *****.cfg

Несколько полезных команд
Ниже — несколько команд, которые необходимо помнить.

menuselect # — Замените # на цифру от 1 до 9. Эта команда выбирает пункт меню под номером #.

Например:
alias joinct «chooseteam; menuselect 2»
Этот алиас вызывает меню выбора команды и выбирает пункт 2, то есть контров.

bind «КНОПКА» «Команда» — Назначение команды (или алиаса) на какую либо клавишу.

Например:
bind «k» «kill»
При нажатии k вы совершаете самоубийство . А если сделать
bind «k» «joinct»
то при нажатии k заходите за команду контров.

exec name.cfg — Исполняет конфигурационный файл. Автоматически исполняются файлы autoexec.cfg и config.cfg.

wait — Приостанавливает исполнение скрипта на некий не фиксированный промежуток времени (tick). Например, количество команд wait, необходимое для очистки меню зависит от скорости компьютера и соединения. Слишком много wait’ов вызовут лаг, слишком мало не возымеют эффекта.

Написание и использование первого алиаса.

Откройте свой autoexec.cfg (к примеру) используя notepad и введите следующую строку:
alias hello «say BCEM /7PuBET; wait; wait; wait; impulse 201; wait; wait; wait; say_team BuDA/|u MOE /|OrO!»

Теперь объясним по порядку:
alias hello
Создает алиас с именем hello

«say BCEM /7PuBET!;
Кавычки начинают ввод команд. Первая команда — say, с помощью ее вы скажете фразу написанную до разделителя. Разделитель — точка с запятой (. В данном случае вы скажете «BCEM /7PuBET!’.

wait; wait; wait;
Приостановка исполнения скрипта на три «тика» («тик» зависит от скорости компьютера и соединения).

impulse 201;
Эта команда рисует лого.

wait; wait; wait;
Еще 3 паузы.

say_team BuDA/|u MOE /|OrO!»
Говорит членам команды фразу BuDA/|u MOE /|OrO!». Кавычки в конце закрывают ввод, т.к. это — последняя команда в алиасе.

Теперь сохраните и закройте autoexec.cfg и запускайте Counter-Strike. Создайте игру или зайдите на какой-нибудь сервер. В игре подойдите к стене (надо же на чем то рисовать лого, нажмите тильду (` или ~, над табуляцией, под escape’ом). Все то, что вводится в cfg файлы можно вводить и здесь и наоборот. Теперь в консоли наберите:
bind «k» «hello»
(Если на кнопку k у вас уже что-то назначено, выберите любую другую кнопку). Теперь нажмите k.

Урааа! Ваш первый алиас сработал! Вы со всеми поздоровались, нарисовали лого и попросили команду его заценить .

Если алиас не сработал, попробуйте сначала, скорее всего вы что-то упустили .

Типы алиасов:

Алиас, который запускает команду(ы) когда вы нажимаете кнопку, и другую команду(ы), когда вы ее отпускаете.

Например:
alias +sayreload «+reload;say_team Cover me while I reload!»
alias -sayreload «-reload»
Этот алиас начинает перезарядку, парсит команду прикрыть и соответственно заканчивает перезарядку.

Плюсы:
Позволяет создавать метабинды (meta binds, об этом позднее).
Позволяет заменять стандартные движения/стрельбу более сложными действиями (Бросок гранаты с предупреждением и т.д.).
Минусы:
Науке не известны.

Разновидность +/- алиасов, которая переназначает клавиши в момент исполнения команды. Например для назначения сочетания Alt + 1-0 на наборы закупки.

Например:
alias preset1 «buy; menuselect 4; menuselect 6; buy; menuselect 6; buyequip; menuselect 2»
Покупает AWP, патроны и полную броню.

alias preset2 «buy; menuselect 3; menuselect 1; buy; menuselect 6; buyequip; menuselect 2»
Покупает MP5, патроны и полную броню.

alias preset3 «buy; menuselect 2; menuselect 1; buy; menuselect 1; menuselect 5; buy; menuselect 6; buy; menuselect 7; buyequip; menuselect 2»
Покупает M3, Dual beretta’s, патроны и полную броню.

alias preset4 «buy; menuselect 1; menuselect 3; buy; menuselect 7»
Покупает Desert Eagle, патроны и полную броню.

alias preset5 «developer 1; echo HA6OP HE HA3HA4EH!; developer 0»
alias preset6 «developer 1; echo HA6OP HE HA3HA4EH!; developer 0»
alias preset7 «developer 1; echo HA6OP HE HA3HA4EH!; developer 0»
alias preset8 «developer 1; echo HA6OP HE HA3HA4EH!; developer 0»
alias preset9 «developer 1; echo HA6OP HE HA3HA4EH!; developer 0»
alias preset10 «developer 1; echo HA6OP HE HA3HA4EH!; developer 0»
Выдает на экран надпись HA6OP HE HA3HA4EH!.

alias +toggle «bind 1 preset1; bind 2 preset2; bind 3 preset3; bind 4 preset4; bind 5 preset5; bind 6 preset6; bind 7 preset7; bind 8 preset8; bind 9 preset9; bind 0 preset10»
Переназначает кнопки 1-0 на наборы закупки, которые мы создали выше.

alias -toggle «bind 1 slot1; bind 2 slot2; bind 3 slot3; bind 4 slot4; bind 5 slot5; bind 6 slot6; bind 7 slot7; bind 8 slot8; bind 9 slot9; bind 0 slot0»
Переназначает кнопки 1-0 обратно на slot1-0.

bind alt «+toggle»
Назначает Alt алиасу toggle, соответственно пока нажат Alt, кноки 1-0 закупают наборы, когда Alt отпущен — 1-0 снова slot1-0.

Плюсы:
Позволяет освободить множество клавиш.
Клавиши удобнее искать/доставать.
Минусы:
Сложен в написании.

Переключатели (Toggles).

Как видно из названия, переключатели действуют по принципу включить/выключить.

Пример:
alias ngon «developer 1; echo Net Graph on; developer 0; net_graph 3; bind n ngoff»
Отражает на экране надпись Net Graph on, включает Net Graph, назначает кнопку n алиасу ngoff.

alias ngoff «developer 1; echo Net Graph off; developer 0; net_graph 0; bind n ngon»
bind n «ngon»
Отражает на экране надпись Net Graph off, выключает Net Graph, назначает кнопку n алиасу ngon.

В результате на одной кнопке получаем и включение и выключение.

Плюсы:
Может быть использован в циклах (см. ниже).
Минусы:
Не может быть добавлен в меню управления (см. «Настройка меню управления»).

Сложные переключатели.

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

Пример:
alias ngon «developer 1; echo Net Graph on; developer 0; net_graph 3; alias ng ngoff»
alias ngoff «developer 1; echo Net Graph off; developer 0; net_graph 0; alias ng ngon»
alias ng «ngon»
bind n «ng»

Как видно из примера, внутри алиаса не делается бинд, а переназначается другой алиас, который соответственно и назначается кнопке. В результате конфиг выглядит более профессионально и его значительно легче редактировать.

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

Цикл алиасов — это тоже самое, что и переключатель, но с более чем двумя опциями.

Пример:
alias ng1 «developer 1; echo Net Graph on, setting 1; developer 0; net_graph 1; bind n ng2»
alias ng2 «developer 1; echo Net Graph on, setting 2; developer 0; net_graph 2; bind n ng3»
alias ng3 «developer 1; echo Net Graph on, setting 3; developer 0; net_graph 3; bind n ng4»
alias ng4 «developer 1; echo Net Graph off; developer 0; net_graph 0; bind n ng1»
bind n «ng1»

Плюсы:
Множественные команды на одной кнопке
Минусы:
Не может быть добавлен в меню управления

Сложные циклы.

Разница таже, что и с переключателями — переназначение алиаса, один бинд.

Пример:
alias ng1 «developer 1; echo Net Graph on, setting 1; developer 0; net_graph 1; alias ng ng2»
alias ng2 «developer 1; echo Net Graph on, setting 2; developer 0; net_graph 2; alias ng ng3»
alias ng3 «developer 1; echo Net Graph on, setting 3; developer 0; net_graph 3; alias ng ng4»
alias ng4 «developer 1; echo Net Graph off; developer 0; net_graph 0; alias ng ng1»
alias ng «ng1»
bind n «ng»

Плюсы:
Может быть добавлен в меню управления.
Минусы:
Занимает больше места.

Настройка меню управления.

Изменение меню управления.
Меню управления в HL описывается простым текстовым файлом и представляет из себя не более чем набор команд и описаний, которые соответственно можно менять на свои. К сожалению бинды в меню запрещены, соответственно, простые циклы и переключатели использовать нельзя, поэтому используйте сложные (см. «Типы алиасов»).

Например:
alias ngon «developer 1; echo Net Graph on; developer 0; net_graph 3; bind n ngoff»
alias ngoff «developer 1; echo Net Graph off; developer 0; net_graph 0; bind n ngon»

Должен выглядеть как:
alias ngon «developer 1; echo Net Graph on; developer 0; net_graph 3; alias ng ngoff»
alias ngoff «developer 1; echo Net Graph off; developer 0; net_graph 0; alias ng ngon»
alias ng «ngon»

1. Откройте папку half-lifecstrikegfxshell. Найдите файл kb_act.lst и откройте его notepad’ом или любым другим текстовым редактором. Вы увидите что-то типа этого:
«buy» «Buy Menu»
«buyammo1» «Buy Primary Ammo (Optional)»
«buyammo2» «Buy Secondary Ammo (Optional)»
«buyequip» «Buy Equipment Menu (Optional)»
«chooseteam» «Select Team»
«radio1» «Standard Radio Messages»
«radio2» «Group Radio Messages»
«radio3» «Report Radio Messages»
«nightvision» «Turn nightvision on/off»
«+attack» «Fire»
«+attack2» «Weapon Special Function»
«+reload» «Reload weapon»
«drop» «Drop Current Weapon»
«invprev» «Previous weapon (Optional)»
«invnext» «Next weapon (Optional)»
«lastinv» «Last used weapon (Optional)»
«+use» «Use item (buttons, scientists, . )»
«impulse 100» «Flashlight»
«impulse 201» «Spray logo»
«+forward» «Move forward»
«+back» «Move back»
«+left» «Turn left»
«+right» «Turn right»
«+moveleft» «Move left (strafe)»
«+moveright» «Move right (strafe)»
«+speed» «Walk»
«+jump» «Jump»
«+duck» «Duck»
«+moveup» «Swim up»
«+movedown» «Swim down»
«+lookup» «Look up»
«+lookdown» «Look down»
«centerview» «Reset view»
«+strafe» «Strafe modifier»
«+mlook» «Mouse look»
«+klook» «Keyboard look»
«slot10» «Menu Item 0»
«slot1» «Menu Item 1»
«slot2» «Menu Item 2»
«slot3» «Menu Item 3»
«slot4» «Menu Item 4»
«slot5» «Menu Item 5»
«slot6» «Menu Item 6»
«slot7» «Menu Item 7»
«slot8» «Menu Item 8»
«slot9» «Menu Item 9»
«+showscores» «Display multiplayer scores»
«showbriefing» «Recap Mission Briefing(Optional)»
«messagemode» «Chat message»
«messagemode2» «Team Chat message»
«snapshot» «Take screen shot»
«quit» «Quit game»

2. Секция слева в кавычках — это имя функции или алиаса, которому назначается клавиша, секция справа — комментарий, видимый пользователю. Например, чтобы добавить описаный выше алиас в меню, нужно дописать строку:
«ng» «Net Graph on/off»

3. Также можно добавлять комментарии, вставляя слово ‘blank’ вместо функции/алиаса (Вы наверняка столкнетесь с этим в вашем kb_act.lst).

Пример:
«blank» «BACuHO Cy/7EP-/7y/7EP MEH|-0»

4. Все. Сохраняйте и закрывайте файл, запускайте CS, наслаждайтесь своим личным меню. Единственное, необходимо помнить, что существует ограничение на длину комментария в kb_act.lst (то что не влезло — обрезается), а также ограничение на общий размер файла, но его вы врядли достигнете

Работаем в консоли быстро и эффективно

В сети можно встретить много советов по эффективной работе в консоли. В большинстве таких статей авторы рассказывают про банальности типа «выучите горячие клавиши» или » sudo !! запустит последнюю команду под sudo». Я же расскажу о том, что делать, когда вы уже выучили горячие клавиши и знаете про sudo !! .

Терминал должен запускаться мгновенно

Сколько времени вам нужно, чтобы запустить терминал? А ещё один? Долгое время мой терминал запускался сочетанием Ctrl+Alt+T и я думал, что это быстро. Но когда я переехал с Openbox на i3, то стал запускать терминал через Win+Enter, это сочетание было в конфиге по умолчанию. И знаете что? Я больше не считаю, что Ctrl+Alt+T — это быстро.

Разумеется, прикол не в выигрыше миллисекунд, а в том, что вы открываете терминал на уровне рефлексов, совершенно не замечая этого.

Если вы часто работаете в терминале, но для его запуска тянетесь к мышке, то попробуйте настроить удобную горячую клавишу. Я уверен, вам понравится.

Zsh вместо Bash

Это холиварная тема, знаю. Zsh стоит поставить хотя бы ради трёх фич: продвинутый автокомплит, коррекция опечаток и множественный pathname completition: когда один Tab превращает /u/s/d в /usr/share/doc . Arch Linux уже давно перешёл на zsh в своём установочном диске. Я надеюсь что однажды zsh станет дефолтным шеллом в Ubuntu. Это будет исторический момент.

Начать использовать zsh вообще не сложно. Установите его через менеджер пакетов и возьмите какой-нибудь готовый конфиг. Я рекомендую конфиг, который используется в Arch Linux:

wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc

Осталось только поменять «шелл по-умолчанию» на zsh и перелогиниться.

chsh -s $(which zsh)

Всё, продолжайте работать как будто ничего не произошло.

Каким должен быть shell prompt

Shell prompt (приглашение командной строки) — это тот маленький текст, который выводится в терминале перед вашей командой. Его нужно настроить под свой характер работы. Воспринимайте его как приборную панель автомобиля. Поместите туда полезную информацию, пусть он будет помогать ориентироваться. Сделайте его удобным, особенно если видите его каждый день!

Shell prompt должен показывать текущий каталог шелла. Если текущий каталог не выводится в shell prompt, вам придётся держать его в голове и периодически проверять командой pwd . Не надо так. Держите в голове более важные вещи и не тратьте время на команду pwd .

Если вы периодически переключаетесь со своего пользователя на рута, вам нужна индикация текущего пользователя. Зачастую важно не конкретное имя пользователя, а его статус (обычный или рут). Проще всего это сделать цветом: красный shell prompt у рута, зелёный у своего пользователя. Так вы ни за что не спутаете рутовый шелл с обычным.

Если вы подключаетесь к серверам по ssh, то вам нужно как-то отличать свой локальный шелл от серверного. Для этого shell prompt должен содержать имя хоста, а ещё лучше — индикатор ssh-соединения.

Shell prompt умеет показывать код возврата последней команды. Напомню, что нулевой код возврата означает, что команда завершилась успешно, ненулевой — команда завершилась неуспешно. Код возврата последней команды можно узнать командой echo $? , но набирать это всё на клавиатуре слишком долго. Пусть лучше shell prompt сообщит, если команда завершилась неуспешно.

Если вы работаете с git-репозиториями, то будет нелишним выводить в shell prompt статус репозитория: текущую ветку и состояние рабочей директории. Так вы сэкономите время на командах git status и git branch и не ошибётесь веткой при коммите.

Кто-то добавляет в свой shell prompt часы или имя виртуального терминала (tty), или какие-то произвольные закорючки. Это всё лишнее. Лучше оставить побольше места для команд.

Мой shell prompt в разных условиях выглядит так:

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

Как это всё реализовать в своём .zshrc ? За левый prompt отвечает переменная PROMPT , за правый — RPROMPT . Определить статус пользователя (обычный или рут) поможет переменная EUID , а наличие ssh-соединения — SSH_CLIENT или SSH2_CLIENT . Получаем такую заготовку:

if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=. else PROMPT=. fi else # not SSH if [[ $EUID == 0 ]]; then PROMPT=. else PROMPT=. fi fi

Я специально не указываю готовый к копипасту код, потому что конкретная реализация — это дело вкуса. Если же вы не хотите заморачиваться и мой скриншот не вызывает у вас отвращения, можете взять конфиг с гитхаба.

  • Необходимый минимум — это текущий каталог.
  • Рутовый шелл должен быть хорошо заметен.
  • Имя пользователя не несёт полезной нагрузки, если вы всегда сидите под одним пользователем.
  • Хостнэйм полезен, если вы подключаетесь к серверам по SSH. Не обязателен, если всегда работаете на одной машине.
  • Неуспешное завершение последней команды полезно видеть сразу.
  • Статус git-репозитория экономит время на командах git status и git branch и является дополнительной защитой от дурака.

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

Бо́льшую часть команд в своей жизни вы вводите больше одного раза, а значит было бы удобно выдёргивать их из истории вместо того, чтобы набирать заново. Все современные шеллы умеют запоминать историю команд и предоставляют несколько способов поиска по этой истории.

Возможно вы уже умеете копаться в истории сочетанием Ctrl+R. У него есть два существенных недостатка:

  1. Чтобы начать поиск, поле ввода должно быть пустым. Т.е. в случае «начал набирать команду — вспомнил про поиск» придётся стереть начатое, нажать Ctrl+R и повторить ввод. Это очень долго.
  2. Поиск «вперёд» по умолчанию не работает, т.к. Ctrl+S останавливает терминал.

Как работает самый быстрый и удобный поиск:

  1. вы начинаете набирать команду,
  2. вы вспоминаете про поиск,
  3. вы нажимаете хоткей и шелл предлагает команды из истории, которые начинались точно так же.

Например, вы хотите синхронизировать некий локальный каталог с удалённым с помощью rsync . Вы уже делали это пару часов назад и хотите вытащить команду из истории. Набираете rsync , один-два раза нажимате некую комбинацию, и вот заветная команда готова к запуску. Вам не надо предварительно включать режим поиска по истории, shell prompt не меняется на (reverse-i-search)’: , ничего никуда не прыгает. Вы просто перебираете команды из истории. Так же, как и стрелочками ↑↓ вы перебираете ранее введённые команды, только с фильтром по началу комады. Это чертовски удобно и экономит уйму времени.

В оболочках fish и ipython такой поиск уже назначен на стрелочки. Я думаю что многие перешли на fish только ради такого поведения стрелочек.

В bash и zsh по-умолчанию такой поиск не работает, его надо включить руками. Я настроил PgUp для поиска назад и PgDown для поиска вперёд. Далековато до них тянуться, но я уже привык. Возможно в будущем переназначу на что-нибудь поближе, например Ctrl+P и Ctrl+N.

Для bash надо добавить пару строк в /etc/inputrc или ~/.inputrc :

"\e[5~": history-search-backward "\e[6~": history-search-forward

Если вы взяли готовый zshrc , то там поиск скорее всего уже назначен на PgUp и PgDown. Если нет, то добавьте в ~/.zshrc

bindkey "^[[5~" history-beginning-search-backward # pg up bindkey "^[[6~" history-beginning-search-forward # pg down

Любопытно, что со временем я стал писать команды из расчёта, что позже буду поднимать их из истории. Вот несколько приёмов:

Объединение команд, которые всегда выполняются друг за другом

ip link set eth1 up && dhclient eth1 mkdir /tmp/t && mount /dev/sdb1 /tmp/t

Абсолютные пути вместо относительных позволяют запускать команду, находясь в любом каталоге:
vim ~/.ssh/config вместо vim .ssh/config , systemd-nspawn /home/chroot/stretch вместо systemd-nspawn stretch и т.д.

Подстановка по маске (wildcard) делает команды более универсальными. Обычно использую с chmod и chown .

chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq

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

Перечислю необходимый минимум.

Alt+. — подставляет последний аргумент предыдущей команды. Также можно набрать последовательность !$ .
Ctrl+A, Ctrl+E — переход к началу и концу редактируемой команды соответственно.
Ctrl+U, Ctrl+Y — вырезать всё в буфер обмена, вставить из буфера. Выручает, когда печатаешь сложную команду, а потом понимаешь, что перед ней надо выполнить другую. Хм, куда бы припрятать текущий ввод? Вот сюда и припрятать.
Ctrl+W — стирает одно слово слева от курсора. Если зажать и удерживать, быстро очищает командную строку. По умолчанию текст не удаляется, а помещается в буфер (который для Ctrl+Y).
Ctrl+K — удаляет от курсора и до конца строки. Ctrl+A, Ctrl+K быстро очищает командную строку.
PgUp, PgDown, Ctrl+R — поиск по истории.
Ctrl+L — очистить терминал.

Отзывчивость клавиатуры

Расскажу про маленькую настройку, которая позволяет быстрее скроллить, перемещаться по тексту или стирать. Что мы делаем, когда хотим стереть что-то длинное? Зажимаем Backspace и смотрим как курсор бежит назад, забирая лишние буквы. Что при этом происходит? При нажатии Backspace стирается один символ, затем идёт небольшая задержка, затем срабатывает автоповтор: Backspace убирает символы один за другим, как будто по нему постоянно стучат.

Я рекомендую отрегулировать задержку и частоту работы автоповтора под скорость своих пальцев. Задержка перед срабатыванием автоповтора нужна когда вы хотите удалить только один символ — она даёт вам время отпустить клавишу. Слишком долгая задержка заставляет ждать автоповтора. Не настолько долго, чтобы раздражать, но достаточно, чтобы тормозить перенос мыслей из головы в компьютер. Чем выше частота повтора, тем быстрее стирается текст, и тем сложнее вовремя остановить этот процесс. Суть настройки заключается в поиске золотой середины.

Итак, волшебная команда:

xset r rate 190 20

190 — длительность задержки в миллисекундах,
20 — частота в количестве повторений в секунду.

Я рекомендую начать с этих значений и понемногу уменьшать задержку до появления ложных срабатываний, затем чуть-чуть вернуть назад. Если установить очень короткую задержку, то клавиатурой станет невозможно пользоваться. Придётся перезагружать X-сервер или компьютер целиком. Так что будьте аккуратнее.

Чтобы сохранить параметры, добавьте эту команду куда-нибудь в автостарт иксов.

Индикатор завершения процесса

Мне довольно часто приходится запускать долгие процессы: какой-нибудь жирный бэкап, копирование по сети, распаковку/запаковку архивов, сборку пакетов и т.д. Обычно я запускаю такой процесс, переключаюсь на другую задачу и периодически поглядываю не завершился ли мой долгий процесс. Бывает, что я сильно погружаюсь в работу и забываю о нём. Решение — добавить нотификацию завершения процесса, которая выведет меня из транса.

Для этого можно использовать разные средства: notify-send, dzen2, beep, aplay. Все они по-своему хороши, но не работают по ssh. Поэтому я использую terminal beep:

long-running-command; echo $'\a'

В кодировке ASCII есть символ 0x7, именуемый bell. Он предназначен для того, чтобы пищать PC-спикером. PC-спикер — это несовременно, он не везде есть, а ещё его не слышно в наушниках. Поэтому некоторые терминалы применяют так называемый visual bell. Я использую urxvt, и он делает visual bell включением флага urgency. Это когда окно сообщает вам, что оно требует внимания.

Вы можете прямо сейчас проверить как ваш терминал реагирует на символ bell:

sleep 3; echo $'\a'

Три секунды даётся, чтобы вы успели переключиться на другое окно, иначе может не сработать.

К сожалению, visual bell через urgency есть не во всех терминалах. Я проверил самые популярные.

терминал visual bell через urgency
konsole включается в настройках
urxvt есть
xfce4-terminal включается в настройках
xterm нет
cool-retro-term нет
lxterminal нет
gnome-terminal нет

Писать echo $’\a’ слишком долго, поэтому я сделал алиас wake .

Алиасы

Команды cp , scp и rm всегда должны работать рекурсивно. Аргумент -r — это просто дурное легаси! У cp ещё можно найти оправдание:

cp * foodir

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

У rm и scp вообще нет оправданий, они просто зануды! Похожая ситуация с ключом -p у команды mkdir . Так что смело добавляем в ~/.zshrc

alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p'

Ух, как же я раньше без этого жил! Можно пойти ещё дальше и добавить -f у rm , но на свой страх и риск. Я пока себя сдерживаю.

Разные вариации ls вы скорее всего уже используете, ведь это самые популярные алиасы.

alias ls='ls -F --color=auto' alias la='ls -A --color=auto' alias ll='ls -l --color=auto -h' alias lla='ll -A --color=auto -h'

Ну и цветной grep намного приятнее бесцветного:

alias grep='grep --colour=auto'

Не забывайте, что алиасы не работают в скриптах! Там надо указывать все ключи.

Слепой метод печати

Как бы банально это ни было, но слепой десятипальцевый метод печати позволяет быстрее печатать. Поначалу будет тяжело, но со временем вы разгонетесь до невиданных ранее скоростей.

Осваивать слепой метод печати лучше всего на каникулах или в отпуске, когда вас никто не торопит. В процессе обучения ни в коем случае нельзя спешить. Ваша задача — запомнить где какая буква находится. Причём не столько мозгом, сколько мышцами. Лучше набирать медленно, но без ошибок, чем быстро с ошибками. Помните: мастера добиваются высоких скоростей не за счёт быстрых пальцев, а потому что не делают ошибок.

Не стоит поначалу увлекаться клавогонками. Психологически тяжело оставаться хладнокровным во время соревнований. Учитесь на тренажёрах. Хорошо, когда тренажёр предлагает слова, которые можно мысленно произнести. Я учился на онлайн-тренажёрах vse10 и typingstudy. Известный тренажёр «Соло на клавиатуре» мне показался бестолковым.

Начинать стоит с центрального ряда «фывапролджэ». Только после того, как вы запомните где какая клавиша расположена, стоит двигаться дальше. Только после этого.

Делайте перерывы. Давайте отдых мозгу и пальцам. Чувствуете, что посыпались ошибки — пора делать перерыв.

Сначала я освоил слепой метод печати на русском языке и прифигел от ускорения. Сейчас совершенствую навык в английской раскладке.

[MODx] Обновить alias (псевдоним) у всех ресурсов

Если вы решили изменить способ построения ЧПУ у ваших ресурсов, то вам может потребоваться сгенерировать новый псевдоним , он же alias для всех старых ресурсов.

Это можено сделать вручную: открыть каждый ресурс, очистить поле «псевдоним» и сохранить ресурс. Работает. Но если на сайте более 10 страниц, то нужен автоматизированный способ, который я представляю в этой заметке.

Последовательность работы сниппета

  1. Убираем ограничение на время выполнение скрипта
  2. Делаем выборку ресурсов. Некотоыре блоки кода закомментированы и оставлены для того чтобы упростить настройку выборки
  3. В цикле проходим по коллекции выбраных ресурсов
  4. Генерируем новый alias методом $resource->cleanAlias($title) Тут стоит заметить, что есть еще несколько способов указать системе на генерацию нового alias:
    • Можно стереть старый алиас $resource->set(‘alias’, ») и черех процессор $modx->runProcessor(‘resource/update’, $resource); сгенерировать новый алиас для ресурса. Процессор корректно отреагирует на пустую строку.
    • Если вы хотите просто где-то в коде, или в консоле вызвать метод генерации alias (транслитизации по заданым настройкам), то статичный метод modResource::filterPathSegment($modx, $alias); вам в пригодится
      Можно еще вот так, если почему-то не работает предыдущий вариант
      $res = $modx->newObject(‘modResource’);
      $res->cleanAlias($alias);
  5. Создаем редирект, если обновление ресурса через процессор resource/update прошло успешно. Для создания редиректа используем API пакета autoRedirector
  6. Выводим результат таблицу для наглядного отображения результа

Код сниппета для генерации alias

ini_set('max_execution_time', 0); //ignore_user_abort(true); $q = $modx->newQuery('modResource'); // Если нужно сделать выборку по TV // $q->leftJoin('modTemplateVarResource', 'TV1', 'modResource.id = TV1.contentid AND TV1.tmplvarid = 5'); // $q->leftJoin('modTemplateVarResource', 'TV2', 'modResource.id = TV2.contentid AND TV2.tmplvarid = 4'); // Если нужно применить ко всем ресурсам на сайте, то условие where можно отключить полностью $q->where(array( // Если нужно сделать выборку по TV // 'TV1.value' => 'promo', // 'AND:TV2.value:NOT LIKE' => 'rus', 'modResource.parent:IN' => array(175), )); echo ""; foreach($modx->getCollection('modResource', $q) as $resource){ echo ""; $old_uri = $resource->get('uri'); // Понадобится для редиректа // Определяем новый Alias $title = $resource->get('pagetitle') . '-' . $resource->get('id'); $new_alias = $resource->cleanAlias($title); $resource->set('alias', $new_alias); $response = $modx->runProcessor('resource/update', $resource->toArray()); if($response->isError()){ echo "

"; return; }else{ echo "

"; echo "

"; // Если все прошло успешно, то делаем редирект со старой страницы не новую, используя дополнение autoRedirector // Подключаем autoRedirector $modelPath = $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'model/'; $modx->addPackage('autoredirector', $modelPath); $processorProps = array('processors_path' => $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'processors/'); // Создаем правило перенаправления $arRule = array('uri' => $old_uri, 'res_id' => $resource->get('id')); if (!$modx->getObject('arRule', $arRule)) { $response_ar = $modx->runProcessor('mgr/item/create', $arRule, $processorProps); if($response_ar->isError()){ echo "

"; return; }else{ echo "

"; } }else{ echo "

"; } } $modx->error->reset(); echo "

"; } echo "

С обновлением ресорса проблемы проблемы:
"; print_r($response_ar->getResponse(). true); echo "
Ок! ".$resource->get('id')." ".$new_alias." С редиректом проблемы:

"; print_r($response_ar->getResponse(). true); echo "
Редирект создан Такое правило уже есть

";

Комментарии ( 0 )

  1. Напишите первый комментарий

псевдоним (команда) — alias (command)

В вычислениях, псевдоним — это команда в различных интерпретаторы командной строки (оболочки ), которые позволяют заменять слово другой строкой. Он в основном используется для сокращения системной команды или для добавления аргументов по умолчанию к регулярно используемой команде. псевдоним доступен в оболочках Unix, AmigaDOS, 4DOS / 4NT, KolibriOS, Windows PowerShell, ReactOS и оболочка EFI. Функциональность наложения псевдонимов в операционных системах MS-DOS и Microsoft Windows обеспечивается служебной программой командной строки DOSKey.

Псевдоним будет действовать в течение всего сеанса оболочки. Регулярно используемые псевдонимы можно установить из файла rc оболочки (например, .bashrc ), чтобы они были доступны при запуске соответствующего сеанса оболочки. Команды псевдонима могут быть записаны либо непосредственно в конфигурационный файл, либо получены из отдельного файла.

  • 1 История
  • 2 Использование
    • 2.1 Создание псевдонимов
      • 2.1.1 Unix
      • 2.1.2 Оболочка C
      • 2.1.3 4DOS
      • 2.1.4 Windows PowerShell
      • 3.1 Объединение
      • 3.2 Аргументы команд

      История

      В Unix псевдонимы были введены в оболочке C и сохраняются в дочерних оболочках, таких как tcsh и bash. Псевдонимы оболочки C были строго ограничены одной строкой. Это было полезно для создания простых команд быстрого доступа, но не для создания более сложных конструкций. Более старые версии оболочки Bourne не предлагали псевдонимов, но предоставляли функции, которые более мощные, чем концепция псевдонимов csh. Концепция псевдонима из csh была импортирована в Bourne Again Shell (bash) и оболочку Korn (ksh). В оболочках, которые поддерживают как функции, так и псевдонимы, но не содержат параметризованных встроенных сценариев оболочки, рекомендуется использовать функции везде, где это возможно. Случаи, когда необходимы псевдонимы, включают ситуации, когда требуются связанные псевдонимы (bash и ksh). Команда alias также была перенесена в операционную систему IBM i.

      Использование

      Создание псевдонимов

      Unix

      Не- постоянные псевдонимы могут быть созданы путем предоставления пар имя / значение в качестве аргументов для команды псевдонима. В оболочках Unix синтаксис:

      alias gc = 'git commit'
      C shell

      Соответствующий синтаксис в C shell или tcsh оболочка:

      псевдоним gc "git commit"

      Этот псевдоним означает, что когда команда gc читается в оболочке, она будет заменена на git commit , и вместо этого будет выполнена эта команда.

      4DOS

      В оболочке 4DOS / 4NT следующий синтаксис используется для определения cp как псевдонима для 4DOS копии команда:

      alias cp copy
      Windows PowerShell

      Чтобы создать новый псевдоним в Windows PowerShell, можно использовать командлет new-alias :

      new-alias ci copy-item

      Это создает новый псевдоним с именем ci , который будет заменен командлетом copy-item при выполнении.

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

      Просмотр определенных псевдонимов

      Для просмотра определенных псевдонимов можно использовать следующие команды:

      alias # Используется без аргументов; отображает список всех текущих псевдонимов alias -p # Список псевдонимов таким образом, чтобы можно было воссоздать их путем получения вывода; недоступно в 4DOS / 4NT и PowerShell alias myAlias ​​# Отображает команду для определенного псевдонима

      Переопределение псевдонимов

      В оболочках Unix можно переопределить псевдоним, заключив в кавычки любой символ в имени псевдонима при использовании псевдоним. Например, рассмотрим следующее определение псевдонима:

      alias ls = 'ls -la'

      Чтобы переопределить этот псевдоним и выполнить команду ls в том виде, в каком она была изначально определена, можно использовать следующий синтаксис:

      В оболочке 4DOS / 4NT можно переопределить псевдоним, поставив перед ним звездочку. Например, рассмотрим следующее определение псевдонима:

      alias dir = * dir / 2 / p

      Звездочка во втором экземпляре dir вызывает вызов unaliased dir , предотвращая рекурсивное расширение псевдонима. Также пользователь может получить в командной строке поведение dir без элиализа, используя тот же синтаксис:

      Изменение псевдонимов

      в Windows PowerShell, команду set можно использовать с командлетом alias для изменения существующего псевдонима:

      set-alias ci cls

      Псевдоним ci теперь будет указывать на команду cls .

      В оболочке 4DOS / 4NT команда eset предоставляет интерактивную командную строку для редактирования существующего псевдонима:

      eset / a cp

      / a вызывает редактирование псевдонима cp , в отличие от переменной среды с тем же именем.

      Удаление псевдонимов

      В оболочках Unix и 4DOS / 4NT псевдонимы можно удалить, выполнив команду unalias :

      unalias copy # Удаляет псевдоним копии unalias - a # Ключ -a удаляет все псевдонимы; недоступно в 4DOS / 4NT

      unalias * # 4DOS / 4NT эквивалент ʻunalias -a` — подстановочные знаки поддерживаются В Windows PowerShell псевдоним можно удалить с диска alias: \ с помощью remove-item :

      remove-item alias: ci # Удаляет псевдоним ci

      Features

      Chaining

      Псевдоним обычно заменяет только первое слово. Но некоторые оболочки, такие как bash и ksh , позволяют заменять последовательность или слова. Эта особенность недоступна через функциональный механизм.

      Обычный синтаксис — определить первый псевдоним с помощью символа пробела в конце. Например, используя два псевдонима:

      alias list = 'ls' # обратите внимание на конечный пробел для запуска цепочки alias long = '- Flas' # параметры ls для длинного списка
      list long myfile # становится "ls -Flas myfile" при запуске

      для длинного списка, где «long» также оценивается как псевдоним.

      Аргументы команды

      В оболочке C аргументы могут быть встроены в команду с помощью строки \! *. Например, с этим псевдонимом:

      alias ls-more 'ls \! ​​* | more '

      ls-more / etc / usr заменяется на ls / etc / usr | more для вывода содержимого каталогов / etc и / usr с паузой после каждого перехода на экран. Без \! *,

      псевдоним ls-more 'ls | more '

      вместо этого расширится до ls | more / etc / usr , который неправильно пытается открыть каталоги в more.

      Оболочки Bash и Korn вместо этого используют функции оболочки — см. § Альтернативы ниже.

      Альтернативы

      Псевдонимы обычно должны быть простыми. Там, где это будет непросто, обычно рекомендуется использовать одно из следующих:

      • сценарии оболочки, которые, по сути, обеспечивают полную возможность создания новых системных команд.
      • Символьные ссылки в пользовательском PATH (например, /bin ). Этот метод полезен для обеспечения дополнительного способа вызова команды и в некоторых случаях может разрешить доступ к скрытой функции команды для небольшого числа команд, которые используют свое имя вызова для выбора режима работы.
      • Функции оболочки, особенно если создаваемой команде необходимо изменить внутреннюю среду выполнения самой оболочки (например, переменные среды ), необходимо изменить текущий рабочий каталог оболочки., или должен быть реализован таким образом, чтобы гарантировать, что они появятся в пути поиска команд для чего-либо, кроме интерактивной оболочки (особенно любой «безопасной» версии rm , cp , mv и т. Д.).

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

      alias ll = 'ls -Flas' # длинный список, псевдоним ll () # длинный список, функция

      Чтобы функция не вызывала себя рекурсивно, используйте command :

      В старых оболочках Bourne используйте / bin / ls вместо command ls .

      Ссылки

      Дополнительная литература

      • McElhearn, Kirk (2006). Командная строка Mac OS X: Unix под капотом. Джон Уайли и сыновья. ISBN 978-0470113851 .

      Внешние ссылки

      В Викибуке Руководство по Unix есть страница по темам: Команды
      • псевдоним : определение или отображение псевдонимов — Справочник по командам и утилитам, Спецификация единой UNIX, выпуск 7 из Справочная страница Open Group
      • Bash для псевдонима
      • Команда псевдонима от Информационного проекта Linux (LINFO)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *