GNU/Linux >> Belajar Linux >  >> Linux

ls Perintah di Linux:17 Contoh yang Berguna Dijelaskan

ls command adalah salah satu perintah pertama yang kita pelajari saat menemukan shell. Dan setelah itu, berapa pun tingkat keahlian Anda, itu akan tetap menjadi salah satu yang paling sering digunakan.

Terlepas dari popularitas itu, kami jarang melampaui -l , -d dan -a pilihan. Sangat disayangkan karena tipikal ls implementasi memiliki puluhan opsi yang tersedia! Oleh karena itu, saya mengusulkan Anda untuk mengikuti saya dalam pencarian saya untuk ls perintah permata tersembunyi.

Contoh hierarki file yang kami gunakan dalam panduan perintah ls ini

Sebelum masuk ke inti masalah, kita perlu sedikit persiapan:akan sulit untuk mempelajari ls perintah tanpa beberapa direktori untuk dikerjakan. Agar Anda dapat mencoba di komputer Anda perintah yang diberikan dalam artikel ini, berikut adalah cara membuat hierarki file sampel yang akan saya gunakan di semua contoh saya. Cukup salin-tempel daftar perintah itu ke terminal Anda, dan Anda akan siap:

mkdir ls
cd ls
# Create a hidden file:
echo You can not see me > .hidden
# Create a couple of 2MiB files:
dd if=/dev/zero of=a bs=1M count=2
dd if=/dev/zero of=b bs=1M seek=1 count=1
# Create few sub-directories
mkdir -p dir/subdir dir/subdir2
# Create a bunch of empty files
touch c dir/{d,e,f} dir/subdir/{g,h,i} dir/subdir2/{j,k,l}
# Create few links (hard and symbolic)
ln  dir/e hardlink-to-file
ln -s dir/f symlink-to-file
ln -s dir/subdir symlink-to-subdir

Jika Anda memiliki masalah dengan perintah ini, jangan ragu untuk menggunakan bagian komentar untuk meminta bantuan. Dengan asumsi sekarang semuanya beres, sekarang saatnya untuk masuk ke topik utama kita.

Kasus penggunaan perintah ls yang terkenal

Karena setiap perjalanan dimulai dengan langkah pertama, mari kita tinjau terlebih dahulu kasus penggunaan yang paling mendasar untuk ls memerintah. Tentu saja, jika Anda menganggap diri Anda sebagai seorang ahli, jangan ragu untuk langsung melompat ke bagian yang lebih lanjut. Tetapi jika Anda lebih suka tinggal bersama saya untuk saat ini, bagus:Anda mungkin belajar satu atau dua hal!

<no option> :perilaku default

ls command memberikan informasi tentang setiap objek seperti file yang ditunjukkan oleh jalur yang diberikan pada baris perintah. Saat digunakan tanpa opsi apa pun:

  • satu-satunya informasi yang ditampilkan adalah nama objek seperti file yang ditunjukkan oleh jalur;
  • jika jalur tersebut mengarah ke direktori (atau tautan simbolis ke direktori), ls perintah juga mencantumkan konten direktori itu;
  • jika beberapa entri ditampilkan, entri tersebut diurutkan menurut abjad dari nama filenya.

Akhirnya, ketika tidak ada jalur yang diberikan pada baris perintah, ls perintah mengasumsikan ./ –itu adalah direktori saat ini.

Mari kita lihat sekarang semua aturan itu beraksi:

# display the content of the current directory
sh:~/ls$ ls ./
a  c    e  hardlink-to-file  symlink-to-file
b  dir    f  link-to-subdir    symlink-to-subdir

# without any option, `ls` is equivalent
# to `ls ./`
sh:~/ls$ ls
a  c    e  hardlink-to-file  symlink-to-file
b  dir    f  link-to-subdir    symlink-to-subdir

# entries are sorted alphabetically
# ("dir/f" starts with a "d" so it is before "e")
sh:~/ls$ ls c b e dir/f a
a  b  c  dir/f    e

# when a command line argument is a directory
# (or a symbolic link to a directory)
# displays its content
sh:~/ls$ ls a b c link-to-subdir dir
a  b  c

dir:
d  e  f  subdir  subdir2

