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?


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.


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


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


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.

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


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

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.


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


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.


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.


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 :)


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.


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.


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 ...


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!


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)


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.