Apakah ada perintah Linux yang akan mencantumkan semua perintah dan alias yang tersedia untuk sesi terminal ini?
Seolah-olah Anda mengetik 'a' dan menekan tab, tetapi untuk setiap huruf alfabet. Atau menjalankan 'alias' tetapi juga mengembalikan perintah.
Mengapa? Saya ingin menjalankan yang berikut dan melihat apakah perintah tersedia:
ListAllCommands | grep searchstr
Jawaban:
Anda dapat menggunakan bash (1) bawaan
compgen
compgen -c
akan mencantumkan semua perintah yang dapat Anda jalankan.compgen -a
akan mencantumkan semua alias yang dapat Anda jalankan.compgen -b
akan mencantumkan semua bawaan yang dapat Anda jalankan.compgen -k
akan mencantumkan semua kata kunci yang dapat Anda jalankan.compgen -A function
akan mencantumkan semua fungsi yang dapat Anda jalankan.compgen -A function -abck
akan mendaftar semua hal di atas dalam sekali jalan.Periksa halaman manual untuk penyelesaian lain yang dapat Anda hasilkan.
Untuk langsung menjawab pertanyaan Anda:
harus melakukan apa yang Anda inginkan.
sumber
compgen | grep
, bisa lebih efisien untuk meneruskan string sebagai argumen kecompgen
dirinya sendiri (jika itu dikenal sebagai awalan, seperti tersirat dalam pertanyaan). Dalam hal ini, itu akan terjadicompgen -ac searchstr
.whatis compgen
dan 'Tidak ada entri manual' untukman compgen
.bash
perintah bawaan , bukan perintah terpisah dengan halaman manualnya sendiri. Anda harus membacabash(1)
halaman manual, atau menjalankannyahelp compgen
dibash
baris perintah.compgen -c | sort | uniq | less
akan mencetak semua perintah yang tersedia tanpa garis duplikat dan diurutkan berdasarkan abjad.Tambahkan ke .bashrc
Jika Anda juga ingin alias, maka:
sumber
-L
untuk mengikuti symlink ke tujuan mereka. Catatan:-L
adalah opsi dan bukan bagian dari ekspresi yang cocok, karena itu harus ditempatkan sebelum jalur pada baris perintah. Dalam hal inifind -L {}
echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 -executable -type f -printf '%P\n' 2> /dev/null | sort -u
(+1 untuk kompatibilitas zsh)Ada
perintah yang mencantumkan semua alias dan perintah dalam $ PATH di mana perintah saya digunakan. Dapat digunakan untuk memeriksa apakah perintah ada dalam beberapa varian. Selain itu ... Mungkin ada beberapa skrip di sekitar yang mem-parsing $ PATH dan semua alias, tetapi tidak tahu tentang skrip semacam itu.
sumber
Gunakan "pencarian yang mana". Mengembalikan path biner atau pengaturan alias jika itu adalah alias
Sunting: Jika Anda mencari daftar alias, Anda dapat menggunakan:
Tambahkan itu ke dalam jawaban pencarian PATH mana pun yang Anda suka. Anggap Anda menggunakan bash ..
sumber
Perintah yang lain tidak berfungsi untuk saya pada embedded system, karena mereka membutuhkan bash atau versi xarg yang lebih lengkap (busybox terbatas).
Perintah-perintah berikut harus bekerja pada sistem seperti Unix.
Daftar menurut folder:
Daftar semua perintah dengan nama
sumber
tr
. Kenapa tidak sederhana sajals $(echo ${PATH//:/ })
?Coba skrip ini:
sumber
Untuk pengguna Mac ( find tidak memiliki -executable dan xargs tidak memiliki -d):
sumber
Berguna untuk membuat daftar perintah berdasarkan kata kunci yang terkait dengan perintah.
Menggunakan:
man -k "your keyword"
merasa bebas untuk bergabung dengan:
| grep "another word"
misalnya, untuk menemukan editor teks:
man -k editor | grep text
sumber
Coba tekan ALT-? (alt dan tanda tanya pada saat yang sama). Berikan satu atau dua detik untuk membangun daftar. Itu harus bekerja di bash.
sumber
Inilah solusi yang memberi Anda daftar semua executable dan alias. Ini juga portabel untuk sistem tanpa
xargs -d
(misalnya Mac OS X), dan dengan benar menangani jalur dengan spasi di dalamnya.Penggunaan:,
myscript.sh [grep-options] pattern
misalnya untuk menemukan semua perintah yang dimulai denganls
, case-insensitive, lakukan:sumber
metode pintas untuk mencantumkan semua perintah. Buka terminal dan tekan dua kali tombol "tab" . Itu menunjukkan semua perintah di terminal
sumber
grep
bagaimana tepatnya?Atau, Anda bisa mendapatkan daftar perintah yang nyaman ditambah dengan deskripsi cepat (selama perintah memiliki halaman manual, yang kebanyakan dilakukan):
Maka Anda hanya mengambilnya seperti yang Anda inginkan.
hasil:
Hasilnya tampaknya tidak diurutkan, jadi jika Anda mencari daftar panjang, Anda bisa melempar | sortir | ke tengah, dan kemudian pipa itu ke pager seperti kurang / lebih / paling. ala:
Yang mengembalikan daftar semua perintah yang diurutkan yang memiliki "zip" dalam nama mereka atau deskripsi singkat mereka, dan memompa bahwa pager "kurang". (Anda juga bisa mengganti "kurang" dengan $ PAGER dan menggunakan pager default.)
sumber
Anda selalu dapat mengikuti yang berikut:
Shell akan menjalankan perintah hanya jika mereka terdaftar di path env var.
sumber
itu tergantung, maksud saya itu tergantung pada shell apa yang Anda gunakan. berikut adalah kendala yang saya lihat:
Saya menggunakan ZSH jadi di sini adalah jawaban zsh, ia melakukan 3 hal berikut:
ini dia:
Jika Anda menggunakan zsh, ini harus dilakukan.
sumber
Masalahnya adalah bahwa penyelesaian tab mencari jalur Anda, tetapi semua perintah tidak ada di jalur Anda.
Untuk menemukan perintah di jalur Anda menggunakan bash, Anda dapat melakukan sesuatu seperti:
untuk x in
echo $PATH | cut -d":" -f1
; lakukan ls $ x; selesaisumber
Inilah fungsi yang bisa Anda masukkan ke file bashrc Anda:
Contoh penggunaan:
FYI: IFS adalah variabel yang digunakan bash untuk membagi string.
Tentunya mungkin ada beberapa cara yang lebih baik untuk melakukan ini.
sumber
mungkin saya salah paham tetapi bagaimana jika Anda menekan Escape sampai Anda mendapatkan kemungkinan Display All X?
sumber
sumber
compgen -c > /tmp/list.txt && /tmp/wc list.txt
Mengapa Anda tidak mengetik saja:
Di terminal.
Shell akan mengatakan sesuatu
EDIT:
Ok, saya mengambil downvote, karena jawabannya bodoh, saya hanya ingin tahu: Apa yang salah dengan jawaban ini !!! Penanya berkata:
Mengetik perintah akan memberi tahu Anda jika tersedia !.
Mungkin dia bermaksud "tanpa melaksanakan perintah" atau "memasukkannya ke dalam naskah" tetapi saya tidak bisa membaca pikirannya (bukan karena saya tidak bisa secara teratur hanya karena dia memakai deflektor membaca pikiran )
sumber
formathdd
perintah itu ada. Oh, tunggu, saya hanya menjalankannya dan melihatnya. Wah. Terima kasih :)dalam bahasa debian: ls / bin / | grep "whatImSearchingFor"
sumber