link-to-subdir:
g  h  i

-d :jangan mencantumkan konten direktori

Dengan -d pilihan, ls tidak lagi menampilkan konten direktori yang diberikan pada baris perintah tetapi sebaliknya akan memperlakukan entri direktori seperti entri file. Mari kita bandingkan:

# Default behavior: display the content of the `dir` directory
sh:~/ls$  ls a dir b
a  b

dir:
d  e  f  subdir  subdir2

# `-d` option: directories are handled like files
sh:~/ls$  ls -d a dir b
a  b  dir

Saat menggunakan -d opsi saja, tidak ada banyak perbedaan antara ls dan echo plain biasa perintah:

# In both case, the `*` glob pattern is expanded by
# the shell, which also takes care of
# sorting entries in the alphabetical order
sh:~/ls$  ls -d *
a  b  c  dir  hardlink-to-file    symlink-to-file  symlink-to-subdir

sh:~/ls$  echo *
a b c dir hardlink-to-file symlink-to-file symlink-to-subdir

Tapi -d opsi menjadi lebih berguna jika dikaitkan dengan opsi lain untuk menampilkan informasi tambahan, seperti saat menggunakan -l bendera yang akan kita lihat sekarang.

-l :opsi format panjang

Dalam ls kontes popularitas pilihan, -l (huruf kecil ell) opsi mungkin akan menjadi pemenangnya. Ini sangat berguna sehingga banyak sistem menawarkan ll alias untuk ls -l (atau ls -l<something> )

-l singkatan dari format panjang. Dengan opsi itu, ls perintah akan menampilkan setiap entri pada barisnya sendiri yang berisi informasi berikut:* mode file * jumlah tautan * nama pemilik * nama grup * jumlah byte dalam file * tanggal dan waktu * nama jalur

Juga, dengan -l pilihan, ls tidak akan lagi mengikuti tautan simbolik. Jadi, itu akan menampilkan informasi (mode file, jumlah tautan, dan sebagainya) tentang tautan itu sendiri, dan bukan tentang tujuannya. Untuk alasan yang sama, ls perintah tidak akan menampilkan konten direktori yang ditunjuk oleh tautan simbolik:

# Default behavior: displays only the filename and
# follows symbolic links:
sh:~/ls$  ls *
a  b  c  e  f  hardlink-to-file  symlink-to-file

dir:
d  e  f  subdir  subdir2

link-to-subdir:
g  h  i

symlink-to-subdir:
g  h  i

# `-l` option: displays extended informations and
# no longer follows symbolic links
sh:~/ls$  ls -l *
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 19 22:18 a
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 19 22:18 b
-rw-r--r-- 1 sylvain sylvain       0 Sep 19 22:18 c
-rw-r--r-- 3 sylvain sylvain       0 Sep 19 22:18 e
lrwxrwxrwx 1 sylvain sylvain       5 Sep 19 12:09 f -> dir/f
-rw-r--r-- 3 sylvain sylvain       0 Sep 19 22:18 hardlink-to-file
lrwxrwxrwx 1 sylvain sylvain      10 Sep 19 12:09 link-to-subdir -> dir/subdir
lrwxrwxrwx 1 sylvain sylvain       5 Sep 19 22:18 symlink-to-file -> dir/f
lrwxrwxrwx 1 sylvain sylvain      10 Sep 19 22:18 symlink-to-subdir -> dir/subdir

dir:
total 8
-rw-r--r-- 1 sylvain sylvain    0 Sep 19 22:18 d
-rw-r--r-- 3 sylvain sylvain    0 Sep 19 22:18 e
-rw-r--r-- 1 sylvain sylvain    0 Sep 19 22:18 f
drwxr-xr-x 2 sylvain sylvain 4096 Sep 19 12:09 subdir
drwxr-xr-x 2 sylvain sylvain 4096 Sep 19 12:09 subdir2

Untuk mengakhiri bagian ini, saya membiarkan Anda memeriksa output yang kita peroleh dengan menggabungkan keduanya -l dan -d pilihan:

