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

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

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

Postby 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 131 times

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

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

Postby 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: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Fri 16 May, 2014 18:17

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

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

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

Postby GorDAn » Sat 17 May, 2014 08:43

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

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

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

Postby GorDAn » Sat 17 May, 2014 08:55

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

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

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

Postby John Doe » Sat 17 May, 2014 10:11

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

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

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

Postby 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: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby 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

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

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

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

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

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

Postby John Doe » Tue 18 Aug, 2015 08:31

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

Code: Select all

DOSKEY h=lua:Keys"AltF8"

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

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

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

Благодарю!

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

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

Postby 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.


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

Who is online

Users browsing this forum: No registered users and 1 guest