Apa arti simbol-simbol ini dalam beberapa perintah terminal Linux? [Tutup]

12

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 manhalaman, 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

Percepatan-G
sumber
Saya pikir itu tergantung pada perintah -c -Dbisa berarti sesuatu dalam perintah 1 dan hal yang sama sekali berbeda dalam perintah 2.
Uri Herrera
hei Anda mengubah perintah 1? di mana hasil edit: X
Rinzwind
Saya memang mengubah komentar 1, karena itu menyimpan hal-hal yang tidak informatif. Saya ingin menunjukkan contoh yang relatif mungkin. Saya membuat komentar edit di bagian yang sesuai untuk itu. Terima kasih untuk hal-c -D, saya mengerti. Saya memperbarui pertanyaan.
Percepatan-G
Terkait:  Apa saja operator kontrol dan pengalihan shell?
G-Man Mengatakan 'Reinstate Monica'

Jawaban:

14

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.

SaultDon
sumber
Panduan Bash-Scripting Lanjutan - Bab 3 hebat. Terima kasih.
Percepatan-G
Daftar di bab 3 dari panduan bash-scripting lanjutan tidak lengkap dan sebagian salah. Panduan Advanced Bash Scripting bukan sumber yang bagus untuk mempelajari bash. Lihat mywiki.wooledge.org/BashGuide dan mywiki.wooledge.org/BashFAQ sebagai gantinya.
geirha
@geirha saya menemukan ABS sangat membantu, tetapi untuk simbol-simbol dalam perintah tertentu saya lebih suka melihat halaman manual, dan tautan Anda juga sangat bagus - ditandai. Terima kasih.
SaultDon
7

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.

roadmr
sumber
OKE, dan bagaimana >? Itu pertanda yang sering saya lihat juga, saya pikir itu berarti 'salinan' atau sesuatu. Apakah ini juga tergantung pada perintah?
Percepatan-G
3

Yang pertama mencari file yang diakhiri .cdari dalam direktori ~/dan executes sed(streamline editor) di mana search untuk cybernetnewsdan mengubahnya menjadi cybernet.

Yang ke-2 menghindari saya ... menunjukkan hasil kosong ketika dieksekusi.

Rinzwind
sumber
Itu sangat mungkin, karena diambil dari pertanyaan lain di sini. Tanpa konteksnya, ia mungkin tidak melakukan apa-apa.
Percepatan-G
2

Sumber daya terbaik yang saya temukan untuk mempelajari perintah terminal adalah LinuxCommand , ini memberikan deskripsi rinci tentang perintah yang paling banyak digunakan yang tersedia.

Mark Rooney
sumber
tautan buruk, perbarui atau hapus.
terbang setelah
2

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"

i=foo;echo $i
foo

Tetapi menjadi lebih kompleks jika variabel Anda, $ i, juga merupakan bagian dari string

echo $ibar # Note: no output

echo ${i}bar # we have output
foobar

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 ..

echo ${i#o}
foo

echo ${i#*o}
o

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.

Harimau kumbang
sumber
1

Untuk pertanyaan tentang simbol dalam bahasa tertentu, Anda mungkin ingin mencoba SymbolHound. Anda dapat mencari karakter di web yang tidak ditemukan Google.

Tom
sumber