วิธีสร้าง ls ในพรอมต์คำสั่ง windows


114

ฉันต้องการใช้ ls ในพรอมต์คำสั่งของ windows และเรียกใช้คำสั่ง dir

ฉันจะทำเช่นนั้นได้อย่างไร?


4
คำตอบบางคำค่อนข้างน่าสนใจ แต่มีอะไรผิดปกติกับคำสั่ง 'dir'?
Matt Donnan

3
@MattDonnan ฉันคุ้นเคยกับ ls และฉันทำหน้าตลก ๆเมื่อฉันทำมันบน windows ไม่มีอีกแล้ว ^^
aF.

1
@DavidHeffernan เพราะมันไม่มีใน windows?
ก.

1
แน่นอนว่ามันไม่ ฉันใช้มันทุกวัน
David Heffernan

1
@aF ฉันใช้ Windows 7 แต่ฉันใช้ ls บน Windows ทุกเวอร์ชัน ฉันไม่ได้บอกว่า Windows มาพร้อมกับ ls เพียงแค่ว่ามันเป็นโอเพ่นซอร์สและการมีพอร์ต Windows ที่ดีมันเป็นเรื่องเล็กน้อยที่จะรันบน Windows ดู GnuWin32
David Heffernan

คำตอบ:


117

คุณสามารถ:

  • สร้างไฟล์แบตช์ที่เรียกls.batและมีdirคำสั่งเท่านั้น
  • เพิ่มไดเร็กทอรีที่มีls.batไฟล์ให้กับPATHตัวแปรสภาวะแวดล้อมของคุณ

จากนั้นคุณสามารถดำเนินการlsจากพรอมต์คำสั่ง


8
ทำไมไม่ใส่ ls.bat ในโฟลเดอร์ system32 จะได้ไม่ต้องเพิ่ม PATH
David 天宇 Wong

2
@David 天宇 Wong เป็นไปได้มากที่ผู้ใช้อาจไม่มีสิทธิ์เขียนโฟลเดอร์นั้น
hmjd

2
ยังใช้งานได้ls dirหรือไม่ถ้าคุณใช้กับ args:? ฉันคิดว่าคุณจะต้องแก้ไขls.batเพื่อจัดการ args ... หรือคุณอาจลองใช้นามแฝง: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius

ฉันชอบ: @echo off \ ndir / w% 1% เพื่อเข้าใกล้รูปแบบ ls มากขึ้น
mrcrowl

คำตอบที่ดีเยี่ยมไม่ควรแสดงความคิดเห็นเกี่ยวกับเรื่องนี้ ;-)
Bamboomy

248

คุณสามารถแก้คำถามนี้ได้ด้วยคำสั่งง่ายๆ:

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

ตรวจสอบให้แน่ใจว่าคุณทำงานcmd.exeในฐานะผู้ดูแลระบบก่อนหากคุณใช้ vista ขึ้นไป


14
ฉันหวังว่าฉันจะให้คะแนนมากกว่าหนึ่งครั้ง ทำงานได้อย่างยอดเยี่ยม
MrHappyAsthma

4
สิ่งนี้ดีกว่าเพราะคุณยังสามารถใช้ตัวเลือก dir ได้
อาโจ

17
ฉันขอแนะนำให้ใช้dir %*แทนเพื่ออนุญาตให้ส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งจำนวนเท่าใดก็ได้ไปยัง dir ผ่าน ls.bat มิฉะนั้นการใช้dir %1อย่างมากคุณสามารถใช้อาร์กิวเมนต์เดียวเมื่อใช้สคริปต์ ls
Adaline Simonian

2
@Vartan เป็นเรื่องน่าเสียดายที่ความคิดเห็นของคุณอยู่ในอันดับแรกต่ำกว่าเกณฑ์ "แสดงเพิ่มเติม" หวังว่า @secghost จะเห็นสิ่งนี้และแก้ไขคำตอบในสักวันหนึ่ง ฉันต้องการเพิ่มว่าการทำเช่น@dir %*นี้จะลบบรรทัดพิเศษออกไปด้วยเพื่อให้เหมือนกันมากขึ้นdir
Captain Man

1
@CaptainMan โอ้เย้! ลืมไปโดยสิ้นเชิง@; ไวยากรณ์ที่ดีที่จะใช้เพื่อหลีกเลี่ยงความยุ่งเหยิงของผลลัพธ์ แม้ว่ามันจะง่ายกว่ามากถ้า Windows เป็นไปตาม POSIX อย่างน้อยเราก็ได้ฝัน
Adaline Simonian

36

เป็นคำถามเก่า แต่สำหรับบันทึก:

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

ให้คุณและอีกมากมาย!


