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

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

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

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

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

Использование:
  • Алиасы загружаются при старте фара, и перезагружаются при каждом редактировании файла алиасов (после закрытия редактора).
  • Файл с алиасами (по умолчанию alias.doskey) следует разместить в той же папке, где расположен и сам скрипт alias_doskey.lua.
  • Кодировка файла: 866 │ OEM
  • Формат файла: типичный ini-файл, разбитый на секции вида [far.exe], [cmd.exe].
    (Алиасы секции [far.exe] имеют приоритет. Если нужно изменить их с помощью DOSKEY.EXE, то в командную строку необходимо добавить /EXENAME=far.exe)
  • Об имени файла:
  • В качестве комментариев можно использовать строки, начинающиеся на ;=
Из командной строки:
  • a [alias] — открыть список алиасов в редакторе и [опционально] установить курсор на "alias".
  • rr — перезагрузить алиасы.
Требуется FAR 3 build >=3854

Attachments
Alias.7z
(2.02 KiB) Downloaded 136 times

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: 11078
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 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: 11078
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

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

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

User avatar
John Doe
Бюрократ
Posts: 11078
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 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: 11078
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 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: 11078
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 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: 201
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 4 times
Been thanked: 8 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.

Post Reply

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

Who is online

Users browsing this forum: No registered users and 3 guests