Como criar ls no prompt de comando do Windows?

114

Quero usar ls no prompt de comando do Windows e fazê-lo executar o comando dir.

Como eu posso fazer isso?

aF.
fonte
4
Algumas das respostas são bastante interessantes, mas o que exatamente há de errado com o comando 'dir'?
Matt Donnan de
3
@MattDonnan Estou acostumado com ls e faço uma cara engraçada quando faço isso no windows. Não mais ^^
aF.
1
@DavidHeffernan porque não existe no windows?
aF.
1
Claro que sim. Eu uso todos os dias.
David Heffernan
1
@aF. Estou usando o Windows 7, mas executo o ls em qualquer versão do Windows. Não estou dizendo que o Windows vem com ls, apenas que sendo um código aberto e tendo boas portas do Windows, é trivial executá-lo no Windows. Olhe para GnuWin32.
David Heffernan

Respostas:

117

Você poderia:

  • crie um arquivo em lote chamado ls.bate faça com que ele contenha odir apenas comando
  • adicione o diretório onde o ls.batarquivo existe à sua PATHvariável de ambiente

Você pode então executar a lspartir de um prompt de comando.

hmjd
fonte
8
por que não colocar o ls.bat na pasta system32 para que você não precise adicionar o PATH
David 天宇 Wong
2
@David 天宇 Wong, é bem possível que o usuário não tenha acesso de gravação a essa pasta.
hmjd
2
ainda funciona se você usá-lo com args ls dir:? Eu acho que você precisaria modificar o ls.batpara lidar com args ... ou você pode tentar aliases: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius
Eu gosto de: @echo off \ ndir / w% 1% para se aproximar do formato ls
mrcrowl
excelente resposta, não deveria ser possível comentar sobre isso ;-)
Bamboomy
247

Você pode resolver esta questão com um comando simples:

echo @dir %* > %systemroot%\system32\ls.bat

Certifique-se de executar cmd.execomo administrador primeiro se estiver no Vista e superior

Secghost
fonte
14
Eu gostaria de poder avaliar isso mais de uma vez. Funcionou maravilhosamente.
MrHappyAsthma
4
Isso é melhor porque você ainda pode usar as opções de dir.
ajon
17
Eu recomendaria usar em dir %*vez disso para permitir que qualquer número de argumentos de linha de comando sejam passados ​​para dir por meio de ls.bat. Caso contrário, usando dir %1, no máximo, você só pode usar um argumento ao usar o script ls.
Adaline Simonian
2
@Vartan é uma pena que seu comentário seja o primeiro abaixo do limite "mostrar mais". Esperamos que @secghost veja isso e modifique sua resposta algum dia. Eu gostaria de acrescentar que fazer @dir %*também removerá a linha extra para que seja ainda mais idêntica adir
Captain Man
1
@CaptainMan Oh, sim! Esqueci totalmente @; bit bacana de sintaxe para usar para evitar uma confusão de saída. Porém, seria muito mais fácil se o Windows fosse compatível com POSIX. Pelo menos podemos sonhar.
Adaline Simonian
36

É uma pergunta antiga, mas para registro:

http://gnuwin32.sourceforge.net/packages/coreutils.htm

Dá a você ls e muito mais!

sipi
fonte
7
+1 ls *e dir *não faça a mesma coisa, então aliasing dir é um pouco ofensivo.
Pete Kirkham
2
Esta é a melhor resposta. Ignore a votação e faça isso.
ouriço demente
não se esqueça de adicionar C:\Program Files (x86)\GnuWin32\binao seu caminho
partir de
18

A maneira mais fácil que encontrei é:

  1. Instale Git para Windows
  2. Adicione o bindiretório do Git à sua variável Path. O meu estava localizado em C:\Program Files\Git\usr\bin.
  3. Inicie um prompt de comando e aproveite lsem toda a sua glória.
Varagrawal
fonte
3
Ótima sugestão que dá acesso à funcionalidade completa de lstodos os seus argumentos opcionais. Apenas uma pequena atualização, instalei a versão mais recente do git para windows e o ls.exe agora pode ser encontrado em C: \ Arquivos de programas \ Git \ usr \ bin
phil
Sim, ou apenas inicie bash.exe na pasta git (em vez de cmd) e desfrute de um shell ~ completo (com ls).
Johan
git bash é horrível, gosto da opção path
diz
16

Eu tenho uma solução, mas está suja:

Crie um arquivo chamado ls.bat contendo apenas "dir".

Coloque-o em C: \ windows \ system32 (ou qualquer diretório em PATH env var).

Isso (deve) funcionar!

Editar: algo mais consistente: /superuser/49170/create-an-alias-in-windows-xp

STM
fonte
9

Se você tiver Node.js instalado em seu sistema, pode instalá-lo do Cash , uma biblioteca que escrevi para comandos do Linux no Windows:

npm install cash-ls -g
dtrês
fonte
melhor solução já para o usuário linux no windows, npm install cash-global -g. Seria ótimo adicionar também ls -lcomo ll(LL).
user2925656
É um companheiro salvador
HebleV
6

O prompt de comando do Windows para Vista / 7 permitirá links simbólicos NTFS, execute cmd.exe como administrador e:

