Perintah Bash Asas

Lembaran cheat ini meliputi topik berikut: Pengenalan kepada shell, navigasi, arahan asas, pembolehubah persekitaran, penyambung, paip, ubah hala I/O, kebenaran dan pintasan papan kekunci.

Pengenalan Bash Shell

Shell, atau shell, ialah program, dalam kes kami dipanggil "bash", yang merupakan singkatan untuk Bourne Again Shell. Shell mengambil arahan anda dan menghantarnya ke sistem pengendalian. Terminal seperti gnome-terminal , eterm , nxterm , dsb. digunakan untuk berinteraksi dengan sistem.

Navigasi

DALAM fail linux dan direktori mempunyai organisasi hierarki, iaitu, terdapat beberapa direktori awal, dipanggil akar. Ia mengandungi fail dan subdirektori, yang seterusnya mengandungi fail dan subdirektorinya.

pwd

perintah pwd, singkatan dari cetak direktori kerja, paparan lokasi sekarang dalam struktur direktori.

cd

Perintah cd membolehkan anda menukar ke direktori baharu.

mkdir

Perintah mkdir mencipta direktori baharu dalam direktori semasa.

Perintah asas

lelaki

Arahan lelaki memaparkan manual arahan. Sebagai contoh, arahan berikut akan memberi anda semua maklumat tentang arahan kucing:

$ lelaki kucing

kucing

Perintah kucing membaca fail yang diberikan sebagai hujah dan mencetak kandungannya pada output standard. Meluluskan berbilang fail sebagai hujah akan mengeluarkan kandungan gabungan semua fail.

bergema

Perintah gema mencetak hujahnya pada output standard.

$ echo Hello World Hello World

Jika anda memanggil gema tanpa hujah, rentetan kosong akan dikeluarkan.

kepala

Perintah kepala membaca 10 baris pertama mana-mana teks yang diberikan dan mengeluarkannya pada paip standard. Bilangan baris keluaran boleh diubah:

$ kepala -50 test.txt

ekor

Perintah ekor berfungsi seperti arahan kepala, tetapi membaca baris dari hujung:

$ ekor -50 test.txt

Anda juga boleh melihat baris yang ditambahkan pada fail dalam masa nyata menggunakan bendera -f:

$ tail -f test.txt

kurang

Perintah yang kurang membolehkan anda menavigasi fail atau sekeping teks yang dipindahkan, dan dalam kedua-dua arah.

$ less test.txt $ ps aux | kurang

Lebih lanjut mengenai tujuan simbol | akan dibincangkan di bawah dalam bahagian arahan sejarah.

Pintasan papan kekunci biasaPenerangan
GBergerak ke hujung fail
gBergerak ke permulaan fail
:50 Bergerak ke baris 50 fail
qKeluar kurang
/ istilah carianRentetan carian yang sepadan dengan 'istilah carian' di bawah talian semasa
/
?istilah carianCari baris yang sepadan dengan 'istilah carian' di atas baris semasa
? Beralih ke hasil carian sepadan seterusnya
naikBergerak satu barisan ke atas
turunMenggerakkan satu baris ke bawah
muka suratBergerak ke atas satu halaman
halaman bawahMengalihkan satu halaman ke bawah

benar

Perintah benar sentiasa mengembalikan sifar sebagai status keluar untuk menunjukkan kejayaan.

salah

Perintah palsu sentiasa mengembalikan bukan sifar sebagai status keluar untuk menunjukkan kegagalan.

$?

$? ialah pembolehubah yang mengandungi status keluar perintah terakhir dijalankan. Status biasanya difahami sebagai kod kembali program. 0 bermakna pelaksanaan program yang berjaya, sebarang nilai yang lebih besar daripada 0 mencerminkan fakta bahawa beberapa ralat berlaku semasa pelaksanaan. By the way, inilah sebabnya dalam bash true (true) dianggap 0, dan semua yang bukan 0 adalah palsu (false):

$ benar $ echo $? 0 $palsu $echo $? 1

grep

Perintah grep mencari rentetan yang diberikan dalam fail yang ditentukan:

$ cat users.txt pengguna:kata laluan pelajar:123 pengguna:kata laluan guru:321 $ grep "fail pelajar`1.txt pengguna:kata laluan pelajar:123

grep juga boleh menerima berbilang fail dan ungkapan biasa untuk menjelaskan format teks.

sejarah

Perintah sejarah memaparkan sejarah baris arahan. Ia biasanya digunakan bersama dengan arahan grep untuk mencari arahan tertentu. Sebagai contoh, kod berikut akan mencari semua arahan yang mengandungi rentetan g++ :

$ sejarah | grep g++ 155 g++ fail1.txt 159 g++ fail2.txt

Simbol | juga digunakan di sini. - ini adalah penghantar (paip) yang dipanggil. Terima kasih kepadanya, anda boleh mengalihkan output satu arahan ke input yang lain - oleh itu, dalam contoh di atas, keseluruhan cerita, yang dalam mod biasa output oleh arahan sejarah terus ke output terminal akan diubah hala ke grep sebagai input. Kami tidak akan melihat output arahan sejarah, tetapi kami akan melihat output arahan grep.

Ini boleh menjadi agak sukar untuk difahami tanpa latihan, jadi uji sendiri, contohnya dengan perintah ls , history , ps (diterangkan di bawah), mengubah hala outputnya ke grep , sed atau less , sebagai contoh.

eksport

Perintah eksport menetapkan pembolehubah persekitaran untuk dihantar kepada proses anak. Sebagai contoh, ini adalah cara anda boleh menghantar nama pembolehubah dengan pelajar nilai:

$ nama eksport=pelajar

ps

Perintah ps memaparkan maklumat tentang menjalankan proses.

$ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash

Empat item dipaparkan:

  • ID Proses (PID),
  • jenis terminal (TTY),
  • masa proses (MASA),
  • nama arahan yang memulakan proses (CMD).

awk

Perintah awk mencari dan menggantikan teks dalam fail dengan corak yang diberikan: awk "corak (tindakan)" test.txt

wget

Perintah wget memuat turun fail dari web dan meletakkannya dalam direktori semasa.

$ wget https://github.com/mikeizbicki/ucr-cs100

nc

ping

Perintah ping menguji sambungan rangkaian.

$ ping google.com PING google.com (74.125.224.34) 56(84) bait data. 64 bait daripada lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7.82 ms --- statistik ping google.com --- 1 paket dihantar, 1 diterima, kehilangan paket 0% , masa 8ms rtt min/avg/maks/mdev = 7.794/8.422/10.792/0.699 ms

Statistik pada penghujung menunjukkan bilangan sambungan yang dibuat sebelum arahan selesai dan masa yang diambil untuk menyelesaikannya.

git

Pembolehubah persekitaran

Pembolehubah persekitaran dinamakan pembolehubah yang mengandungi nilai yang digunakan oleh satu atau lebih aplikasi.

Pembolehubah PATH mengandungi senarai direktori tempat sistem mencari fail boleh laku.

Pembolehubah HOME mengandungi laluan ke direktori rumah pengguna semasa.

Penyambung

Penyambung membolehkan anda menjalankan berbilang arahan pada masa yang sama.

$ true && echo Hello Hello $ false || echo Hello Hello $ echo Hello ; ls Hello test.txt file1.txt file2.txt

Penghantar

Talian paip, atau paip, membolehkan anda menyambung saluran input dan output bagi arahan yang berbeza. Dalam contoh berikut, output arahan ls akan disalurkan ke head , menyebabkan hanya 10 item pertama dicetak.

$ ls -l | kepala

Pengalihan I/O

Ubah hala Keluaran

Ubah hala keluaran standard menggunakan simbol > dan >> .

Sebagai contoh, kod ini akan memaipkan output ls ke fail dan bukannya ke skrin:

$ ls > files.txt $ cat files.txt file1.cpp sample.txt

Jika fail itu tidak wujud, ia dicipta, dan jika ada, ia akan ditulis ganti. Untuk mengelakkan penulisan ganti, anda harus menggunakan perintah >> - ia menambahkan data ke penghujung fail.

Ubah hala input

Ubah hala keluaran standard menggunakan simbol< . В следующем примере sort берет входные данные из файла, а не с клавиатуры:

$ cat files.txt c b $sort< files.txt b c

Perintah isihan mencetak kandungan fail ke skrin kerana kami belum mengubah hala output. Ini boleh dilakukan seperti ini:

$sort< files.txt >files_sorted.txt

Ubah hala lanjutan

Menambah & kepada > menyebabkan kedua-dua keluar standard dan ralat diubah hala. Sebagai contoh, fail test.cpp akan mengeluarkan rentetan stdout kepada cout dan rentetan stderr kepada cerr .

$ g++ test.cpp $ ./a.out >& test.txt $ cat test.txt stdout stderr

Jika anda ingin memaparkan yang khusus deskriptor fail, anda boleh menetapkan nombornya kepada > .

NamaDeskriptorPenerangan
stdin0 Input standard
stdout1 keluaran standard
stderr2 Output Ralat Standard

Sebagai contoh, untuk mengubah hala stderr ke test.txt, lakukan perkara berikut:

$ g++ test.cpp $ ./a.out 2> test.txt stdout $ cat test.txt stderr

Hak akses

Perintah ls -l mencetak banyak maklumat tentang kebenaran setiap fail:

chmod

Perintah chmod menukar kebenaran fail. Berikut ialah gabungan bendera biasa untuk menukar hak pengguna tertentu:

Anda boleh memanggil chmod dengan penerangan tentang perkara yang perlu dilakukan dengan fail tertentu. Simbol - menandakan penyingkiran hak, simbol + - penambahan. Contoh berikut akan menjadikan fail boleh dibaca dan boleh ditulis oleh pemilik dan kumpulan:

$ chmod ug+rw test.txt $ ls -l test.txt -rw-rw---- 1 kumpulan pengguna 1097374 26 Januari 2:48 test.txt

Juga, chmod boleh digunakan dengan nombor perlapanan, dengan 1 ialah kehadiran hak, dan 0 ialah ketiadaan:

Rwx=111=7 rw-=110=6 r-x=101=5 r--=100=4

Perintah seterusnya akan berfungsi seperti yang sebelumnya.

Institut Teknologi Elektronik Negeri Moscow

(Universiti Teknikal)

Jabatan Elektronik Bersepadu dan Sistem Mikro

BENGKEL MAKMAL

DENGAN KURSUS:

SISTEM OPERASILinux

Disusun oleh: penolong jabatan. IEMS Kozlov A.V.

Moscow, 2007

Makmal ini bertujuan terutamanya untuk pelajar Sarjana Kejuruteraan dan Teknologi program pengajian Synopsys tahun pertama ke arah 210100.68, untuk menguasai sistem pengendalian Red Hat Enterprise Linux (RHEL) 4.0. Ia juga bertujuan untuk pelajar FreeScale dan semua pengguna dengan latar belakang Linux yang baru atau tiada yang ingin mempelajari persekitaran arahan Linux dan aplikasi terasnya yang pengguna perlukan untuk bekerja dengan sistem reka bentuk bantuan komputer.

Bengkel ini terdiri daripada lapan kerja makmal yang membolehkan pengguna menguasai arahan penterjemah arahan dengan berkesan, serta secara beransur-ansur mempelajari cara menulis fail - skrip Shell, Gawk, Perl dan Tcl. Setiap kerja makmal merangkumi bahagian berikut: tajuk, tugas dan tujuan kerja; maklumat teori dengan soalan kawalan; contoh kerja makmal; prosedur untuk melaksanakan kerja makmal; tugasan makmal dan borang laporan kerja. Sintaks untuk menulis arahan dalam shell, bersama-sama dengan pilihan, parameter, tindakan, ungkapan dan laluan ke objek, direka bentuk untuk persekitaran arahan BASH. Senarai rujukan disediakan di penghujung bengkel makmal.

INSTITUT KEJURUTERAAN ELEKTRONIK NEGERI MOSCOW (UNIVERSITI TEKNIKAL)

MAKMAL #1

DALAM KURSUS "LINUX OPERATING SYSTEM"

Mempelajari arahan bash shell pada linux

PENERANGAN DIBUAT OLEH:

A. V. KOZLOV

MOSCOW 2007

Makmal #1 Mempelajari arahan shell bash dalam OS Linux

Matlamat kerja : berdasarkan penterjemah arahan BASH untuk menguasai kemahiran bekerja dengan arahan dalam sistem pengendalian Red Hat Enterprise Linux 4.0.

Waktu bekerja - 4 jam

Maklumat teori

sistem operasi linux pada asalnya dibangunkan sebagai platform percuma, fleksibel, pelbagai fungsi, berbilang pengguna, berprestasi tinggi yang direka untuk melayani dan menyelesaikan masalah saintis di seluruh dunia. Oleh kerana "orientasi saintifik", platform sedemikian pada mulanya tidak mempunyai antara muka grafik yang diperluas, yang digunakan secara meluas dalam menyelesaikan tugas rumah - permainan komputer, Internet, program interaktif untuk menghubungkan pengguna, serta dalam menyelesaikan masalah pejabat - bekerja. dengan sistem pangkalan data, memplot carta dan histogram. Selalunya, kerja saintis dengan sistem pengendalian Linux dikurangkan hanya kepada interaksi biasa pengguna (seseorang yang bekerja pada komputer) dengan konsol (tetingkap terminal pada skrin monitor dengan maklumat teks). Untuk memahami arahan yang dimasukkan oleh pengguna dalam Linux, dibangunkan jurubahasa arahan, yang merupakan penterjemah perintah yang boleh difahami oleh manusia kepada isyarat kawalan yang boleh difahami oleh inti sistem pengendalian. Tugas utama sistem pengendalian adalah untuk mengantara penghantaran arahan daripada seseorang ke komputer. Dan, walaupun pada hakikatnya hari ini sistem pengendalian Linux digunakan di mana-mana bukan sahaja di institut, pusat reka bentuk, pusat komputer, tetapi juga untuk tujuan rumah dan pejabat, konsol (tingkap terminal) masih digunakan secara meluas, dan nampaknya lebih banyak lagi. lebih mudah daripada menggunakan tetikus dan ikon (ikon dalam Linux) dalam persekitaran grafik.

