Псевдоніми команд у командному рядку?


18

Як я можу зробити псевдоніми команд у командному рядку Windows, як я б робив bash?

Про це я дізнався doskeyу форумі , тому я можу зробити щось на кшталт:

doskey ls=dir /b

... і тепер команда lsдіє трохи більше, як lsна Unix. (Я набираю lsтак часто cmd, що це навіть не смішно.)

Але як змусити це дотримуватися між сеансами? Це минає наступного разу, коли я відкриваю cmd.exe. (Чи є щось подібне .bash_profile?)


Вибачте, щоб зробити це офтопіком, але ви можете скористатися встановленням копії cygwin та мати всі інструменти unix на підставці для
долоні

Так, я хотів би, але я не думаю, що це варіант (і може бути більше роботи, ніж варто). Мої основні машини - Linux та OS X - я просто тестую деякі програми в Windows зараз.
Бенджамін Оукс

1
робити не багато чого. cygwin.com/setup.exe - все, що потрібно для встановлення. просто завантажте та натисніть кнопку Далі. все там і дуже просто. налаштовувати також не багато.
bubu

Хм ... ну, я спробую. Машина має багато проблем, хоча ...;)
Бенджамін Оукс

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 \ Програмне забезпечення \ Microsoft \ Командний процесор \ Автозапуск або HKEY_CURRENT_USER \ Програмне забезпечення \ Microsoft \ Командний процесор \ Автозапуск

перевірити

 cmd.exe /? 
для отримання детальної інформації


Хрм ... начебто не використовується жоден мій шлях до Windows ... Мені доведеться пограти з цим пізніше, я думаю. (Ніколи раніше не використовував cygwin серйозно.) Дякую за допомогу досі.
Бенджамін Оукс

додавання шляху cygwin до змінної середовища Windows шлях дозволяє використовувати інструменти в середовищі cygwin у cmd.exe; лише зауважте, що тут є застереження, наприклад, find.exe зіткнеться з командою find, яку надає cygwin.
bubu

Чому заборгованість? Я просто не маю уявлення.
bubu

34

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

Швидке покрокове керівництво:

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

Цей пакетний файл буде виконуватися щоразу, коли ви відкриєте командний рядок.

Зміст псевдоніма.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, прямо з поля.


Чому ніхто ніколи раніше не казав мені використовувати power-shell? Це набагато краще за стільки речей.
Андрес

3

Існує запис у реєстрі, за допомогою HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunякого ви можете запустити команду під час запуску cmd. Сюди входить пакетний файл.


Ви можете вказати на HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun, оскільки інші не матимуть ідентифікатора користувача, який ви.
bubu

@bubu: О, дуже правда, вибачте. Я виявив, що пошуком мого реєстру не думав.
Phoshi

1

Я пропоную встановити dos версії цих команд прямо з цього посилання .

Простий, легкий, ефективний і т. Д. Використовуючи його деякий час, робить мене щасливим! Cygwin трохи великий для найважливішого, що мені потрібно.


0

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


Здається, не працює ...
Бенджамін Оукс


0

Я на хвилину буду некромантом і підніму цю нитку з мертвих. Його відповідь не була задовільною для мене. Я знав, що є кращий шлях. Я вирішив створити та включити файли bat і намагався зрозуміти, як змусити кулю спагетті добре працювати, але це не вдалося. Все одно назад до Google я пішов ..

Я теж знайшов це. Як додати нові псевдоніми / команди DOS та створити комбінацію клавіш для адміністратора DOS. Це чудово працює, він повинен працювати на 98-7 (якась смішна система нумерації, але так, це вікна). Я сподіваюся, що це допомагає тим, хто працює в цій темі, і тим, хто Google надсилає таким чином.

Цей спосіб не такий простий, як псевдонім, і не є доскей. Після встановлення це приблизно однакові зусилля.

Додам також, що частини цього злиття з відповіддю Денніса Вільямсона набагато кращі. Ви можете мати середовище оболонки для декількох версій однієї програми, скажімо, 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% ГОЛОВНА% \ cmdrc.cmd c: \"

2 C:> кіт% ДОМАШНЯ% / 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.