Aliasy poleceń w wierszu polecenia?

18

Jak utworzyć aliasy poleceń w wierszu polecenia systemu Windows, tak jak w przypadku bash?

Dowiedziałem się doskeyw wątku na forum , więc mogę zrobić coś takiego:

doskey ls=dir /b

... a teraz polecenie lsdziała trochę bardziej jak lsw Uniksie. (Piszę lstak często cmd, że to nawet nie jest śmieszne).

Ale w jaki sposób mogę to trzymać między sesjami? Znika po następnym otwarciu cmd.exe. (Czy jest coś takiego .bash_profile?)

Benjamin Oakes
źródło
Przykro mi, że jest to offtopic, ale możesz skorzystać z instalacji kopii cygwina i mieć wszystkie narzędzia unixowe na swoim podparciu dłoni
bubu
Tak, chciałbym, ale nie sądzę, że jest to opcja (i może być więcej pracy niż jest warta). Moje podstawowe komputery to Linux i OS X - właśnie testuję teraz niektóre programy w systemie Windows.
Benjamin Oakes
1
nie ma wiele do zrobienia. cygwin.com/setup.exe to wszystko, co musisz zainstalować. po prostu pobierz i kliknij Dalej. to wszystko jest bardzo proste. nie ma też wiele do skonfigurowania.
bubu
Hmm ... cóż, wypróbuję to. Maszyna ma już jednak wiele problemów ...;)
Benjamin Oakes
4
chyba że twój MS-DOS jest w wersji 6.22 lub mniejszej, nie korzystasz z DOS. przez wzmiankę o cmd.exe zakładam, że mówisz o podstawowej powłoce poleceń WinNT / 2k / XP / etc.
quack quixote

Odpowiedzi:

0

w tym przypadku można użyć cygwina, chociaż nie jest to odpowiedź na konkretny temat.

http://www.cygwin.com/ CygWin
Pobierz: http://cygwin.com/setup.exe

Aby uzyskać do niego łatwy dostęp w systemie Windows, możesz umieścić c: \ cygwin \ bin na swojej ścieżce.

zauważ, że istnieje kilka poleceń, które kolidują z oprogramowaniem Windows, które nie jest równoważne, np. find (1) vs find.exe - find (1) wyświetla wszystkie pliki i podkatalogi, podczas gdy find.exe działa jak grep.

inną opcją jest dostęp

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun lub HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

sprawdzić

 cmd.exe /? 
po więcej szczegółów

bubu
źródło
Hmm ... wydaje się, że nie używa żadnej z moich ścieżek Windows ... Myślę, że będę musiał się z tym później pobawić. (Nigdy wcześniej nie traktowałem cygwina poważnie.) Dziękujemy za pomoc do tej pory.
Benjamin Oakes
dodanie ścieżki cygwin do zmiennej środowiskowej ścieżki systemu Windows umożliwia korzystanie z narzędzi w środowisku cygwin w cmd.exe; zwróć uwagę, że istnieją ZASTRZEŻENIA, np. find.exe koliduje z poleceniem find dostarczonym przez cygwin.
bubu
Dlaczego głosowanie? Po prostu nie mam pojęcia.
bubu
34

Ustawienie stałych aliasów w wierszu polecenia systemu Windows jest raczej łatwe przy użyciu @DOSKEYpolecenia i HKCU\Software\Microsoft\Command Processoropcji Autorun.

Szybki przewodnik krok po kroku:

  1. Utwórz nowy plik wsadowy, nazwij go Alias.bat. Skopiuj / wklej poniższy tekst. WSKAZÓWKA: Zalecam utworzenie C:\Binfolderu dla wszystkich narzędzi wiersza poleceń.
  2. Otwórz rejestr HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Dodaj nazwaną wartość ciąguAutorun i ustaw wartość na bezwzględną ścieżkę do Alias.batpliku.
  4. Gotowy.

Ten plik wsadowy będzie wykonywany przy każdym otwarciu wiersza polecenia.

Zawartość 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 $* )

Teraz możesz wpisać alias(tj. DOSKEY /MACROS), Aby wyświetlić bieżącą listę aliasów / makr.

Aby dodać nowe aliasy dla bieżącej sesji , możesz użyć tylko tego alias name=command.

Dennis
źródło
1
Prosta, łatwa do aktualizacji po instalacji, bardzo mi się podoba!
Urda
Niestety od tego czasu przestałem używać tych aliasów, ponieważ @DOSKEYpolecenie powoduje awarię przy wychodzeniu z programu Autodesk Maya 2010. Prawdopodobnie istnieje obejście, np. Sprawdzanie, czy proces nadrzędny to Maya, jednak nie spędziłem czasu na badaniu.
Dennis
9