sh:~/ls$  ls -ld *
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 19 22:18 a
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 19 22:18 b
-rw-r--r-- 1 sylvain sylvain       0 Sep 19 22:18 c
drwxr-xr-x 4 sylvain sylvain    4096 Sep 19 12:09 dir
-rw-r--r-- 3 sylvain sylvain       0 Sep 19 22:18 e
lrwxrwxrwx 1 sylvain sylvain       5 Sep 19 12:09 f -> dir/f
-rw-r--r-- 3 sylvain sylvain       0 Sep 19 22:18 hardlink-to-file
lrwxrwxrwx 1 sylvain sylvain      10 Sep 19 12:09 link-to-subdir -> dir/subdir
lrwxrwxrwx 1 sylvain sylvain       5 Sep 19 22:18 symlink-to-file -> dir/f
lrwxrwxrwx 1 sylvain sylvain      10 Sep 19 22:18 symlink-to-subdir -> dir/subdir

-a :menampilkan semua file

Dengan -a pilihan, ls menyertakan file tersembunyi saat menampilkan konten direktori. Tapi apa itu file tersembunyi?

Menurut konvensi, pada sistem mirip Unix, file yang namanya dimulai dengan titik dianggap tersembunyi. Selain itu, setiap direktori juga berisi dua entri khusus yang biasanya tersembunyi:. dan ..

Di setiap direktori:

  • . titik masuk ke direktori itu sendiri. Referensi diri semacam itu mungkin tampak aneh. Namun terkadang hal ini berguna, seperti memasukkan nomor telepon Anda sendiri ke dalam perbendaharaan ponsel cerdas Anda.
  • .. titik masuk ke direktori induk. Karena hierarki file pada sistem mirip Unix diatur secara ketat sebagai pohon, setiap direktori memiliki satu dan hanya satu induk. Kecuali direktori root / mungkin? Sebenarnya tidak:induk dari direktori root adalah ... direktori root itu sendiri.
# Default behavior: do not display hidden entries
# (including . and ..)
sh:~/ls$  ls
a  c    e  hardlink-to-file  symlink-to-file
b  dir    f  link-to-subdir    symlink-to-subdir

# `-a` option: show hidden files and directories
sh:~/ls$  ls -a
.   a  c    e  hardlink-to-file  link-to-subdir   symlink-to-subdir
..  b  dir  f  .hidden         symlink-to-file

Opsi yang berguna dari perintah ls

Setelah meninjau -l yang terkenal , -d dan -a opsi, mari kita alihkan perhatian kita pada beberapa opsi yang kurang dikenal yang menurut saya sangat berguna.

-s :menampilkan ukuran yang dialokasikan

Anda mungkin ingat -l opsi menampilkan jumlah byte dalam file. -s opsi menampilkan ukuran yang dialokasikan dalam blok. Apa itu blok? Nah, sekelompok byte yang ukurannya bergantung pada implementasi. Biasanya 512 byte di BSD dan 1024 byte di Linux.

Mengapa saya harus repot dengan ukuran dalam blok ketika saya sudah memiliki akses ke ukuran dalam byte? Nah, -s opsi menampilkan dialokasikan ukuran. Bukan yang logis ukuran file. Itu mungkin dua hal yang sangat berbeda untuk file yang jarang. File jarang adalah file yang berisi "lubang". Saat dibaca, lubang tersebut berperilaku seperti blok file normal yang hanya berisi nol. Tapi mereka hampir tidak mengambil ruang pada disk. Kita dapat menggunakan dd perintah dengan seek opsi untuk membuat file jarang seperti yang saya lakukan untuk b file dalam hierarki sampel saya:

sh:~/ls$ ls -ls a b
2052 -rw-r--r-- 1 sylvain sylvain 2097152 Sep 19 22:18 a
1028 -rw-r--r-- 1 sylvain sylvain 2097152 Sep 19 22:18 b

Seperti yang Anda lihat, keduanya a dan b file tampaknya berukuran dua mebibytes. Tapi b file yang jarang, dibutuhkan hanya 1028 blok pada disk (kira-kira satu mebibyte).

-h menampilkan ukuran yang dapat dibaca manusia

Dengan -h pilihan, ls akan menampilkan ukuran file menggunakan akhiran unit untuk membuatnya lebih ramah pengguna. Opsi ini hanya bermakna bila digunakan dalam kombinasi dengan -l opsi (Linux, BSD) atau -s (Linux):