jurubahasa arahan ialah antara muka interaktif rentetan dengan gesaan baris arahan antara pengguna dan sistem pengendalian. Pengguna memasukkan arahan pada baris arahan, jurubahasa arahan "menerima" mereka dan menghantarnya sebagai arahan kepada sistem pengendalian untuk pelaksanaan. Jurubahasa arahan membolehkan anda bukan sahaja untuk memasukkan arahan, tetapi juga untuk mengubah hala input dan output data baris arahan, serta melaksanakan operasi dalam latar belakang, membolehkan pengguna melakukan tugas lain pada masa yang sama.

Banyak shell telah dibangunkan untuk Linux: shell Bourne Again (BASH), shell Domain Awam (PDKSH), penterjemah TCSH dan Z-shell. Walaupun BASH ialah penterjemah lalai, mana-mana persekitaran lain boleh digunakan. Untuk kemudahan bekerja dalam mod harian, hanya satu jurubahasa arahan sudah memadai. Red Hal Linux merangkumi semua cengkerang utama, tetapi cangkerang BASH dipasang dan digunakan secara lalai. Ini bermakna sistem pengendalian ini menggunakan BASH untuk operasi baris arahan, melainkan dinyatakan sebaliknya.

Barisan arahan. Antara muka baris arahan Linux terdiri daripada satu baris di mana anda memasukkan arahan dengan pilihan dan parameter. Dalam shell BASH, permulaan baris arahan biasanya ditandakan jemputan sebagai tanda dolar ($); cangkerang lain pada sistem Linux mungkin menggunakan bentuk gesaan yang berbeza. Selepas gesaan, pengguna boleh memasukkan sama ada satu arahan atau arahan dengan pilihan dan parameter. Jika pengguna tidak mempunyai saiz arahan arahan yang mencukupi, maka adalah mungkin untuk mengehadkannya dengan aksara "/". Perintah ditaip dari papan kekunci, dan input dilakukan menggunakan kekunci. Sebagai contoh, untuk memaparkan tarikh sistem dan masa sistem, pengguna boleh menggunakan arahan Tarikh .

$ tarikh

Jum 8 Jun 15:42:35 MSD 2007

Atau, sebagai contoh, untuk memaparkan kalendar dengan bulan semasa, gunakan arahan cal.

$cal

Jun 2007

Su Mo Tu We Th Fr Sa

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

Antara muka shell utama ialah antara muka baris arahan yang mentafsir perintah yang dimasukkan dan menghantarnya ke sistem. Perintah yang dimasukkan pada baris arahan mesti mengikut peraturan sintaks tertentu. Peraturan am untuk memasukkan arahan ialah perkataan pertama yang ditaip pada baris arahan mestilah nama arahan; perkataan berikut adalah pilihan dan parameter arahan. Setiap perkataan pada baris arahan dipisahkan daripada perkataan lain oleh satu atau lebih ruang atau tab.

Pilihan - ialah kod tunggal atau berbilang huruf yang didahului sempang yang mengubah suai jenis tindakan yang dilakukan oleh arahan. Sebagai contoh arahan dengan pilihan, berikut ialah arahannya ls . Apabila digunakan tanpa pilihan, arahan ini menyenaraikan semua fail dan direktori yang terkandung dalam direktori semasa. Selain daripada nama fail dengan dan tanpa sambungan, tiada apa-apa lagi dalam senarai ini. Sebagai contoh, apabila memasukkan arahan ls dengan pilihan - l pasukan ls menghasilkan output maklumat baris demi baris bagi setiap fail iaitu saiz, tarikh dan masa peluang terakhir. Dalam contoh berikut, pengguna memasukkan arahan ls dengan pilihan - l. Tanda sempang sebelum pilihan diperlukan. Beginilah cara sistem Linux membezakan pilihan daripada parameter.

$ ls -l

jumlah 28

Pilihan -a membolehkan anda memaparkan semua fail dalam direktori semasa, termasuk yang dipanggil fail tersembunyi. Fail konfigurasi sering disembunyikan. Nama fail tersembunyi sentiasa bermula dengan titik, jadi ia sering dipanggil dipahatfail. Dalam kebanyakan kes, pilihan digabungkan. Dalam kes ini, satu sempang biasa diletakkan sebelum kumpulan pilihan. Sebagai contoh, pilihan -al memberikan maklumat tentang semua fail yang terkandung dalam direktori semasa, termasuk fail tersembunyi. Fail ttt baharu dipaparkan.

$ ls -al

jumlah 40

Parameter ialah perkataan yang dimasukkan pada baris arahan selepas pilihan. Perintah fail biasanya menggunakan nama fail sebagai parameter. Contohnya, jika anda hanya mahukan maklumat tentang satu fail gauss.plx, nyatakan namanya selepas pilihan -l:

$ ls -l gauss.plx

Kerja pengguna bermula dalam persekitaran shell BASH, yang dimuatkan secara lalai. Ia mengandungi ciri penyuntingan baris arahan khas yang boleh menjadi sangat berguna apabila mempelajari OS Linux. Sebelum melaksanakan arahan, ia boleh diperbetulkan dengan menggerakkan kursor pada baris arahan dan memasukkan atau memadam aksara. Ini amat berguna apabila bekerja dengan arahan yang sangat kompleks. Operasi penyuntingan akan membantu membetulkan kesilapan semasa menaip arahan. Menggunakan kekunci |up| anda boleh mengeluarkan arahan yang baru sahaja dilaksanakan. Anda kemudian boleh menjalankan perintah itu semula atau mengeditnya untuk menjalankan perintah yang diubah suai. Ciri ini sangat mudah apabila mengulangi beberapa operasi berkali-kali, contohnya, semasa mengedit satu dan fail yang sama.

Tujuan penterjemah arahan adalah untuk bekerja dengan fail: mencipta, menyalin, menamakan semula, memindahkan, memadam dan mengubah suai data. Walaupun pengguna tidak bekerja secara langsung dengan konsol, tetapi menggunakan aplikasi grafik, operasi fail ini berlaku secara bebas daripadanya.

Buat fail dan direktori. Di Linux, fail dan direktori ialah dua jenis data, jadi ia dicipta menggunakan pasukan yang berbeza. Untuk membuat direktori (direktori, folder), arahan mkdir dikhaskan dalam Linux ("buat direktori" - buat direktori) digunakan. Dalam contoh berikut, kami akan mencipta direktori baharu dalam direktori semasa. Untuk melakukan ini, gunakan arahan mkdir dan, dipisahkan oleh ruang, nama direktori baharu.

$ mkdir baru

Direktori telah dibuat. Walau bagaimanapun, kadangkala ia diperlukan untuk mencipta keseluruhan struktur bersarang, apabila perlu ada satu lagi di dalam folder yang telah dibuat, dan satu lagi di dalamnya, dan seterusnya. Untuk tujuan ini, arahan mkdir menggunakan pilihan bersarang -p. Contoh berikut mencipta subfolder dengan satu arahan: folder pertama 1, dalam folder 2, dan dalam folder 3.

$ mkdir -p 1/2/3

Anda boleh mencipta fail menggunakan arahan, serta menggunakan editor teks Linux terbina dalam dan luaran, seperti kedit, nedit, gedit dan sebagainya. Walau bagaimanapun, editor yang disenaraikan memerlukan kerja cangkerang grafik, dan oleh itu kerja sistem grafik. Dalam ketiadaannya, anda boleh, sebagai contoh, menggunakan editor teks VIM atau analog yang tidak memerlukan pengendalian sistem grafik. Anda juga boleh mencipta fail menggunakan pengurus fail berasaskan teks seperti Midnight Commander (mc command). Pengguna (pereka bentuk) selalunya perlu menyimpan dalam fail teks maklumat teks, yang mengiringi proses pengiraan litar bersepadu atau, sebagai contoh, parameter elektrofizik peranti semikonduktor simulasi. Dan juga diperlukan untuk memproses (memadam, menambah, mengisih, membahagi) data yang diterima. Tindakan sedemikian juga dijalankan menggunakan arahan Linux. Salah satu arahan paling mudah untuk mencipta fail teks ialah arahan kucing.

Arahan kucing tidak mempunyai antara muka sendiri, jadi selepas memasukkan arahan kucing dengan simbol ubah hala (lihat di bawah) dan nama fail baharu, anda boleh segera menulis maklumat teks dengan bergerak dari baris ke baris menggunakan kekunci Enter. Keluar dari editor kucing (penapis) dengan menekan Ctrl-D. Berikut ialah contoh mencipta fail menggunakan arahan cat.

$ kucing > baru _ fail

Melihat fail yang diterima dijalankan menggunakan arahan kucing dan nama fail yang dipisahkan oleh ruang.

$ kucing baru _ fail

Atau, sebagai contoh, menyimpan maklumat teks daripada konsol semasa menjalankan arahan ls dengan pilihan -a untuk memfailkan r, anda boleh menggunakan fungsi pengalihan data (lihat di bawah) dan arahan tee dengan pilihan -a.

$ ls -l | tee -a r

Menyalin fail dan direktori. Menyalin fail dan direktori dijalankan menggunakan perintah cp, selepas itu objek penyalinan ditunjukkan dengan laluan relatif atau mutlak, dipisahkan oleh ruang, dan destinasi baharu salinan objek ini juga dipisahkan oleh ruang. Contoh berikut menyalin fail gauss.plx daripada direktori semasa ke subdirektori 1, yang terdapat dalam direktori semasa.

$ cp Gauss . plx 1

