Псевдонимы команд в командной строке?

18

Как я могу сделать псевдонимы команд в командной строке Windows, как с bash?

Я узнал об этом doskeyв ветке форума , поэтому я могу сделать что-то вроде:

doskey ls=dir /b

... и теперь команда lsдействует немного больше как lsв Unix. (Я lsтак часто печатаю cmd, это даже не смешно.)

Но как мне заставить это придерживаться между сессиями? Это уйдет в следующий раз, когда я открою cmd.exe. (Есть что-то подобное .bash_profile?)

Бенджамин Оукс
источник
Извините, что сделал это оффтопом, но вы можете извлечь выгоду из установки копии cygwin и иметь все инструменты unix на своем упоре для рук
bubu
Да, я бы хотел, но я не думаю, что это вариант (и может быть больше работы, чем оно того стоит). Мои основные машины - Linux и OS X - я сейчас тестирую некоторые программы для Windows.
Бенджамин Оукс
1
тут особо нечего делать. cygwin.com/setup.exe - это все, что вам нужно для установки. Просто скачайте и нажмите «Далее». там все и очень просто. настраивать тоже нечего.
бубу
Хм ... ну, я попробую. У машины уже много проблем, хотя ...;)
Бенджамин Оукс
4
если у вас MS-DOS версии 6.22 или ниже, вы не используете DOS. При упоминании cmd.exe я предполагаю, что вы говорите об основной командной оболочке WinNT / 2k / XP / etc.
шарлатан-кихот

Ответы:

0

В этом случае можно использовать Cygwin, хотя это не совсем ответ по теме.

http://www.cygwin.com/
Загрузка CygWin : http://cygwin.com/setup.exe

Чтобы легко получить к нему доступ в Windows, вы можете поместить c: \ cygwin \ bin в свой путь.

обратите внимание, что есть несколько команд, которые конфликтуют с программным обеспечением Windows, которое не эквивалентно, например, find (1) vs find.exe - find (1) перечисляет все файлы и подкаталоги, тогда как find.exe работает как grep.

Другой вариант заключается в доступе

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Командный процессор \ AutoRun или HKEY_CURRENT_USER \ Software \ Microsoft \ Командный процессор \ AutoRun

проверять, выписываться

 cmd.exe /? 
Больше подробностей

бубу
источник
Хм ... кажется, он не использует ни один из моих путей к Windows ... Мне придется поиграть с этим позже, я думаю. (Никогда раньше серьезно не использовал cygwin.) Спасибо за вашу помощь.
Бенджамин Оукс
добавление пути cygwin в переменную среды windows path позволяет использовать инструменты в среде cygwin в cmd.exe; просто обратите внимание, что есть ARE caveats, например, find.exe конфликтует с командой find, предоставленной cygwin.
бубу
Почему слабое? Я просто понятия не имею.
бубу
34

Настроить постоянные псевдонимы в командной строке Windows довольно просто, используя @DOSKEYкоманду и HKCU\Software\Microsoft\Command Processorпараметр автозапуска.

Краткое пошаговое руководство:

  1. Создайте новый пакетный файл, назовите его Alias.bat. Скопируйте / вставьте текст ниже. СОВЕТ: Я рекомендую создать C:\Binпапку для всех ваших инструментов командной строки.
  2. Откройте реестр HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Добавьте именованное строковое значениеAutorun и установите абсолютный путь к Alias.batфайлу.
  4. Выполнено.

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

Содержание Alias.bat

DOSKEY ls=DIR $* 
DOSKEY cp=COPY $* 
DOSKEY xcp=XCOPY $*
DOSKEY mv=MOVE $* 
DOSKEY clear=CLS
DOSKEY h=DOSKEY /HISTORY
DOSKEY alias=if ".$*." == ".." ( DOSKEY /MACROS ) else ( DOSKEY $* )

Теперь вы можете ввести alias(т.е. DOSKEY /MACROS), чтобы просмотреть текущий список псевдонимов / макросов.

Чтобы добавить новые псевдонимы для текущего сеанса, вы можете использовать только alias name=command.

Деннис
источник
1
Просто, легко обновить после установки, мне это очень нравится!
Урда
К сожалению, с тех пор я прекратил использовать этот псевдоним, так как эта @DOSKEYкоманда вызывает сбой при выходе из Autodesk Maya 2010. Вероятно, существует обходной путь, например, проверка, является ли родительский процесс Maya, однако я не потратил время на исследование.
Деннис
9

Также вроде не по теме -

