Làm thế nào để tạo ls trong cửa sổ lệnh nhắc nhở?


114

Tôi muốn sử dụng ls trong dấu nhắc lệnh của windows và làm cho nó chạy lệnh dir.

Làm thế nào tôi có thể làm điều đó?


4
Một số câu trả lời khá thú vị, nhưng chính xác thì lệnh 'dir' là gì?
Matt Donnan

3
@MattDonnan Tôi chỉ quen và tôi làm khuôn mặt hài hước khi tôi làm nó trên cửa sổ. Không còn nữa ^^
aF.

1
@DavidHeffernan vì nó không tồn tại trong windows?
aF.

1
Chắc chắn rồi. Tôi dùng nó mỗi ngày.
David Heffernan

1
@aF. Tôi đang sử dụng Windows 7, nhưng tôi chạy trên mọi phiên bản Windows. Tôi không nói rằng Windows đi kèm với ls, chỉ là nó là mã nguồn mở và có các cổng Windows tốt, thì việc chạy nó trên Windows là rất nhỏ. Nhìn vào GnuWin32.
David Heffernan

Câu trả lời:


117

Bạn có thể:

  • tạo một tệp hàng loạt được gọi ls.batvà chỉ chứa dirlệnh
  • thêm thư mục nơi ls.battệp tồn tại vào PATHbiến môi trường của bạn

Sau đó, bạn có thể thực thi lstừ một dấu nhắc lệnh.


8
tại sao không đặt ls.bat trong thư mục system32, do đó bạn không cần phải thêm PATH
David天宇Wong

2
@David 天宇 Wong, rất có thể người dùng không có quyền ghi vào thư mục đó.
hmjd

2
điều này vẫn hoạt động nếu bạn sử dụng nó với args ls dir:? Tôi nghĩ rằng bạn sẽ cần phải sửa đổi ls.batđể xử lý args ... hoặc bạn có thể thử bí danh: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius

Tôi thích: @echo off \ ndir / w% 1% để đến gần hơn với định dạng ls
mrcrowl

câu trả lời xuất sắc, nó không phải là có thể bình luận về ;-) này
Bamboomy

248

Bạn có thể giải quyết câu hỏi này bằng một lệnh đơn giản:

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

Đảm bảo bạn chạy cmd.exevới tư cách quản trị viên trước tiên nếu bạn đang ở trên vista trở lên


14
Tôi ước tôi có thể đánh giá điều này nhiều hơn một lần. Làm việc tuyệt vời.
MrHappyAs suyễn

4
Điều này tốt hơn vì bạn vẫn có thể sử dụng các tùy chọn dir.
ajon

17
dir %*Thay vào đó, tôi khuyên bạn nên sử dụng để cho phép bất kỳ số lượng đối số dòng lệnh nào được chuyển đến dir đến ls.bat. Nếu không, bằng cách sử dụng dir %1, tối đa bạn chỉ có thể sử dụng một đối số khi sử dụng tập lệnh ls.
Adaline Simonian

2
@Vartan, thật tiếc khi nhận xét của bạn là bình luận đầu tiên dưới ngưỡng "hiển thị thêm". Hy vọng rằng @secghost sẽ thấy điều này và sửa đổi câu trả lời của họ vào một ngày nào đó. Tôi muốn nói thêm rằng việc làm @dir %*đó cũng sẽ loại bỏ dòng thừa để nó thậm chí còn giống vớidir
Captain Man

1
@CaptainMan Ồ, vâng! Hoàn toàn quên mất @; bit cú pháp tiện lợi để sử dụng để tránh một mớ hỗn độn đầu ra. Mặc dù vậy, sẽ dễ dàng hơn rất nhiều nếu Windows tương thích với POSIX. Ít nhất chúng ta có thể mơ ước.
Adaline Simonian

36

Đó là một câu hỏi cũ nhưng cho kỷ lục:

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

Cung cấp cho bạn ls và nhiều hơn nữa!


