Bagaimana cara membuat ls di command prompt windows?

114

Saya ingin menggunakan ls di command prompt windows dan membuatnya menjalankan perintah dir.

Bagaimana saya bisa melakukan itu?

aF.
sumber
4
Beberapa jawabannya cukup menarik, tapi apa sebenarnya yang salah dengan perintah 'dir'?
Matt Donnan
3
@MattDonnan Saya hanya terbiasa ls dan saya membuat wajah lucu ketika saya membuatnya di windows. Tidak lagi ^^
aF.
1
@DavidHeffernan karena tidak ada di windows?
aF.
1
Tentu saja. Aku menggunakannya setiap hari.
David Heffernan
1
@tokopedia Saya menggunakan Windows 7, tetapi saya menjalankan ls pada versi Windows apa pun. Saya tidak mengatakan bahwa Windows hadir dengan ls, hanya saja itu open source, dan memiliki port Windows yang bagus, itu sepele untuk menjalankannya di Windows. Lihat GnuWin32.
David Heffernan

Jawaban:

117

Anda bisa:

  • membuat file batch yang dipanggil ls.batdan berisi dirperintah saja
  • tambahkan direktori tempat ls.batfile tersebut berada ke PATHvariabel lingkungan Anda

Anda kemudian dapat mengeksekusi lsdari command prompt.

hmjd
sumber
8
mengapa tidak meletakkan ls.bat di folder system32 sehingga Anda tidak perlu menambahkan PATH
David 天宇 Wong
2
@David 天宇 Wong, sangat mungkin pengguna tidak memiliki akses tulis ke folder itu.
hmjd
2
tidak bekerja masih ini jika Anda menggunakannya dengan args: ls dir? Saya pikir Anda perlu memodifikasi ls.batto handle args ... atau Anda dapat mencoba alias: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius
Saya suka: @echo off \ ndir / w% 1% untuk lebih dekat dengan format ls
mrcrowl
jawaban yang sangat bagus, seharusnya tidak mungkin untuk mengomentari ini ;-)
Bamboomy
248

Anda dapat menyelesaikan pertanyaan ini dengan satu perintah sederhana:

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

Pastikan Anda menjalankan cmd.exesebagai admin terlebih dahulu jika Anda menggunakan vista dan lebih tinggi

secghost
sumber
14
Saya berharap saya dapat menilai ini lebih dari sekali. Bekerja dengan luar biasa.
MrHappyAsthma
4
Ini lebih baik karena Anda masih bisa menggunakan opsi dir.
ajon
17
Saya akan merekomendasikan menggunakan dir %*sebagai gantinya untuk mengizinkan sejumlah argumen baris perintah untuk diteruskan ke dir melalui ls.bat. Jika tidak, dir %1paling banyak menggunakan , Anda hanya dapat menggunakan satu argumen saat menggunakan skrip ls.
Adaline Simonian
2
@Vartan sayang sekali bahwa komentar Anda adalah yang pertama di bawah ambang batas "tampilkan lebih banyak". Semoga @secghost melihat ini dan mengubah jawaban mereka suatu hari nanti. Saya ingin menambahkan bahwa melakukan @dir %*juga akan menghapus baris tambahan sehingga lebih identik dengandir
Captain Man
1
@CaptainMan Oh, ya! Benar-benar lupa tentang @; sintaks yang bagus untuk digunakan untuk menghindari kekacauan output. Padahal, akan jauh lebih mudah jika Windows sesuai dengan POSIX. Setidaknya kita bisa bermimpi.
Adaline Simonian
36

Ini pertanyaan lama tapi sebagai catatan:

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

Memberi Anda ls dan banyak lagi!

sipi
sumber
7
+1 ls *dan dir *jangan lakukan hal yang sama, jadi aliasing dir agak sedikit.
Pete Kirkham
2
Ini jawaban terbaik. Abaikan pemungutan suara dan lakukan ini.
landak gila
jangan lupa untuk menambahkan C:\Program Files (x86)\GnuWin32\binke jalur Anda
omikes
18

Cara termudah yang saya temukan adalah:

  1. Instal Git untuk Windows
  2. Tambahkan bindirektori Git ke variabel Path Anda. Milik saya terletak di C:\Program Files\Git\usr\bin.
  3. Mulai prompt perintah dan nikmati lssemua kemuliaannya.
varagrawal
sumber
3
Saran bagus yang memberikan akses ke fungsionalitas penuh lsdan semua argumen opsionalnya. Hanya sedikit pembaruan, saya telah menginstal versi terbaru git untuk windows dan ls.exe sekarang dapat ditemukan di C: \ Program Files \ Git \ usr \ bin
phil
Ya, atau mulai saja bash.exe di folder git (bukan cmd) dan nikmati ~ shell lengkap (dengan ls).
Johan
git bash mengerikan, saya suka opsi jalur
mengabaikan
16

Saya punya solusi tetapi kotor:

Buat file bernama ls.bat yang hanya berisi "dir".

Taruh di C: \ windows \ system32 (atau direktori apa pun di PATH env var).

Itu (harus) berhasil!

Sunting: Sesuatu yang lebih konsisten: /superuser/49170/create-an-alias-in-windows-xp

STM
sumber
9

Jika Anda menginstal Node.js di sistem Anda, Anda dapat menginstalnya dari Cash , pustaka yang saya tulis untuk perintah Linux di Windows:

npm install cash-ls -g
dthree
sumber
solusi terbaik yang pernah ada untuk pengguna linux di windows , npm install cash-global -g. Akan sangat bagus untuk ditambahkan ls -lsebagai ll(LL) juga.
pengguna2925656
Ini adalah pasangan penyelamat
HebleV
6

