Perintah ls Linux: daftar file, izin, ukuran, dan pengurutan
ls adalah perintah di Linux untuk menampilkan daftar file dan direktori. Opsi tambahannya menampilkan file tersembunyi, izin dan pemilik, ukuran, waktu modifikasi, serta urutan yang Anda perlukan.
Untuk pemeriksaan sehari-hari, ls -lah cukup nyaman, tetapi saat menangani nama file dengan aman dalam skrip, lebih baik menggunakan perintah seperti find daripada output yang dapat dibaca manusia dari ls.
Apa itu perintah ls?
ls adalah singkatan dari list, dan perintah ini menampilkan informasi tentang file yang ditentukan atau isi dari sebuah direktori. Dalam distribusi GNU/Linux, ls yang termasuk dalam GNU Coreutils umumnya digunakan.
Ketika dijalankan tanpa argumen, perintah ini menargetkan direktori saat ini dan, secara default, tidak menampilkan item tersembunyi yang namanya diawali dengan titik (.). Jika Anda memberikan nama direktori sebagai argumen, perintah ini akan menampilkan konten di dalam direktori tersebut, bukan direktori itu sendiri.
Sintaks Dasar
ls [opsi] ... [file atau direktori] ...
Untuk memeriksa item di direktori saat ini, jalankan sebagai berikut.
ls
Anda juga dapat menentukan direktori atau file tertentu.
ls /var/log
ls /etc/hosts
ls /etc /usr/local
Secara default, isi direktori diurutkan menurut aturan lokal saat ini. Jangan bergantung pada urutan penulisan beberapa operand untuk menentukan urutan seluruh keluaran di semua versi dan kombinasi opsi. Jika urutan antar-direktori penting, gunakan pemanggilan terpisah.
Tampilkan file tersembunyi
Tampilkan semua item dengan -a
-a atau --all menyertakan file dan direktori tersembunyi yang dimulai dengan titik. Ini juga menampilkan . yang mewakili direktori saat ini dan .. yang mewakili direktori induk.
ls -a
Kecualikan . dan .. dengan -A
-A atau --almost-all menampilkan item tersembunyi tetapi mengecualikan . dan ... Keluaran lebih ringkas saat hanya memeriksa file konfigurasi yang sebenarnya.
ls -A
Tampilkan informasi detail dengan ls -l
-l menampilkan dalam format panjang tipe file dan izin, jumlah link keras, pemilik, grup, ukuran, waktu modifikasi, dan nama.
ls -l
Satu baris keluaran tipikal terdiri dari urutan berikut.
| Item | Makna |
|---|---|
| Tipe dan Izin | Karakter tunggal untuk tipe file, dan izin baca, tulis, dan eksekusi untuk pemilik, grup, dan lainnya. |
| Jumlah Link Keras | Jumlah entri direktori yang menunjuk ke inode file. Di direktori, memiliki makna yang sedikit berbeda. |
| Pemilik | Nama atau ID pengguna dari akun pemilik file. |
| Grup | Nama atau ID grup dari grup yang file ini miliki. |
| Ukuran | Secara default, ukuran file ditampilkan dalam byte. |
| Waktu | Default-nya adalah waktu modifikasi (mtime) saat data file terakhir diubah. |
| Nama | Ini adalah nama file. Untuk tautan simbolik, target yang dituju juga dapat ditampilkan. |
Cara membaca string izin
Karakter pertama dari sebuah string yang terlihat seperti -rw-r--r-- menunjukkan jenis file, dan sembilan karakter berikutnya adalah izin untuk pemilik, grup, dan lainnya, dalam kelompok tiga karakter. r berarti izin baca, w berarti izin tulis, dan x berarti izin eksekusi.
Untuk direktori, x berarti hak menelusuri atau mencari nama di dalamnya. Bit khusus dapat ditampilkan sebagai s, S, t, atau T. Keluaran ini perlu dibaca sesuai sistem file dan kebijakan akses, termasuk ACL.
| Lokasi | Contoh | Deskripsi |
|---|---|---|
| Karakter pertama | -, d, l |
Ini adalah jenis seperti file biasa, direktori, atau tautan simbolik. |
| Karakter ke-2 hingga ke-4 | rw- |
Izin pemilik. |
| 5 sampai 7 | r-- |
Izin grup. |
| 8 sampai 10 | r-- |
Ini adalah izin untuk pengguna lain. |
Jika + atau simbol lain ditempelkan setelah string izin, ini mungkin menunjukkan bahwa ada informasi keamanan tambahan seperti Daftar Kontrol Akses (ACL). Untuk perubahan izin secara rinci, gunakan chmod, dan untuk mengubah kepemilikan, gunakan chown.
Tampilkan sebagai ID numerik dengan -n
Untuk memeriksa ID numerik alih-alih nama pengguna dan grup, gunakan -n. Ini berguna ketika pencarian nama akun lambat atau saat membandingkan ID dengan sistem lain.
ls -ln
Tampilkan ukuran file dalam format yang mudah dibaca
Tampilkan dalam satuan yang mudah dibaca dengan -h
-h memakai pangkat 1024 dengan akhiran ringkas seperti K, M, dan G. Gunakan bersama -l atau -s yang memiliki kolom ukuran; --si memakai pangkat 1000.
ls -lh
ls -lah
ls -lah sering digunakan dalam pekerjaan interaktif karena menampilkan item tersembunyi dalam format panjang.
Tampilkan ukuran blok yang dialokasikan dengan -s
-s menampilkan ruang yang dialokasikan dalam satuan blok, bukan jumlah byte logis file. Satuan blok dapat dipengaruhi opsi dan variabel lingkungan; -h menyesuaikan tampilannya. File sparse, kompresi, dan sistem file dapat membuat alokasi berbeda dari ukuran logis.
ls -sh
ls -lsh
Untuk menjumlahkan total ruang yang ditempati oleh seluruh direktori, du lebih cocok daripada ls.
Mengubah urutan pengurutan
Secara default, ls mengurutkan nama file sesuai dengan aturan pengurutan karakter lokal saat ini. Ini dapat diubah untuk mengurutkan berdasarkan waktu, ukuran, ekstensi, atau versi tergantung pada tujuan.
Urutkan berdasarkan waktu modifikasi dengan -t
ls -lt
ls -lat
-t menampilkan item mulai dari yang paling baru dimodifikasi secara default. Ini berguna untuk menemukan log atau file hasil yang baru dibuat.
Urutkan berdasarkan ukuran dengan -S
ls -lhS
-S mengurutkan berdasarkan ukuran file secara menurun. Ukuran yang ditampilkan dalam daftar direktori bukanlah jumlah isi, jadi gunakan du untuk membandingkan penggunaan disk.
Mengurutkan secara terbalik dan berdasarkan versi dengan -r, -v
ls -ltr
ls -1v
-r membalik urutan pengurutan saat ini. Oleh karena itu, ls -ltr menampilkan entri dari yang terlama ke yang terbaru. -v melakukan pengurutan versi yang mempertimbangkan bagian numerik, sehingga file2 berada sebelum file10.
Membedakan direktori dan menampilkan direktori itu sendiri
Menambahkan indikator jenis dengan -F
-F atau --classify menambahkan indikator tipe seperti / ke direktori, * ke file yang dapat dieksekusi, dan @ ke tautan simbolik.
ls -F
Indikator ini bukan bagian dari nama file yang sebenarnya. Saat menentukan tipe dalam skrip, jangan hapus karakter-karakter ini; gunakan operator uji file atau find sebagai gantinya.
Melihat direktori itu sendiri, bukan isinya, dengan -d
Jika Anda menentukan nama direktori, secara default akan menampilkan isinya. Untuk melihat izin dan waktu dari entri direktori itu sendiri, gunakan -d bersamaan.
ls -ld /var/log
ls -d */
Pada pengaturan Bash umum, */ diperluas menjadi direktori yang tidak tersembunyi dan dapat mencakup tautan simbolik ke direktori. Opsi seperti dotglob dan nullglob mengubah hasilnya. Jika tidak ada kecocokan pada pengaturan default, pola dapat diteruskan secara harfiah dan menghasilkan kesalahan.
Mengumpulkan direktori terlebih dahulu
ls --group-directories-first
Di GNU ls, direktori dapat dikelompokkan sebelum file. Opsi ini adalah ekstensi GNU, jadi Anda harus memeriksa apakah didukung di sistem mirip Unix lainnya.
Melihat subdirektori secara rekursif
Contoh dengan /etc dan /var/log memakai jalur Linux yang umum; sebagian file mungkin tidak dapat dibaca oleh akun Anda. Untuk mencoba tanpa memindai konfigurasi sistem, ganti operand dengan direktori uji sendiri.
ls -R /etc
-R atau --recursive mengikuti subdirektori dan terus menampilkan isinya. Jika pohonnya besar, output bisa sangat panjang dan banyak kesalahan izin mungkin terjadi.
Untuk menemukan berkas dengan nama atau kondisi tertentu, lebih efisien menggunakan find daripada memindai seluruh daftar secara visual.
find /etc -type f -name '*.conf'
Memilih jenis waktu dan format tampilan
Waktu Akses dan Waktu Perubahan Status
ls -l secara default menampilkan waktu modifikasi (mtime). -u menampilkan waktu akses (atime), dan -c menampilkan waktu perubahan metadata status (ctime) atau menggunakannya sebagai kriteria penyortiran.
ls -lu
ls -lc
ls -ltu
ls -ltc
Dengan -l, -u memilih atime untuk ditampilkan; menambahkan -t juga mengurutkannya. Demikian pula -lc menampilkan ctime dan -ltc mengurutkannya. Ctime bukan waktu pembuatan, melainkan waktu perubahan status inode, seperti izin atau pemilik. Pembaruan atime dan ketersediaan stempel waktu bergantung pada sistem file serta opsi pemasangan.
Menggunakan Format Tanggal yang Konsisten
Dengan GNU ls, Anda dapat menggunakan --time-style untuk memilih format tanggal panjang.
ls -l --time-style=long-iso
ls -l --time-style=full-iso
ls -l --time-style='+%Y-%m-%d %H:%M:%S'
Hasil keluaran dapat dipengaruhi oleh locale dan variabel lingkungan TZ. Untuk laporan yang ditujukan untuk perbandingan manusia, disarankan untuk mengatur zona waktu dan format tampilan secara bersamaan.
Metode Tampilan Warna dan Nama File
Menggunakan Warna
ls --color=auto
--color=auto menggunakan warna berdasarkan tipe dan ekstensi file ketika keluarannya adalah terminal. Banyak distribusi menerapkan opsi ini secara default sebagai alias untuk ls.
type ls
alias ls
Warna dipengaruhi oleh variabel lingkungan LS_COLORS dan pengaturan dircolors. Saat menyimpan ke file atau meneruskan ke perintah lain, Anda dapat menggunakan --color=never untuk menghindari penyertaan karakter kontrol yang tidak perlu.
Nama file dengan spasi dan karakter khusus
ls mungkin menampilkan nama file yang mengandung spasi atau karakter kontrol dalam bentuk dikutip atau di-escape tergantung terminal dan opsi. Anda tidak boleh menganggap bahwa string yang ditampilkan selalu sesuai dengan nama file sebenarnya.
ls -Q
ls --quoting-style=shell-escape
-Q membungkus nama file dengan tanda kutip ganda. --quoting-style adalah ekstensi GNU, berguna bagi manusia untuk mengidentifikasi karakter khusus tetapi bukan pengganti format pemrosesan otomatis yang aman.
Kombinasi yang sering digunakan
| Perintah | Tujuan |
|---|---|
ls -la |
Menampilkan informasi rinci termasuk item tersembunyi. |
ls -lah |
Menampilkan item tersembunyi dan informasi rinci dalam satuan ukuran yang mudah dibaca. |
ls -lhS |
Menampilkan informasi rinci dimulai dari file besar. |
ls -ltr |
Menampilkan dalam format panjang dari waktu modifikasi tertua. |
ls -ld */ |
Menampilkan informasi subdirektori di lokasi saat ini. |
ls -1 |
Menampilkan item satu per baris. |
ls -1v |
Mengurutkan baris per baris dengan mempertimbangkan nomor versi. |
ls -l --time-style=long-iso |
Tampilkan dalam format yang memudahkan perbandingan tanggal dan waktu. |
Ringkasan opsi utama
| Opsi | Deskripsi |
|---|---|
-a, --all |
Tampilkan item tersembunyi termasuk . dan ... |
-A, --almost-all |
Menampilkan item tersembunyi kecuali . dan ... |
-l |
Menampilkan dalam format panjang termasuk izin, pemilik, ukuran, dan waktu. |
-h, --human-readable |
Menampilkan ukuran dalam satuan yang mudah dibaca. |
-d, --directory |
Menampilkan entri direktori itu sendiri bukan isi dari direktori. |
-R, --recursive |
Menampilkan secara rekursif termasuk subdirektori. |
-t |
Menyortir berdasarkan waktu modifikasi terbaru secara default. |
-S |
Menyortir berdasarkan ukuran file dalam urutan menurun. |
-r, --reverse |
Membalik urutan sortir saat ini. |
-v |
Menyortir berdasarkan versi dengan mempertimbangkan bagian numerik dari nama file. |
-F, --classify |
Menambahkan karakter yang menunjukkan tipe file setelah nama. |
-1 |
Menampilkan hanya satu item per baris. |
Alasan untuk tidak mem-parsing output ls dalam skrip
Nama file Linux dapat berisi spasi, tab, dan baris baru. ls mengubah kolom, warna, dan penandaan agar dapat dibaca manusia di terminal, sehingga skrip yang memisahkan berdasarkan baris atau spasi mungkin menangani file secara salah.
Saat menelusuri file, gunakan alat yang mendukung karakter NUL sebagai pemisah.
find . -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; do
printf '%s\0' "$file"
done
Contoh ini mempertahankan pemisah NUL pada keluaran, sehingga konsumen berikutnya juga harus menerima data berpemisah NUL. read -d '' memerlukan Bash. Status pipeline biasanya berasal dari bagian terakhir; tangani status pencarian secara terpisah jika kegagalan harus terdeteksi.
GNU ls versi yang mendukungnya menyediakan --zero; periksa ls --help karena versi lama dapat menolaknya. Untuk kriteria pencarian, find -print0 biasanya lebih jelas. Gunakan stat untuk metadata satu file.
Masalah umum
Ditampilkan pesan izin ditolak.
Anda mungkin tidak memiliki izin yang diperlukan untuk direktori yang sedang Anda coba baca isinya. Periksa izin eksekusi dari komponen jalur dan izin baca dari direktori target dengan ls -ld path atau namei -l path. Daripada terbiasa menggunakan sudo untuk melewati izin, lebih baik pertama-tama menentukan apakah akses tersebut benar-benar diperlukan.
Urutan pengurutan berbeda dari yang diharapkan.
Pengurutan nama default dipengaruhi oleh lokal LC_COLLATE. Jika urutan byte yang dapat direproduksi diperlukan, Anda dapat menerapkan LC_ALL=C hanya pada perintah itu.
LC_ALL=C ls
Terjadi kesalahan "Daftar argumen terlalu panjang".
Dalam ls *, tanda asterisk diperluas oleh shell menjadi banyak nama file sebelum ls dijalankan, bukan oleh ls itu sendiri. Jika melebihi batas ukuran argumen sistem operasi, kesalahan terjadi sebelum perintah dimulai. Untuk daftar sederhana, jalankan ls sendirian, dan untuk pencarian bersyarat atau pemrosesan batch, gunakan find dengan -exec atau pipeline yang dipisahkan oleh NUL.
FAQ
Dalam ls -l, apakah ukuran direktori adalah jumlah dari file internal?
Tidak. Itu adalah ukuran logis objek direktori, yang penafsirannya bergantung pada sistem file, bukan jumlah ukuran file di dalamnya atau ukuran inode. Untuk memeriksa penggunaan disk oleh seluruh pohon direktori, gunakan du -sh directory.
Apa perbedaan antara ls -a dan ls -A?
-a menampilkan semua item tersembunyi termasuk . dan ... -A menampilkan item tersembunyi tetapi mengecualikan dua entri direktori khusus ini.
Bagaimana saya bisa melihat file yang baru dimodifikasi terlebih dahulu?
Menggunakan ls -lt menampilkan item dalam format panjang dimulai dengan yang dimodifikasi terakhir. Untuk melihat dari yang terlama ke yang terbaru, tambahkan opsi reverse dan gunakan ls -ltr.