Jika anda mempunyai hak akses kepada objek Linux (kerja makmal #2), anda juga boleh menyalin fail ini kepada pengguna Alex, yang direktori kerjanya mempunyai laluan mutlak berikut /home/alex , menggunakan arahan berikut.

$ cp Gauss . plx / rumah / Alex

Jika fail dengan nama yang sama sudah wujud di destinasi apabila fail disalin, ia akan ditimpa. Ini boleh mengakibatkan kehilangan data yang diperlukan. Untuk mengelakkan ini, gunakan arahan cp dengan pilihan -i, dalam kes ini Linux akan bertanya kepada pengguna setiap kali jika dia benar-benar mahu menulis ganti fail. Pandangan baharu bagi arahan terakhir kelihatan seperti ini.

$ cp -i gauss.plx /home/alex

Direktori disalin dengan cara yang sama seperti fail. Walau bagaimanapun, apabila menyalin direktori dengan fail dan subdirektori, pilihan -R digunakan sebagai sebahagian daripada arahan cp. Berada dalam direktori /home/antonk/111, mari salin direktori laba2 ke tahap yang lebih tinggi, i.e. ke direktori /home/antonk. Dua titik menunjukkan tahap hierarki satu langkah lebih tinggi.

$ cp - R laba 2 ..

Namakan semula dan alihkan fail dan direktori. Menamakan semula fail dan direktori dijalankan menggunakan perintah mv, selepas itu objek penamaan semula ditunjukkan dipisahkan oleh ruang dan nama baharu objek yang dipisahkan oleh ruang lain. Menamakan semula direktori adalah sama seperti menamakan semula fail. Mari namakan semula fail gauss.plx kepada fail baharu bernama gauss2.plx . Jika fail dengan nama yang sama dengan nama baharu fail yang dinamakan semula sudah wujud dalam direktori ini, ia akan ditimpa oleh kandungan fail yang dinamakan semula. Untuk mengelakkan ini, gunakan juga pilihan -i. Dengan cara ini, dalam Linux, penggunaan sambungan tidak diperlukan. Ia hanya digunakan untuk mengaitkan fail dan program boleh laku.

$ mv -i gauss.plx gauss2.plx

Memadam fail dan direktori. Memadam fail dan direktori dalam Linux dilakukan menggunakan arahan rm, di mana nama fail yang dipisahkan dengan ruang untuk dipadam ditentukan. !!! Berhati-hati apabila bekerja dengan arahan ini, anda boleh memadamkan data yang diperlukan. Sama seperti arahan cp, gunakan pilihan -i dengan arahan rm. Perintah dengan pilihan ini akan meminta pengesahan untuk memadam setiap fail dan direktori. Dalam contoh berikut, kami akan memadam fail Gauss 2. plx , meminta pengesahan untuk memadam .

rm –saya gauss2.plx

simbol kumpulan. Kadangkala apabila bekerja dengan shell, anda perlu mencari atau memadankan fail mengikut corak. Sebagai contoh, anda hanya tahu huruf pertama nama fail dan ingin mencari semua fail dalam direktori kerja yang bermula dengan huruf itu. Atau anda tahu urutan beberapa huruf dalam nama fail atau sambungan dan anda perlu mencarinya di antara beberapa ratus fail lain. Dalam kes ini, anda perlu menggunakan aksara khas Linux. Jurubahasa arahan menggunakan siri watak istimewa, dipanggil kad bebas, yang boleh digunakan untuk mencari, memadankan dan menyenaraikan nama fail. Aksara ini ialah asterisk, tanda soal dan kurungan segi empat sama (*, ?, ). Memandangkan nama fail separa, shell menggunakan aksara tersebut sebagai corak untuk mencari dan membina senarai nama fail yang ditemui. Parameter dengan nama fail yang tidak layak digantikan dengan senarai nama fail yang sepadan. Senarai nama ini boleh digunakan sebagai parameter dalam arahan yang beroperasi pada berbilang fail (contohnya, ls). Kad bebas shell disenaraikan dalam Jadual 1. 1.

Jadual 1. Watak khas cangkerang

Simbol umum

Tujuan

Memisahkan arahan pada baris arahan yang sama

"pasukan"

Pelaksanaan perintah

Perbandingan dengan kelas kemungkinan aksara dalam nama fail

Tetapkan watak seterusnya sebagai istimewa. Digunakan untuk menunjukkan aksara kawalan

Paip stdout satu arahan sebagai input kepada arahan lain

Menjalankan arahan di latar belakang

Perintah untuk bekerja dengan senarai arahan yang dimasukkan sebelum ini

Kad bebas

Keputusan permohonan

Memadankan mana-mana set aksara dalam nama fail

Padan dengan mana-mana simbol berasingan dalam nama fail

Ubah hala simbol

Keputusan permohonan

Mengubah hala output standard ke fail atau peranti. Dalam kes ini, jika fail tidak wujud, ia dicipta, jika fail wujud, ia ditimpa.

Tanda seru menyebabkan fail ditimpa jika wujud. Watak ini mengatasi pilihan yang melumpuhkan penulisan ganti fail sedia ada

Ubah hala input standard daripada fail atau peranti kepada program

Mengubah hala output standard ke fail atau peranti, menambahkan output ke penghujung fail

Ubah hala simbol

Hasil penggunaan output ralat standard

Mengubah hala dan menambah output ralat standard pada fail atau peranti

Mengubah hala output mesej ralat standard kepada input standard

Ubah hala output ralat standard ke fail atau peranti

Paipkan output standard mesej ralat ke input arahan lain

Sebagai contoh, aksara asterisk (*) boleh digunakan untuk merujuk kepada fail yang namanya bermula atau berakhir dengan gabungan aksara tertentu. Contoh menunjukkan cara menggunakan aksara asterisk (*) dalam sebarang gabungan aksara.

$ls

docl doc2 document docs mydoc isnin selasa

Memaparkan senarai lengkap fail dalam direktori kerja.

$ ls doc*

docl doc2 dokumen docs

Dalam contoh ini, telah ditunjukkan cara kami "menapis keluar" nama fail yang tidak bermula dengan gabungan huruf "doc" dengan aksara asterisk. Hanya nama fail yang mengandungi gabungan "doc" dipaparkan. Dalam kes ini, fail yang tinggal tidak dipadamkan, ia hanya tidak dipaparkan kepada pengguna.

$ ls *hari

Isnin t uesday

Di sini kami telah memaparkan nama fail yang berakhir dengan gabungan "hari".

$ ls [ mt ] * d *

Isnin hari selasa

Dan di sini kami telah memaparkan nama fail, di mana aksara pertama adalah huruf "m" atau "t", aksara berikutnya adalah sewenang-wenang, kemudian huruf "d" dan sekali lagi aksara sewenang-wenang.

Berhati-hati apabila menggunakan asterisk bersama dengan arahan rm, kerana ini boleh mengakibatkan kehilangan data anda. Perintah berikut memadam semua kandungan folder semasa.

rm *

$ ls *hari

doc doc2 docs

Tanda soal (?) menandakan hanya satu aksara yang tidak ditentukan dalam nama fail.

Proses pengguna yang paling penting ialah shell arahan (ia juga merupakan penterjemah arahan, atau hanya shell). Dialah yang menyediakan interaksi pengguna dengan sistem dalam mod teks, membolehkan anda memasukkan arahan. Ia adalah yang berjalan apabila anda log masuk ke konsol teks dan memberikan anda antara muka baris arahan.

Ia tidak perlu, terbawa-bawa oleh kemudahan antara muka grafik, untuk meremehkan baris arahan. Pertama, banyak tugas pentadbiran hanya boleh dilakukan dari sana; kedua, baris arahan adalah cara yang paling mudah untuk mengautomasikan prosedur rutin. Perintah dalam Linux ialah segala-galanya yang boleh dilaksanakan: fail boleh laku, arahan shell terbina dalam, alias arahan, fungsi yang ditentukan pengguna, fail skrip (skrip) - urutan perintah yang telah disediakan dalam bentuk teks.

Oleh itu, jurubahasa arahan ialah program yang mempunyai arahan terbina dalam sendiri, persekitaran boleh ubah sendiri (persekitaran), dan juga membolehkan anda melaksanakan arahan luaran yang terdapat dalam sistem.

Shell menerima arahan yang dibekalkan pengguna, memproses hujah mereka jika perlu, menyerahkan arahan untuk pelaksanaan, menerima nilai pulangannya dan melakukan tindakan tertentu berdasarkan nilai tersebut. Di samping itu, shell mempunyai bahasa pengaturcaraan terbina dalam (bahasa arahan) yang membolehkan anda menulis skrip arahan bercabang yang kompleks. Ia adalah bahasa arahan yang membezakan cangkerang yang berbeza antara satu sama lain, dan dari situlah pengguna bermula apabila memilih cangkerang.

Linux ialah OS seperti Unix. Linux pada asalnya dibangunkan oleh Linus Torvalds di Universiti Helsinki (Finland) berdasarkan Minix, sistem UNIX kecil yang dicipta oleh Andry Tanenbaum. awal pembangunan Linux disebabkan terutamanya oleh masalah penukaran tugas mod terlindung 80386. Dan Linus "mula serius mempertimbangkan idea gila tentang cara menjadikan Minix lebih baik daripada dirinya."

Cangkang arahan pada sistem UNIX sudah wujud, ia adalah "Cangkang Bourne" (Cangkang Bourne atau ringkasnya cangkang). Tidak lama kemudian, sistem UNIX membangunkan cangkang C, yang menggunakan sintaks yang berbeza, agak mengingatkan sintaks bahasa pengaturcaraan C.

Banyak cangkerang telah dibangunkan untuk Linux. Yang utama yang digunakan secara lalai ialah "Bash" dibangunkan pada berasaskan cangkerang dan dipanggil "Cangkang Baru Bourne" (Bourne Again Shell). Oleh itu, Bash ialah evolusi shell lama, menambah banyak ciri berguna yang terdapat sebahagiannya dalam shell C. Oleh kerana Bash boleh dianggap sebagai superset sintaks shell lama, mana-mana program yang ditulis dalam shell Bourne lama yang baik harus berfungsi dalam Bash.

Walau bagaimanapun, perlu diingatkan bahawa Linux bukanlah sistem UNIX, kerana kodnya telah ditulis semula sepenuhnya, pada mulanya oleh Linus, kemudian dengan bantuan ramai pengaturcara dan peminat UNIX dari Internet, mereka yang mempunyai kemahiran dan kebolehan yang mencukupi untuk membangunkan sistem .

Kernel Linux tidak menggunakan kod UNIX atau mana-mana sumber proprietari lain, dan kebanyakannya program Linux dibangunkan di bawah Projek GNU Yayasan Perisian Percuma di Cambridge, Massachusetts. Tetapi pengaturcara dari seluruh dunia turut menyumbang kepadanya.

Berikut ialah cengkerang arahan Linux yang paling biasa:

  • Bourne shell - Bourne shell, standard pada banyak sistem seperti UNIX;
  • bash - Bourne Again shell, "cengkerang Bourne baru" (digunakan secara lalai pada Linux);
  • csh - C shell, C shell: sintaks bahasa arahannya adalah serupa dengan bahasa C;
  • tcsh - cangkang C kecil, cangkang C minimum;
  • pdksh - domain awam Korn shell, awam Korn shell;
  • sash - cangkerang yang berdiri sendiri, boleh digunakan apabila perpustakaan perisian tidak tersedia.

Senarai semua program shell yang dipasang pada sistem terdapat dalam fail /etc/shells.

Cangkang awal untuk setiap pengguna, yang dilancarkan untuknya apabila dia log masuk ke sistem, dinyatakan dalam fail /etc/passwd. Ia mungkin tidak semestinya bash. Pentadbir secara amnya boleh melarang pengguna tertentu daripada log masuk ke sistem dengan menyatakan /sbin/nologin sebagai "cangkang" yang dimuatkan selepas pendaftaran. Atau tentukan skrip yang direka khas yang membolehkan anda melihat log toga (log), sebagai contoh.

Untuk mengedit fail /etc/passwd di Linux, terdapat arahan khas vipw , yang menyemak ketepatan penyuntingan (arahan itu hanya tersedia kepada pentadbir).

Pada masa hadapan, apabila bekerja dalam cangkerang lalai, anda boleh menukar cangkerang semasa kepada mana-mana cangkerang yang dipasang (lebih tepat, masukkan subkulit). Untuk keluar darinya dan kembali ke shell induk, taip arahan keluar. Dalam shell awal, arahan ini menamatkan sesi.

Dalam mana-mana shell, anda boleh menjalankan skrip arahan yang terdiri daripada arahan daripada shell lain: baris pertama setiap skrip menentukan shell mana ia harus dijalankan, dan shell semasa memulakan yang ditentukan sebagai proses anak untuknya.

Seperti yang saya katakan, secara lalai pengguna baru diberikan shell bash. Ia adalah cangkerang hebat yang merangkumi banyak peningkatan dan ciri terbaik daripada cangkerang lain, dan saya tidak mengesyorkan menukarnya. Pada masa hadapan, apabila saya menyebut "shell", saya akan maksudkan bash.

2. Penghuraian baris perintah, kegemaran bash

Jurubahasa, setelah menerima baris arahan, melakukan beberapa transformasi padanya, menggunakan fungsi yang berkuasa untuk ini, iaitu:

  1. Kembangkan alias (alias) untuk akses pantas kepada arahan yang paling biasa.
  2. Mengembangkan kad bebas atau kad bebas (*, ?, [, ], ~, (, )) untuk mencari fail mengikut corak nama.
  3. Menggantikan pembolehubah yang boleh digunakan oleh shell.
  4. Mengubah hala keluaran satu arahan sebagai input kepada arahan lain menggunakan paip.
  5. Melakukan penggabungan perintah.
  6. Melaksanakan arahan jika ia adalah arahan terbina dalam jurubahasa, atau memulakan proses jika arahan itu luaran.
  7. Ubah hala input/output standard.

Tiga fungsi terakhir memerlukan penggunaan operator khas. Mari kita lihat semua ciri ini.

2.1. Alias

Alias ​​perintah direka bentuk untuk menyediakan penaipan perintah shell yang lebih cekap. Dengan menggunakan alias, perintah hampir semua kerumitan boleh digantikan dengan rentetan sewenang-wenangnya. Untuk melihat senarai alias dan, jika perlu, tambahkan alias baharu padanya, gunakan arahan alias.

Sebagai contoh:

$ export HELLO="Hello from environment!" # ruang mesti dilepaskan dengan petikan

Pembolehubah persekitaran

Persekitaran ialah satu set pembolehubah yang nilainya boleh mengubah tingkah laku shell.

Apabila shell bermula, ia menetapkan beberapa pembolehubah persekitaran untuk dirinya sendiri. Nama mereka standard. Program dan skrip boleh menanyakan nilai mereka dan bukannya cuba memikirkan maklumat yang mereka perlukan sendiri.

Oleh itu, shell menentukan pembolehubah persekitaran yang digunakan dalam sesi semasa. Setiap arahan baharu yang dimasukkan sebenarnya dijalankan sebagai proses anak proses induk, yang, dalam kes ini jurubahasa arahan bash. Pembolehubah persekitaran adalah berbeza topik berubah-ubah bahawa ia tersedia untuk kedua-dua proses ibu bapa dan anak. Pengesanan automatik pembolehubah persekitaran berlaku selepas pengesahan pengguna dalam sistem. Program log masuk, sekiranya proses pengesahan berjaya diselesaikan, berdasarkan fail /etc/passwd menentukan penterjemah arahan yang akan digunakan dalam sesi pengguna ini. Setelah shell ditakrifkan, sesi dikonfigurasikan mengikut fail konfigurasi yang ditunjukkan di bawah.

Fail konfigurasiPenerangan
/etc/profile

Mentakrifkan pembolehubah persekitaran untuk semua pengguna sistem. Fail ini dilaksanakan pada log masuk pertama dan mengandungi pembolehubah persekitaran utama, seperti pembolehubah carian lokasi arahan PATH, pembolehubah nama hos HOSTNAME dan pembolehubah saiz sejarah arahan HISTSIZE. Selain itu, fail ini menjana pembolehubah persekitaran tambahan daripada fail konfigurasi yang terdapat dalam direktori /etc/profile.d.

/etc/bashrc

Dilaksanakan untuk semua pengguna, setiap kali bash shell dimulakan. Fail ini mentakrifkan nilai pembolehubah PS1, serta alias perintah tambahan (alias). Alias ​​ialah nama yang diberikan secara sewenang-wenangnya bagi perintah atau urutan perintah yang membolehkan anda melaksanakan urutan perintah yang kompleks tanpa menaipnya dari papan kekunci, tetapi memanggilnya melalui panggilan ke alias yang sepadan. Pembolehubah yang ditakrifkan dalam fail ini boleh "ditugaskan semula dalam fail yang serupa fail pengguna-/.bashrc yang mempunyai keutamaan yang lebih tinggi.

-/.bashprofile

Digunakan sebagai fail yang mengandungi tetapan pengguna individu. Berjalan hanya sekali apabila pengguna log masuk. Selain itu, fail ini melancarkan fail -/.bashrc

~/.bashrc

Fail ini mengandungi pembolehubah persekitaran dan alias yang ditetapkan oleh pengguna. Ia dilaksanakan setiap kali pengguna log masuk atau membuka sesi bash baharu. Fail ini paling sesuai untuk menentukan pembolehubah tersuai dan alias.

~/.bash_logout

Fail ini dilaksanakan setiap kali anda log keluar atau keluar dari sesi bash terakhir. Secara lalai, fail ini mengandungi arahan untuk mengosongkan skrin terminal.

/etc/inputrc

Fail ini mengandungi perihalan tafsiran pelbagai kombinasi kekunci, dan juga mengandungi gabungan kekunci khas, menekan yang menyebabkan pelaksanaan perintah yang ditentukan.

Pembolehubah persekitaran sudah mencukupi cara yang mudah penyimpanan maklumat yang kerap digunakan dalam sesi semasa bekerja dengan sistem. Jika perlu, pengguna boleh mencipta hampir mana-mana pembolehubah persekitaran (cuba untuk tidak menukar nilai pembolehubah persekitaran yang sudah digunakan) dan membaca nilainya sepanjang tempoh shell. Untuk mencipta pembolehubah persekitaran sementara, masukkan namanya dan tetapkan nilai yang sesuai. Sebagai contoh,

eksport AB=/usr/anjing/berjangkit/pembawa cincin/mengisar

DALAM contoh ini pembolehubah persekitaran sementara AB ditetapkan kepada laluan ke direktori yang terletak cukup "dalam" dalam hierarki direktori sistem fail. Perintah eksport menentukan bahawa nilai pembolehubah AB harus dieksport ke shell untuk menjadikannya tersedia kepada shell lain yang mungkin dibuka dalam sesi sistem semasa. Direktori di atas kini boleh diakses dengan melaksanakan cd $AB

Satu-satunya kelemahan pembolehubah persekitaran sementara ialah ia dimusnahkan secara automatik apabila sesi semasa dengan sistem tamat. Untuk mencipta pembolehubah persekitaran kekal (berbanding dengan sementara), ia mesti ditambahkan pada fail konfigurasi shell .bashrc.

Anda mesti menjadi akar untuk mengubah suai fail konfigurasi /etc/profile dan /etc/bashrc.

Pengguna biasa boleh mengubah suai fail konfigurasi ~/.bash_profile, ~/.bashrc dan ~/.bash_Iogout yang terdapat dalam direktori rumah mereka. Fail konfigurasi ini boleh termasuk menetapkan pembolehubahnya dalam persekitaran menggunakan arahan eksport dan menggunakannya dalam sebarang sesi.

Salah satu pembolehubah persekitaran yang paling kerap diubah ialah pembolehubah PATH. Anda juga boleh mengatasi atau menambah pembolehubah persekitaran PATH dalam fail konfigurasi ~/.bashrc.

dalam contoh ini, pembolehubah PATH akan mengandungi nilai semasanya serta direktori rumah sebagai laluan carian untuk fail boleh laku.

Untuk membolehkan perubahan ini digunakan dalam persekitaran shell semasa, anda mesti menjalankan arahan sumber .bashrc

Pembolehubah persekitaran shell yang paling biasa ialah:

  • BASH - Mengandungi laluan penuh ke arahan bash (biasanya /bin/bash).
  • BASH_VERSION - nombor versi bash.
  • DIRSTACK - Tatasusunan yang mengandungi nilai timbunan direktori semasa.
  • EDITOR- penyunting teks lalai.
  • EUID - ID berkesan berangka pengguna semasa.
  • FUNCNAME - nama fungsi semasa dalam skrip.
  • GROUPS - Tatasusunan yang mengandungi senarai kumpulan yang dimiliki oleh pengguna semasa.
  • HISTFILE - Lokasi fail sejarah arahan. Biasanya, sejarah arahan disimpan dalam fail ~/.bash_history.
  • HISTFILESIZE - Bilangan baris arahan yang boleh disimpan dalam fail sejarah. Selepas nombor ini dicapai, baris arahan baharu dimasukkan ke dalam sejarah dengan memadamkan baris arahan terawal. Senarai lalai bagi arahan yang digunakan baru-baru ini ialah 1000 baris.
  • RUMAH- direktori rumah pengguna.
  • HOSTNAME - Nama komputer ini (hos).
  • HOSTTYPE - Jenis komputer.
  • LANG - Bahasa lalai semasa.
  • LC_CTYPE ialah pembolehubah dalaman yang menentukan pengekodan aksara.
  • MAIL - Lokasi Fail Peti Mel E-mel pengguna. Biasanya, ini ialah fail yang terletak dalam direktori /var/spool/mail, yang namanya sama dengan nama pendaftaran pengguna.
  • MAILCHECK - Selang beberapa minit antara semakan mel.
  • OLDPWD - Direktori yang terkini sebelum direktori terakhir ditukar.
  • OSTYPE - Sistem pengendalian semasa.
  • PATH - Senarai direktori yang dipisahkan bertindih untuk mencari fail boleh laku. Urutan nama direktori diperiksa adalah kritikal. Apabila melaksanakan arahan, direktori yang disenaraikan dalam pembolehubah ini disemak secara berurutan dari kiri ke kanan. Oleh itu, melaksanakan arahan foo yang terletak dalam direktori /bin dan /usr/bin akan melaksanakan arahan yang terdapat dalam direktori /bin. Untuk melaksanakan perintah foo yang terletak dalam direktori /usr/bin dalam situasi yang sama, anda mesti sama ada menentukan laluan penuh kepada arahan ini, atau menukar susunan nama direktori dalam pembolehubah persekitaran PATH. Direktori carian semasa mesti dinyatakan secara eksplisit ("."), shell tidak mencari direktori semasa secara lalai. Mencari program boleh laku dalam direktori semasa berpotensi berbahaya kerana kemungkinan pelaksanaan program berbahaya secara tidak sengaja, jadi pembolehubah PATH biasanya dimulakan tanpa "." Untuk menambah laluan kepada arahan atau skrip shell anda sendiri pada pembolehubah PATH anda, letakkannya dalam subdirektori /bin direktori rumah anda, yang akan ditambahkan secara automatik pada pembolehubah PATH. Tidak semua arahan boleh laku terletak dalam direktori yang disenaraikan dalam pembolehubah persekitaran PATH. Sesetengah arahan dibina terus ke dalam shell. Perintah lain boleh ditakrifkan semula dengan alias, membolehkan anda menggantikan arahan dengan parameter hampir semua kerumitan (dari segi sintaks) dengan satu nama mudah. Di samping itu, adalah mungkin untuk mencipta fungsi yang menyimpan keseluruhan urutan arahan.
  • PPID- Nombor pengenalan proses yang sepadan dengan arahan yang melancarkan shell semasa (contohnya, proses yang melahirkan shell).
  • PS1, PS2, PS3, PS4 - Pembolehubah yang menentukan penampilan gesaan shell.

    Pembolehubah PS1 dan PS2 menetapkan gesaan shell primer dan sekunder.

    Gesaan kedua (PS2) muncul jika anda menekan kekunci Enter tanpa melengkapkan perintah secara sintaksis.

    Pembolehubah ini mengandungi gesaan kecil yang berlaku apabila pengeditan teks berbilang baris atau entri arahan tidak lengkap. Secara lalai, ia dilambangkan sebagai >.

    PS3. Pembolehubah ini mengandungi kehadiran segera dalam pilih pernyataan, digunakan untuk mengatur menu konsol interaktif. Secara lalai, gesaan PS3 dalam pernyataan pilih ialah #?.

    PS4. Pembolehubah ini digunakan terutamanya apabila menyahpepijat skrip shell dan secara lalai mengandungi nilai rentetan "++".

    Sebagai contoh, menjalankan arahan mendapatkan maklumat DNS:

    #nslookup>

  • PWD - Direktori kerja semasa pengguna. Nilai ini berubah setiap kali anda menukar direktori menggunakan arahan cd.
  • SECONDS - masa berjalan skrip (dalam saat).
  • SHELL - Jurubahasa arahan semasa.
  • SHELLOPTS - Senarai pilihan penterjemah yang disertakan.
  • SHLVL - Bilangan pelancaran salinan baharu penterjemah arahan.
  • UID - ID berangka pengguna semasa.
  • PENGGUNA - Nama pengguna semasa.
  • $# - Jumlah bilangan parameter yang dihantar ke skrip.
  • $* - Semua hujah kini dihantar ke skrip (dipaparkan pada rentetan).
  • $@ - Sama seperti yang sebelumnya, tetapi parameter dipaparkan dalam lajur.
  • $! - PID proses terakhir berjalan di latar belakang.
  • $$ - PID skrip itu sendiri.

Untuk melihat nilai semua pembolehubah dalam sesi semasa, kedua-dua yang anda tentukan dan pembolehubah persekitaran, keluarkan arahan set tanpa pilihan atau env printenv .

Anda boleh mengalih keluar pembolehubah dengan arahan yang tidak ditetapkan.

2.4. Penggantian dan organisasi interaksi antara arahan

Penggantian Pembolehubah Persekitaran sesi semasa dengan sistem boleh dilakukan dengan menggunakan metacharacter tanda dolar ($). Akibatnya, shell secara automatik menggantikan nama pembolehubah dengan nilainya. Sebagai contoh,

Menggantikan hasil pengiraan ungkapan aritmetik

Terdapat dua bentuk sintaksis untuk menggantikan hasil penilaian ungkapan aritmetik: $[ungkapan] dan $((ungkapan)). Sebagai contoh,

echo "Saya berumur $tahun."

Penggantian arahan

Penggantian arahan membolehkan anda menggunakan output satu arahan pada baris arahan yang mengandungi arahan lain. Anda boleh menggunakan dua format alternatif penggantian: $(command) atau `command` (single backquotes). Sebagai contoh,

Memperluas watak tilde

Aksara tilde (~) membolehkan anda memasukkan nama direktori dengan cepat.

~ Nama direktori rumah pengguna ~/subdirektori Nama salah satu subdirektori dalam direktori rumah pengguna ~+ Nama direktori semasa ~- Nama direktori sebelumnya

Pendedahan pendakap kerinting

Menggunakan pendakap kerinting, anda boleh memasukkan satu arahan dan bukannya beberapa arahan daripada jenis yang sama. Tanda kurung mesti mengandungi senarai, unsur-unsurnya mesti dipisahkan dengan koma. Jurubahasa membaca elemen satu demi satu dan membentuk arahan berasingan dengan setiap elemen, yang kemudiannya dilaksanakan. Sebagai contoh, arahan

perbelanjaan mkdir/(Jan,Feb,Mac) bersamaan dengan perbelanjaan mkdir/perbelanjaan mkdir Jan/perbelanjaan mkdir Feb/Mac

Saluran

Metacharacter paip (|) menunjukkan keperluan untuk mengatur interaksi antara arahan dengan menggunakan hasil pelaksanaan (output) arahan lain sebagai input (input) kepada arahan. Dengan kata lain, dengan bantuan saluran (saluran paip), hasil arahan pertama boleh dihantar sebagai input kepada arahan kedua. Sebagai contoh,

cat /etc/passwd | menyusun | kepala-3

Urutan dan kumpulan arahan

Menggunakan urutan dan kumpulan arahan membolehkan anda memasukkan berbilang arahan pada satu baris.

command1;command2 Jalankan arahan 1 dahulu, kemudian perintah 2 (command1;command2) Jalankan salinan berasingan penterjemah di mana untuk melaksanakan perintah 1 dan 2 secara berurutan ( command1; command2 ) Laksanakan arahan 1 dan 2 secara berurutan dalam penterjemah semasa command1 && command2 Laksanakan arahan 2 hanya jika arahan 1 command1 || perintah2 Jalankan arahan 2 hanya jika arahan 1 gagal

Hasil daripada pelaksanaan mana-mana arahan (iaitu, hasil penamatan proses yang sepadan) ialah kod keluar. Penyiapan yang berjaya mempunyai kod 0, yang tidak berjaya mempunyai kod 1. Adakah nilai kod penyiapan diberikan kepada pembolehubah yang dipratentukan? (tanda soal). Contohnya echo $?

Melaksanakan semula arahan

Cangkang mempunyai kemudahan untuk memanggil arahan sebelumnya dan mengeditnya. Perintah shell sejarah (sejarah) ialah senarai arahan yang digunakan sebelum ini. Senarai ini boleh dilihat menggunakan arahan sejarah.

Selepas anda memasukkan baris arahan, shell meletakkannya dalam sejarah arahan. Senarai arahan yang digunakan sebelum ini disimpan dalam fail, yang membolehkan anda memanggil mana-mana baris arahan yang dikehendaki daripadanya pada bila-bila masa untuk pelaksanaan semula. Selepas memanggil baris arahan sekali lagi, ia boleh diedit. Sejarah arahan disimpan dalam fail .bash_history, yang terletak dalam direktori rumah pengguna. Secara lalai, shell dapat "mengingat" sehingga 1000 baris arahan.

Untuk melihat senarai arahan yang digunakan sebelum ini, jalankan arahan sejarah. Ia boleh digunakan sama ada tanpa parameter atau dengan parameter untuk menentukan bilangan arahan untuk dipaparkan. Setiap baris arahan mempunyai nombor sendiri dalam sejarah arahan.

Sintaks pengembangan sejarah: !n Jalankan arahan dengan nombor yang diberikan!! Jalankan arahan sebelumnya!rentetan Jalankan arahan terkini bermula dengan rentetan!?rentetan yang diberikan? Jalankan arahan terkini yang mengandungi rentetan yang diberikan

Daripada melaksanakan secara langsung baris arahan yang terkandung dalam sejarah arahan, ia boleh dipanggil untuk pengeditan kemudian. Gunakan kekunci kursor anak panah atas dan anak panah ke bawah Untuk walkthrough sejarah arahan dan pilih baris arahan yang diperlukan.

3. Arahan bash terbina dalam

Senarai arahan shell bash terbina dalam boleh diperoleh daripada arahan bantuan atau ditemui dalam halaman manual di bawah bahagian SHELL BUILTIN COMMANDS.

Berikut ialah beberapa arahan terbina dalam yang berguna:

  • echo [arguments] - Output argumen ke skrin.
  • enable - Menyebabkan shell melaksanakan executable dengan nama yang sama dan bukannya arahan terbina. Berguna jika anda mempunyai skrip anda sendiri bernama seperti echo.
  • eval [argumen] - Membina arahan dengan cepat, daripada hujah yang ditentukan, dan menghantarnya untuk pelaksanaan.
  • biarkan - Penilaian ungkapan.
  • - Baca dan laksanakan arahan yang terkandung dalam fail. Digunakan untuk menentukan pembolehubah pengguna. dan fungsi.
  • nama asas - Menyerlahkan nama tempatan.
  • expr - Penilaian ungkapan.
  • baca - Masukkan nilai pembolehubah.
  • shift - Anjakan senarai parameter.
  • ujian - Memeriksa keadaan.
Perintah terbina dalam lain berfungsi sebagai arahan untuk bahasa arahan bash.

Pada kebanyakan sistem pengendalian Linux, bash ialah penterjemah baris arahan lalai. Untuk menentukan penterjemah semasa, masukkan arahan berikut:

$ echo $SHELL
/bin/bash

Contoh ini menggunakanjurubahasa baris arahan bash. Terdapat banyak jurubahasa arahan lain. Untuk mengaktifkan penterjemah lain, anda boleh memasukkan namanya pada baris arahan (ksh, tcsh, csh, sh, bash, dll.).

Kebanyakan sistem pengendalian Linux berciri penuh menyediakan semua penterjemah arahan yang diterangkan di sini. Tetapi dalam kecil sistem operasi satu atau dua jurubahasa boleh disediakan.

Menyemak ketersediaan orang yang berminatjurubahasabaris arahan

paling banyak dengan cara yang mudah untuk menyemak ketersediaan penterjemah arahan yang diminati adalah dengan memasukkan namanya pada baris arahan. Jika jurubahasa telah bermula, ia tersedia.

Terdapat beberapa sebab untuk memilih cangkerang alternatif.

  • Tabiat bekerja sistem UNIX Sistem V (kebanyakannya menggunakan penterjemah ksh secara lalai), atau sistem daripada Sun Microsystems dan sistem berasaskan UNIX Berkeley yang lain (yang sering menggunakan csh). Dalam kes ini, penggunaan penterjemah inibaris arahanakan lebih selesa.
  • Keperluan untuk menjalankan skrip yang dicipta untuk shell tertentu.
  • Ciri shell alternatif mungkin lebih disukai. Contohnya, salah seorang ahli kumpulan pengguna Linux lebih suka menggunakan ksh kerana dia tidak suka cara alias dicipta dalam bash.

Walaupun kebanyakan pengguna lebih suka bekerja dalam satu cangkang, kemahiran yang diperoleh membantu mereka belajar cara bekerja pada orang lain.jurubahasa baris arahan dengan sekali-sekala melihat manual rujukan (contohnya, menggunakan arahan manbash). Kebanyakan menggunakan bash kerana tiada sebab untuk beralih kepada penterjemah lain.

Menggunakan bash dan ch

Nama bash ialah akronim untuk Bourne Again SHell. Singkatan ini menunjukkan bahawa bash mewarisi penterjemah Bourneshell (arahan sh) yang dicipta oleh Steve Bourne dari AT&TBell Labs. Brian Fox dari Yayasan Perisian Percuma mencipta bash sebagai sebahagian daripada projek GNU. Perkembangan selanjutnya diserahkan kepada Chet Ramey di Case Western Reserve University.

Jurubahasa bash mengandungi ciri yang dibangunkan untuk jurubahasa sh dan ksh semasa versi awal UNIX, serta beberapa ciri jurubahasa csh.

Anda boleh menjangkakan bahawa pada kebanyakan sistem Linux, kecuali untuk sistem khusus (contohnya, dibenamkan atau but daripada cakera luaran), penterjemah bash digunakan secara lalai. Sistem khusus mungkin memerlukan cangkerang yang lebih kecil, yang membayangkan batasan.

Kebanyakan contoh dalam iniartikeldireka untuk bash.

Jurubahasa bash boleh dijalankan pelbagai mod keserasian, meniru tingkah laku cengkerang lain. Ia boleh meniru tingkah laku Bourne shell (sh) atau POSK-compliant shell (bash -posix).

Akibatnya, jurubahasa bash lebih berkemungkinan berjaya membaca fail konfigurasi dan menjalankan skrip yang ditulis khusus untuk cangkerang lain.

Semua sistem pengendalian Linux yang disediakan menggunakan penterjemah bash secara lalai, kecuali untuk sistem pengendalian yang dimuatkan dari media boleh tanggal, yang lalai kepada jurubahasa abu.

Menggunakan tcsh (dan penterjemah csh sebelumnya)

Jurubahasa arahan tcsh ialah pelaksanaan sumber terbuka bagi jurubahasa Cshell (csh). Jurubahasa csh telah dicipta oleh Bill Joy dan digunakan secara lalai pada hampir semua sistem UNIX Berkeley (sistem sedemikian diedarkan oleh Sun Microsystems).

Banyak ciri csh, seperti penyuntingan baris arahan dan kaedah pengurusan sejarah perintah, telah dilaksanakan dalam cangkerang tcsh dan cangkerang lain. Sama seperti arahan sh memulakan jurubahasa bash dalam mod keserasian sh, arahan csh memulakan jurubahasa tcsh dalam mod keserasian csh.

Menggunakan penterjemah abu

Jurubahasa ash ialah versi ringan penterjemah Berkeley UNIX sh. Ia tidak mengandungi banyak fungsi asas dan tidak menyediakan ciri seperti sejarah arahan.

Jurubahasa abu sangat sesuai untuk digunakan dalam sistem terbenam dengan terhad sumber sistem. Pada FedoraCore 4, penterjemah ash ialah susunan magnitud yang lebih kecil daripada penterjemah bash.

Menggunakan zsh

Jurubahasa zsh ialah satu lagi klon jurubahasa sh. Ia mematuhi piawai POSIX (seperti bash), tetapi mempunyai ciri lain, termasuk semakan ejaan dan pendekatan yang berbeza untuk penyuntingan baris arahan. Jurubahasa zsh digunakan secara lalai dalam sistem pengendalian MacOS X awal, tetapi bash ialah jurubahasa lalai pada sistem moden.

Bahagian ini merangkumi topik berikut:

  • Interaksi dengan cengkerang dan arahan
  • Perintah dan Urutan Perintah
  • Mentakrif, menggunakan dan mengeksport pembolehubah persekitaran
  • Sejarah perintah dan alat penyuntingan
  • Menjalankan arahan yang berada dalam pembolehubah persekitaran PATH dan di luarnya
  • Menggunakan penggantian arahan
  • Menggunakan Perintah Secara Rekursif pada Pokok Direktori
  • Menggunakan halaman manual (bantuan) untuk mencari maklumat tentang arahan

Bahagian ini menerangkan beberapa ciri asas shell bash. Penekanan khusus diberikan pada keupayaan yang diperlukan untuk pensijilan. Shell adalah persekitaran yang kaya, dan kami mengalu-alukan penerokaan lanjut mengenainya sendiri. Dengan arahan jurubahasa UNIX dan Linux, banyak buku telah ditulis, dan bash khususnya.

jurubahasa arahan bash

Jurubahasa bash salah satu daripada beberapa jurubahasa yang tersedia di Linux. Ia juga dipanggil B kami- a keuntungan sh ell, sebagai penghormatan kepada Stephen Bourne, pencipta versi awal jurubahasa ( /bin/sh).Bash pada asasnya serasi dengan sh, tetapi memperkenalkan banyak penambahbaikan, baik dari segi fungsi dan keupayaan pengaturcaraan. Ia menggabungkan ciri-ciri jurubahasa Korn (ksh) dan C (csh), dan sedang dibangunkan sebagai jurubahasa yang mematuhi POSIX.

Sebelum kita mula belajar bash, ingat itu jurubahasa ialah program yang menerima dan melaksanakan arahan. Ia juga menyokong keupayaan pengaturcaraan, membolehkan anda mencipta struktur kompleks daripada arahan biasa. Struktur kompleks ini atau senario boleh disimpan ke fail, yang merupakan arahan baharu. Selain itu, banyak arahan pada tipikal sistem Linux Mereka tidak dilaksanakan sebagai skrip shell.

Jurubahasa mengandungi terbina dalam arahan seperti cd, break dan exec. Perintah lain ialah luaran.

Jurubahasa juga menggunakan tiga standard aliran I/O:

  • stdin ini aliran standard input A yang menyediakan input untuk arahan.
  • stdout ini aliran keluaran standard, yang memaparkan hasil pelaksanaan perintah dalam tetingkap terminal.
  • stderr ini aliran ralat standard, yang memaparkan ralat yang berlaku semasa menjalankan arahan.

Strim input memberikan input kepada program, biasanya dikaitkan dengan papan kekunci terminal. Strim output mencetak aksara teks, biasanya ke terminal. Terminal ini pada asalnya adalah mesin taip ASCII atau terminal video, tetapi kini sering menjadi tetingkap pada desktop grafik. Bahagian selebihnya akan menumpukan pada ubah hala peringkat tinggi.

Jika anda menggunakan sistem Linux tanpa GUI, atau jika anda telah membuka tetingkap terminal masuk mod grafik, anda akan melihat gesaan arahan seperti Penyenaraian 1.

Penyenaraian 1. Contoh gesaan pengguna biasa

$
[e-mel dilindungi]:~>
$

Jika anda log masuk sebagai root (atau superuser), gesaan anda mungkin kelihatan seperti Penyenaraian 2.

Penyenaraian 2. Contoh gesaan untuk pengguna akar atau superuser

#
burung lyrebird:~ #
#

Pengguna akar mempunyai kuasa yang besar, jadi gunakannya dengan berhati-hati. Jika anda mempunyai keistimewaan pengguna root, kebanyakan gesaan bermula dengan tanda paun (#). Gesaan pengguna biasa biasanya bermula dengan aksara yang berbeza, biasanya tanda dolar ($). Gesaan anda mungkin berbeza daripada apa yang ditulis dalam contoh dalam panduan ini. Gesaan anda mungkin termasuk nama pengguna, nama mesin, direktori semasa, tarikh atau masa gesaan dicetak dan sebagainya.

Beberapa konvensyen panduan ini

Tutorial developerWorks untuk peperiksaan LPI 101 dan 102 termasuk kod sampel daripada sistem Linux sebenar, menggunakan gesaan lalai untuk sistem tersebut. Dalam kes kami, gesaan pengguna akar bermula dengan #, jadi anda boleh membezakannya daripada gesaan pengguna biasa, yang bermula dengan tanda $. Konvensyen ini adalah sama seperti yang digunakan dalam buku mengenai subjek tersebut. Tonton gesaan shell dengan teliti dalam setiap contoh.

Perintah dan Urutan

Anda berada dalam cangkang, mari lihat apa yang boleh anda lakukan sekarang. Fungsi utama cangkerang ialah ia melaksanakan arahan anda di mana anda berinteraksi dengan sistem Linux. Pada sistem Linux (dan UNIX), arahan terdiri daripada nama arahan, pilihan dan argumen. Sesetengah arahan tidak mempunyai pilihan atau parameter, yang lain mempunyai pilihan tetapi tiada parameter, sementara yang lain tidak mempunyai pilihan atau parameter.

Jika rentetan mengandungi aksara #, maka semua aksara seterusnya di dalamnya diabaikan. Oleh itu, simbol # boleh bermakna permulaan komen dan gesaan pengguna. Tafsiran lanjut akan jelas dari konteks.

Pasukan Gema

Perintah gema mencetak senarai argumennya ke terminal, seperti yang ditunjukkan dalam Penyenaraian 3.

Penyenaraian 3. Contoh arahan gema

$ echo Word
Perkataan
$ gema DAN ayat
Dan tawaran
$ echo Ke mana perginya ruang?
Ke mana perginya ruang?
$ echo "Berikut ialah ruang." # dan komen
Dan inilah jurangnya.

Dalam contoh ketiga dalam Penyenaraian 3, semua ruang antara perkataan dalam output arahan menjadi saiz yang sama dengan satu ruang. Untuk mengelakkan ini, anda perlu melampirkan rentetan dalam petikan, menggunakan sama ada petikan berganda (“) atau petikan tunggal (‘). Bash menggunakan pembatas seperti ruang, tab dan simbol baris baru untuk memisahkan rentetan input kepada token, yang kemudiannya dihantar kepada arahan anda. Melampirkan rentetan dalam petikan menghalang pemisahannya dan oleh itu ia adalah satu token. Dalam contoh di atas, setiap token selepas nama arahan ialah parameter, jadi kami mempunyai 1, 2, 4 dan 1 parameter, masing-masing.

Perintah gema mempunyai beberapa pilihan. Biasanya echo menambah aksara baris baharu selepas keluarannya. Gunakan pilihan -n untuk menjadikannya tidak menambah aksara baris baharu. Gunakan pilihan -e untuk meminta perintah mentafsir urutan pelarian.

Urutan melarikan diri dan pemisah baris

Terdapat masalah kecil apabila menggunakan backslash dalam bash. Apabila aksara sengkang terbalik (\) tidak dipetik, ia sendiri berfungsi sebagai urutan pelarian untuk bash, mengekalkan makna aksara seterusnya. Ini diperlukan untuk aksara meta khas, yang akan kita lihat sedikit kemudian. Terdapat satu pengecualian untuk peraturan ini: garis miring ke belakang diikuti dengan baris baharu menyebabkan bash menelan kedua-dua aksara dan menganggap jujukan sebagai permintaan kesinambungan baris. Ini boleh berguna apabila memutuskan baris panjang, terutamanya untuk skrip.

Untuk urutan yang diterangkan di atas diproses dengan betul oleh perintah gema atau salah satu daripada banyak perintah lain yang menggunakan aksara kawalan melarikan diri yang serupa, anda mesti menyertakan urutan melarikan diri dalam tanda petikan, atau melampirkannya dalam rentetan yang disebut, atau menggunakan yang lain. garis miring ke belakang untuk mengesahkan tafsiran simbol. Penyenaraian 4 mengandungi contoh penggunaan yang berbeza bagi \.

Penyenaraian 4. Contoh penggunaan gema

$ echo -n Tiada baris baharu
Tiada baris baharu$ echo -e "Tiada baris baharu\c"
Tiada baris baharu $ echo "Barisan yang telah diklik
> Masukkan kekunci
Talian yang ditekan
Masukkan kunci
$ echo -e "String dengan aksara melarikan diri\nbaris baharu"
Rentetan dengan watak melarikan diri
baris baru
$ echo "String terlepas \nbaris baharu tetapi tanpa pilihan -e"
Rentetan terlepas dengan baris baharu\ntetapi tanpa pilihan -e
$ echo -e Double \\n\\t metakarakter sengkang terbalik
Metacharacters dengan double
garis miring ke belakang
$ echo Backslash \
> diikuti dengan Enter \
> berfungsi sebagai permintaan untuk meneruskan baris.
Garis miring ke belakang diikuti dengan Enter berfungsi sebagai gesaan untuk meneruskan baris.

Ambil perhatian bahawa bash memaparkan gesaan khas (>) apabila anda menaip rentetan dengan petikan yang tidak lengkap. Rentetan input anda dibalut ke baris kedua dan termasuk aksara baris baharu.

Metakarakter Bash dan pernyataan kawalan

Bash termasuk beberapa aksara yang, apabila tidak disertakan dalam petikan, juga berfungsi untuk memisahkan rentetan input kepada perkataan. Selain ruang, aksara tersebut ialah '|', '&', ';', '(', ')', '<’, и ‘>'. Kami akan membincangkan beberapa simbol ini dengan lebih terperinci dalam bahagian lain dalam panduan ini. Buat masa ini, ambil perhatian bahawa jika anda ingin memasukkan metacharacter sebagai sebahagian daripada teks anda, ia mesti disertakan dalam tanda petikan, atau ia mesti didahului dengan garis miring ke belakang (\) seperti dalam Penyenaraian 4.

Baris baharu dan metakarakter atau pasangan metakarakter yang sepadan juga berfungsi sebagai penyataan kawalan. Watak tersebut ialah ‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘|” '(', Dan ')'. Beberapa pernyataan kawalan ini membolehkan anda membuat urutan atau senarai arahan.

Urutan perintah termudah terdiri daripada dua arahan yang dipisahkan oleh koma bertitik (;). Setiap arahan seterusnya dilaksanakan selepas arahan sebelumnya. Dalam mana-mana persekitaran pengaturcaraan, arahan mengembalikan kod yang menunjukkan penyiapan program yang normal atau tidak berjaya; Perintah Linux biasanya mengembalikan 0 pada kejayaan dan nilai bukan sifar pada kegagalan. Anda boleh memproses secara bersyarat menggunakan operator kawalan && dan ||. Jika anda memisahkan dua arahan dengan operator kawalan &&, maka perintah kedua hanya akan dilaksanakan jika yang pertama mengembalikan sifar. Jika anda memisahkan arahan dengan ||, maka perintah kedua hanya akan dilaksanakan jika yang pertama mengembalikan nilai bukan sifar. Penyenaraian 5 mengandungi beberapa urutan arahan menggunakan arahan gema. Contoh-contoh ini tidak begitu menarik kerana echo mengembalikan 0, tetapi kita akan melihat lebih banyak contoh semasa kita mempelajari lebih banyak arahan.

Penyenaraian 5. Urutan perintah

$ gema baris 1; gema baris 2; garis gema 3
baris 1
baris 2
baris 3
$ gema baris 1&&gema baris 2&&gema baris 3
baris 1
baris 2
baris 3
$ gema baris 1||gema baris 2; garis gema 3
baris 1
baris 3

Anda boleh keluar dari shell dengan arahan keluar. Selain itu, anda boleh menentukan kod keluar sebagai parameter. Jika anda bekerja dengan jurubahasa arahan dalam tetingkap terminal dalam mod grafik, maka dalam kes ini ia hanya akan ditutup. Begitu juga, jika anda disambungkan ke sistem jauh menggunakan ssh atau telnet (sebagai contoh), maka sambungan akan ditamatkan. Dalam jurubahasa bash, anda juga boleh menekan Kekunci Ctrl dan d untuk keluar.

Mari lihat kenyataan kawalan yang lain. Jika anda melampirkan perintah atau senarai perintah dalam kurungan, perintah atau jujukan perintah akan dilaksanakan dalam salinan shellnya sendiri, jadi arahan keluar keluar dari salinan shell, bukan dari shell yang sedang anda jalankan. Penyenaraian 6 mengandungi contoh mudah menggunakan && dan ||.

Penyenaraian 6. Cangkerang dan urutan arahan

$ (gema Dalam salinan penterjemah; keluar 0) && echo OK || echo Keluar buruk
Dalam salinan penterjemah
okey
$ (gema Dalam salinan penterjemah; keluar 4) && echo OK || echo Keluar buruk
Dalam salinan penterjemah
jalan keluar teruk

Nantikan dan pelajari tentang arahan lain dalam panduan ini.

Pembolehubah persekitaran

Apabila bekerja dalam bash, anda dikelilingi oleh satu set parameter yang membentuk persekitaran anda, seperti format gesaan anda, nama direktori rumah anda, direktori kerja anda, nama jurubahasa anda, fail yang anda buka, fungsi yang telah anda tentukan, dan seterusnya. Persekitaran anda termasuk banyak pembolehubah yang anda dan bash boleh tetapkan. Bash juga membolehkan anda mencipta pembolehubah shell yang boleh anda eksport ke persekitaran anda untuk digunakan oleh proses lain yang dijalankan dalam penterjemah atau oleh penterjemah lain yang boleh anda mulakan daripada penterjemah semasa.

Kedua-dua pembolehubah persekitaran dan pembolehubah shell mempunyai nama. Anda boleh merujuk kepada nilai pembolehubah dengan memberi awalan nama pembolehubah dengan tanda '$'. Beberapa pembolehubah persekitaran bash yang lebih biasa disenaraikan dalam Jadual 4.

  • PENGGUNA Nama pengguna yang log masuk
  • UID ID digital pengguna log masuk
  • RUMAH Direktori rumah pengguna
  • JKR Direktori kerja semasa
  • CENGKUNG Nama cangkerang
  • $ ID proses (atau PID) proses bash (atau lain-lain).
  • PPID ID proses yang muncul proses ini(iaitu ID proses induk)
  • ? Keluar kod arahan terakhir

Penyenaraian 7 menunjukkan beberapa pembolehubah bash.

Penyenaraian 7. Pembolehubah persekitaran dan cangkang

$ echo $USER $UID
ian 500
$ echo $SHELL $HOME $PWD
/bin/bash /home/ian /home/ian
$(keluar 0);echo $?;(keluar 4);echo $?
0
4
$ echo $$ $PPID
30576 30575

Anda boleh mencipta atau menetapkan pembolehubah shell dengan menaip tanda sama (=) sejurus selepas nama pembolehubah. Pembolehubah adalah peka huruf besar-besaran, jadi var1 dan VAR1 ialah dua pembolehubah berbeza. Mengikut konvensyen, pembolehubah, terutamanya pembolehubah yang dieksport, ditulis dalam huruf besar, tetapi ini bukan satu keperluan. Secara rasmi, $$ dan $? adalah pilihan shell, bukan pembolehubah. Anda boleh merujuk kepada mereka, tetapi tidak memberikan nilai.

Apabila anda mencipta pembolehubah shell, anda sering ingin mengeksportnya ke persekitaran supaya ia tersedia kepada proses lain yang anda lancarkan daripada penterjemah. Pembolehubah yang anda eksport tidak tersedia untuk jurubahasa induk. Perintah eksport digunakan untuk mengeksport pembolehubah. Untuk kemudahan, anda boleh menetapkan nilai dan mengeksport pembolehubah dalam satu langkah.

Untuk menggambarkan penugasan dan eksport, mari buat bash lain daripada penterjemah bash semasa, dan kemudian jalankan penterjemah Korn daripada (ksh) bash yang dibuat. Kami akan menggunakan arahan ps untuk memaparkan maklumat tentang proses yang sedang berjalan. Kami akan mengetahui lebih lanjut tentang arahan ps apabila kami meneroka konsep status proses kemudian dalam panduan ini.

Jangan gunakan bash?

Jurubahasa bash adalah lalai pada banyak pengedaran Linux. Jika anda tidak menggunakan bash, anda mungkin ingin mempertimbangkan cara-cara berikut untuk berlatih bash.

  • Gunakan arahan
    chsh -s /bin/bash
    untuk menukar penterjemah lalai. Perubahan akan berkuat kuasa apabila anda log masuk seterusnya.
  • Pasukan
    su-$USER -s /bin/bash
    akan mencipta satu lagi proses yang akan menjadi anak kepada jurubahasa semasa anda. Proses baharu akan memulakan proses log masuk dengan shell bash.
  • Buat pengguna bash shell untuk bersedia menghadapi peperiksaan LPI.

Penyenaraian 8. Pembolehubah persekitaran dan cangkang

$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
30576 30575 -bash
$bash

PID PPID CMD
16353 30576 bash
$var1=var1
$var2=var2
$ eksport VAR2
$ eksport VAR3=var3
$VAR2 $VAR3
var1 var2 var3
$ echo $VAR1 $VAR2 $VAR3 $SHELL
var1 var2 var3 /bin/bash
$ksh
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
16448 16353 ksh
$ eksport VAR4=var4
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var2 var3 var4 /bin/bash
$keluar
$ $ gema $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var1 var2 var3 /bin/bash
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
16353 30576 bash
$keluar
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
30576 30575 -bash
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
/bin/bash

Catatan:

  1. Pada permulaan jujukan ini, penterjemah bash mempunyai PID 30576 .
  2. Jurubahasa bash kedua mempunyai PID 16353, dan PID induknya ialah 30576, iaitu bash asal.
  3. Kami mencipta pembolehubah VAR1, VAR2 dan VAR3 dalam contoh bash kedua, tetapi hanya mengeksport VAR2 dan VAR3.
  4. Dalam penterjemah Korn, kami telah mencipta VAR4. Perintah gema hanya memaparkan nilai pembolehubah VAR2, VAR3 dan VAR4, dan mengesahkan bahawa VAR1 tidak dieksport. Tidakkah anda terkejut apabila nilai pembolehubah SHELL tidak berubah walaupun gesaannya berubah? Anda tidak boleh sentiasa bergantung pada SHELL untuk menentukan jurubahasa kerja dalam proses, tetapi arahan ps akan memberitahu anda dengan tepat apa itu. Ambil perhatian bahawa ps meletakkan tanda sempang (-) di hadapan contoh pertama bash untuk memberitahu kami apa itu. penterjemah arahan asal.
  5. Dalam contoh bash kedua, kita boleh melihat VAR1, VAR2 dan VAR3.
  6. Akhirnya, apabila kita kembali kepada penterjemah asal, tiada pembolehubah wujud di dalamnya.

Terdahulu kita membincangkan kemungkinan menggunakan petikan tunggal dan berganda. Terdapat perbezaan yang ketara antara mereka. Jurubahasa melakukan penggantian untuk pembolehubah shell antara petikan berganda ($), tetapi tidak melakukan penggantian jika petikan tunggal (') digunakan. Dalam contoh sebelumnya, kami mencipta tika jurubahasa baharu daripada yang lain dan mendapat ID proses baharu. Menggunakan pilihan -c anda boleh menghantar arahan kepada penterjemah lain, yang akan melaksanakan arahan dan kembali. Jika anda menghantar rentetan sebagai arahan dalam petikan tunggal, maka contoh kedua jurubahasa akan mengalih keluarnya dan memproses rentetan itu. menggunakan petikan berganda penggantian pembolehubah berlaku sebelum itu bagaimana rentetan akan diluluskan, jadi hasilnya mungkin berbeza daripada apa yang anda jangkakan. Jurubahasa dan arahan akan menghasilkan proses yang akan mempunyai PID sendiri. Penyenaraian 9 menggambarkan konsep ini. PID penterjemah bash asal berada dalam fon yang berbeza.

Penyenaraian 9. Petikan dan pembolehubah shell

$ echo "$SHELL" "$SHELL" "$$" "$$"
/bin/bash $SHELL 19244 $$
$ bash -c "echo Kembangkan dalam induk $$ $PPID"
Kembangkan dalam induk 19244 19243
$ bash -c "echo Kembangkan dalam kanak-kanak $$ $PPID"
Kembangkan dalam kanak-kanak 19297 19244

Sehingga kini, semua pembolehubah kami berakhir dengan ruang, jadi jelas di mana nama pembolehubah itu berakhir. Malah, nama pembolehubah hanya boleh terdiri daripada huruf, nombor atau aksara garis bawah. Jurubahasa tahu bahawa nama pembolehubah berakhir sebaik sahaja watak lain ditemui. Kadangkala perlu menggunakan pembolehubah dalam ungkapan yang maknanya mungkin samar-samar. Dalam kes sedemikian, anda boleh menggunakan pendakap kerinting untuk memisahkan nama pembolehubah, seperti yang ditunjukkan dalam Penyenaraian 10.

Penyenaraian 10. Menggunakan pendakap kerinting dengan nama berubah-ubah

$ echo "-$HOME/abc-"
-/home/ian/abc-
$ echo "-$HOME_abc-"
--
$ echo "-$(HOME)_abc-"
-/home/ian_abc-

arahan env

Perintah env tanpa sebarang pilihan atau parameter memaparkan pembolehubah persekitaran semasa. Anda juga boleh menggunakannya untuk menjalankan arahan dalam persekitaran yang telah ditetapkan. Pilihan -i (atau hanya -) mengosongkan persekitaran semasa sebelum melaksanakan arahan, manakala pilihan -u mengosongkan pembolehubah persekitaran yang anda tidak mahu lulus.

Penyenaraian 11 mengandungi output separa perintah env tanpa sebarang pilihan, diikuti dengan tiga contoh yang menjalankan penterjemah berbeza tanpa persekitaran induk. Sila semak dengan teliti sebelum kita membincangkannya.

Penyenaraian 11. arahan env

$env
HOSTNAME=echidna
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=9.27.89.137 4339 22
SSH_TTY=/dev/pts/2
USER=ian
...
_=/bin/env
OLDPWD=/usr/src
$ env -i bash -c "echo $SHELL; env"
/bin/bash
PWD=/home/ian
SHLVL=1
_=/bin/env
$ env -i ksh -c "gema $SHELL; env"
_=/bin/env
PATH=/bin:/usr/bin
$ env -i tcsh -c "echo $SHELL; env"
SHELL: Pembolehubah tidak ditentukan.

Ambil perhatian bahawa bash menetapkan pembolehubah SHELL tetapi tidak mengeksportnya ke persekitaran, walaupun bash mencipta tiga pembolehubah lain dalam persekitaran. Dalam contoh ksh, kami mempunyai dua pembolehubah persekitaran, tetapi percubaan kami untuk mencetak nilai pembolehubah SHELL ke skrin menghasilkan rentetan kosong. Akhirnya, tcsh tidak mencipta sebarang pembolehubah persekitaran dan memberikan ralat apabila kami cuba mendapatkan nilai pembolehubah SHELL.

Menetapkan dan menetapkan semula pembolehubah

Penyenaraian 11 menunjukkan cara jurubahasa berkelakuan apabila mengendalikan pembolehubah dan persekitaran. Walaupun panduan ini memfokuskan pada bash, anda harus sedar bahawa tidak semua jurubahasa berkelakuan sama. Selain itu, penterjemah berkelakuan berbeza bergantung pada sama ada ia adalah kulit asli atau tidak. Buat masa ini, kami hanya akan mengatakan bahawa shell asal ialah shell yang anda dapat apabila anda log masuk; anda boleh memulakan cengkerang lain supaya ia berkelakuan seperti yang lalai jika anda mahu. Tiga jurubahasa dalam contoh di atas, bermula dengan perintah env -i, bukan jurubahasa asal. Cuba lulus pilihan -l untuk melihat perbezaan apabila menjalankan shell asal.

Mari kita lihat percubaan kami untuk memaparkan nilai pembolehubah SHELL dalam cengkerang ini:

  • Apabila bash dimulakan, ia menetapkan pembolehubah SHELL, tetapi tidak secara automatik mengeksportnya ke persekitaran.
  • Apabila ksh bermula ia tidak menetapkan pembolehubah SHELL. Walau bagaimanapun, merujuk pembolehubah persekitaran yang tidak ditentukan adalah bersamaan dengan merujuk nilai kosong.
  • Apabila tcsh bermula, ia tidak menetapkan nilai pembolehubah SHELL. Dalam kes ini, tingkah laku lalai adalah berbeza daripada ksh (dan bash) dan mengakibatkan ralat apabila kami cuba mengakses pembolehubah.

Anda boleh menggunakan perintah unset untuk menyahset pembolehubah dan mengeluarkannya daripada senarai pembolehubah shell. Jika pembolehubah telah dieksport ke persekitaran, maka ia juga akan dialih keluar daripada persekitaran. Anda boleh menggunakan arahan set untuk mengawal tingkah laku bash (atau penterjemah lain). Set ialah arahan terbina dalam dalam penterjemah, jadi pilihan adalah khusus untuk penterjemah. Dalam bash, pilihan -u memberitahu bash untuk tidak membuang ralat apabila merujuk kepada pembolehubah yang tidak ditentukan, tetapi menganggapnya sebagai nilai kosong. Anda boleh menambah pelbagai pilihan untuk ditetapkan dengan - dan melumpuhkannya dengan +. Anda boleh memaparkan senarai pilihan set semasa dengan echo $-.

Penyenaraian 12. Nyahset dan tetapkan

$echo $-
himBH
$ gema $VAR1
$ set -u;echo $-
himuBH
$ gema $VAR1
bash: VAR1: pembolehubah tidak terikat
$ var1=v1
$VAR1=v1;gema $VAR1
v1
$nyahsetkan VAR1;gema $VAR1
bash: VAR1: pembolehubah tidak terikat
$ set +u;echo $VAR1;echo $-
himBH

Anda boleh menggunakan arahan set tanpa sebarang pilihan, yang akan menyenaraikan semua pembolehubah shell anda dan nilainya (jika ada). Terdapat juga arahan lain, isytiharkan, yang dengannya anda boleh membuat, mengeksport, dan memaparkan nilai pembolehubah shell. Lihat halaman manual untuk pilihan lain untuk set dan isytiharkan arahan. Kami akan melihat halaman manusia kemudian dalam bahagian ini.

perintah exec

Perintah terakhir yang akan kita lihat dalam bahagian ini ialah exec. Anda boleh menggunakan perintah exec untuk menjalankan perintah lain yang akan menggantikan penterjemah semasa. Penyenaraian 13 mencipta contoh bash dan kemudian menggunakan exec untuk menggantikannya dengan penterjemah Korn. Selepas keluar dari penterjemah Korn, anda dikembalikan kepada penterjemah bash asal (dalam contoh ini, PID 22985).

Penyenaraian 13. Menggunakan exec

$ gema $$
22985
$bash
$ gema $$
25063
$exec ksh
$ gema $$
25063
$keluar
$ gema $$
22985

Sejarah Pasukan

Jika anda telah menaip arahan semasa anda membaca manual, anda mungkin perasan bahawa hampir perintah yang sama digunakan dengan kerap. Berita baiknya ialah bash boleh menyimpan sejarah arahan anda. Sejarah didayakan secara lalai. Anda boleh melumpuhkannya dengan perintah sejarah set +o dan membolehkannya dengan perintah sejarah set -o. Pembolehubah persekitaran HISTSIZE memberitahu bash berapa banyak baris untuk disimpan. Satu set sifat lain menentukan tingkah laku dan operasi cerita. Lihat halaman lelaki bash untuk mendapatkan butiran.

Jika anda telah menaip arahan semasa anda membaca manual, anda mungkin perasan bahawa hampir perintah yang sama digunakan dengan kerap. Berita baiknya ialah bash boleh menyimpan sejarah arahan anda. Sejarah didayakan secara lalai. Anda boleh melumpuhkannya dengan perintah sejarah set +o dan membolehkannya dengan perintah sejarah set -o. Pembolehubah persekitaran HISTSIZE memberitahu bash berapa banyak baris untuk disimpan. Satu set sifat lain menentukan tingkah laku dan operasi cerita. Lihat halaman lelaki bash untuk mendapatkan butiran.

Berikut ialah beberapa arahan yang boleh anda gunakan untuk bekerja dengan sejarah:

sejarah
Memaparkan semua sejarah
sejarahN
Memaparkan N baris terakhir sejarah anda
sejarah -dN
Mengalih keluar baris N daripada sejarah anda; ini boleh digunakan jika sebagai contoh anda ingin mengalih keluar baris yang mengandungi kata laluan
!!
Perintah terakhir anda dimasukkan
!N
Pasukan sejarah
!-N
Pasukan yang berjarak N langkah dari pasukan semasa dalam sejarah (!-1 adalah bersamaan!!)
!#
Perintah semasa yang anda taip
!tali
Perintah terkini yang bermula dengan rentetan
!?tali?
Perintah terbaru yang mengandungi rentetan

Anda boleh menggunakan titik bertindih (:) diikuti dengan nilai khusus untuk mengakses atau menukar arahan dalam sejarah. Penyenaraian 14 menunjukkan beberapa kemungkinan sejarah.

Penyenaraian 14. Mengurus sejarah

$ gema $$
22985
$ env -i bash -c "echo $$"
1542
$ !!
env -i bash -c "echo $$"
1555
$!ec
gema $$
22985
$ !ms:s/$$/$PPID/
env -i bash -c "echo $PPID"
22985
$ sejarah 6
1097 gema $$
1098 env -i bash -c "echo $$"
1099 env -i bash -c "echo $$"
1100 gema $$
1101 env -i bash -c "echo $PPID"
1102 sejarah 6
$ sejarah -d1100

Perintah dalam Penyenaraian 14 melakukan perkara berikut:

1. Keluarkan PID penterjemah semasa
2. Jalankan arahan gema pada contoh penterjemah baharu dan keluarkan PIDnya
3. Jalankan arahan terakhir
4. Mulakan semula arahan bermula dengan 'ec'; akan menjalankan arahan pertama dalam contoh ini
5. Jalankan arahan terakhir bermula dengan 'en' tetapi gantikan '$PPID' dengan '$$' supaya ia sebenarnya akan memaparkan PID induk
6. Paparkan 6 sejarah arahan terakhir
7. Padam nombor arahan 1100, arahan gema terakhir

Anda boleh mengedit cerita secara interaktif. Jurubahasa bash menggunakan pustaka readline untuk mengurus arahan dan penyuntingan sejarah. Secara lalai, kekunci dan kombinasi kekunci yang digunakan untuk bergerak melalui sejarah atau mengedit baris sepadan dengan yang digunakan dalam editor GNU Emacs. Dalam Emacs, kombinasi kekunci biasanya dilambangkan sebagai C-x atau M-x, di mana x ialah kekunci biasa, dan C dan M ialah kekunci Kawalan dan Meta, masing-masing. Pada PC biasa, kekunci Ctrl sepadan dengan kekunci Kawalan Emacs, dan kekunci Alt sepadan dengan kekunci Meta. Fungsi tambahan, serta keupayaan untuk menetapkan pilihan menggunakan fail permulaan baris baca (biasanya inputrc dalam direktori rumah anda), boleh didapati dalam halaman manual.

Jika anda lebih suka mengurus sejarah dalam mod vi, kemudian gunakan perintah set -o vi untuk bertukar kepada mod vi. Anda boleh bertukar kembali ke mod emacs dengan perintah set -o emacs. Apabila anda mengekstrak arahan dalam mod vi, anda pada mulanya berada dalam mod sisipan vi.

cara

Sesetengah arahan bash adalah sebaris, manakala yang lain adalah luaran. Sekarang mari kita lihat arahan luaran dan cara menjalankannya, serta cara membezakan arahan dalaman.

Di manakah jurubahasa mencari arahan?

Perintah luaran ialah fail dalam sistem fail. Bahagian Pengurusan Fail Mudah dalam panduan ini dan panduan untuk Topik 104 pergi ke lebih terperinci. Pada sistem Linux dan UNIX, semua fail adalah sebahagian daripada pokok besar yang akarnya adalah /. Dalam contoh di atas, direktori semasa kami ialah direktori rumah pengguna. Pengguna biasa mempunyai direktori rumah mereka dalam direktori /home, iaitu /home/ian dalam kes saya. Direktori rumah Root berada dalam /root. Selepas anda menaip arahan, bash mencarinya dalam senarai direktori carian lalai, iaitu senarai direktori yang dipisahkan dengan titik bertindih yang disimpan dalam pembolehubah persekitaran PATH.

Jika anda ingin mengetahui arahan yang akan dilaksanakan jika anda mencetak rentetan tertentu, kemudian gunakan perintah which atau type. Penyenaraian 15 menunjukkan laluan lalai saya, serta lokasi beberapa arahan.

Penyenaraian 15. Mencari lokasi arahan

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/ian/bin
$ yang mana bash env zip xclock echo set ls
alias ls="ls --color=tty"
/bin/ls
/bin/bash
/bin/env
/usr/bin/zip
/usr/X11R6/bin/xclock
/bin/echo
/usr/bin/which: tiada set dalam (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/b
dalam:/home/ian/bin)
$ taip bash env zip set gema xclock ls
bash ialah /bin/bash
env ialah /bin/env
zip ialah /usr/bin/zip
xclock ialah /usr/X11R6/bin/xclock
echo ialah shell builtin
set ialah shell builtin
ls dialiaskan kepada `ls --color=tty"

Ambil perhatian bahawa semua direktori dalam laluan berakhir di /bin. Ini adalah konvensyen yang diterima umum, bukan keperluan. Perintah yang mana memberitahu kami bahawa arahan ls ialah alias dan arahan yang ditetapkan tidak dapat ditemui. Dalam kes ini, boleh ditafsirkan bahawa arahan itu sama ada tidak wujud atau ia adalah terbina. Perintah jenis memberitahu kami bahawa arahan ls sebenarnya adalah alias, dan ia juga menentukan bahawa arahan yang ditetapkan ialah penterjemah terbina dalam; dia juga berkata bahawa terdapat perintah gema terbina dalam, dan terdapat juga perintah sedemikian dalam /bin, yang kami dapati dengan arahan yang mana. Kedua-dua arahan ini menjalankan output mereka secara berbeza.

Kami telah melihat bahawa arahan ls yang digunakan untuk menyenaraikan kandungan direktori sebenarnya adalah alias. Alias ​​ialah cara mudah untuk menggunakan arahan dengan set pilihan yang berbeza, atau hanya untuk memberikan nama arahan alternatif. Dalam contoh kami, pilihan --color=tty menyebabkan senarai fail dalam direktori diserlahkan bergantung pada jenis fail dan direktori. Cuba jalankan dircolors --print-database untuk melihat kod warna serta warna yang digunakan untuk jenis fail tertentu.

Setiap arahan ini mempunyai pilihan tambahan. Bergantung pada keperluan anda, anda boleh menggunakan satu atau arahan lain. Saya lebih suka menggunakan yang apabila saya pasti saya boleh mencari boleh laku dan hanya memerlukan laluan penuh. Perintah jenis memberi saya lebih banyak maklumat yang tepat, yang kadangkala saya perlukan dalam skrip.

Menjalankan arahan lain

Dalam Penyenaraian 15, kami melihat bahawa laluan penuh executable bermula pada direktori / root. Sebagai contoh, program xclock sebenarnya adalah /usr/X11R6/bin/xclock, fail yang terletak dalam direktori /usr/X11R6/bin. Jika program tidak berada dalam pembolehubah PATH, maka anda boleh menjalankannya dengan menentukan laluan penuh kepada program dan program itu sendiri. Terdapat dua jenis laluan yang boleh anda gunakan:

  • Laluan mutlak yang bermula dengan /, seperti yang kita lihat dalam Penyenaraian 15 (/bin/bash, /bin/env, dan seterusnya).
  • Laluan relatif adalah relatif kepada direktori kerja semasa anda, yang boleh diperoleh menggunakan arahan pwd. Perintah sedemikian tidak bermula dengan /, tetapi mengandungi sekurang-kurangnya satu / aksara.

Anda boleh menggunakan laluan mutlak tanpa mengira direktori kerja semasa anda, tetapi anda mungkin mahu menggunakan laluan relatif apabila arahan berada berhampiran direktori semasa. Katakan anda sedang membangunkan versi baharu klasik "Hello World!" dalam subdirektori mytestbin direktori rumah anda. Anda mungkin mahu menggunakan laluan relatif dan jalankan arahan sebagai mytestbin/hello. Terdapat dua nama khas yang boleh anda gunakan dalam laluan; satu titik (.) merujuk kepada direktori semasa, dan sepasang titik (..) yang merujuk kepada direktori induk direktori semasa. Memandangkan direktori rumah anda tiada dalam pembolehubah persekitaran PATH (dan sepatutnya), anda perlu menyediakan laluan eksplisit kepada fail yang ingin anda jalankan daripada direktori rumah anda. Contohnya, jika anda mempunyai salinan program hello dalam direktori rumah anda, anda boleh menggunakan arahan ./hello untuk menjalankannya. Anda boleh menggunakan suka. dan .. sebagai sebahagian daripada laluan mutlak, walaupun tunggal. tidak begitu berguna dalam kes ini. Anda boleh menggunakan tilde (~) untuk merujuk kepada direktori rumah anda dan ~nama pengguna untuk merujuk kepada direktori rumah nama pengguna. Lihat Penyenaraian 16 untuk beberapa contoh.

Penyenaraian 16. Laluan mutlak dan relatif

$ /bin/echo Gunakan arahan echo dan bukannya builtin
Gunakan arahan gema dan bukannya terbina
$ /usr/../bin/echo Sertakan dir induk dalam laluan
Sertakan dir ibu bapa dalam laluan
$ /bin/././echo Tambah beberapa komponen laluan yang tidak berguna
Tambah beberapa komponen laluan yang tidak berguna
$ pwd # Lihat di mana kita berada
/home/ian
$ ../../bin/echo Gunakan laluan relatif untuk gema
Gunakan laluan relatif untuk bergema
$ myprogs/hello # Gunakan laluan relatif tanpa titik
-bash: myprogs/hello: Tiada fail atau direktori sedemikian
$ mytestbin/hello # Gunakan laluan relatif tanpa titik
Hai dunia!
$ ./hello # Jalankan program dalam direktori semasa
Hai dunia!
$ ~/mytestbin/hello # jalankan hello menggunakan ~
Hai dunia!
$ ../hello # Cuba jalankan hello daripada ibu bapa
-bash: ../hello: Tiada fail atau direktori sedemikian

Tukar direktori kerja

Sama seperti anda boleh melaksanakan program dari direktori yang berbeza, anda boleh menukar direktori kerja semasa anda menggunakan arahan cd. Argumen kepada cd mestilah laluan mutlak atau relatif kepada direktori. Anda juga boleh menggunakan ., .., ~, dan ~nama pengguna dalam arahan apabila menentukan laluan. Jika anda menaip cd tanpa pilihan, anda akan berada dalam direktori rumah anda. Melewati satu (-) sebagai parameter bermakna berpindah ke direktori kerja sebelumnya. Direktori rumah disimpan dalam pembolehubah persekitaran HOME dan direktori sebelumnya disimpan dalam pembolehubah persekitaran OLDPWD, jadi cd bersamaan dengan cd $HOME dan cd bersamaan dengan cd $OLDPWD. Kami biasanya bercakap secara ringkas tentang menukar direktori dan bukannya menukar sepenuhnya direktori kerja semasa.

Untuk arahan, terdapat pembolehubah persekitaran CDPATH, yang mengandungi senarai direktori yang dipisahkan bertindih yang harus dicari (sebagai tambahan kepada direktori kerja semasa) apabila menyelesaikan laluan relatif. Jika penyelesaian menggunakan laluan CDPATH, maka cd akan mencetak laluan penuh direktori yang ditemui sebagai output. Biasanya perubahan direktori yang berjaya disertakan dengan gesaan baharu atau gesaan yang diubah suai sedikit. Beberapa contoh ditunjukkan dalam Penyenaraian 17.

Penyenaraian 17. Menukar direktori

$ cd /;pwd
$ cd /usr/X11R6;pwd
/usr/X11R6
$ cd ;pwd
/home/ian
$ cd -;pwd
/usr/X11R6
/usr/X11R6
$ cd ~ian/..;pwd
/rumah
$ cd ~;pwd
/home/ian
$ eksport CDPATH=~
$ cd /;pwd
$ cd mytestbin
/home/ian/mytestbin

Aplikasi rekursif arahan

Banyak arahan Linux boleh digunakan secara rekursif pada semua fail dalam pepohon direktori. Sebagai contoh, perintah ls mempunyai pilihan -R untuk menyenaraikan direktori secara rekursif, dan perintah cp, mv, rm dan diff mempunyai pilihan -r untuk digunakan secara rekursif.

Penggantian arahan

bash mempunyai sangat peluang yang berkuasa menghantar hasil satu program kepada input yang lain; ini dipanggil penggantian arahan. Anda boleh melakukan ini dengan melampirkan arahan yang hasilnya anda inginkan dalam petikan tunggal (`). Apabila menggunakan berbilang arahan bersarang, anda boleh melampirkan arahan antara $(s).

Dalam tutorial sebelumnya "LPI 101: Pemasangan Linux dan Pengurusan Pakej" kami melihat bahawa arahan rpm boleh memberitahu pakej mana yang memiliki arahan mana; di sini adalah mudah untuk menggunakan penggantian arahan. Sekarang anda tahu bahawa kami benar-benar melakukannya.

Penggantian arahan adalah alat yang tidak ternilai semasa menulis skrip dan juga apabila digunakan pada baris arahan. Penyenaraian 18 menunjukkan contoh cara untuk mendapatkan laluan mutlak direktori daripada yang relatif, cara mencari pakej yang menyediakan arahan /bin/echo dan bagaimana (sebagai akar) untuk melihat label tiga partition pada hard memandu. Yang terakhir menggunakan perintah seq untuk mencipta jujukan integer.

Penyenaraian 18. Penggantian arahan

$ echo "../../usr/bin" dir ialah $(cd ../../usr/bin;pwd)
../../usr/bin dir ialah /usr/bin
$ yang bergema
/bin/echo
$ rpm -qf `mana yang bergema`
sh-utils-2.0.12-3
$su-
kata laluan:
# untuk n dalam $(seq 7 9); lakukan echo p$n `e2label /dev/hda$n`;selesai
p7 RH73
p8 SUSE81
p9 GAMBAR

Halaman lelaki

Dalam topik terakhir bahagian panduan ini, kita akan melihat cara mendapatkan bantuan arahan Linux melalui halaman manual dan jenis dokumentasi lain.

Halaman manusia dan bahagian

Sumber utama (dan tradisional) dokumentasi ialah halaman manual, yang boleh diakses dengan arahan lelaki. Rajah 1 menunjukkan halaman lelaki untuk arahan lelaki. Gunakan arahan lelaki lelaki untuk mendapatkan maklumat ini.

Rajah 1 menunjukkan beberapa entri halaman manual biasa:

* Pengepala dengan nama arahan diikuti dengan nombor bahagian dalam kurungan
* Nama arahan dan arahan lain yang serupa dibincangkan dalam halaman manusia ini
* Senarai pilihan dan parameter yang digunakan pada arahan
* Penerangan ringkas arahan
* Penerangan terperinci setiap pilihan

Anda juga boleh mencari bahagian tentang penggunaan, cara melaporkan pepijat, maklumat tentang pengarang dan senarai arahan lain. Sebagai contoh, halaman lelaki untuk lelaki mengatakan bahawa terdapat arahan tambahan(dan pembimbing mereka):

apropos(1), whatis(1), less(1), groff(1), dan man.conf(5).

Biasanya terdapat 8 bahagian yang biasa digunakan untuk halaman manual. Kebanyakan halaman biasanya dipasang apabila pakej dipasang, jadi jika pakej tidak dipasang, anda hampir pasti tidak akan mempunyai halaman manualnya. Selain itu, beberapa bahagian halaman mungkin kosong atau hampir kosong. Paling bahagian umum halaman manual ialah:

1. Arahan pengguna (env, ls, echo, mkdir, tty)
2. Panggilan sistem atau fungsi kernel (pautan, sethostname, mkdir)
3. Fungsi perpustakaan (acosh, asctime, btree, locale, XML::Parser)
4. Maklumat perkakasan (isdn_audio, tetikus, tty, sifar)
5. Perihalan format fail (peta kunci, motd, wvdial.conf)
6. Permainan (perhatikan bahawa banyak permainan kini berjalan dalam mod grafik, jadi mereka mungkin mempunyai sistem bantuan mereka sendiri, bukannya halaman manual)
7. Pelbagai (arp, but, regex, unix utf8)
8. Pentadbiran sistem(debugfs, fdisk, fsck, mount, renice, rpm)

Bahagian lain mungkin termasuk 9 untuk dokumentasi mengenai kernel Linux, n untuk dokumentasi baharu, o untuk dokumentasi lama dan l untuk dokumentasi tempatan.

Sesetengah entri mungkin muncul dalam lebih daripada satu bahagian. Contoh kami telah menunjukkan bahawa mkdir berada dalam bahagian 1 dan 2, dan tty dalam bahagian 1 dan 4. Anda boleh menentukan bahagian tertentu, seperti man 4 tty atau man 2 mkdir, atau anda boleh menggunakan pilihan -a untuk menyenaraikan semua bahagian halaman manusia.

Anda akan perasan dalam rajah bahawa lelaki mempunyai banyak pilihan yang boleh anda lihat sendiri. Sekarang mari kita lihat dengan pantas bahagian "Lihat juga" arahan yang berkaitan dengan manusia.

lihat juga

Dua perintah terpenting yang berkaitan dengan manusia ialah whatis dan apropos. Perintah whatis mencari halaman manual untuk nama yang anda tentukan dan memaparkan maklumat tentang nama dari halaman manual yang sepadan. Perintah apropos mencari halaman manual untuk kata kunci dan mengembalikan kata kunci yang mengandungi perkataan anda. Penyenaraian 19 menunjukkan arahan ini.

Penyenaraian 19. Contoh perintah Whatis dan apropos

$ apa itu lelaki
man (1) - format dan paparkan halaman manual dalam talian
man (7) - makro untuk memformat halaman manual
man (1) - format dan paparkan halaman manual dalam talian
man.conf (5) - data konfigurasi untuk man
$ apa itu mkdir
mkdir (1) - buat direktori

$ apropos mkdir
mkdir (1) - buat direktori
mkdir (2) - buat direktori
mkdirhier (1x) - membuat hierarki direktori

Ngomong-ngomong, jika anda tidak menemui halaman manual untuk man.conf, maka cuba running man man.conf ig .

Keluaran arahan lelaki ialah program khas keluaran halaman. Pada kebanyakan sistem Linux, program ini akan menjadi kurang. Pilihan lain mungkin program yang lebih lama. Jika anda ingin mencetak halaman, kemudian tentukan pilihan -t untuk memformat halaman dan mencetaknya menggunakan program groff atau troff.

Program keluaran yang kurang mempunyai beberapa arahan untuk memudahkan mencari rentetan dalam teks yang dipaparkan. Gunakan perintah man less untuk mengetahui lebih lanjut tentang /(cari ke hadapan), ?(cari ke belakang) dan n (untuk carian terakhir yang dilakukan), serta banyak arahan lain.

Sumber Dokumentasi Lain

Sebagai tambahan kepada halaman manual yang tersedia daripada baris arahan, Yayasan Perisian Percuma telah mencipta nombor besar fail maklumat yang sedang diproses program info. Ia mempunyai keupayaan navigasi yang hebat, termasuk keupayaan untuk bergerak ke bahagian lain. Taip maklumat lelaki atau maklumat maklumat untuk mendapatkan maklumat lanjut. Tidak semua arahan didokumenkan dalam maklumat, jadi anda boleh menggunakan kedua-dua halaman manual dan maklumat.

Terdapat beberapa antara muka grafik ke halaman manual seperti xman (daripada projek XFree86) dan yelp (pelayar bantuan Gnome 2.0).

Jika anda tidak dapat mencari bantuan untuk arahan, cuba jalankan arahan dengan pilihan --help. Jadi, anda mungkin mengetahui perkara yang anda mahukan atau mendapatkan petunjuk di mana lagi untuk mencari.

Bahagian seterusnya ialah mengenai memproses strim teks menggunakan penapis.