7
+1 ls *dir *đừng làm điều tương tự, vì vậy dir răng cưa là một chiếc quần dài.
Pete Kirkham

2
Đây là câu trả lời tốt nhất. Bỏ qua biểu quyết và làm điều này.
con nhím mất trí nhớ

đừng quên thêm C:\Program Files (x86)\GnuWin32\binvào đường dẫn của bạn
omikes

18

Cách dễ nhất mà tôi đã tìm thấy là:

  1. Cài đặt Git cho Windows
  2. Thêm binthư mục của Git vào biến Path của bạn. Của tôi được đặt tại C:\Program Files\Git\usr\bin.
  3. Bắt đầu một dấu nhắc lệnh và tận hưởng lstất cả vinh quang của nó.

3
Đề xuất tuyệt vời cung cấp quyền truy cập vào chức năng đầy đủ của lsvà tất cả các đối số tùy chọn của nó. Chỉ cần một bản cập nhật nhỏ, tôi đã cài đặt phiên bản mới nhất của git cho các cửa sổ và các ls.exe bây giờ có thể được tìm thấy trong C: \ Program Files \ Git \ usr \ bin
phil

Có, hoặc chỉ cần khởi động bash.exe trong thư mục git (thay vì cmd) và tận hưởng ~ shell hoàn chỉnh (với ls).
Johan

bash git là gớm ghiếc, tôi giống như lựa chọn con đường
omikes

16

Tôi có một giải pháp nhưng nó bẩn:

Tạo một tệp có tên ls.bat chỉ chứa "dir".

Đặt nó vào C: \ windows \ system32 (hoặc bất kỳ thư mục nào trong PATH env var).

Điều đó (nên) hoạt động!

Chỉnh sửa: Một cái gì đó nhất quán hơn: /superuser/49170/create-an-alias-in-windows-xp


9

Nếu bạn đã cài đặt Node.js trên hệ thống của mình, bạn có thể cài đặt nó từ Cash , một thư viện mà tôi đã viết cho các lệnh Linux trên Windows:

npm install cash-ls -g

giải pháp tốt nhất cho người dùng linux trên windows , npm install cash-global -g. Cũng sẽ rất tuyệt nếu thêm ls -lvào dưới dạng ll(LL).
user2925656 Ngày

Người bạn đời của nó là vị cứu tinh
HebleV

6

Dấu nhắc lệnh Windows cho Vista / 7 sẽ cho phép các liên kết tượng trưng NTFS, chạy cmd.exe với tư cách quản trị viên, sau đó:

mklink ls %System%\dir.exe

Sau đó, thiết lập biến môi trường PATH của bạn để bao gồm vị trí của liên kết bạn vừa tạo.

Nếu bạn muốn nhiều hơn chỉ lệnh 'ls', bạn nên xem xét cygwin .

EDIT- Chỉ cần nhận ra dir.exekhông phải là một chương trình riêng biệt, vì vậy điều này không thực sự hoạt động. Nhưng mklinkvà cygwin là những điều tốt cần biết.


+1, tôi quên nói đó là windows xp nhưng điều đó tốt cho windows vista / 7 :)
aF.

4

+1 trên bài đăng ở trên đề xuất cài đặt git cho windows và thêm bin thư mục vào các biến đường dẫn của bạn.

Một cách khác, tôi có touch, ls và rất nhiều lệnh UNIX khác hoạt động trong cmd.exe trên máy Windows 8 và Windows 7 của tôi.

Vào trang web sau để cài đặt Cygwin

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

Cài đặt phiên bản 32 hoặc 64 bit cho hệ thống của bạn. Các gói và cài đặt mặc định phải bao gồm những gì bạn cần để bạn không phải thay đổi bất cứ điều gì khi vào màn hình gói.

Sau khi cài đặt, sao chép đường dẫn thư mục Cygwin vào các biến đường dẫn môi trường của bạn. Ví dụ; nếu bạn đã cài đặt cygwin vào C: \ Cygwin, bạn sẽ thêm phần sau vào các biến đường dẫn hệ thống môi trường của mình:

; C: \ Cygwin \ bin

Trên hệ thống của mình, tôi đã cài đặt phiên bản 64bit và tên thư mục và đường dẫn mặc định là C: \ cygwin64. Vì vậy, tôi đã thêm phần sau vào các biến đường dẫn môi trường hệ thống của mình:

; C: \ cygwin64 \ bin

Khởi động lại thiết bị đầu cuối của bạn nếu nó đang mở. Sau đó gõ ls và bạn sẽ thấy danh sách thư mục.

Xem phần sau nếu bạn không quen với việc đặt các biến môi trường PATH:

Liên kết siêu người dùng 1

Liên kết siêu người dùng 2



3

bạn cũng có thể sử dụng cygwin và chỉ cần sử dụng lệnh ls trực tiếp cùng với tất cả các công cụ dòng lệnh unix khác mà bạn có thể quen dùng.


3

ls.bat của tôi ở bên dưới

@dir %*

điều đó có thể chuyển các args cli

ls /b
ls /w

đặt nó trong% windir% hoặc bất kỳ thư mục nào trong biến% PATH% của bạn.

Chỉ cần đảm bảo bạn lưu tệp bằng mã hóa ANSI :)


2

Tôi đề nghị các công thức sau đây.

  1. Sử dụng DOSKEY$*để tạols lệnh .
  2. Làm cho lệnh liên tục bằng cách ghi nó vào tệp .bat / .cmd và thêm đường dẫn của tệp vào sổ đăng ký.

Ví dụ, lệnh của bạn có thể trông giống như
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*hữu ích cho các lệnh sử dụng đối số. Ví dụ, ở đây tôi muốn có thể làmsublime my_code.c .

Sổ đăng ký cho cmd có tại HKEY_CURRENT_USER -> Phần mềm -> Microsoft -> Bộ xử lý lệnh. Tạo một mục nhập có giá trị chuỗi được gọi là AutoRun với đường dẫn đầy đủ của tệp (không phải thư mục chứa) chẳng hạn như %USERPROFILE%\custom_command.cmd. Sau đó mỗi lần cmd được chạy, lệnh của bạn sẽ được tải!

Bạn cũng có thể thêm nhiều nội dung hữu ích vào tệp loạt. Xem ở đây để biết mẫu ví dụ.


2

Một giải pháp mà làm việc cho tôi là để sử dụng UnxUtils , có thêm nhiều tiện ích từ các tập tin thực thi (bao gồm ls, sedgrep ).

Để sử dụng: tải xuống mã nguồn . Giải nén. Thêm UnxUtils\usr\local\wbinđường dẫn đến biến Windows PATH. Bắt đầu một phiên bản CMD mới.


0

Chắc chắn ls sẽ không hoạt động như một lệnh unix cho các lô. Nếu bạn chọn% 1 cho -l hoặc -a, v.v. và tất cả các kết hợp của chúng, nó sẽ hoạt động ...


0

Bạn có thể làm theo hướng dẫn này: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : vượt qua/K path/to/custom/init_cmd.bat tới lệnh "khởi động trình bao" của bạn.

Tôi đang sử dụng ConsoleZ làm trình bao bọc trình bao của mình, vì vậy trong trường hợp của tôi, tôi có thể tìm thấy tùy chọn thiết lập trong "tab", sau đó tôi đặt đường dẫn trình bao thành "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" như thế này .

Trong trường hợp C:\cmd_init.batlà tập lệnh batch chứa macro của tôi, đây là những gì tôi sẽ đi cho:

@echo off

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

Xin lỗi vì định dạng và những sai sót khác, đây là lần đầu tiên tôi trả lời ở đây. Tôi hy vọng nó sẽ giúp!


0

Ai đó sử dụng Hệ thống con Linux cho Windows có thể gọi lstừ hệ điều hành Linux. Lệnh sau tạo lsLệnh trong System32:

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

(Tính năng Hệ thống con Linux phải được bật / cài đặt trước)


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.