sh:~/ls$ ls -lsh a b
2.1M -rw-r--r-- 1 sylvain sylvain 2.0M Sep 19 22:18 a
1.1M -rw-r--r-- 1 sylvain sylvain 2.0M Sep 19 22:18 b

openbsd-6.3$ ls -lsh a b
4128 -rw-r--r--  1 sylvain  sylvain   2.0M Sep 19 23:49 a
2112 -rw-r--r--  1 sylvain  sylvain   2.0M Sep 19 23:49 b

Anda mungkin telah memperhatikan ukuran ditampilkan menggunakan kekuatan 1024 unit, di mana K adalah singkatan dari 2^10=1024 byte, M untuk 1024^2=1048576 byte dan seterusnya. Layak disebutkan di sini ls implementasi yang disediakan sebagai bagian dari GNU Coreutils memiliki --si extra tambahan opsi untuk menggunakan kekuatan 1000 alih-alih kekuatan 1024:

sh:~/ls$ ls -lsh --si a b
2.2M -rw-r--r-- 1 sylvain sylvain 2.1M Sep 19 22:18 a
1.1M -rw-r--r-- 1 sylvain sylvain 2.1M Sep 19 22:18 b

-i tampilkan nomor inode

Pada sistem file gaya Unix, nomor inode (atau nomor seri file dalam terminologi POSIX) adalah angka yang secara unik mengidentifikasi objek sistem file (file, direktori, pipa bernama, ...). Dengan -i opsi, ls perintah akan menampilkan nomor inodenya di samping setiap jalur.

Meskipun kelihatannya agak eksotis, saya menemukan diri saya menggunakan -i opsi dari waktu ke waktu, terutama untuk mengidentifikasi entri direktori yang mereferensikan objek sistem file yang sama. Anda akan menggunakan opsi itu sebagian besar saat menyelidiki tautan keras atau pengikatan mount. Lihat video itu untuk contoh praktis:https://youtu.be/Jp58Osb1uFo?t=140

sh:~/ls$  ls -i *
8222 a    8243 b    8262 c    8264 hardlink-to-file  8272 symlink-to-file

dir:
8263 d    8264 e    8265 f    8245 subdir  8261 subdir2

symlink-to-subdir:
8266 g    8267 h    8268 i

Pada contoh di atas, Anda dapat melihat setiap nama file diawali dengan nomor inode yang terkait dengan jalur tersebut. Di sistem Anda, jumlahnya pasti akan berbeda. Bagaimanapun, lihat lebih dekat hardlink-to-file dan dir/e entri. Keduanya memiliki nomor inode yang sama (8264 dalam kasus saya). Itu berarti mereka adalah dua entri yang mereferensikan objek sistem file dasar yang sama— yang sebenarnya merupakan definisi yang tepat dari apa itu tautan keras.

Anda mungkin ingat saya katakan sebelumnya bahwa induk dari direktori root adalah direktori root itu sendiri. Dengan menggunakan -i pilihan, cukup mudah untuk memverifikasi pernyataan itu:

openbsd-6$  ls -id /
2 /
openbsd-6$ ls -ia /
    2 .             25985 bin               5 dev           77954 sbin
    2 ..             1235 boot          51969 etc              10 sys
    8 .cshrc         1240 bsd               2 home              7 tmp
    9 .profile       1241 bsd.booted    77953 mnt               2 usr
51968 altroot           4 bsd.rd        26016 root          78016 var

Seperti yang Anda lihat, di sistem saya, direktori root dikaitkan dengan inode nomor 2, yang juga merupakan inode induknya. Jadi itu membuktikan direktori root adalah induknya sendiri.

Opsi perintah ls yang jarang digunakan

Saya secara teratur menggunakan opsi yang dijelaskan di bagian sebelumnya, tetapi yang akan saya bicarakan sekarang… yah… saya tahu itu ada. Namun harus saya akui ketika saya membutuhkannya, saya sering harus melihat ke man untuk menyegarkan ingatan saya.

