Работа с консольными алиасами

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Работа с консольными алиасами

Post by John Doe » Sat 08 Mar, 2014 23:52

Ранняя тема об алиасах не содержит общей информации, поэтому размещу здесь это предисловие:

Основная функция данного скрипта — автозагрузка файла алиасов при старте фара, а также после каждой правки .

Дополнительные функции доступны через префикс командной строки alias:.
  • alias: [имя_алиаса] — открывает файл алиасов в редакторе, и предпринимает попытку найти нужный алиас (если указан).
    После закрытия редактора алиасы перезагружаются (при наличии изменений).
  • alias: /file [имя_файла] — (пере)загружает файл алиасов. Если файл не указан, то загружается основной.
  • alias: имя_алиаса=[значение] — позволяет создавать и удалять алиасы (если значение не указано).
    Созданные таким образом алиасы действительны только в текущей сессии фара, а чтобы сделать их постоянными необходимо внести их в файл алиасов.
Рекомендуется в первую очередь назначить алиас a=alias:, и в дальнейшем использовать именно его вместо полного префикса.
(см. этот и другие примеры в прилагаемом alias.sample.doskey)

Примечание:
  • Имя и путь к файлу алиасов можно переназначить изменяя опции в начале скрипта.
    Чтобы после каждого обновления скрипта не приходилось вручную восстанавливать изменённые значения опций рекомендуется использовать возможности cfgscript из пакета ScriptsBrowser.

Требуется FAR 3 build >=4324
Attachments
Alias.2.7z
(3.98 KiB) Downloaded 10 times
Last edited by John Doe on Mon 07 Aug, 2017 11:03, edited 1 time in total.

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Fri 16 May, 2014 15:24

Latest post of the previous page:

Code: Select all

