Haruskah saya mengurutkan bendera berdasarkan abjad sebagai praktik yang baik?

14

Saya tahu bahwa kedua perintah ini melakukan hal yang sama:

ls -la
ls -al

tapi saya bertanya-tanya apakah ada preferensi di antara mereka. Apakah lebih baik memesannya dengan cara tertentu?

Tim
sumber
11
Anda juga memerlukan kaos ini: redbubble.com/people/digerati/works/… :)
Sergey
@Sergey Kemeja luar biasa!
Terrance

Jawaban:

15

Tidak masalah * kecuali ada perintah yang secara eksplisit menyebutkan. Saya tidak menemukan referensi yang memberikan sesuatu seperti pedoman bagaimana menempatkan opsi satu demi satu. Jadi saya pikir demi keterbacaan opsi dapat diatur berdasarkan abjad.

* Ada cavaet yang sangat sangat penting yaitu jika ada opsi yang membutuhkan nama file atau input lain setelahnya, Anda harus meletakkannya dengan benar.

Misalnya, -fopsi grepmengambil file sebagai input untuk mengambil pola yang dicari dari file input. Anda perlu memberikan perintah sebagai contoh:

grep -cf input.txt file.txt 

Jika Anda menggunakannya seperti:

grep -fc input.txt file.txt 

itu akan gagal karena akan digunakan csebagai nama file.

heemayl
sumber
12

The POSIX konvensi menentukan dalam Pedoman 11 dan 12 Pedoman Sintaks Utilitas bahwa order " tidak peduli " kecuali itu tidak didokumentasikan untuk utilitas itu sendiri.

The GNU C Library Reference Manual juga menghormati mereka konvensi POSIX di Program 25.1.1 Argumen Sintaks Konvensi .

Tetapi perhatikan, ada beberapa utilitas yang memberikan dalam beberapa situasi perintah ketat bagaimana melakukan parameter (misalnya menemukan). Dari manual find :

The -nametes datang sebelum -typetes untuk menghindari harus memanggil stat(2)pada setiap file.

Terkadang utilitas mengeluh tentang pemesanan.

kekacauan
sumber
3
Sebenarnya, findhanya memiliki beberapa opsi, POSIX hanya mendefinisikan dua opsi -Hdan -L. GNU finddi Ubuntu memiliki beberapa opsi lagi, tetapi -typedan -namesebagainya dianggap operator , bukan opsi . Dan untuk operator, pesanan biasanya penting.
geirha
5

Dengan ls Anda hampir tidak bisa salah dengan memesan opsi.

Namun perlu diingat bahwa perintah lain dapat memiliki respons yang berbeda terhadap opsi tergantung pada urutannya.

Contohnya adalah perintah find. Anda akan mendapatkan hasil yang berbeda misalnya antara:

  find . -ls -mtime -1 

Dan

  find . -mtime -1 -ls
pengguna55570
sumber
3

Jika yang ingin Anda praktikkan adalah abjad string pendek, mungkin. Saya menemukan dua strategi yang berguna: membuat kata (mengurangi kesalahan ketik) dan membuat kalimat (meningkatkan pemahaman).

Misalnya, misalnya, saya biasanya menggunakan ls -halFkarena, bahkan dengan huruf besar yang aneh, saya lebih baik mengetik halF daripada sesuatu seperti Falh yang bukan kata.

Untuk tar, di sisi lain, saya mengetik tar czvf filenamedan berkata (di kepala saya) "tar Create and Zip, Verbosely For filename" karena itulah cara saya mempelajari arti berbagai huruf.

Vynce
sumber
Saya ingat e2fsck -fvcckt karena ini merefleksikan situasi yang mungkin saya hadapi jika ia mengembalikan terlalu banyak kesalahan. ;)
Joe
2

Seperti yang dijawab orang lain, itu tidak masalah (kecuali jika didokumentasikan sebaliknya atau argumen opsi mengambil argumen lebih lanjut).

Tetapi apakah lebih disukai untuk memesan opsi secara alfabet masih bisa diperdebatkan.

Secara pribadi, saya menemukan bahwa mnemonik memberikan nilai lebih dari urutan alfabet yang ketat. Lebih mudah untuk mengingat serangkaian opsi ketika mereka membentuk kata yang mudah diingat, misalnya, pertimbangkan:

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

vs:

netstat -atn
netstat -nta

Jadi, jika Anda mendapati diri Anda mengulangi kombo pilihan tertentu untuk suatu perintah, Anda mungkin ingin mencoba dan mengatur ulang surat ke urutan yang paling mudah untuk Anda ingat.

diri sendiri
sumber