Opsi ini mengubah perilaku ls perintah ketika diterapkan ke tautan simbolik. Dengan -L pilihan, ls akan menampilkan informasi tentang ke target dari tautan simbolik alih-alih menampilkan yang terkait dengan tautan simbolik itu sendiri. Dengan memeriksa contoh berikut, perbedaannya akan terlihat jelas:

# Pay special attention to the permission
# and file size for symbolic links with and without
# the `-L` option:
sh:~/ls$  ls -ld *
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 20 00:09 a
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 20 00:09 b
-rw-r--r-- 1 sylvain sylvain       0 Sep 20 00:09 c
drwxr-xr-x 4 sylvain sylvain    4096 Sep 20 00:09 dir
-rw-r--r-- 2 sylvain sylvain       0 Sep 20 00:09 hardlink-to-file
lrwxrwxrwx 1 sylvain sylvain       5 Sep 20 00:09 symlink-to-file -> dir/f
lrwxrwxrwx 1 sylvain sylvain      10 Sep 20 00:09 symlink-to-subdir -> dir/subdir
[email protected]:/tmp/ls/ls/ls$ ls -lLd *
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 20 00:09 a
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 20 00:09 b
-rw-r--r-- 1 sylvain sylvain       0 Sep 20 00:09 c
drwxr-xr-x 4 sylvain sylvain    4096 Sep 20 00:09 dir
-rw-r--r-- 2 sylvain sylvain       0 Sep 20 00:09 hardlink-to-file
-rw-r--r-- 1 sylvain sylvain       0 Sep 20 00:09 symlink-to-file
drwxr-xr-x 2 sylvain sylvain    4096 Sep 20 00:09 symlink-to-subdir

-F :menambahkan karakter klasifikasi ke nama file

-F option menambahkan karakter tambahan setelah nama path dari beberapa kategori objek sistem file untuk mengidentifikasinya. Ini akan menambahkan:

  • sebuah \ setelah setiap nama path yang merupakan direktori,
  • sebuah @ setelah setiap nama jalur yang merupakan tautan simbolis,
  • sebuah * setelah setiap file yang dapat dieksekusi,
  • dan sebuah | setelah setiap FIFO (lihat mkfifo untuk informasi lebih lanjut tentang itu)

Pada hari-hari awal Unix saya, saya sering menggunakan opsi itu. Tapi karena ls dapat mewarnai outputnya (dan karena kami memiliki monitor berwarna!), saya jarang membutuhkannya. Tapi aku mengingatnya. Dan dari waktu ke waktu, pada terminal jarak jauh, saya menemukan kesempatan untuk menggunakannya:

sh:~/ls$ ls -F
a  b  c  dir/  hardlink-to-file  [email protected]  [email protected]

t :mengurutkan entri berdasarkan waktu modifikasi

Dengan -t opsi, ls perintah dengan entri direktori tampilan yang diurutkan berdasarkan waktu modifikasi (terbaru lebih dulu) alih-alih mengurutkannya berdasarkan namanya:

# Default sort order (by filename)
sh:~/ls$  ls
a  b  c  dir  hardlink-to-file    symlink-to-file  symlink-to-subdir

# Sort by modification date
sh:~/ls$ ls -t
symlink-to-subdir  symlink-to-file  c  dir  hardlink-to-file  b  a

Jika saya mengubah file, sekarang akan muncul sebagai entri pertama (yaitu:paling baru diubah) dalam daftar:

sh:~/ls$ echo >> a
sh:~/ls$ ls -t
a  symlink-to-subdir  symlink-to-file  c  dir  hardlink-to-file  b

-S :mengurutkan entri menurut ukuran

Dengan -S pilihan, ls akan menampilkan entri yang diurutkan berdasarkan ukuran, file terbesar terlebih dahulu. Dalam kasus seri, entri diurutkan menurut nama jalurnya:

sh:~/ls$ ls -lS
total 6244
-rw-r--r--  1 sylvain  sylvain  2097152 Sep 19 23:49 a
-rw-r--r--  1 sylvain  sylvain  2097152 Sep 19 23:49 b
drwxr-xr-x  4 sylvain  sylvain      512 Sep 19 23:49 dir
lrwxr-xr-x  1 sylvain  sylvain       10 Sep 19 23:49 symlink-to-subdir -> dir/subdir
lrwxr-xr-x  1 sylvain  sylvain        5 Sep 19 23:49 symlink-to-file -> dir/f
-rw-r--r--  1 sylvain  sylvain        0 Sep 19 23:49 c
-rw-r--r--  2 sylvain  sylvain        0 Sep 19 23:49 hardlink-to-file