Prompt perintah Windows untuk Vista / 7 akan mengizinkan tautan simbolik NTFS, jalankan cmd.exe sebagai administrator kemudian:

mklink ls %System%\dir.exe

Kemudian atur variabel lingkungan PATH Anda untuk menyertakan lokasi tautan yang baru saja Anda buat.

Jika Anda menginginkan lebih dari sekedar perintah 'ls', Anda harus melihat cygwin .

EDIT- Baru saja disadari dir.exebukanlah program terpisah, jadi ini tidak benar-benar berfungsi. Tapi mklinkdan cygwin adalah hal yang baik untuk diketahui.

buster
sumber
+1, saya lupa mengatakan itu adalah windows xp tapi itu bagus untuk windows vista / 7 :)
aF.
4

+1 pada posting di atas menyarankan untuk menginstal git untuk windows dan menambahkan bin direktori ke variabel jalur Anda.

Cara lain saya mendapat sentuhan, ls, dan banyak perintah UNIX lainnya yang bekerja di cmd.exe pada mesin Windows 8 dan Windows 7 saya.

Buka situs berikut untuk menginstal Cygwin

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

Instal versi 32 atau 64 bit untuk sistem Anda. Pengaturan dan paket default harus menyertakan apa yang Anda butuhkan sehingga Anda tidak perlu mengubah apa pun setelah Anda masuk ke layar paket.

Setelah instalasi, salin jalur folder Cygwin ke variabel jalur lingkungan Anda. Sebagai contoh; jika Anda menginstal cygwin ke C: \ Cygwin, Anda akan menambahkan yang berikut ini ke variabel jalur sistem lingkungan Anda:

; C: \ Cygwin \ bin

Di sistem saya, saya menginstal versi 64bit dan nama folder dan jalur default adalah C: \ cygwin64. Jadi saya menambahkan yang berikut ini ke variabel jalur lingkungan sistem saya:

; C: \ cygwin64 \ bin

Mulai ulang terminal Anda jika terbuka. Kemudian ketik ls dan Anda akan melihat daftar direktori.

Lihat berikut ini jika Anda tidak terbiasa dengan pengaturan variabel lingkungan PATH:

Tautan Pengguna Super 1

Tautan Pengguna Super 2

jtlindsey
sumber
3

Jika Anda hanya ingin agar cmd dikenali lssebagai alias dir, Anda dapat menggunakan doskeyperintah (dari jawaban ini di superuser ).

Ini tidak mengubah penanganan parameter baris perintah asli dari perintah dir.

devio
sumber
3

Anda juga dapat menggunakan cygwin dan hanya menggunakan perintah ls secara langsung bersama dengan semua alat baris perintah unix lainnya yang mungkin biasa Anda gunakan.

Nerdtron
sumber
3

pantatku ada di bawah

@dir %*

yang dapat mentransfer argumen klien

ls /b
ls /w

letakkan di% windir% atau direktori manapun di variabel% PATH% Anda.

Pastikan Anda menyimpan file dengan pengkodean ANSI :)

IlPADlI
sumber
2

Saya merekomendasikan resep berikut.

  1. Gunakan DOSKEYdan $*untuk membuat lsperintah Anda .
  2. Buat perintah tetap ada dengan merekamnya dalam file .bat / .cmd dan tambahkan jalur file ke registri.

Misalnya, perintah Anda mungkin terlihat
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*berguna untuk perintah yang menggunakan argumen. Misalnya, di sini saya ingin bisa melakukan sublime my_code.c.

Registri untuk cmd ada di HKEY_CURRENT_USER -> Software -> Microsoft -> Command Processor. Buat entri bernilai string yang disebut AutoRun dengan jalur lengkap file (bukan folder yang berisi) seperti %USERPROFILE%\custom_command.cmd. Kemudian setiap kali cmd dijalankan, perintah Anda akan dimuat!

Anda juga dapat menambahkan lebih banyak barang berguna ke file batch. Lihat di sini untuk contoh template.

Argyll
sumber
2

Solusi lain yang bekerja untuk saya adalah untuk penggunaan UnxUtils , yang menambahkan beberapa utilitas dari file executable (termasuk ls, sed, dan grep).

Untuk menggunakan: unduh kode sumber . Buka zip. Tambahkan UnxUtils\usr\local\wbinjalur ke variabel PATH Windows. Mulai instance CMD baru.

Burung
sumber
0

Tentunya ls tidak akan berfungsi sebagai perintah unix untuk batch. Jika Anda mencentang% 1 untuk -l atau -a dll. Dan semua kombinasinya, ini akan berhasil ...

docowhocool
sumber
0

Anda dapat mengikuti panduan ini: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : berikan /K path/to/custom/init_cmd.batke perintah "shell startup".

Saya menggunakan ConsoleZ sebagai pembungkus shell, jadi dalam kasus saya, saya dapat menemukan opsi pengaturan di "tab", lalu saya menyetel jalur shell menjadi "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" seperti ini .

Di mana C:\cmd_init.batskrip batch yang berisi makro saya, inilah yang akan saya lakukan:

@echo off

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

Maaf atas format dan kesalahan lainnya, ini pertama kalinya saya menjawab disini. Saya harap ini membantu!

jred_kai
sumber
0

Seseorang yang menggunakan Subsistem Linux untuk Windows dapat memanggil lsdari bash Linux. Perintah berikut membuat lsPerintah di System32:

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

(Fitur Linux Subsystem harus diaktifkan / diinstal terlebih dahulu)

A. Markóczy
sumber
-2

Ini adalah kode sumber dan biner C # saya .

Cukup tambahkan ls.exe di suatu tempat dan tambahkan jalur ke variabel lingkungan jalur.

pengguna3880586
sumber
Biner tidak diperlukan. Cukup gunakan file symlink atau bat.
Christopher Schneider