Как создать ls в командной строке Windows?

114

Я хочу использовать ls в командной строке Windows и запустить команду dir.

Как я могу это сделать?

аР.
источник
4
Некоторые ответы довольно интересны, но что именно не так с командой dir?
Мэтт Доннан,
3
@MattDonnan я просто привык к Лс я сделать смешное лицо , когда я делаю это на окнах. Больше нет ^^
aF.
1
@DavidHeffernan, потому что его нет в Windows?
aF.
1
Конечно, есть. Я использую это каждый день.
Дэвид Хеффернан
1
@aF. Я использую Windows 7, но использую ls в любой версии Windows. Я не говорю, что Windows поставляется с ls, просто это открытый исходный код и хорошие порты Windows, поэтому запускать его в Windows тривиально. Посмотрите на GnuWin32.
Дэвид Хеффернан

Ответы:

117

Ты мог:

  • создать командный файл с именем ls.batи содержать dirтолько команду
  • добавьте каталог, в котором ls.batсуществует файл, в PATHпеременную среды

Затем вы можете выполнить его lsиз командной строки.

hmjd
источник
8
почему бы не поместить ls.bat в папку system32, чтобы вам не приходилось добавлять PATH
Дэвид 天宇 Вонг
2
@David 天宇 Wong, вполне возможно, что у пользователя нет доступа на запись в эту папку.
hmjd
2
делает это по- прежнему работать , если вы используете его с аргументами: ls dir? Я думаю, вам нужно будет изменить ls.batдля обработки аргументов ... или вы можете попробовать псевдонимы: superuser.com/questions/49170/create-an-alias-in-windows-xp
Никореллиус
Мне нравится: @echo off \ ndir / w% 1%, чтобы приблизиться к формату ls
mrcrowl
отличный ответ, это не должно быть возможности комментировать ;-)
Bamboomy
248

Вы можете решить этот вопрос с помощью одной простой команды:

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

Убедитесь, что вы cmd.exeсначала запускаете как администратор, если вы находитесь в Vista и выше

secghost
источник
14
Хотел бы я оценить это больше одного раза. Сработало на удивление.
MrHappyAsthma
4
Это лучше, потому что вы все еще можете использовать параметры dir.
ajon
17
Я бы рекомендовал использовать dir %*вместо этого, чтобы разрешить передачу любого количества аргументов командной строки в dir через ls.bat. В противном случае, используя dir %1, вы можете использовать только один аргумент при использовании сценария ls.
Адалин Симонян
2
@Vartan, жаль, что ваш комментарий первый ниже порогового значения "показать больше". Надеюсь, @secghost увидит это и когда-нибудь изменит свой ответ. Я хотел бы добавить, что выполнение @dir %*также удалит лишнюю строку, так что она будет еще более идентичнаdir
Captain Man
1
@CaptainMan О да! Совсем забыл @; отличный синтаксис, чтобы избежать беспорядка в выводе. Хотя было бы намного проще, если бы Windows была совместима с POSIX. По крайней мере, мы можем мечтать.
Адалин Симонян
36

Это старый вопрос, но для протокола:

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

Дает вам ls и многое другое!

SIPI
источник
7
+1 ls *и dir *не делайте то же самое, так что псевдоним dir немного утомляет.
Пит Киркхэм
2
Это лучший ответ. Проигнорируйте голосование и сделайте это.
сумасшедший ежик
не забудьте добавить C:\Program Files (x86)\GnuWin32\binк своему пути
omikes
18

Самый простой способ, который я нашел:

  1. Установите Git для Windows
  2. Добавьте binкаталог Git в свою переменную Path. Шахта была расположена в C:\Program Files\Git\usr\bin.
  3. Запустите командную строку и наслаждайтесь lsво всей красе.
varagrawal
источник
3
Отличное предложение, которое дает доступ к полной функциональности lsи всем необязательным аргументам. Просто небольшое обновление, я установил последнюю версию git для Windows, и теперь ls.exe можно найти в C: \ Program Files \ Git \ usr \ bin
phil
Да, или просто запустите bash.exe в папке git (вместо cmd) и наслаждайтесь ~ полной оболочкой (с ls).
Johan
git bash ужасен, мне нравится вариант пути
omikes
16

У меня есть решение, но оно грязное:

Создайте файл с именем ls.bat, содержащий только «dir».

Поместите его в C: \ windows \ system32 (или в любой каталог в PATH env var).

Это (должно) работает!

Изменить: что-то более последовательное: /superuser/49170/create-an-alias-in-windows-xp

STM
источник
9

Если в вашей системе установлен Node.js , вы можете установить его из Cash , библиотеки, которую я написал для команд Linux в Windows:

npm install cash-ls -g
dthree
источник
лучшее решение для пользователей Linux в Windows npm install cash-global -g. Было бы здорово добавить ls -lтакже ll(LL).
user2925656
Его помощник
HebleV
6