-r :urutan pengurutan terbalik

Opsi ini membalikkan urutan pengurutan. Saya merasa paling berguna jika dikaitkan dengan -t opsi agar file yang paling terakhir dimodifikasi ditampilkan terlebih dahulu atau dengan -S pilihan untuk menampilkan file terkecil terlebih dahulu. Tetapi ini juga berfungsi dengan default, berdasarkan nama jalur, urutkan urutan:

# Display the least recently modified file first
sh:~/ls$ ls -rt
b  hardlink-to-file  dir  c  symlink-to-file  symlink-to-subdir  a

# Display the smallest file first
sh:~/ls$ ls -rS
hardlink-to-file  c  symlink-to-file  symlink-to-subdir  dir  b  a

# Display path names in reversed alphabetical order
sh:~/ls$ ls -r
symlink-to-subdir  symlink-to-file  hardlink-to-file  dir  c  b  a

-n :Menampilkan UID/GID numerik

Opsi ini sama persis dengan -l opsi— kecuali dengan -n id grup pemilik (GID) dan id pengguna (UID) ditampilkan sebagai angka daripada menggunakan nama yang terkait:

 sh:~/ls$ ls -ld a b c /
drwxr-xr-x 28 root    root       4096 May  6 00:28 /
-rw-r--r--  1 sylvain sylvain 2097153 Sep 20 00:45 a
-rw-r--r--  1 sylvain sylvain 2097152 Sep 20 00:09 b
-rw-r--r--  1 sylvain sylvain       0 Sep 20 00:09 c
sh:~/ls$ ls -nd a b c /
drwxr-xr-x 28    0    0    4096 May  6 00:28 /
-rw-r--r--  1 1000 1000 2097153 Sep 20 00:45 a
-rw-r--r--  1 1000 1000 2097152 Sep 20 00:09 b
-rw-r--r--  1 1000 1000       0 Sep 20 00:09 c

Penggunaan perintah ls yang sangat eksotis

Tidak ada yang bisa mengklaim tahu segalanya. Dan saat menulis artikel ini, saya (kembali) menemukan beberapa ls pilihan. Saya tidak ingat pernah menggunakannya sendiri, tetapi mungkinkah Anda? Jika demikian, saya akan penasaran untuk membaca di bagian komentar dalam keadaan apa Anda menganggapnya berguna. Bagaimanapun, inilah pilihan yang mungkin menarik bagi Anda.

-R :daftar subdirektori secara rekursif

Secara default, ls perintah hanya menampilkan konten direktori yang diberikan secara eksplisit pada baris perintah. Dengan -R opsi, itu juga akan menampilkan konten direktori yang ditemukan secara rekursif:

sh:~/ls$ ls -R
.:
a  b  c  dir  hardlink-to-file    symlink-to-file  symlink-to-subdir

./dir:
d  e  f  subdir  subdir2

./dir/subdir:
g  h  i

./dir/subdir2:
j  k  l

Sementara menarik secara teori, saya menemukan (pun intended) output yang dihasilkan oleh find . perintah lebih mudah dibaca untuk tujuan itu. Tetapi jarak tempuh Anda mungkin berbeda, tentu saja:

sh:~/ls$  find .
.
./c
./.hidden
./hardlink-to-file
./b
./symlink-to-subdir
./dir
./dir/d
./dir/e
./dir/subdir2
./dir/subdir2/l
./dir/subdir2/j
./dir/subdir2/k
./dir/subdir
./dir/subdir/g
./dir/subdir/i
./dir/subdir/h
./dir/f
./symlink-to-file
./a

-A :menampilkan hampir semua file

Meskipun tidak didefinisikan dalam standar POSIX, -A pilihan muncul baik di dunia GNU dan BSD. Dalam kedua kasus, ini berfungsi seperti -a , tetapi mengecualikan . dan .. entri. Layak disebutkan pada sistem BSD, -A tersirat untuk pengguna super:

sh:~/ls$  ls -a
.   a  c    hardlink-to-file  symlink-to-file
..  b  dir  .hidden          symlink-to-subdir
sh:~/ls$  ls -A
a  b  c  dir  hardlink-to-file    .hidden  symlink-to-file  symlink-to-subdir

openbsd-6.3$ su root
openbsd-6.3# ls
.hidden a  b  c  dir  hardlink-to-file  symlink-to-file  symlink-to-subdir

-f :jangan diurutkan

Dengan -f pilihan, ls akan menampilkan entri sesuai urutan kemunculannya di direktori. Urutan itu tergantung pada sistem file yang mendasarinya, dan file pesanan dibuat, sehingga hampir tidak dapat diprediksi. -f opsi juga menyiratkan -a pilihan:

sh:~/ls$  ls -f
..  .hidden          b             dir          a
c   hardlink-to-file  symlink-to-subdir  symlink-to-file  .

openbsd-6$ ls -f
.                   a                   c                   symlink-to-subdir
..                  b                   hardlink-to-file
.hidden             dir                 symlink-to-file

Cukup lucu, dengan GNU Coreutils 8.26 ls implementasi, Anda dapat menggunakan keduanya -l dan -f pilihan jika Anda mengejanya -fl –tetapi tidak jika Anda menulis -lf . Di OpenBSD keduanya berfungsi seperti yang diharapkan:

sh:~/ls$ ls -lf
..  .hidden          b             dir          a
c   hardlink-to-file  symlink-to-subdir  symlink-to-file  .
sh:~/ls$ ls -fl
total 3100
drwxr-xr-x 3 sylvain sylvain    4096 Sep 19 12:09 ..
-rw-r--r-- 1 sylvain sylvain       0 Sep 20 00:09 c
-rw-r--r-- 1 sylvain sylvain      19 Sep 20 00:09 .hidden
-rw-r--r-- 2 sylvain sylvain       0 Sep 20 00:09 hardlink-to-file
-rw-r--r-- 1 sylvain sylvain 2097152 Sep 20 00:09 b
lrwxrwxrwx 1 sylvain sylvain      10 Sep 20 00:09 symlink-to-subdir -> dir/subdir
drwxr-xr-x 4 sylvain sylvain    4096 Sep 20 00:09 dir
lrwxrwxrwx 1 sylvain sylvain       5 Sep 20 00:09 symlink-to-file -> dir/f
-rw-r--r-- 1 sylvain sylvain 2097153 Sep 20 00:45 a
drwxr-xr-x 3 sylvain sylvain    4096 Sep 20 00:09 .

openbsd-6$ ls -lf
total 6256
drwxr-xr-x  3 sylvain  sylvain      512 Sep 19 23:49 .
drwxr-xr-x  5 sylvain  sylvain      512 Sep 19 23:49 ..
-rw-r--r--  1 sylvain  sylvain       19 Sep 19 23:49 .hidden
-rw-r--r--  1 sylvain  sylvain  2097152 Sep 19 23:49 a
-rw-r--r--  1 sylvain  sylvain  2097152 Sep 19 23:49 b
drwxr-xr-x  4 sylvain  sylvain      512 Sep 19 23:49 dir
-rw-r--r--  1 sylvain  sylvain        0 Sep 19 23:49 c
-rw-r--r--  2 sylvain  sylvain        0 Sep 19 23:49 hardlink-to-file
lrwxr-xr-x  1 sylvain  sylvain        5 Sep 19 23:49 symlink-to-file -> dir/f
lrwxr-xr-x  1 sylvain  sylvain       10 Sep 19 23:49 symlink-to-subdir -> dir/subdir
openbsd-6$ ls -fl
total 6256
drwxr-xr-x  3 sylvain  sylvain      512 Sep 19 23:49 .
drwxr-xr-x  5 sylvain  sylvain      512 Sep 19 23:49 ..
-rw-r--r--  1 sylvain  sylvain       19 Sep 19 23:49 .hidden
-rw-r--r--  1 sylvain  sylvain  2097152 Sep 19 23:49 a
-rw-r--r--  1 sylvain  sylvain  2097152 Sep 19 23:49 b
drwxr-xr-x  4 sylvain  sylvain      512 Sep 19 23:49 dir
-rw-r--r--  1 sylvain  sylvain        0 Sep 19 23:49 c
-rw-r--r--  2 sylvain  sylvain        0 Sep 19 23:49 hardlink-to-file
lrwxr-xr-x  1 sylvain  sylvain        5 Sep 19 23:49 symlink-to-file -> dir/f
lrwxr-xr-x  1 sylvain  sylvain       10 Sep 19 23:49 symlink-to-subdir -> dir/subdir

