Di AskUbuntu, saya telah melihat beberapa perintah di sekitar yang terlihat cukup rumit, dengan banyak simbol di dalamnya. Untuk mendapatkan pemahaman yang lebih baik tentang bagaimana perintah-perintah ini dibangun, saya ingin tahu apa artinya simbol.
Sebagai contoh:
find ~/ -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;
atau bahkan lebih rumit:
echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"
Saya memahami dengan baik bahwa menambahkan parameter sebagai -c
, --debug
, memiliki efek tertentu pada commmand utama. Makna ini hampir di semua kasus dapat ditemukan di man
halaman, jadi itu tidak benar-benar apa yang saya cari.
Tolong, coba dalam jawaban Anda untuk menentukan apa yang dilakukan simbol secara khusus, alih-alih menjelaskan contoh yang saya berikan. Itu bisa terlihat seperti ini:
" means 'argument': the main command uses anything within these symbols as its source
^ is used for ...
# is used for ...
Terima kasih sebelumnya
sumber
-c -D
bisa berarti sesuatu dalam perintah 1 dan hal yang sama sekali berbeda dalam perintah 2.Jawaban:
Lihat bagian Bash Reference Manual yang disebut Shell-Operation dan Advanced Bash-Scripting Guide Bab 3 (Karakter Khusus) .
Saya merujuk kepada mereka kapan saja saya perlu belajar sesuatu yang baru tentang shell scripting di ubuntu / linux.
Saya pikir Anda akan menemukan ABS Bab 3 yang paling mudah dinavigasi untuk keperluan Anda. Semua simbol terlihat di paling kiri halaman dengan deskripsi tepat di bawahnya.
sumber
Sayangnya Anda harus pergi ke halaman manual, karena "simbol" mungkin memiliki arti yang berbeda tergantung pada perintah mana yang membacanya.
Misalnya, dalam perintah pertama Anda, arti {} dan \; tergantung pada perintah find (man find). Arti dari kutipan pada argumen ke sed tergantung pada sed atau bash (karena ini adalah parameter yang dikutip, maka berpotensi menjadi hal yang shell). The ~ / jelas merupakan hal perluasan pola bash.
Untuk perintah rumit kedua, sebagian besar bergema, jadi Anda akan menemukan sebagian besar informasi tentang itu di halaman manual bash.
Untuk menjawab komentar Anda tentang ini, karakter arahan ulang> <| digunakan untuk mem-pipe barang dari, dan ke dalam, file (lebih besar dan lebih kecil dari tanda), dan untuk menghubungkan output perintah dengan input orang lain (pipa |). Lihat di sini untuk tutorial yang bagus tentang pengalihan I / O, ini adalah fitur desain yang sangat kuat dari shell dan toolset Unix.
sumber
>
? Itu pertanda yang sering saya lihat juga, saya pikir itu berarti 'salinan' atau sesuatu. Apakah ini juga tergantung pada perintah?Yang pertama mencari file yang diakhiri
.c
dari dalam direktori~/
danexec
utessed
(streamline editor) di manas
earch untukcybernetnews
dan mengubahnya menjadicybernet
.Yang ke-2 menghindari saya ... menunjukkan hasil kosong ketika dieksekusi.
sumber
Sumber daya terbaik yang saya temukan untuk mempelajari perintah terminal adalah LinuxCommand , ini memberikan deskripsi rinci tentang perintah yang paling banyak digunakan yang tersedia.
sumber
Sulit untuk memberi tahu Anda arti penuh simbol saat Anda menempelkan perintah yang rumit.
Gema khususnya.
Lihat gema manusia untuk -e, itu memungkinkan pelarian, jadi lebih lambat adalah pelarian.
Mayoritas simbol lainnya adalah manipulasi string.
Jadi bayangkan Anda memiliki variabel, saya yang berisi string "foo"
Tetapi menjadi lebih kompleks jika variabel Anda, $ i, juga merupakan bagian dari string
Sekarang Anda dapat memanipulasi string juga, hanya mencetak sebagian
Dalam kasus Anda
$ {i # * =} = print $ i, Hapus kecocokan terpendek antara * dan =, tetapi * itu sendiri adalah wildcard ..
Lihat http://tldp.org/LDP/abs/html/string-manipulation.html
Selanjutnya kita menekan sub shell (x ...)
Bash akan memproses perintah di sub shell dan mengembalikan output dari perintah.
x = (sub string i); terus
Sekarang kami memiliki tes, ["$ {! X}"]
Lihat: http://tldp.org/LDP/abs/html/testconstructs.html
Dan di sinilah saya tidak bisa memberi tahu Anda lagi.
Dalam bash, $ {! X} akan menjadi string kosong. && == logis dan || logis atau
test {string kosong} DAN gema string kosong atau gema x
Anda perlu memberikan lebih banyak sintaks, tetapi tampaknya gema ini mem-piping outputnya di suatu tempat.
Lagi [] adalah ujian, dan kami lolos [pada awalnya.
Jadi saya hanya bisa menjelaskan apa yang dilakukan gema.
Alasan mengapa tidak ada output ketika Anda memasukkan perintah echo di terminal adalah itu adalah potongan kode, secara default tidak x atau i didefinisikan, sehingga semua output kosong.
sumber
Untuk pertanyaan tentang simbol dalam bahasa tertentu, Anda mungkin ingin mencoba SymbolHound. Anda dapat mencari karakter di web yang tidak ditemukan Google.
sumber