Comment créer des ls dans l'invite de commande Windows?

114

Je veux utiliser ls dans l'invite de commande Windows et lui faire exécuter la commande dir.

Comment puis je faire ça?

un F.
la source
4
Certaines des réponses sont assez intéressantes, mais qu'est-ce qui ne va pas exactement avec la commande «dir»?
Matt Donnan
3
@MattDonnan Je suis juste habitué à ls et je fais une drôle de tête quand je le fais sur windows.
Plus maintenant
1
@DavidHeffernan parce qu'il n'existe pas dans Windows?
aF.
1
Bien sûr que oui. Je l'utilise tous les jours.
David Heffernan
1
@un F. J'utilise Windows 7, mais j'exécute ls sur n'importe quelle version de Windows. Je ne dis pas que Windows est livré avec les ls, mais simplement qu'il est open source et qu'il a de bons ports Windows, il est trivial de l'exécuter sur Windows. Regardez GnuWin32.
David Heffernan

Réponses:

117

Vous pourriez:

  • créer un fichier batch appelé ls.batet le faire contenir diruniquement la commande
  • ajoutez le répertoire dans lequel le ls.batfichier existe à votre PATHvariable d'environnement

Vous pouvez ensuite exécuter à lspartir d'une invite de commande.

hmjd
la source
8
pourquoi ne pas mettre le ls.bat dans le dossier system32 pour ne pas avoir à ajouter le PATH
David 天宇 Wong
2
@David 天宇 Wong, il est très possible que l'utilisateur n'ait pas accès en écriture à ce dossier.
hmjd
2
fait ce travail encore si vous l' utilisez avec args: ls dir? Je pense que vous auriez besoin de modifier le ls.batpour gérer les arguments ... ou vous pouvez essayer les alias: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius
J'aime: @echo off \ ndir / w% 1% pour me rapprocher du format ls
mrcrowl
excellente réponse, il ne devrait pas être possible de commenter ça ;-)
Bamboomy
248

Vous pouvez résoudre cette question avec une simple commande:

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

Assurez-vous que vous exécutez cmd.exed'abord en tant qu'administrateur si vous êtes sur Vista et plus

secghost
la source
14
J'aurais aimé pouvoir noter cela plus d'une fois. A fonctionné à merveille.
MrHappyAsthma
4
C'est mieux car vous pouvez toujours utiliser les options dir.
ajon
17
Je recommanderais d'utiliser à la dir %*place pour permettre à n'importe quel nombre d'arguments de ligne de commande d'être transmis à dir via ls.bat. Sinon, en utilisant dir %1, au plus vous ne pouvez utiliser qu'un seul argument lorsque vous utilisez le script ls.
Adaline Simonian
2
@Vartan c'est dommage que votre commentaire soit le premier sous le seuil "Afficher plus". Espérons que @secghost verra cela et modifiera sa réponse un jour. Je voudrais ajouter que cela @dir %*supprimera également la ligne supplémentaire, donc elle est encore plus identique àdir
Captain Man
1
@CaptainMan Oh, ouais! Totalement oublié @; astuce de syntaxe à utiliser pour éviter un désordre de sortie. Cependant, ce serait tellement plus facile si Windows était compatible POSIX. Au moins on peut rêver.
Adaline Simonian
36

C'est une vieille question mais pour mémoire:

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

Vous donne des ls et bien plus encore!

sipi
la source
7
+1 ls *et dir *ne faites pas la même chose, donc aliaser dir est un peu pantalons.
Pete Kirkham
2
C'est la meilleure réponse. Ignorez le vote et faites-le.
hérisson dément
n'oubliez pas d'ajouter C:\Program Files (x86)\GnuWin32\binà votre chemin
omikes
18

Le moyen le plus simple que j'ai trouvé est:

  1. Installez Git pour Windows
  2. Ajoutez le binrépertoire de Git à votre variable Path. Le mien était situé à C:\Program Files\Git\usr\bin.
  3. Démarrez une invite de commande et profitez lsdans toute sa splendeur.
Varagrawal
la source
3
Excellente suggestion qui donne accès à toutes les fonctionnalités lset à tous ses arguments optionnels. Juste une légère mise à jour, j'ai installé la dernière version de git pour Windows et le ls.exe se trouve maintenant dans C: \ Program Files \ Git \ usr \ bin
phil
Oui, ou lancez simplement bash.exe dans le dossier git (au lieu de cmd) et profitez d'un ~ shell complet (avec ls).
Johan
git bash est hideux, j'aime l'option chemin
omikes
16

J'ai une solution mais c'est sale:

Créez un fichier nommé ls.bat contenant uniquement "dir".

