Bagaimana Anda mengingat opsi perintah? [Tutup]

13

Saya ingin tahu trik apa yang Anda gunakan untuk mengingat opsi untuk berbagai perintah? Mencari halaman manual sepanjang waktu itu menyita waktu dan tidak terlalu keren!

Atul
sumber
2
Antara lain: unix.stackexchange.com/questions/138720/... berguna untuk membuat ringkasan khusus tentang hal-hal yang biasanya saya abaikan atau lupakan. BTW, semakin banyak Anda membaca halaman manual, semakin Anda menghargainya.
goldilocks
Saya merasa saya lupa segalanya. Saya bertanya-tanya apakah saya satu-satunya yang mengalami kesulitan mengingat semua opsi yang berguna di atas kepala ... Saran Anda sepertinya solusi yang baik .. Terima kasih!
Atul
3
manHalaman membaca sangat keren ... :)
jasonwryan
1
T: Bagaimana Anda bisa sampai di Carnegie Hall ? Sebuah latihan!
evilsoup
4
Saya pikir ini layak untuk beberapa XKCD
Darkhogg

Jawaban:

39

Triknya sederhana: Anda tidak perlu. Buang-buang waktu dan tidak perlu. Opsi menghafal perintah bukanlah keterampilan yang sangat berguna. Jauh lebih penting untuk memahami cara kerja barang secara umum dan memiliki gagasan yang tidak jelas alat apa yang ada di tempat pertama dan untuk apa Anda menggunakannya. Keterampilan yang sangat penting di sini adalah untuk mengetahui cara mencari tahu tentang hal-hal yang belum Anda ketahui.

Halaman manual menghabiskan waktu? Tidak begitu. Ini tidak seperti Anda harus membacanya - setidaknya, tidak setiap waktu - ada fungsi pencarian. Jadi jika saya tidak ingat opsi cryptic yang mana hdparmuntuk menonaktifkan timer idle pada beberapa disk WD, saya lakukan man hdparmdan /idle3dan hei, itu -J. Mencari hal-hal seperti itu sangat cepat sehingga saya bahkan tidak ingat melakukannya setelah itu.

Bayangkan seseorang benar-benar menghafal semua hdparmopsi. Buang-buang waktu saja.

Tidak apa-apa jika Anda hanya mengingat opsi karena Anda sering menggunakannya. Itu terjadi secara otomatis bahkan tanpa memikirkannya. Tapi sebenarnya secara sadar menghabiskan waktu untuk menghafal mereka ... untuk apa itu baik? Tes kertas?

frostschutz
sumber
4
Terpilih: keterampilannya adalah menemukan apa yang Anda butuhkan, bukan menghafal. man hdparm | less -p idle3juga merupakan cara praktis untuk melompat ke istilah yang diinginkan ...
jasonwryan
Saya sepenuhnya setuju dengan jawaban ini, meskipun saya pikir perlu menekankan bahwa itu normal untuk memiliki beberapa pilihan paling umum untuk program yang biasa dihafal, hanya karena Anda sering menggunakannya. Seperti rm -i -f -r, ln -s, df -s -h, cp -r -i, ls -l -h -a, dll (daftar bervariasi dari orang ke orang).
David Z
8

Zsh memiliki fungsi run-help , secara bawaan terikat Alth. Dengan fungsi ini Anda dapat mulai mengetik perintah dengan banyak atau opsi rumit yang sulit diingat, seperti rsyncmisalnya, dan kemudian manmembuka halaman perintah itu . Begitu:

 rsync Alth

baca manhalaman dan cari switch mana yang Anda butuhkan, tekan qdan kemudian Anda kembali ke command prompt Anda, tepat di mana Anda tinggalkan, siap untuk menyelesaikan perintah dengan opsi yang diperlukan:

rysnc -azP file dir/

Seperti catatan wiki:

Fungsi ini dapat dikustomisasi lebih lanjut dengan mendefinisikan fungsi pembantu dari form run-help-command. Ada tiga fungsi yang tersedia dalam distribusi standar: run-help-git, run-help-svk, dan run-help-svn.
jasonwryan
sumber
Demikian pula bashmemiliki bash-completeyang akan menyediakan banyak pilihan parameter untuk banyak perintah.
ericx
2
@ ericx "Demikian pula" mungkin melebih-lebihkannya sedikit ... Zsh juga telah selesai, ini adalah langkah maju dari itu.
jasonwryan
hei ... Saya pernah mendengar orang menyombongkan diri, tetapi saya belum pernah mencobazsh
ericx
@ericx, juga, bashpenyelesaian tidak mendukung penambahan deskripsi ke daftar penyelesaian, atau pengelompokan entri ( --classify -F -- append file type indicatorsmisalnya dalam penyelesaian GNU zsh's ls) sehingga hampir tidak berguna seperti zsh.
Stéphane Chazelas
** root @ milicent ** ~ / tmp ** Sel 05 Agustus 09:24:55 # info pkg (-e -d -f -l -o -p -D) -r [Menampilkan dependensi terbalik] (-e -d -r -f -o -p -D) -l [Menampilkan semua file] (-e -d -r -l -f -p -D) -o [Menampilkan asal] (-e -d -r - l -o -f -D) -p [Menampilkan awalan] (-e -d -r -l -o -p -D) -f [Menampilkan informasi lengkap] (-e -d -r -l -l -o -p -p -f) -D [Menampilkan pesan] (-e -f -r -l -o -p -D) -d [Menampilkan dependensi] (-f -d -r -l -l -o -p -D) -e [Mengembalikan 0 jika <pkg-name> diinstal] (-g -X -a -F) -x [Paket proses yang sesuai dengan pola regex] (-g -x -X -F) -a [Memproses semua paket
ericx
4

Menggunakan sejarah perintah yang sangat panjang, dan mencari tahu, sangat berguna.

Saya pada dasarnya mengumpulkan semua file histori shell, dan melihatnya.

Hasil yang ditemukan dalam banyak kasus sangat berguna, karena mudah mencari kata kunci yang baik.
Mencari argumen speciffic yang Anda gunakan, seperti URL, Anda juga menemukan perintah dan opsi terkait. Dan mencari opsi spesifik, Anda mungkin menemukan argumen yang relevan juga.

Volker Siegel
sumber
4

Sebagian besar perintah memiliki --help untuk referensi cepat, dan biasanya cukup untuk mengingatkan apa yang dulu saya ketahui.

Yang mengatakan, punya kebiasaan menulis --membantu bukannya -h atau bahkan - ?. Anda tidak pernah tahu apa -h sebelum mencari output penggunaan atau halaman manual. Dalam kasus terburuk -h mungkin tangan pendek untuk - berbahaya-otomatis-kehancuran.

kerolasa
sumber
2
... Sebagian besar perintah pada sistem GNU . perintah pada sistem Unix biasanya tidak punya --help. -?kebutuhan mengutip dengan zsh, csh, tcshatau fishatau jika ada file yang namanya yang -diikuti oleh satu karakter di direktori saat ini. -:mungkin lebih disukai di sana.
Stéphane Chazelas
Ya .. banyak sistem non GNU memiliki output penggunaan yang begitu mengerikan sehingga tidak ada gunanya untuk dilihat. Dalam hal demikian, lihat halaman manual & semoga sukses menghafal dengan susah payah karena tidak ada lagi yang akan berhasil.
kerolasa
"Itu katanya punya kebiasaan menulis". Kata yang hilang?
Faheem Mitha
1

Salah satu opsi yang saya suka adalah membuat alias yang memiliki opsi yang sama atau mirip, misalnya

alias rmi='rm -i'
alias rmiv='rm -iv'
alias rmv='rm -v'
alias cpr='cp -r'
alias cprv='cp -rv'

Dengan cara ini Anda memiliki jalan pintas yang bagus yang akan segera Anda ingat dengan mudah tetapi itu juga akan menyimpan informasi tentang opsi aktual yang dicerminkannya.

Pendekatan lain dengan alias adalah memilih opsi yang paling umum dan membuat alias super pendek yang menggunakannya. Misalnya untuk lssaya hampir selalu melakukannya ldan itu karena saya punya:

alias l='ls -alFtrG'

Opsi lain adalah hanya membawa opsi yang Anda suka ke perintah basis, misalnya

alias ls='ls -F --color=always'

Akhirnya latihan, latihan, latihan dan kesabaran. Terus mengetikkan opsi umum dan Anda akhirnya akan mempelajarinya. Yang umum dalam beberapa hari, yang lain dalam beberapa minggu dan ya beberapa membutuhkan waktu bertahun-tahun untuk diketahui oleh Anda. Pikirkan itu sebagai hadiah dalam pemrograman unix yang akan terus menghibur Anda untuk waktu yang lama.

Opsi lain yang saya suka adalah alias untuk mempermudah pencarian riwayat saya dan untuk itu saya memiliki dua alias yang serupa:

alias hg='history | tail -200 | grep -i'
alias hga='history | grep -i'

Ini biarkan saya mencari penggunaan perintah misalnya:

hg lsakan menunjukkan penggunaan ls terbaru dari riwayat
hga lsakan menunjukkan semua penggunaan ls dari seluruh riwayat saya.

Saya mengembangkan hg setelah menemukan bahwa hga cenderung menunjukkan terlalu banyak.

Michael Durrant
sumber
4
Jika OP tidak dapat mengingat apa yang rm -ivterjadi, OP mungkin juga tidak akan mengingat apa yang rmivtidak. Saya tidak berpikir itu adalah tanda hubung itulah masalahnya.
tobyink
Saya lebih pribadi alias rm -ivuntuk safe_deleteataurm_prompt
slebetman
Terima kasih kawan! Saya kira saya terlalu khawatir untuk mengingat lebih banyak daripada belajar lebih banyak .. Saya akan belajar kapan harus menggunakan senjata daripada belajar apa itu dimensi dan kecepatan peluru! Beruntung memiliki begitu banyak orang linux yang baik di sini .. Bersorak untuk unix / linux !!
Atul
1

Saya biasanya melakukan:

man ${CMD} | grep 'what was I thinking about?'

Atau beberapa variasi darinya. Dengan beberapa greps, Anda dapat menentukan -C / A / B untuk konteks , setelah , dan sebelum masing-masing. Jika tidak, nldan sedbisa sangat cocok:

man hdparm |                      #hard to forget
nl -bp'idle3' -nln -w1 |          #I had to grep man to put this together
sed -n '/^[0-9]/{N;N;N;s///p}'    #no print until line begins w/ number, next,next,next

           Drive's "idle3" timeout value.  This timeout
            controls how often the drive parks its heads
            and  enters  a  low power consumption state.
            The factory default is  eight  (8)  seconds,
           zero (0) to disable the WD idle3 timer  com‐
            pletely (NOT RECOMMENDED!).

     -k     Get/set  the "keep_settings_over_reset" flag

Teknik yang sama bekerja dengan --helpmenu jika Anda memilikinya, tetapi Anda mungkin perlu melakukan ${CMD} --help 2>&1 | ..filter..karena merupakan praktik yang cukup standar untuk mencetak hal-hal seperti itu stderr.

Ngomong-ngomong, saya kira moral dari cerita ini adalah, setidaknya ingat mandan grep. Mungkin jangan berkeringat.

mikeserv
sumber
1
+1. Saya sering grepmencari halaman ketika mencari fitur tertentu, itu cukup berguna.
John WH Smith
-A -B -COpsi grep dapat berguna juga, misalnyaman bash | grep -A 25 PROMPTING$