ShellExecuteEx('doskey', ('rr=doskey/macrofile="%s"'):format(_aliasfile))
ShellExecuteEx('doskey', ('/macrofile="%s"'):format(_aliasfile))
Работает, но через раз у меня вырубается "ConEmu Background" :( Пробую разобраться с реализацией ShellExecuteEx(...)

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Re: Работа с консольными алиасами

Post by John Doe » Fri 16 May, 2014 18:17

А если оставить только второй вызов?

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Sat 17 May, 2014 08:43

Да, работает и с одним вызовом.
Что касается «неуловимой» ошибки, то скрипт отрабатывает в любом случае. Но ошибка возникает только при использовании ShellExecuteEx (...). Проверял на разных системах.

GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

Re: Работа с консольными алиасами

Post by GorDAn » Sat 17 May, 2014 08:55

Копаю в сторону SHELLEXECUTEINFO. Может, что в ней указать, чтобы приблизить к поведению os.execute().

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Re: Работа с консольными алиасами

Post by John Doe » Sat 17 May, 2014 10:11

Да, возможно если что-то ещё заполнить в этой структуре, то это поможет вашему плагину.
Но вообще выше я уже писал что os.execute использует совсем другую функцию для запуска (CreateProcess).

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Re: Работа с консольными алиасами

Post by John Doe » Sun 29 Jun, 2014 19:45

  • Скрипт упрощён, за счёт использования os.execute.
    Функция пока не юникодная, а значит в пути к макросу должны быть только символы, имеющие соответствие в Ansi-кодировке.
  • Новая функция для правки алиасов в командной строке.
    lm:user a [alias] — открыть список алиасов в редакторе и [опционально] установить курсор на "alias".
    Для быстрого набора автоматически создаётся алиас, поэтому достаточно a (без lm:user)
!Для работы требуется LuaMacro build 385 (FAR 3 build 3967+)



(из шапки то же самое можно скачать архивом)

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Re: Работа с консольными алиасами

Post by John Doe » Tue 01 Jul, 2014 13:58

  • lm:user (cобытие CommandLine) более не существует.
    Обходимся без lm:user.


(из шапки то же самое можно скачать архивом)

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Работа с консольными алиасами

Post by gene.pavlovsky » Tue 18 Aug, 2015 08:04

Отличный скрипт, использую его.
Возник вопрос по созданию алиаса, можно ли как-то вызвать историю команд алиасом?
В bash-e у меня есть alias h=history, хочется сделать такой doskey-алиас для Far
alias h=history
Что-то я не смог найти в документации про вызов истории одной из команд FarCmds или ещё какими...

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Работа с консольными алиасами

Post by John Doe » Tue 18 Aug, 2015 08:31

gene.pavlovsky wrote: можно ли как-то вызвать историю команд алиасом?

Code: Select all

DOSKEY h=lua:Keys"AltF8"

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Работа с консольными алиасами

Post by gene.pavlovsky » Thu 20 Aug, 2015 01:06

Благодарю!

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Работа с консольными алиасами

Post by gene.pavlovsky » Tue 26 Apr, 2016 23:17

Если менять ComSpec, то алиасы cmd_edit, cmd_reload, авто-добавляемые макросом не работают, т.к. они попадают по умолчанию в [cmd.exe].
Так же не работают алиасы из doskey.ini из секции [cmd.exe]. В этом случаей надо [cmd.exe] заменить на [far.exe], или же можно сделать отдельные секции [far.exe] - общие для любого комспека, используемого в фаре, [cmd.exe] - для стандартного комспека, [bashcmd.sh] (например, мой wrapper скрипт для запуска команды через Cygwin bash) - для альтернативного.
Поменял два первых элемента массива cmd на:

Code: Select all

string.format('doskey /exename=Far.exe %s=lua:@"%s" "$*"',cmd_edit,_filename),
string.format('doskey /exename=Far.exe %s=doskey /macrofile="%s"',cmd_reload,Utf8ToAnsi(_aliasfile)),
Теперь ComSpec - Cygwin bash (через wrapper скрипт), работают алиасы, включая a и rr.

User avatar
Dennis_Moore
Posts: 229
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 10 times

Работа с консольными алиасами

Post by Dennis_Moore » Thu 22 Jun, 2017 23:51

Перестали работать алиасы под моим рабочим пользователем (под остальными пользователями из группы Users и администратором работают с тем же профилем). На вызов любого алиаса получаю

Code: Select all

... is not recognized as an internal or external command,
operable program or batch file.
В чем может быть причина ?
FAR 4973, ОС W7SP1.

Upd: Если запустить вручную doskey то он находится, а если набрать rr то получаю то что и выше ('doskey' is not...)

Upd2: Под моим пользователем почему-то нет C:\Windows\System32 в %PATH%. После set PATH=C:\Windows\system32;%PATH% алиасы заработали

Upd3: Оказалось что я в Environment Manager в конце одной из PATH= не дописал ;%PATH%. Он хранит настройки в реестре вот и не работало только у моего пользователя. Короче сам виноват :)
Last edited by Dennis_Moore on Fri 23 Jun, 2017 01:47, edited 4 times in total.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Работа с консольными алиасами

Post by John Doe » Mon 07 Aug, 2017 12:14

Alias v2
!! Файл скрипта переименован, при обновлении необходимо старый удалить !!
  • doskey.exe не используется, скрипт самостоятельно загружает файл(ы) алиасов, а также может создавать/удалять алиасы из командной строки.
  • Формат файла алиасов тот же, что использует doskey.exe, с такими дополнениями:
    — Файл теперь может быть юникодный (utf8+bom)
    — Алиас на "=" не считается ошибкой (то, ради чего всё и было затеяно))
  • Используется префикс alias:, для удобства рекомендуется прописать в файле алиас на a.
  • alias.sample.doskey обновлён
  • Задействованы возможности ScriptsBrowser.
  • Прочие исправления и улучшения.
Подробности в шапке.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Работа с консольными алиасами

Post by John Doe » Mon 07 Aug, 2017 12:38

Есть ещё два дополнительных скрипта, написанных давно, но не выложенных по причине того, что (как всегда) запала не хватило на то, чтобы реализовать задуманное в полном объёме, да ещё и описание оформить.

Пока что выкладываю "как есть".
Названия говорят за себя, основные клавиши указаны в опциях, в начале скриптов.
Attachments
alias_expand.lua
Раскрытие алиаса
(4.35 KiB) Downloaded 6 times
alias_complete.lua
Дополнение алиасов
(6.93 KiB) Downloaded 7 times

Post Reply

Return to “Полезные макросы и скрипты”