-q :Menampilkan karakter nama file yang tidak dapat dicetak sebagai ?

Pada sistem file bergaya Unix, nama file dapat berisi karakter apa pun kecuali \ dan karakter NUL. Ini berarti nama file mungkin berisi karakter yang tidak dapat dicetak atau bahkan urutan kontrol yang dapat mengganggu terminal Anda. Mari kita coba sesuatu yang lucu:

touch "$(echo -e '\x1B[7mBOO\x1B[0m')"

Jelas, nama file itu berisi karakter yang tidak dapat dicetak. Pada implementasi modern ls , -q opsi tersirat ketika output adalah terminal, untuk menghindari potensi efek jahat. Jadi karakter yang tidak bisa dicetak akan diganti dengan tanda tanya:

sh:~/ls$ ls *BOO*
?[7mBOO?[0m

Namun, semuanya akan berbeda jika Anda menulisnya sebagai gantinya:

# I let you try that by yourself
# to not spoil the fun;)
sh:~/ls$ ls *BOO* | cat

| cat tidak berguna, tetapi sebagai efek samping, ls command sekarang melihat pipa pada output standarnya alih-alih tty ("terminal"). Karena keluaran bukan lagi terminal, -q opsi tidak lagi tersirat, dan ls akan menampilkan nama file verbatim. Dalam hal ini, jika semuanya berfungsi seperti yang diharapkan, untuk menampilkan nama file dengan efek video yang funky.

Secara eksplisit menggunakan -q pilihan akan memperbaikinya. Saya akan membiarkan Anda mencobanya sendiri (dan akhirnya bermain dengan urutan pelarian ANSI lainnya). Tapi saya mengambil kesempatan itu untuk memperingatkan Anda agar tidak menggunakan ls perintah dalam skrip shell. Dalam praktiknya, ls dirancang untuk "konsumsi manusia". Ada banyak kasus sampingan mengenai nama file yang dibuat khusus yang sangat sulit untuk ditangani dengan benar. Jika Anda perlu menelusuri daftar file, saya sangat menganjurkan Anda untuk menggunakan perintah find sebagai gantinya. Dalam kasus yang paling sederhana, for simple sederhana loop bahkan cukup— tapi itu akan menjadi cerita lain.

for f in *; do echo "$f"; done

Akhirnya?

Jadi itu menyimpulkan tur kami di ls opsi perintah. Tidak perlu disebutkan itu jauh dari lengkap dan saya mencoba untuk fokus di sini pada opsi yang paling berguna dan paling portabel. Tetapi setiap ls implementasi memiliki fitur-fitur keren, jadi jika Anda tahu beberapa opsi bagus yang saya lewatkan di artikel ini, jangan ragu untuk membagikannya kepada kami menggunakan bagian komentar. Jika kami memiliki umpan balik yang cukup, kami bahkan dapat menyusun dan menerbitkannya dalam artikel lanjutan!

Berbicara tentang perintah ls, apakah Anda tahu perintah lsof? Ini tidak terkait dengan ls tetapi memberi tahu Anda pengguna mana yang mengakses file tertentu.


Linux
  1. 7 Contoh Perintah Linux df

  2. Contoh Perintah rm di Linux

  3. Contoh Perintah ps di Linux

  1. 12 Contoh Perintah Wget yang Berguna di Linux

  2. 8 Contoh Perintah Linux TR

  3. sa Contoh Perintah di Linux

  1. w Contoh Perintah di Linux

  2. Contoh Perintah ac di Linux

  3. Contoh Perintah df di Linux