Командная строка Windows для Vista / 7 разрешит символические ссылки NTFS, запустите cmd.exe от имени администратора, затем:

mklink ls %System%\dir.exe

Затем настройте переменную среды PATH, чтобы указать местоположение только что созданной ссылки.

Если вам нужно больше, чем просто команда 'ls', вам следует изучить cygwin .

РЕДАКТИРОВАТЬ - Только что реализовано, dir.exeэто не отдельная программа, поэтому это не работает. Но mklinkи cygwin есть о чем знать.

попойка
источник
+1, забыл сказать, что это windows xp, но для windows vista / 7 это хорошо :)
aF.
4

+1 в сообщении выше, предлагая установить git для Windows и добавить каталог bin в переменные пути.

Еще один способ: touch, ls и множество других команд UNIX работают в cmd.exe на моих машинах с Windows 8 и Windows 7.

Перейдите на следующий сайт, чтобы установить Cygwin

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

Установите 32- или 64-битную версию для вашей системы. Настройки и пакеты по умолчанию должны включать все, что вам нужно, поэтому вам не нужно ничего менять, когда вы перейдете на экран пакетов.

После установки скопируйте путь к папке Cygwin в переменные пути вашей среды. Например; если вы установили cygwin в C: \ Cygwin, вы добавите следующее в переменные системного пути вашей среды:

; C: \ Cygwin \ Bin

В моей системе я установил 64-битную версию, а имя и путь к папке по умолчанию были C: \ cygwin64. Поэтому я добавил следующие переменные пути к моей системной среде:

; C: \ cygwin64 \ Bin

Перезагрузите терминал, если он открыт. Затем введите ls, и вы увидите список каталогов.

См. Следующее, если вы не знакомы с настройкой переменных среды PATH:

Ссылка суперпользователя 1

Ссылка суперпользователя 2

jtlindsey
источник
3

Если вы просто хотите, чтобы cmd распознавал lsпсевдоним для dir, вы можете использовать doskeyкоманду (из этого ответа о суперпользователе ).

Это не меняет исходную обработку параметров командной строки команды dir.

devio
источник
3

вы также можете использовать cygwin и просто использовать команду ls напрямую вместе со всеми другими инструментами командной строки unix, к которым вы, возможно, привыкли.

Nerdtron
источник
3

мой ls.bat был ниже

@dir %*

который может передавать cli args

ls /b
ls /w

поместите его в% windir% или в любой каталог в вашей переменной% PATH%.

Только убедитесь, что вы сохранили файл в кодировке ANSI :)

IlPADlI
источник
2

Рекомендую следующий рецепт.

  1. Используйте DOSKEYи, $*чтобы создать свою lsкоманду.
  2. Сделайте команду постоянной, записав ее в файл .bat / .cmd и добавив путь к файлу в реестр.

Например, ваша команда может выглядеть
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*полезной для команд, которые принимают аргументы. Вот, например, мне нравится уметь делать sublime my_code.c.

Реестр для cmd находится в HKEY_CURRENT_USER -> Software -> Microsoft -> Command Processor. Создайте запись со строковым значением AutoRun с полным путем к файлу (а не к папке, содержащей его), например %USERPROFILE%\custom_command.cmd. Тогда каждый раз при запуске cmd ваша команда будет загружаться!

Вы также можете добавить больше полезных вещей в командный файл. См. Здесь образец шаблона.

Аргайл
источник
2

Другим решением , которое работало для меня является использование UnxUtils , который добавляет несколько утилит из исполняемых файлов ( в том числе ls, sedи grep).

Для использования: скачать исходный код . Разархивируйте. Добавьте UnxUtils\usr\local\wbinпуть к переменной Windows PATH. Запустите новый экземпляр CMD.

птица
источник
0

Конечно, ls не будет работать как команда unix для пакетов. Если вы отметите% 1 для -l или -a и т. Д. И все их комбинации, это сработает ...

docowhocool
источник
0

Вы можете следовать этому руководству: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : перейдите /K path/to/custom/init_cmd.batк вашей команде "запуск оболочки".

Я использую ConsoleZ в моей оболочках обертки, так что в моем случае я могу найти вариант установки в «закладках», то я поставил оболочки пути , "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" как это .

Где C:\cmd_init.batпакетный сценарий, содержащий мои макросы, вот что я бы сделал:

@echo off

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

Извините за форматирование и другие ошибки, я отвечаю здесь впервые. Я надеюсь, что это помогает!

jred_kai
источник
0

Тот, кто использует подсистему Linux для Windows, может позвонить lsиз Linux bash. Следующая команда создает lsкоманду в System32:

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

(Сначала должна быть включена / установлена ​​функция подсистемы Linux)

А. Маркоци
источник
-2

Вот мой исходный код C # и двоичный файл .

Просто добавьте куда-нибудь ls.exe и добавьте путь к переменной окружения path.

user3880586
источник
Бинарный файл не нужен. Просто используйте символическую ссылку или файл bat.
Christopher Schneider