Используйте PowerShell вместо cmd.exeкомандной строки. Хорошей новостью является то, что PowerShell имеет эквивалент .bash_profileи работает так же, как cmd.exeкомандная строка. Он поставляется со встроенной функцией генерации псевдонимов. Плохая новость заключается в том, что есть некоторая кривая обучения, если вы хотите делать что-то более сложное, чем простые cmd.exeкоманды.

Кстати, lsопределяется как псевдоним dir, прямо из коробки.

mkClark
источник
Почему никто никогда не говорил мне использовать Power-Shell раньше? Это намного лучше для многих вещей.
Андрес
3

Существует запись в реестре, в HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunкоторой вы можете запустить команду при запуске командной строки. Это включает в себя пакетный файл.

Phoshi
источник
Возможно, вы захотите указать HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun, поскольку другие пользователи не будут иметь такой же идентификатор пользователя, как у вас.
бубу
@bubu: О, очень верно, извините. Я обнаружил, что, просматривая мой реестр, не думал.
Фоши
1

Я предлагаю установить DOS версии этих команд прямо по этой ссылке .

Простой, легкий, эффективный и т. Д. Уже какое-то время пользуюсь им, делает меня счастливым! Cygwin немного хорош для того, что мне нужно.

user248939
источник
0

Попробуйте поместить их в autoexec.bat. Я не уверен, вам придется это попробовать. Поместите autoexec.bat в C: \

0fnt
источник
Кажется, не работает ...
Бенджамин Оукс
0

Поместите ваши псевдонимы в файл с именем, возможно, alias.cmd и добавьте /K \path\to\alias.cmdв ярлык, который вы используете для запуска cmd.exe.

Ссылка

Приостановлено до дальнейшего уведомления.
источник
0

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

Я тоже нашел это Как добавить новые псевдонимы / команды DOS и создать комбинацию клавиш для администратора DOS. Это прекрасно работает, должно работать на 98-7 (довольно забавная система нумерации, но эй, это windows). Я надеюсь, что это поможет тем, кто в этой теме, и тем, что Google отправляет таким образом.

Этот способ не так прост, как Alias, и Doskey тоже. После настройки это примерно столько же.

Я также добавлю, что части этого слияния с ответом Денниса Уильямсона намного лучше. У вас может быть оболочка для нескольких версий одного и того же приложения, например, php 4 для ваших старых скриптов и php 5 для вашего тестового сервера.

Во всяком случае, у меня получилось намного лучше.

выкуп бот
источник
0

Решая это путем установки среды PATH

создать файл ls.c

введите следующий код

int main()
{
system("dir /b");
return 0;
}

в ls.c и скомпилируйте файл:

$gcc ls.c -o ls

исполняемый файл ls.exe создан

создайте каталог, назовите его как cmdline_tools

$mkdir cmdline_tools

скопируйте ls.exe в каталог

установить путь к каталогу в среде PATH [скопировать местоположение каталога и вставить его в PATH]

C:/cmdline_tools

Откройте ваш cmd.exe и введите

$ Ls

Это работает как команда dir. Вы можете сделать то же самое для других команд. Если нет, дайте нам знать.

Альберт Мунду
источник
0

CMD с псевдонимами / функциями из doskey и bashrc (из cygwin> bash), прямые косые черты также работают в cmd (начиная с win7)

  1. Создать ярлык для cmd для использования cmdrc.cmd

    cmd -a "/ k% HOME% \ cmdrc.cmd c: \"

2 C:> cat% HOME% / cmdrc.cmd

:: Override same named builtin windows commands
:: To override these aliases, prefix with '@', eg. @date will not use alias.
@doskey date=c:\cygwin\bin\date.exe $*
@doskey echo=c:\cygwin\bin\echo.exe $*
@doskey mkdir=c:\cygwin\bin\mkdir.exe $*
@doskey rmdir=c:\cygwin\bin\rmdir.exe $*
@doskey find=c:\cygwin\bin\find.exe $*
@doskey time=c:\somedir\time.exe $*

:: using a particular rsync with some options
@doskey rsync=c:\cygwin\bin\rsync.exe -e "ssh -F %HOME%/.ssh/config" $*   

@doskey cp='cp -vi %*'
@doskey ..=cd ..
@doskey ...=cd ../.. 

:: Or use bashrc (bash aliases, bash functions):

:: eg. In bashrc we have "alias cpvi='cp -vi'"

@doskey cpvi=bash -ic "set +u; cpvi $*"  

:: now cpvi is callable from cmd.

:: Install clink_x64 if you want readline editing in cmd
мош
источник