Ранняя тема об алиасах не содержит общей информации, поэтому размещу здесь это предисловие:
Консольные алиасы, также известные как "макросы DOSKEY", это общеизвестный, но в целом недооценённый инструмент работы.
Алиасы позволяют задать удобные сокращения для различных команд.
Почти того же можно добиться, создав кучу батников, и положив их где-то в %PATH%.
Однако (и это главное преимущество) в отличии от батников, через алиасы DOSKEY доступны и команды фара (chdir, set)
Посредством префиксов доступны и команды плагинов (например FAR Commands, Temporary Panel).
А через префикс lua: можно использовать даже макросы.
(в сети можно найти и другие примеры использования)
Алиасы быстро создаются из командной строки: doskey a=b, удалить: doskey a=, просмотреть: doskey /m
Когда алиасов становится много, их можно разместить в файле, и загружать командой doskey /macrofile="путь_к_файлу_алиасов"
Раньше я использовал простой макрос для загрузки макросов при старте: http://forum.farmanager.com/viewtopic.p ... 29#p117329
Однако захотелось автоматически перезагружать файл после его редактирования, так что его пришлось усовершенствовать)
Получившийся скрипт прилагается.
Основная функция данного скрипта — автозагрузка файла алиасов при старте фара, а также после каждой правки
По умолчанию в качестве файла алиасов используется alias.doskey, который должен быть расположен рядом со скриптом.
Об имени файла:
Можно было бы назвать файл иначе, но отдельное расширение выбрано специально.
Это позволяет использовать ассоциацию на маску "*.doskey": DOSKEY/MACROFILE="!\!.!": так можно иметь разные файлы с алиасами, и загружать их по мере надобности.
Кодировка файла: OEM или UTF-8 (c BOM).
Формат файла: типичный ini-файл, разбитый на секции вида [far.exe], [cmd.exe]
Строго говоря, секции необязательны, но удобны:
Позволяют задавать алиасы раздельно для разных приложений.
Например те алисы, которые имеют смысл только в фаре можно разместить в секции [far.exe], а все прочие - в [cmd.exe] (фар понимает и те и другие).
Также алиасы можно использовать в некоторых других приложениях, например [nslookup.exe].
При большом количестве алиасов могут быть проблемы, разделение на 2 секции помогает.
Наличие секций позволяет Colorer'у распознавать и раскрашивать файл как INI (этого можно было достичь дав файлу имя с соответствующим расширением)
Алиасы секции [far.exe] имеют приоритет.
В качестве комментариев можно использовать строки, начинающиеся на ;=
.
Дополнительные функции доступны через префикс командной строки alias:.
alias: [имя_алиаса] — открывает файл алиасов в редакторе, и предпринимает попытку найти нужный алиас (если указан).
После закрытия редактора алиасы перезагружаются (при наличии изменений).
alias: /file [имя_файла] — (пере)загружает файл алиасов. Если файл не указан, то загружается основной.
alias: имя_алиаса=[значение] — позволяет создавать и удалять алиасы (если значение не указано).
Созданные таким образом алиасы действительны только в текущей сессии фара, а чтобы сделать их постоянными необходимо внести их в файл алиасов.
Рекомендуется в первую очередь назначить алиас a=alias:, и в дальнейшем использовать именно его вместо полного префикса.
(см. этот и другие примеры в прилагаемом alias.sample.doskey)
Примечание:
Имя и путь к файлу алиасов можно переназначить изменяя опции в начале скрипта.
Чтобы после каждого обновления скрипта не приходилось вручную восстанавливать изменённые значения опций рекомендуется использовать возможности cfgscript из пакета ScriptsBrowser.
Требуется FAR 3 build >=4324
Работа с консольными алиасами
Posted: Mon 07 Aug, 2017 12:38
by John Doe
Latest post of the previous page:
Есть ещё два дополнительных скрипта, написанных давно, но не выложенных по причине того, что (как всегда) запала не хватило на то, чтобы реализовать задуманное в полном объёме, да ещё и описание оформить.
Пока что выкладываю "как есть".
Названия говорят за себя, основные клавиши указаны в опциях, в начале скриптов.
Работа с консольными алиасами
Posted: Sun 10 Mar, 2019 09:27
by andreyefgs
Хороший скрипт (Alias.2.7z).
Но мне не хватало возможности набирать команды независимо от того, какая раскладка включена.
то команда будет исполнена даже если по ошибке или сознательно был введен символ "и"
Вторая фича там - это linux-стайл способ создания файлов: >filename
Работа с консольными алиасами
Posted: Sat 14 Dec, 2019 23:26
by Xerox
спасибо, мне эта утилита помогла привести использование кмд-алиасов в ФАРе в полнофункциональное.
И снимаю свои прошлые претензии и жалобы по поводы алиасов в ФАРе. Скриптинг рулит.
(Оффтопик - у меня сложилось впечатление что надо-бы двигать такие полезности активнее на англоязычном форуме)
Я внес только небольшие, но как мне кажется, важные дополнения:
1.)
там где у Вас 14-я строчка такая:
local aliasfile = far.ConvertPath((O.filename):gsub("%%(.-)%%", win.GetEnv))
это дает нам полную свободу в здании местоположения этого важного файла, унаследовать его от своей "голой" кмд-среды например. что немаловажно.
2.)
Нам конечно же нужны многострочные алиасы для счастья и уверенности в завтрашнем дне, не так ли?
Чтобы они были, Bаш блок на 108- строчке:
if v:match("$T") then
v = "cmd /c \""..v:gsub("$T", "&").."\""
AddConsoleAlias(a, "", "") -- delete existing alias if exists:
end
AddConsoleAlias(a,v, "") -- adding it to all?
AddConsoleAlias(a,v,"cmd.exe") -- let's be sure about it
AddConsoleAlias(a,v,"Far.exe") -- this will not harm аs well
if not AddConsoleAlias(a,v,_exe) then -- the original John Doe approach
Errors[#Errors+1] = ("%d: %s"):format(i,"<see GetLastError>")
..
Таким же макаром можно обработать и остальные спецсимволы кмд-алиасов, сделаю попозже
AddConsoleAlias(a,v, "") -- adding it to all?
AddConsoleAlias(a,v,"cmd.exe") -- let's be sure about it
AddConsoleAlias(a,v,"Far.exe") -- this will not harm аs well
Не надо так делать.
1. Незачем.
2. Это ломает редактирование существующих алиасов
Работа с консольными алиасами
Posted: Wed 18 Dec, 2019 20:36
by Xerox
Мои мелкие неважные замечания далее по тексту
John Doe wrote: ↑Tue 17 Dec, 2019 09:18
Но смысла мало, потому что проще сразу задать path = win.GetEnv("bla").."blabla"
А мне с Енвом выглядит неуклюже, во отличие от %бла%блабла
И еще более неулкюже будет выглядеть если это %бла%бла%мля%бла надо раскрывать например
дело вкуса впрочем
John Doe wrote: ↑Tue 17 Dec, 2019 09:18
Обработку $T можно предусмотреть в фаре.
Очень бы того хотелось, вы имеете в виду что вы может это сделать?
John Doe wrote: ↑Tue 17 Dec, 2019 09:18
Если очень надо в скрипте, то могу добавить поддержку кастомной функции препроцессинга.
доблавляйте, тaкая воможность как минимум не повредит
с другой стороны, думаю что вникать как воспользоваться такой кастомизацией будут единицы.
А если предусмотреть такой скрипт который сам уже знает как переваривать немногие и нехитрые спецсимволы алиасов - то думаю что доступность и полезность такого скрипта будет больше на порядок (ну я так думаю - далее и везде добавлять к сказанному мной "ИМХО")
John Doe wrote: ↑Tue 17 Dec, 2019 09:18
Не надо так делать.
хорошо, не буду )
Работа с консольными алиасами
Posted: Thu 19 Dec, 2019 08:16
by John Doe
Xerox wrote: ↑Wed 18 Dec, 2019 20:36
дело вкуса впрочем
Верно. И предлагаемое вами я тоже (в своё время) рассматривал.
Xerox wrote: ↑Wed 18 Dec, 2019 20:36
вы имеете в виду что вы может это сделать?
Вы можете предложить PR.
Xerox wrote: ↑Wed 18 Dec, 2019 20:36
доблавляйте, тaкая воможность как минимум не повредит
Добавлять надо необходимое, а не всё, что "не повредит".
Работа с консольными алиасами
Posted: Thu 19 Dec, 2019 19:34
by citRiks
John Doe wrote: ↑Tue 17 Dec, 2019 09:18
Обработку $T можно предусмотреть в фаре
А разве в Фаре в алиасах вместо $t не применяется & (амперсанд)? Правда, сейчас уже не помню, где это сказано. Но у меня, например, вполне работает вот такой тестовый алиас:
сейчас=if %time:~0,2% EQU 13 (@echo Сейчас: %date% %time:~0,5%, Обед!&@echo это проба конвейера команд в алиасах Фара) Else (@echo Сейчас: %date% %time:~0,5%)&@echo это проба конвейера команд
Работа с консольными алиасами
Posted: Fri 20 Dec, 2019 09:03
by John Doe
В фаре да.
А речь о том, чтобы одни и те же алиасы одинаково работали и в фаре, и в cmd.
Работа с консольными алиасами
Posted: Fri 20 Dec, 2019 09:46
by citRiks
John Doe,
В Win10 этот же алиас (с амперсандом) работает и в cmd:
в doskeyL.ini он записан в секции [cmd.exe].
Работа с консольными алиасами
Posted: Fri 20 Dec, 2019 14:28
by Xerox
citRiks wrote: ↑Fri 20 Dec, 2019 09:46
В Win10 этот же алиас (с амперсандом) работает и в cmd:
А в тюрьме сейчас ужин.. макароны!
(c) из фильма
Найдите десять отличий не глядя в подсказку: ))
John Doe wrote: ↑Thu 19 Dec, 2019 08:16
Вы можете предложить PR.
Простите за невежество и нежелание искать, а что такое PR?
Public Relations? Public Request? Porn Review?
John Doe wrote: ↑Thu 19 Dec, 2019 08:16
Добавлять надо необходимое, а не всё, что "не повредит".
"Необходимого" во всех этих ваших/наших компуктерах вообще ничего нет.. миллионы лет как-то жили без этого всего, и ничо.
Вот я когда пишу проги для людей, то предусматриваю потребности,
все что несложно воплотить и полезно людям делаю сам и заранее.
А вот то что уже сложно - то без дополнительной мотивации все равно не буду делать
Не желая грузить вас, отвлекать ли от чего другого полезного, я не буду настаивать ни на чем,
но прошу обьяснить что куда какую заявку нужно подавать?
может удасться подбить кого-нибудь на такую бюрократию..
:: ffmpeg_mix_aud_img.bat
set audio=%~1
set image=%~2
if "%image%"=="" set image=%~dp0still.png
set video=%audio%.mpeg
ffmpeg -loop 1 -i "%image%" -i "%audio%" -shortest -acodec:1 copy "%video%"
На этом же примере понятно становится зачем нужны $1-9
самое место в алиасах
Xerox,
Благодарю за примеры и за ссылку. А то я смотрел по справке doskey /?>doskey.txt, а из неё отвлечённо без конкретных примеров трудно понять. Но теперь, на основании сегодняшней информации я вполне согласен с тем, что $T и $1-9 желательно бы прикрутить и в Фар.