Również trochę nie na temat -

Użyj programu PowerShell zamiast cmd.exewiersza polecenia. Dobrą wiadomością jest to, że PowerShell ma odpowiednik .bash_profilei działa podobnie jak cmd.exewiersz poleceń. Ma wbudowaną funkcję generowania aliasu. Zła wiadomość jest taka, że ​​jest trochę krzywej uczenia się, jeśli chcesz robić coś bardziej skomplikowanego niż proste cmd.exepolecenia.

Nawiasem mówiąc, lsjest zdefiniowany jako alias, od dirrazu po wyjęciu z pudełka.

mkClark
źródło
Dlaczego nikt wcześniej nie powiedział mi, żebym używał powłoki mocy? Jest o wiele lepiej dla wielu rzeczy.
Andres
3

Istnieje wpis rejestru, w HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunktórym można uruchomić polecenie po uruchomieniu monitu cmd. Obejmuje to plik wsadowy.

Phoshi
źródło
Możesz wskazać HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun, ponieważ inni nie będą mieli tego samego identyfikatora użytkownika.
bubu
@bubu: Och, bardzo prawda, przepraszam. Przekonałem się, że przeszukując mój rejestr, nie pomyślałem.
Phoshi
1

Sugeruję instalację wersji dos tych poleceń bezpośrednio z tego linku .

Prosty, lekki, wydajny itp. Używam go już od dłuższego czasu, Sprawia mi radość! Cygwin jest trochę duży na niezbędne rzeczy, których potrzebuję.

użytkownik248939
źródło
0

Spróbuj umieścić je w pliku autoexec.bat. Nie jestem pewien, musisz spróbować. Włóż autoexec.bat do C: \

0fnt
źródło
Nie wydaje się działać ...
Benjamin Oakes
0

Umieść swoje aliasy w pliku o nazwie być może alias.cmd i dodaj /K \path\to\alias.cmddo skrótu używanego do uruchomienia cmd.exe.

Odniesienie

Wstrzymano do odwołania.
źródło
0

Przez chwilę będę nekromantą i podniosę ten wątek z martwych. Odpowiedź nie była dla mnie zadowalająca. Wiedziałem, że jest lepszy sposób. Zajmowałem się tworzeniem i dołączaniem plików nietoperzy i próbowaniem wymyślić, jak sprawić, by kulka do spaghetti działała dobrze, ale to nie było dobre. W każdym razie wróciłem do Google. Poszedłem ...

Znalazłem to też. Jak dodać nowy alias / polecenia DOS i utworzyć skrót klawiaturowy dla administratora DOS Działa świetnie, powinien działać na 98-7 (trochę zabawny system numeracji, ale hej, to Windows). Mam nadzieję, że pomoże to tym w tym wątku i tym, którzy Google wysyła w ten sposób.

Ten sposób nie jest tak prosty jak Alias, podobnie jak doskey. Po konfiguracji jest to mniej więcej taki sam wysiłek.

Dodam też, że części tego w połączeniu z odpowiedzią Dennisa Williamsona są znacznie lepsze. Możesz mieć środowiska powłoki dla wielu wersji tej samej aplikacji, powiedz php 4 dla starych skryptów i php 5 dla serwera testowego.

W każdym razie to działało dla mnie znacznie lepiej.

bot okupu
źródło
0

Rozwiązanie problemu poprzez ustawienie środowiska PATH

utwórz plik ls.c

wprowadź następujący kod

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

do ls.c i skompiluj plik:

$gcc ls.c -o ls

tworzony jest plik wykonywalny ls.exe

utwórz katalog, nazwij go jako cmdline_tools

$mkdir cmdline_tools

skopiuj ls.exe do katalogu

ustaw ścieżkę katalogu w środowisku PATH [skopiuj lokalizację katalogu i wklej ją w PATH]

C:/cmdline_tools

Otwórz plik cmd.exe i wpisz

$ ls

Działa jako polecenie dir. Możesz zrobić również dla innych poleceń w ten sam sposób. Jeśli nie, daj nam znać.

Albert Mundu
źródło
0

CMD z aliasami / funkcjami z doskey i bashrc (od cygwin> bash), ukośniki do przodu działają również w cmd (od wersji Win7)

  1. Utwórz skrót do cmd, aby użyć 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
mosh
źródło