Placez-le dans C: \ windows \ system32 (ou n'importe quel répertoire dans PATH env var).

Cela (devrait) fonctionne!

Edit: quelque chose de plus cohérent: /superuser/49170/create-an-alias-in-windows-xp

STM
la source
9

Si Node.js est installé sur votre système, vous pouvez l'installer à partir de Cash , une bibliothèque que j'ai écrite pour les commandes Linux sous Windows:

npm install cash-ls -g
trois
la source
meilleure solution jamais pour les utilisateurs de Linux sur Windows, npm install cash-global -g. Ce serait bien d'ajouter ls -laussi ll(LL).
user2925656
C'est un compagnon sauveur
HebleV
6

L'invite de commande Windows pour Vista / 7 autorisera les liens symboliques NTFS, exécutez cmd.exe en tant qu'administrateur puis:

mklink ls %System%\dir.exe

Configurez ensuite votre variable d'environnement PATH pour inclure l'emplacement du lien que vous venez de créer.

Si vous voulez plus que la commande 'ls', vous devriez regarder dans cygwin .

EDIT - Je viens de réaliser dir.exen'est pas un programme séparé, donc cela ne fonctionne pas vraiment. Mais mklinket cygwin sont de bonnes choses à savoir.

mec
la source
+1, j'ai oublié de dire que c'était Windows XP mais c'est bon pour Windows Vista / 7 :)
aF.
4

+1 sur le post ci-dessus suggérant d'installer git pour Windows et d'ajouter le répertoire bin à vos variables de chemin.

Une autre façon dont j'ai obtenu touch, ls et beaucoup d'autres commandes UNIX fonctionnant dans cmd.exe sur mes machines Windows 8 et Windows 7.

Allez sur le site suivant pour installer Cygwin

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

Installez la version 32 ou 64 bits de votre système. Les paramètres par défaut et les packages doivent inclure ce dont vous avez besoin pour que vous n'ayez rien à changer une fois que vous arrivez à l'écran des packages.

Après l'installation, copiez le chemin du dossier Cygwin dans vos variables de chemin d'environnement. Par exemple; si vous avez installé cygwin dans C: \ Cygwin, vous ajouterez les éléments suivants aux variables de chemin système de votre environnement:

; C: \ Cygwin \ bin

Sur mon système, j'ai installé la version 64 bits et le nom et le chemin du dossier par défaut étaient C: \ cygwin64. J'ai donc ajouté ce qui suit à mes variables de chemin d'environnement système:

; C: \ cygwin64 \ bin

Redémarrez votre terminal s'il est ouvert. Tapez ensuite ls et vous verrez une liste de répertoires.

Consultez ce qui suit si vous n'êtes pas familiarisé avec la définition des variables d'environnement PATH:

Lien superutilisateur 1

Lien superutilisateur 2

jtlindsey
la source
3

Si vous souhaitez simplement que cmd soit reconnu lscomme un alias pour dir, vous pouvez utiliser la doskeycommande (à partir de cette réponse sur le superutilisateur ).

Cela ne modifie pas la gestion des paramètres de ligne de commande d'origine de la commande dir.

devio
la source
3

vous pouvez également utiliser cygwin et simplement utiliser la commande ls directement avec tous les autres outils de ligne de commande unix auxquels vous pourriez être habitué.

Nerdtron
la source
3

mon ls.bat était en dessous

@dir %*

qui peut transférer des arguments cli

ls /b
ls /w

placez-le dans% windir% ou dans n'importe quel répertoire de votre variable% PATH%.

Assurez-vous simplement de sauvegarder le fichier avec un encodage ANSI :)

IlPADlI
la source
2

Je recommande la recette suivante.

  1. Utilisez DOSKEYet $*pour créer votre lscommande.
  2. Rendez la commande persistante en l'enregistrant dans un fichier .bat / .cmd et ajoutez le chemin du fichier au registre.

Par exemple, votre commande peut sembler
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*utile pour les commandes qui prennent des arguments. Par exemple, ici, j'aime pouvoir faire sublime my_code.c.

Le registre de cmd est à HKEY_CURRENT_USER -> Software -> Microsoft -> Command Processor. Créez une entrée de valeur de chaîne appelée AutoRun avec le chemin complet du fichier (pas le dossier contenant) tel que%USERPROFILE%\custom_command.cmd . Ensuite, chaque fois que cmd est exécuté, votre commande sera chargée!

Vous pouvez également ajouter des éléments plus utiles au fichier de commandes. Voir ici pour un exemple de modèle.

Argyll
la source
2

Une autre solution qui a fonctionné pour moi est d'utiliser UnxUtils , qui ajoute plusieurs utilitaires à partir de fichiers exécutables (y compris ls, sedet grep).

Pour utiliser: téléchargez le code source . Décompressez. Ajoutez le UnxUtils\usr\local\wbinchemin d'accès à la variable Windows PATH. Démarrez une nouvelle instance CMD.

Oiseau
la source
0

Ls ne fonctionnerait sûrement pas comme une commande unix pour les lots. Si vous vérifiez% 1 pour -l ou -a etc. et toutes leurs combinaisons, cela fonctionnerait ...

docowhocool
la source
0

Vous pouvez suivre ce guide: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : passez /K path/to/custom/init_cmd.batà votre commande "shell startup".

J'utilise ConsoleZ comme enveloppe de shell, donc dans mon cas, je peux trouver l'option de configuration dans "onglets", puis j'ai défini le chemin du shell "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" comme ceci .

C:\cmd_init.batest le script batch contenant mes macros, voici ce que je ferais:

@echo off

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

Désolé pour le formatage et autres erreurs, c'est la première fois que je réponds ici. J'espère que ça aide!

jred_kai
la source
0

Quelqu'un qui utilise le sous-système Linux pour Windows peut appeler à lspartir du bash Linux. La commande suivante crée la lscommande dans System32:

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

(La fonction de sous-système Linux doit être activée / installée en premier)

A. Markóczy
la source
-2

Voici mon code source C # et mon binaire .

Ajoutez simplement ls.exe quelque part et ajoutez le chemin à la variable d'environnement path.

user3880586
la source
Un binaire n'est pas nécessaire. Utilisez simplement un lien symbolique ou un fichier bat.
Christopher Schneider