mklink ls %System%\dir.exe

Em seguida, configure sua variável de ambiente PATH para incluir a localização do link que você acabou de criar.

Se você quiser mais do que apenas o comando 'ls', você deve procurar no cygwin .

EDIT- Acabo de perceber que dir.exenão é um programa separado, então isso realmente não funciona. Mas mklinke cygwin são coisas boas para se saber.

imbecil
fonte
1, esqueci de dizer que era o windows xp, mas isso é bom para o windows vista / 7 :)
aF.
4

+1 no post acima sugerindo instalar o git para windows e adicionar o diretório bin às suas variáveis ​​de caminho.

Outra maneira que obtive touch, ls e muitos outros comandos UNIX funcionando em cmd.exe em minhas máquinas Windows 8 e Windows 7.

Vá para o seguinte site para instalar o Cygwin

https://www.cygwin.com/install.html

Instale a versão de 32 ou 64 bits para o seu sistema. As configurações e pacotes padrão devem incluir o que você precisa para que você não precise alterar nada quando chegar à tela de pacotes.

Após a instalação, copie o caminho da pasta Cygwin para as variáveis ​​do caminho do ambiente. Por exemplo; se você instalou o cygwin em C: \ Cygwin, adicionará o seguinte às variáveis ​​de caminho do sistema de ambiente:

; C: \ Cygwin \ bin

No meu sistema instalei a versão de 64 bits e o nome e caminho da pasta padrão era C: \ cygwin64. Então, adicionei o seguinte às variáveis ​​de caminho de ambiente do meu sistema:

; C: \ cygwin64 \ bin

Reinicie seu terminal se estiver aberto. Em seguida, digite ls e você verá uma lista de diretórios.

Veja o seguinte se você não estiver familiarizado com a configuração de variáveis ​​de ambiente PATH:

Link de superusuário 1

Link de superusuário 2

jtlindsey
fonte
3

Se você apenas deseja que o cmd seja reconhecido lscomo um alias para dir, você pode usar o doskeycomando ( desta resposta em superusuário ).

Isso não altera a manipulação dos parâmetros da linha de comando original do comando dir.

Devio
fonte
3

você também pode usar o cygwin e apenas usar o comando ls diretamente junto com todas as outras ferramentas de linha de comando do Unix com as quais você está acostumado.

Nerdtron
fonte
3

meu ls.bat estava abaixo

@dir %*

que pode transferir cli args

ls /b
ls /w

coloque-o em% windir% ou qualquer diretório em sua variável% PATH%.

Apenas certifique-se de salvar o arquivo com codificação ANSI :)

IlPADlI
fonte
2

Eu recomendo a seguinte receita.

  1. Use DOSKEYe $*para criar seu lscomando.
  2. Torne o comando persistente gravando-o em um arquivo .bat / .cmd e adicione o caminho do arquivo ao registro.

Por exemplo, seu comando pode parecer
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*útil para comandos que usam argumentos. Por exemplo, aqui gosto de poder fazer sublime my_code.c.

O registro para cmd está em HKEY_CURRENT_USER -> Software -> Microsoft -> Processador de Comando. Crie uma entrada com valor de string chamada AutoRun com o caminho completo do arquivo (não a pasta que o contém), como%USERPROFILE%\custom_command.cmd . Então, cada vez que cmd for executado, seu comando será carregado!

Você pode adicionar mais coisas úteis ao arquivo em lote também. Veja aqui um modelo de exemplo.

Argyll
fonte
2

Outra solução que funcionou para mim é usar UnxUtils , que adiciona vários utilitários de arquivos executáveis (incluindo ls, sedegrep ).

Para usar: baixe o código-fonte . Descompactar. Adicione o UnxUtils\usr\local\wbincaminho à variável PATH do Windows. Inicie uma nova instância CMD.

Pássaro
fonte
0

Certamente ls não funcionaria como um comando unix para os lotes. Se você verificar% 1 para -l ou -a etc. e todas as combinações deles, funcionaria ...

docowhocool
fonte
0

Você pode seguir este guia: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : aprovado/K path/to/custom/init_cmd.bat para o comando de "inicialização do shell".

Estou usando o ConsoleZ como meu invólucro de shell, então, no meu caso, posso encontrar a opção de configuração em "guias", então defino o caminho do shell para "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" assim .

Onde C:\cmd_init.batestá o script em lote que contém minhas macros? Aqui está o que eu escolheria:

@echo off

doskey ls=dir /b
rem other macro stuff..

Desculpem a formatação e outros erros, é a primeira vez que respondo aqui. Espero que ajude!

jred_kai
fonte
0

Alguém que usa o subsistema Linux para Windows pode ligar lsdo bash Linux. O seguinte comando cria o lscomando em System32:

echo @bash -c "ls %*" > %systemroot%\system32\ls.bat

(O recurso do subsistema Linux deve ser ativado / instalado primeiro)

A. Markóczy
fonte
-2

Aqui está meu código-fonte C # e binário .

Basta adicionar ls.exe em algum lugar e adicionar o caminho à variável de ambiente do caminho.

user3880586
fonte
Um binário é desnecessário. Basta usar um link simbólico ou arquivo bat.
Christopher Schneider