7
+1 ls *และdir *อย่าทำแบบเดียวกันดังนั้น aliasing dir จึงเป็นกางเกงเล็กน้อย
Pete Kirkham

2
นี่คือคำตอบที่ดีที่สุด ละเว้นการลงคะแนนและทำสิ่งนี้
เม่นแคระ

อย่าลืมเพิ่มC:\Program Files (x86)\GnuWin32\binเส้นทางของคุณ
omikes

18

วิธีที่ง่ายที่สุดที่ฉันพบคือ:

  1. ติดตั้งGit สำหรับ Windows
  2. เพิ่มbinไดเร็กทอรีของ Git ในตัวแปร Path ของคุณ เหมืองตั้งอยู่ในC:\Program Files\Git\usr\bin.
  3. เริ่มพรอมต์คำสั่งและเพลิดเพลินไปกับlsความรุ่งโรจน์

3
ข้อเสนอแนะที่ยอดเยี่ยมที่ช่วยให้สามารถเข้าถึงฟังก์ชันการทำงานเต็มรูปแบบlsและทั้งหมดนี้เป็นอาร์กิวเมนต์เสริม เพียงอัปเดตเล็กน้อยฉันได้ติดตั้ง git เวอร์ชันล่าสุดสำหรับ windows แล้วและตอนนี้ls.exeสามารถพบได้ใน C: \ Program Files \ Git \ usr \ bin
phil

ใช่หรือเพียงแค่เริ่ม bash.exe ในโฟลเดอร์ git (แทนที่จะเป็น cmd) และเพลิดเพลินไปกับ ~ complete shell (พร้อม ls)
Johan

git bash เป็นเรื่องน่ากลัวฉันชอบตัวเลือกเส้นทาง
omikes

16

ฉันมีวิธีแก้ปัญหา แต่มันสกปรก:

สร้างไฟล์ชื่อ ls.bat ที่มีเฉพาะ "dir"

วางไว้ใน C: \ windows \ system32 (หรือไดเร็กทอรีใด ๆ ใน PATH env var)

ที่ (ควร) ได้ผล!

แก้ไข: สิ่งที่สอดคล้องกันมากขึ้น: /superuser/49170/create-an-alias-in-windows-xp


9

หากคุณติดตั้งNode.jsในระบบของคุณคุณสามารถติดตั้งได้จากCashซึ่งเป็นไลบรารีที่ฉันเขียนสำหรับคำสั่ง Linux บน Windows:

npm install cash-ls -g

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ไม่ใช่โปรแกรมแยกต่างหากดังนั้นจึงไม่ได้ผลจริงๆ แต่mklinkcygwin เป็นสิ่งที่ดีที่ควรรู้


+1 ฉันลืมบอกว่าเป็น windows xp แต่ดีสำหรับ windows vista / 7 :)
aF

4

+1 ในโพสต์ด้านบนแนะนำให้ติดตั้ง git สำหรับ windows และเพิ่มไดเร็กทอรี bin ให้กับตัวแปรพา ธ ของคุณ

อีกวิธีหนึ่งที่ฉันได้สัมผัส 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:

ลิงก์ Superuser 1

ลิงก์ Superuser 2


3

หากคุณต้องการให้ cmd รู้จักlsเป็นนามแฝงdirคุณสามารถใช้doskeyคำสั่ง (จากคำตอบนี้ใน superuser )

สิ่งนี้ไม่เปลี่ยนการจัดการพารามิเตอร์บรรทัดคำสั่งดั้งเดิมของคำสั่ง dir


3

คุณยังสามารถใช้cygwinและใช้คำสั่ง ls ได้โดยตรงพร้อมกับเครื่องมือบรรทัดคำสั่ง unix อื่น ๆ ที่คุณอาจคุ้นเคย


3

ls.bat ของฉันอยู่ด้านล่าง

@dir %*

ที่สามารถโอน cli args

ls /b
ls /w

ใส่ไว้ใน% windir% หรือไดเร็กทอรีใด ๆ ในตัวแปร% PATH% ของคุณ

ตรวจสอบให้แน่ใจว่าคุณบันทึกไฟล์ด้วยการเข้ารหัส ANSI :)


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 เป็นต้นและชุดค่าผสมทั้งหมดจะใช้ได้ ...


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

ขออภัยสำหรับการจัดรูปแบบและความผิดพลาดอื่น ๆ นี่เป็นครั้งแรกที่ฉันตอบที่นี่ ฉันหวังว่ามันจะช่วยได้!


0

ผู้ที่ใช้ Linux Subsystem สำหรับ Windows สามารถโทรlsจาก Linux bash คำสั่งต่อไปนี้สร้างlsคำสั่งใน System32:

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

(ต้องเปิดใช้งาน / ติดตั้งคุณลักษณะ Linux Subsystem ก่อน)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.