Sh - Perintah Linux - Perintah Unix

NAMA

bash - GNU Bourne-Again SHell

RINGKASAN

bash [opsi] [file]

DESKRIPSI

Bash adalah penerjemah bahasa perintah sh- compompable yang mengeksekusi perintah yang dibaca dari input standar atau dari file. Bash juga menggabungkan fitur yang berguna dari Korn dan C shell ( ksh dan csh ).

Bash dimaksudkan untuk menjadi implementasi konformal dari spesifikasi IEEE POSIX Shell dan Tools (IEEE Working Group 1003.2).

PILIHAN

Selain opsi shell karakter tunggal yang didokumentasikan dalam deskripsi dari perintah set bawaan, bash menginterpretasikan opsi berikut ketika dipanggil:

string -c

Jika opsi -c hadir, maka perintah dibaca dari string . Jika ada argumen setelah string , mereka ditugaskan ke parameter posisional, dimulai dengan $ 0 .

-saya

Jika opsi -i hadir, shell bersifat interaktif .

-l

Buat bash bertindak seolah-olah itu telah dipanggil sebagai shell login (lihat INVokasi di bawah).

-r

Jika opsi- r hadir, shell menjadi terbatas (lihat BATASI TERBATAS di bawah).

-s

Jika opsi -s ada, atau jika tidak ada argumen yang tersisa setelah pemrosesan opsi, maka perintah dibaca dari input standar. Opsi ini memungkinkan parameter posisi yang akan diatur saat memanggil shell interaktif.

-D

Daftar semua string yang dikutip ganda yang didahului oleh $ dicetak pada ouput standar. Ini adalah string yang tunduk pada terjemahan bahasa ketika lokal saat ini bukan C atau POSIX . Ini menyiratkan opsi -n ; tidak ada perintah yang akan dieksekusi.

[- +] O [ shopt_option ]

shopt_option adalah salah satu opsi shell yang diterima oleh shopt builtin (lihat SHELL BUILTIN COMMANDS di bawah). Jika shopt_option hadir, -O menetapkan nilai opsi itu; + O merusaknya. Jika shopt_option tidak diberikan, nama dan nilai dari opsi shell yang diterima oleh shopt dicetak pada output standar. Jika opsi permintaan + O , output ditampilkan dalam format yang dapat digunakan kembali sebagai input.

A - menandakan akhir opsi dan menonaktifkan pemrosesan opsi lebih lanjut. Setiap argumen setelah - diperlakukan sebagai nama file dan argumen. Argumen - setara dengan - .

Bash juga menafsirkan sejumlah opsi multi-karakter. Opsi-opsi ini harus muncul pada baris perintah sebelum opsi karakter tunggal untuk dikenali.

- Dump-po-string

Setara dengan -D , tetapi output dalam format file gettext GNU (portable object).

--dumpukan tali

Setara dengan -D .

--membantu

Tampilkan pesan penggunaan pada output standar dan keluar dengan sukses.

--init-file file

- file rcfile

Jalankan perintah dari file bukan file inisialisasi pribadi standar ~ / .bashrc jika shell interaktif (lihat INVokasi di bawah).

--masuk

Setara dengan -l .

--noediting

Jangan gunakan GNU readline library untuk membaca baris perintah ketika shell itu interaktif.

--noprofile

Jangan membaca file startup / etc / profile di seluruh sistem atau file inisialisasi pribadi ~ / .bash_profile , ~ / .bash_login , atau ~ / .profile . Secara default, bash membaca file-file ini ketika dipanggil sebagai shell login (lihat INVokasi di bawah).

--norc

Jangan membaca dan mengeksekusi file inisialisasi pribadi ~ / .bashrc jika shell bersifat interaktif. Opsi ini aktif secara default jika shell dipanggil sebagai sh .

--posix

Ubah perilaku bash di mana operasi default berbeda dari standar POSIX 1003.2 agar sesuai dengan standar ( mode posix ).

--terbatas

Shell menjadi terbatas (lihat DIBATALKAN SHELL di bawah).

--rpm-membutuhkan

Buat daftar file yang diperlukan untuk skrip shell untuk dijalankan. Ini menyiratkan '-n' dan tunduk pada batasan yang sama seperti pemeriksaan pengecekan kesalahan waktu kompilasi; Backticks, [] tes, dan evals tidak diurai sehingga beberapa dependensi mungkin terlewatkan. --verbose Setara dengan -v .

--versi

Tampilkan informasi versi untuk contoh bash pada output standar dan keluar dengan sukses.

ARGUMEN

Jika argumen tetap ada setelah pemrosesan opsi, dan baik opsi -c maupun opsi -s telah diberikan, argumen pertama diasumsikan sebagai nama file yang berisi perintah shell. Jika bash dipanggil dalam mode ini, $ 0 diatur ke nama file, dan parameter posisi diatur ke argumen yang tersisa. Bash membaca dan mengeksekusi perintah dari file ini, lalu keluar. Status keluar Bash adalah status keluar dari perintah terakhir yang dijalankan dalam skrip. Jika tidak ada perintah yang dijalankan, status keluar adalah 0. Upaya pertama dilakukan untuk membuka file di direktori saat ini, dan, jika tidak ada file yang ditemukan, maka shell mencari direktori di PATH untuk skrip.

DOA

Sebuah shell login adalah yang karakter pertama dari argumen nol adalah - , atau yang dimulai dengan opsi --login .

Sebuah shell interaktif adalah salah satu dimulai tanpa argumen non-opsi dan tanpa opsi -c yang input standar dan output keduanya terhubung ke terminal (sebagaimana ditentukan oleh isatty (3)), atau yang dimulai dengan opsi -i . PS1 diatur dan $ - termasuk i jika bash bersifat interaktif, memungkinkan skrip shell atau file startup untuk menguji status ini.

Paragraf berikut menjelaskan bagaimana bash mengeksekusi file startup-nya. Jika ada file yang ada tetapi tidak bisa dibaca, bash melaporkan kesalahan. Tilde diperluas dalam nama file seperti yang dijelaskan di bawah ini di bawah Ekspansi Tilde di bagian EKSPANSI .

Ketika bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan opsi --login , pertama kali membaca dan mengeksekusi perintah dari file / etc / profile , jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile , ~ / .bash_login , dan ~ / .profile , dalam urutan itu, dan membaca dan menjalankan perintah dari yang pertama yang ada dan dapat dibaca. Opsi --noprofile dapat digunakan ketika shell mulai menghambat perilaku ini.

Ketika sebuah shell login keluar, bash membaca dan mengeksekusi perintah dari file ~ / .bash_logout , jika ada.

Ketika shell interaktif yang bukan shell login dimulai, bash membaca dan mengeksekusi perintah dari ~ / .bashrc , jika file itu ada. Ini dapat dihambat dengan menggunakan opsi --norc . Opsi file -rcfile akan memaksa bash untuk membaca dan menjalankan perintah dari file bukannya ~ / .bashrc .

Ketika bash dimulai secara non-interaktif, untuk menjalankan skrip shell, misalnya, ia mencari variabel BASH_ENV di lingkungan, memperluas nilainya jika muncul di sana, dan menggunakan nilai yang diperluas sebagai nama file untuk dibaca dan dijalankan . Bash berperilaku seolah-olah perintah berikut dieksekusi:

jika [-n "$ BASH_ENV"]; kemudian . "$ BASH_ENV"; fi

tetapi nilai variabel PATH tidak digunakan untuk mencari nama file.

Jika bash dipanggil dengan nama sh , ia mencoba untuk meniru perilaku startup versi historis sh semaksimal mungkin, sementara menyesuaikan dengan standar POSIX juga. Ketika dipanggil sebagai shell login interaktif, atau shell non-interaktif dengan opsi --login , pertama kali mencoba untuk membaca dan menjalankan perintah dari / etc / profile dan ~ / .profile , dalam urutan itu. Opsi --noprofile dapat digunakan untuk menghambat perilaku ini. Ketika dipanggil sebagai shell interaktif dengan nama sh , bash mencari variabel ENV , memperluas nilainya jika ia didefinisikan, dan menggunakan nilai yang diperluas sebagai nama file untuk dibaca dan dieksekusi. Karena shell dipanggil karena sh tidak berusaha untuk membaca dan menjalankan perintah dari file startup lainnya, opsi --rcfile tidak berpengaruh. Shell non-interaktif yang dipanggil dengan nama sh tidak berusaha membaca file startup lainnya. Ketika dipanggil sebagai sh , bash memasuki mode posix setelah file startup dibaca.

Ketika bash dimulai dalam mode posix , seperti opsi opsi -posix , ini mengikuti standar POSIX untuk file startup. Dalam mode ini, shell interaktif memperluas variabel ENV dan perintah dibaca dan dijalankan dari file yang namanya adalah nilai yang diperluas. Tidak ada file startup lain yang dibaca.

Bash mencoba untuk menentukan kapan dijalankan oleh daemon shell jarak jauh, biasanya rsh . Jika bash menentukannya sedang dijalankan oleh rshd , bash membaca dan mengeksekusi perintah dari ~ / .bashrc , jika file itu ada dan dapat dibaca. Ini tidak akan melakukan ini jika dipanggil sebagai sh . Opsi --norc dapat digunakan untuk menghambat perilaku ini, dan opsi --rcfile dapat digunakan untuk memaksa file lain untuk dibaca, tetapi rshd umumnya tidak memanggil shell dengan opsi - opsi atau memungkinkan mereka untuk ditentukan.

Jika shell dimulai dengan id pengguna yang efektif (grup) tidak sama dengan id pengguna nyata (grup), dan opsi -p tidak disediakan, tidak ada file startup yang dibaca, fungsi shell tidak diwarisi dari lingkungan, SHELLOPTS variabel, jika muncul di lingkungan, diabaikan, dan id pengguna yang efektif diatur ke id pengguna yang sebenarnya. Jika opsi -p diberikan saat permintaan, perilaku startup adalah sama, tetapi id pengguna yang efektif tidak diatur ulang.

DEFINISI

Definisi berikut digunakan di seluruh dokumen ini.

kosong

Ruang atau tab.

kata

Urutan karakter yang dianggap sebagai satu kesatuan oleh shell. Juga dikenal sebagai token .

nama

Sebuah kata yang hanya terdiri dari karakter alfanumerik dan garis bawah, dan dimulai dengan karakter alfabet atau garis bawah. Juga disebut sebagai identifier .

Metacharacter

Karakter yang, ketika tidak bertanda, memisahkan kata. Satu dari berikut:

| &; () <> tab ruang

operator kontrol

Token yang menjalankan fungsi kontrol. Ini adalah salah satu simbol berikut:

|| & &&; ;; () |

KATA-KATA YANG DILINDUNGI

Kata -kata yang dicadangkan adalah kata -kata yang memiliki arti khusus untuk shell. Kata-kata berikut ini dikenali sebagai cadangan saat tidak diberi tanda kutip dan kata pertama dari perintah sederhana (lihat SHELL GRAMMAR di bawah) atau kata ketiga dari kasus atau untuk perintah:

! case dilakukan elif else esac fi untuk function jika di pilih kemudian hingga sementara waktu {} [[]]

SHELL GRAMMAR

Perintah Sederhana

Perintah sederhana adalah urutan tugas variabel opsional diikuti oleh kata-kata dan pengalihan kosong , dan diakhiri oleh operator kontrol . Kata pertama menentukan perintah yang akan dieksekusi, dan dilewatkan sebagai argumen nol. Kata-kata yang tersisa dilewatkan sebagai argumen ke perintah yang dipanggil.

Nilai kembalian dari perintah sederhana adalah status keluarnya, atau 128+ n jika perintah diakhiri oleh sinyal n .

Saluran pipa

Pipeline adalah urutan satu atau lebih perintah yang dipisahkan oleh karakter | . Format untuk jalur pipa adalah:

[ waktu [ -p ]] [! ] perintah [ | command2 ...]

Output standar dari perintah terhubung melalui pipa ke input standar dari perintah2 . Sambungan ini dilakukan sebelum pengalihan apa pun yang ditentukan oleh perintah (lihat REDIRECTION di bawah).

Jika kata pendiam ! mendahului saluran pipa, status keluar dari pipa itu adalah TIDAK logis dari status keluar dari perintah terakhir. Jika tidak, status pipa adalah status keluar dari perintah terakhir. Shell menunggu semua perintah dalam pipa untuk mengakhiri sebelum mengembalikan nilai.

Jika kata waktu yang disediakan mendahului saluran pipa, waktu yang dilalui serta waktu pengguna dan sistem yang dikonsumsi oleh pelaksanaannya dilaporkan ketika pipa berhenti. Opsi -p mengubah format output ke yang ditentukan oleh POSIX. Variabel TIMEFORMAT dapat diatur ke string format yang menentukan bagaimana informasi waktu harus ditampilkan; lihat uraian TIMEFORMAT di bawah Variabel Shell di bawah ini.

Setiap perintah dalam pipeline dieksekusi sebagai proses yang terpisah (yaitu, dalam subkulit).

Daftar

Daftar adalah urutan satu atau lebih saluran pipa yang dipisahkan oleh salah satu operator ; , & , && , atau || , dan secara opsional diakhiri oleh salah satu ; , & , atau .

Dari daftar operator ini, && dan || memiliki preseden yang sama, diikuti oleh ; dan &, yang memiliki prioritas yang sama.

Urutan satu atau beberapa baris baru dapat muncul dalam daftar, bukan titik koma untuk membatasi perintah.

Jika perintah diakhiri oleh operator kontrol & , shell mengeksekusi perintah di latar belakang dalam subkulit. Shell tidak menunggu perintah selesai, dan status kembalian adalah 0. Perintah dipisahkan oleh ; dieksekusi secara berurutan; shell menunggu setiap perintah untuk mengakhiri secara bergantian. Status kembalinya adalah status keluar dari perintah terakhir yang dijalankan.

Operator kontrol && dan || menunjukkan daftar AND dan daftar OR, masing-masing. Daftar DAN memiliki formulir

command1 && command2

command2 dijalankan jika, dan hanya jika, command1 mengembalikan status keluar dari nol.

Daftar OR memiliki formulir

command1 || perintah2

command2 dijalankan jika dan hanya jika command1 mengembalikan status keluar non-nol. Status pengembalian daftar DAN dan ATAU adalah status keluar dari perintah terakhir yang dijalankan dalam daftar.

Perintah Gabungan

Perintah majemuk adalah salah satu dari yang berikut:

( daftar )

daftar dijalankan dalam subkulit. Tugas variabel dan perintah builtin yang mempengaruhi lingkungan shell tidak tetap berlaku setelah perintah selesai. Status kembalinya adalah status keluar dari daftar .

{ daftar ; }

daftar hanya dieksekusi dalam lingkungan shell saat ini. daftar harus diakhiri dengan baris baru atau titik koma. Ini dikenal sebagai perintah grup . Status kembalinya adalah status keluar dari daftar . Perhatikan bahwa tidak seperti metacharacters ( dan ) , { dan } adalah kata - kata yang dilindungi undang - undang dan harus terjadi di mana kata yang dilindungi undang-undang diizinkan untuk dikenali. Karena mereka tidak menyebabkan patah kata, mereka harus dipisahkan dari daftar oleh spasi.

(( ekspresi ))

Ekspresi dievaluasi sesuai dengan aturan yang dijelaskan di bawah ini berdasarkan EVALUASI ARITMETIK . Jika nilai ekspresi tidak nol, status pengembalian adalah 0; jika tidak, status kembalinya adalah 1. Ini sama persis dengan membiarkan " ekspresi ".

[[ ekspresi ]]

Kembalikan status 0 atau 1 tergantung pada evaluasi ekspresi ekspresi kondisional. Ekspresi terdiri dari pemilihan pendahuluan yang dijelaskan di bawah ini dalam EKSPRESI KONDISI . Pemisahan kata dan perluasan jalur nama tidak dilakukan pada kata-kata di antara [[ dan ]] ; ekspansi tilde, parameter dan ekspansi variabel, ekspansi aritmatika, substitusi perintah, substitusi proses, dan penghapusan kutipan dilakukan.

Ketika == dan ! = Operator digunakan, string di sebelah kanan operator dianggap sebagai pola dan dicocokkan sesuai dengan aturan yang dijelaskan di bawah ini dalam Pola Pencocokan . Nilai kembalian adalah 0 jika string cocok atau tidak cocok dengan pola, masing-masing, dan 1 sebaliknya. Setiap bagian dari pola dapat dikutip untuk memaksanya untuk dicocokkan sebagai string.

Ekspresi dapat digabungkan menggunakan operator berikut, yang terdaftar dalam urutan menurun prioritas:

( ekspresi )

Mengembalikan nilai ekspresi . Ini dapat digunakan untuk mengesampingkan operator yang diutamakan sebelumnya.

! ekspresi

Benar jika ekspresi salah.

expression1 && expression2

Benar jika ekspresi1 dan ekspresi2 benar.

expression1 || expression2 Benar jika ekspresi1 atau ekspresi2 benar.

The && dan || operator tidak mengevaluasi ekspresi2 jika nilai ekspresi1 cukup untuk menentukan nilai kembalinya seluruh ekspresi kondisional.

untuk nama [ dalam kata ]; lakukan daftar ; selesai

Daftar kata-kata berikut diperluas, menghasilkan daftar item. Nama variabel diatur ke setiap elemen dari daftar ini secara bergantian, dan daftar dijalankan setiap waktu. Jika kata di diabaikan, perintah untuk mengeksekusi daftar sekali untuk setiap parameter posisi yang diatur (lihat PARAMETER di bawah). Status kembalinya adalah status keluar dari perintah terakhir yang dijalankan. Jika perluasan item berikut menghasilkan daftar kosong, tidak ada perintah yang dijalankan, dan status kembalian adalah 0.

untuk (( expr1 ; expr2 ; expr3 )); lakukan daftar ; selesai

Pertama, ekspresi aritmatika expr1 dievaluasi sesuai dengan aturan yang dijelaskan di bawah ini berdasarkan EVALUASI ARITMETIK . Ekspresi aritmatika expr2 kemudian dievaluasi berulang kali sampai mengevaluasi nol. Setiap kali expr2 mengevaluasi ke nilai non-nol, daftar dijalankan dan ekspresi aritmatika expr3 dievaluasi. Jika ekspresi apa pun dihilangkan, ia berperilaku seolah-olah mengevaluasi ke 1. Nilai kembalian adalah status keluar dari perintah terakhir dalam daftar yang dijalankan, atau salah jika salah satu ekspresi tidak valid.

pilih nama [ dalam kata ]; lakukan daftar ; selesai

Daftar kata-kata berikut diperluas, menghasilkan daftar item. Seperangkat kata yang diperluas dicetak pada kesalahan standar, masing-masing diawali dengan angka. Jika kata di diabaikan, parameter posisi akan dicetak (lihat PARAMETER di bawah). Prompt PS3 kemudian ditampilkan dan garis dibaca dari input standar. Jika garis terdiri dari angka yang sesuai dengan salah satu kata yang ditampilkan, maka nilai dari nama diatur ke kata itu. Jika baris kosong, kata-kata dan prompt ditampilkan lagi. Jika EOF dibaca, perintah selesai. Nilai pembacaan lainnya menyebabkan nama disetel ke null. Pembacaan baris disimpan dalam variabel REPLY . Daftar ini dijalankan setelah setiap seleksi sampai perintah istirahat dijalankan. Status keluar dari pilih adalah status keluar dari perintah terakhir yang dijalankan dalam daftar , atau nol jika tidak ada perintah yang dieksekusi.

kata kata dalam [[(] pattern [ | pattern ]

Perintah huruf pertama memperluas kata , dan mencoba untuk mencocokkannya dengan masing-masing pola secara bergantian, menggunakan aturan pencocokan yang sama seperti untuk perluasan jalur nama (lihat Perluasan Jalur Nama di bawah). Ketika kecocokan ditemukan, daftar yang sesuai dieksekusi. Setelah pertandingan pertama, tidak ada pertandingan berikutnya yang dicoba. Status keluar adalah nol jika tidak ada pola yang cocok. Jika tidak, itu adalah status keluar dari perintah terakhir yang dijalankan dalam daftar .

jika daftar ; kemudian daftar; [ daftar elif ; kemudian daftar ; ] ... [ daftar lain ; ] fi

Daftar if dijalankan. Jika status keluarnya nol, maka daftar itu dijalankan. Jika tidak, setiap daftar elif dijalankan secara bergantian, dan jika status keluarnya nol, daftar yang sesuai kemudian dijalankan dan perintah selesai. Jika tidak, daftar yang lain dieksekusi, jika ada. Status keluar adalah status keluar dari perintah terakhir yang dijalankan, atau nol jika tidak ada kondisi yang teruji benar.

sementara daftar ; lakukan daftar ; selesai

sampai daftar ; lakukan daftar ; selesai

Perintah sementara secara terus-menerus mengeksekusi daftar do selama perintah terakhir dalam daftar mengembalikan status keluar dari nol. Perintah sampai sama dengan perintah sementara , kecuali bahwa tes dinegasikan; daftar do dijalankan selama perintah terakhir dalam daftar mengembalikan status keluar non-nol. Status keluar dari perintah sementara dan hingga adalah status keluar dari perintah daftar lakukan terakhir, atau nol jika tidak ada yang dieksekusi.

[ function ] name () { daftar ; }

Ini mendefinisikan fungsi bernama nama . Tubuh fungsi adalah daftar perintah antara {dan}. Daftar ini dijalankan setiap kali nama ditetapkan sebagai nama perintah sederhana. Status keluar dari suatu fungsi adalah status keluar dari perintah terakhir yang dijalankan di dalam tubuh. (Lihat FUNGSI di bawah.)

KOMENTAR

Dalam shell non-interaktif, atau shell interaktif di mana opsi interactive_comments ke shopt builtin diaktifkan (lihat SHELL BUILTIN COMMANDS di bawah), kata yang diawali dengan # menyebabkan kata itu dan semua karakter yang tersisa pada baris itu diabaikan. Sebuah shell interaktif tanpa opsi interactive_comments diaktifkan tidak memungkinkan komentar. Opsi interactive_comments aktif secara default dalam shell interaktif.

QUOTING

Mengutip digunakan untuk menghapus arti khusus dari karakter atau kata-kata tertentu ke shell. Mengutip dapat digunakan untuk menonaktifkan perlakuan khusus untuk karakter khusus, untuk mencegah kata-kata yang dilindungi agar tidak dikenali seperti itu, dan untuk mencegah perluasan parameter.

Masing-masing dari metakarakter yang tercantum di atas di bawah DEFINISI memiliki arti khusus untuk shell dan harus dikutip jika itu untuk mewakili dirinya sendiri.

Ketika fasilitas perluasan sejarah perintah digunakan, karakter ekspansi sejarah , biasanya ! , harus dikutip untuk mencegah perluasan sejarah.

Ada tiga mekanisme pengutipan: karakter melarikan diri , tanda kutip tunggal, dan tanda kutip ganda.

Backslash yang tidak dikutip ( \ ) adalah karakter pelarian . Ini mempertahankan nilai literal dari karakter berikutnya yang mengikuti, dengan pengecualian . Jika pasangan \ muncul, dan backslash itu sendiri tidak dikutip, maka \ diperlakukan sebagai kelanjutan garis (yaitu, dihapus dari aliran input dan secara efektif diabaikan).

Melampirkan karakter dalam tanda kutip tunggal mempertahankan nilai literal masing-masing karakter dalam tanda kutip. Sebuah kutipan tunggal mungkin tidak terjadi di antara tanda kutip tunggal, bahkan ketika didahului oleh backslash.

Menyertakan karakter dalam tanda kutip ganda mempertahankan nilai literal dari semua karakter dalam tanda kutip, dengan pengecualian $ , ` , dan \ . Karakter $ dan ` mempertahankan arti khusus mereka dalam tanda kutip ganda. Backslash mempertahankan arti khusus hanya ketika diikuti oleh salah satu karakter berikut: $ , ` , " , \ , atau . Kutipan ganda dapat dikutip dalam tanda kutip ganda dengan mendahului dengan backslash.

Parameter khusus * dan @ memiliki arti khusus ketika dalam tanda kutip ganda (lihat PARAMETER di bawah).

Kata-kata dari bentuk $ ' string ' diperlakukan secara khusus. Kata diperluas ke string , dengan karakter backslash-escape diganti sebagaimana ditentukan oleh standar ANSI C. Urutan escape backslash, jika ada, di-decode sebagai berikut:

\Sebuah

siaga (bel)

\ b

menghapus

\ e

karakter melarikan diri

\ f

pakan formulir

\ n

garis baru

r

Kereta kembali

\ t

tab horizontal

\ v

tab vertikal

\\

backslash

\ '

satu kutipan

\ nnn

karakter delapan-bit yang nilainya adalah nilai oktal nnn (satu hingga tiga digit)

\ x HH

karakter delapan-bit yang nilainya adalah nilai heksadesimal HH (satu atau dua digit hex)

\ c x

karakter kontrol- x

Hasil yang diperluas adalah kutipan tunggal, seolah-olah tanda dolar belum ada.

String dua kutip yang diawali dengan tanda dolar ( $ ) akan menyebabkan string diterjemahkan sesuai dengan lokal saat ini. Jika lokal saat ini adalah C atau POSIX , tanda dolar diabaikan. Jika string diterjemahkan dan diganti, penggantinya akan dikutip ganda.

PARAMETER

Parameter adalah entitas yang menyimpan nilai. Bisa berupa nama , angka, atau salah satu karakter khusus yang tercantum di bawah ini di Parameter Khusus . Untuk tujuan shell, sebuah variabel adalah parameter yang dilambangkan dengan nama . Sebuah variabel memiliki nilai dan nol atau lebih banyak atribut . Atribut ditugaskan menggunakan perintah declare builtin (lihat pernyataan di bawah ini di SHELL BUILTIN COMMANDS ).

Parameter ditetapkan jika telah diberi nilai. String nol adalah nilai yang valid. Setelah variabel ditetapkan, itu mungkin tidak diset hanya dengan menggunakan perintah builtin unset (lihat SHELL BUILTIN COMMANDS di bawah).

Variabel dapat ditetapkan oleh pernyataan formulir

name = [ value ]

Jika nilai tidak diberikan, variabel diberi string null. Semua nilai mengalami ekspansi tilde, parameter dan perluasan variabel, substitusi perintah, ekspansi aritmatika, dan penghapusan kutipan (lihat PEMERIKSAAN di bawah). Jika variabel memiliki set atribut integer , maka nilai tunduk pada ekspansi aritmatika bahkan jika $ ((...)) ekspansi tidak digunakan (lihat Aritmetika Ekspansi di bawah). Pembelahan kata tidak dilakukan, dengan pengecualian "$ @" sebagaimana dijelaskan di bawah ini di Parameter Khusus . Perluasan nama jalan tidak dilakukan. Pernyataan penetapan juga dapat muncul sebagai argumen untuk perintah declare , typeset , export , readonly , dan local builtin.

Parameter Posisional

Parameter posisional adalah parameter yang dilambangkan dengan satu atau lebih digit, selain digit tunggal 0. Parameter posisi ditetapkan dari argumen shell ketika dipanggil, dan dapat ditetapkan ulang menggunakan perintah setin builtin. Parameter posisi tidak dapat ditetapkan dengan pernyataan penugasan. Parameter posisi sementara diganti ketika fungsi shell dijalankan (lihat FUNGSI di bawah).

Ketika parameter posisi yang terdiri dari lebih dari satu digit diperluas, harus diapit dalam tanda kurung (lihat EKSPANSI di bawah).

Parameter Khusus

Cangkang itu memperlakukan beberapa parameter secara khusus. Parameter ini hanya dapat dirujuk; tugas kepada mereka tidak diizinkan.

*

Memperluas ke parameter posisi, mulai dari satu. Ketika ekspansi terjadi dalam tanda kutip ganda, itu meluas ke satu kata dengan nilai setiap parameter yang dipisahkan oleh karakter pertama dari variabel khusus IFS . Artinya, " $ * " setara dengan " $ 1 c $ 2 c ... ", di mana c adalah karakter pertama dari nilai variabel IFS . Jika IFS tidak diset, parameter dipisahkan oleh spasi. Jika IFS tidak valid, parameter digabungkan tanpa intervening separator.

@

Memperluas ke parameter posisi, mulai dari satu. Ketika ekspansi terjadi dalam tanda kutip ganda, setiap parameter diperluas ke kata yang terpisah. Artinya, " $ @ " setara dengan " $ 1 " " $ 2 " ... Ketika tidak ada parameter posisi, " $ @ " dan $ @ meluas ke nol (yaitu, mereka dihapus).

#

Memperluas ke jumlah parameter posisi dalam desimal.

?

Mengekspansi status saluran pipa di depan yang paling baru dieksekusi.

-

Memperluas ke flag opsi saat ini sebagaimana ditentukan pada saat permintaan, dengan perintah set builtin, atau yang ditetapkan oleh shell itu sendiri (seperti opsi -i ).

$

Memperluas ID proses dari shell. Dalam subkulit (), ia memperluas ke ID proses dari shell saat ini, bukan subkulit.

!

Memperluas ke ID proses dari perintah background (asynchronous) yang baru saja dieksekusi.

0

Perluas nama skrip shell atau shell. Ini diatur pada inisialisasi shell. Jika bash dipanggil dengan file perintah, $ 0 diatur ke nama file itu. Jika bash dimulai dengan opsi -c , maka $ 0 diatur ke argumen pertama setelah string dieksekusi, jika ada. Jika tidak, itu diatur ke nama file yang digunakan untuk memanggil bash , seperti yang diberikan oleh argumen nol.

_

Pada startup shell, atur ke nama file absolut dari shell atau skrip shell yang dieksekusi sebagaimana diteruskan dalam daftar argumen. Selanjutnya, memperluas argumen terakhir ke perintah sebelumnya, setelah ekspansi. Juga diatur ke nama file lengkap dari setiap perintah yang dijalankan dan ditempatkan di lingkungan yang diekspor ke perintah itu. Saat memeriksa email, parameter ini menyimpan nama file email yang sedang diperiksa.

Variabel Shell

Variabel berikut ditetapkan oleh shell:

PESTA

Perluas nama file lengkap yang digunakan untuk mengaktifkan instance bash ini .

BASH_VERSINFO

Sebuah variabel array readonly yang anggotanya memiliki informasi versi untuk instance bash ini . Nilai-nilai yang diberikan kepada anggota array adalah sebagai berikut:

BASH_VERSINFO [ 0]

Nomor versi utama ( rilis ).

BASH_VERSINFO [ 1]

Nomor versi minor ( versi ).

BASH_VERSINFO [ 2]

Tingkat patch.

BASH_VERSINFO [ 3]

Versi build.

BASH_VERSINFO [ 4]

Status rilis (misalnya, beta1 ).

BASH_VERSINFO [ 5]

Nilai MACHTYPE .

BASH_VERSION

Memperluas ke string yang menjelaskan versi contoh bash ini .

COMP_CWORD

COMP_LINE

Baris perintah saat ini. Variabel ini hanya tersedia dalam fungsi shell dan perintah eksternal yang dipanggil oleh fasilitas penyelesaian yang dapat diprogram (lihat Penyelesaian Programmable di bawah).

COMP_POINT

COMP_WORDS

Variabel array (lihat Array di bawah) yang terdiri dari kata-kata individu dalam baris perintah saat ini. Variabel ini hanya tersedia dalam fungsi shell yang dipanggil oleh fasilitas penyelesaian yang dapat diprogram (lihat Penyelesaian Programmable di bawah).

DIRSTACK

Variabel array (lihat Array di bawah) yang berisi konten saat ini dari tumpukan direktori. Direktori muncul di stack dalam urutan yang ditampilkan oleh dirs builtin. Menetapkan ke anggota variabel larik ini dapat digunakan untuk mengubah direktori yang sudah ada dalam tumpukan, tetapi bangun dorong dan popd harus digunakan untuk menambah dan menghapus direktori. Penetapan pada variabel ini tidak akan mengubah direktori saat ini. Jika DIRSTACK tidak disetel, ia kehilangan sifat khususnya, bahkan jika itu diatur ulang.

EUID

Memperluas ke ID pengguna yang efektif dari pengguna saat ini, diinisialisasi pada startup shell. Variabel ini hanya bisa dibaca.

FUNCNAME

Nama dari setiap fungsi shell yang sedang dieksekusi. Variabel ini hanya ada ketika fungsi shell sedang dieksekusi. Tugas ke FUNCNAME tidak berpengaruh dan mengembalikan status kesalahan. Jika FUNCNAME tidak diset, kehilangan sifat khusus, bahkan jika itu diatur ulang.

GRUP

Suatu variabel array yang berisi daftar kelompok-kelompok di mana pengguna saat ini adalah anggota. Tugas ke GROUPS tidak berpengaruh dan mengembalikan status kesalahan. Jika GROUPS tidak disetel, ia kehilangan sifat khususnya, bahkan jika itu diatur ulang.

HISTCMD

Nomor riwayat, atau indeks dalam daftar riwayat, dari perintah saat ini. Jika HISTCMD tidak diset, kehilangan sifat khusus, bahkan jika itu diatur ulang.

HOSTNAME

Secara otomatis diatur ke nama host saat ini.

HOSTTYPE

Secara otomatis diatur ke string yang secara unik menggambarkan jenis mesin tempat bash mengeksekusi. Standarnya tergantung pada sistem.

LINENO

Setiap kali parameter ini direferensikan, shell menggantikan angka desimal yang mewakili nomor baris berurutan saat ini (dimulai dengan 1) dalam skrip atau fungsi. Ketika tidak dalam skrip atau fungsi, nilai yang diganti tidak dijamin berarti. Jika LINENO tidak diset, kehilangan sifat khusus, bahkan jika itu diatur ulang.

MACHTYPE

Secara otomatis diatur ke string yang sepenuhnya menggambarkan jenis sistem yang dijalankan bash , dalam format sistem cpu-perusahaan- GNU standar. Standarnya tergantung pada sistem.

OLDPWD

Direktori kerja sebelumnya seperti yang ditetapkan oleh perintah cd .

OPTARG

Nilai dari argumen opsi terakhir diproses oleh perintah getopts builtin (lihat SHELL BUILTIN COMMANDS di bawah).

OPTIND

Indeks argumen berikutnya akan diproses oleh perintah getopts builtin (lihat SHELL BUILTIN COMMANDS di bawah).

OSTYPE

Secara otomatis diatur ke string yang menggambarkan sistem operasi tempat bash mengeksekusi. Standarnya tergantung pada sistem.

PIPESTATUS

Variabel array (lihat Array di bawah) yang berisi daftar nilai status keluar dari proses di pipeline foreground yang paling baru dieksekusi (yang mungkin hanya berisi satu perintah).

PPID

ID proses dari induk shell. Variabel ini hanya bisa dibaca.

PWD

Direktori kerja saat ini sebagaimana diatur oleh perintah cd .

ACAK

Setiap kali parameter ini direferensikan, integer acak antara 0 dan 32767 dihasilkan. Urutan angka acak dapat diinisialisasi dengan menetapkan nilai ke RANDOM . Jika RANDOM tidak disetel, ia kehilangan sifat khususnya, bahkan jika itu diatur ulang.

BALASAN

Setel ke baris input yang dibaca oleh perintah read builtin ketika tidak ada argumen yang disediakan.

DETIK

Setiap kali parameter ini direferensikan, jumlah detik sejak permintaan shell dikembalikan. Jika nilai ditetapkan ke SECONDS , nilai yang dikembalikan setelah referensi berikutnya adalah jumlah detik sejak penugasan ditambah nilai yang ditetapkan. Jika DETIK tidak disetel, kehilangan sifat khusus, bahkan jika itu diatur ulang.

SHELLOPTS

Daftar opsi shell diaktifkan yang dipisahkan oleh titik dua. Setiap kata dalam daftar adalah argumen yang sah untuk opsi -o ke perintah set builtin (lihat SHELL BUILTIN COMMANDS di bawah). Opsi yang muncul dalam SHELLOPTS adalah yang dilaporkan sebagai oleh set -o . Jika variabel ini ada di lingkungan saat bash dijalankan, setiap opsi shell dalam daftar akan diaktifkan sebelum membaca file startup apa pun. Variabel ini hanya-baca.

SHLVL

Dikalikan dengan satu setiap kali sebuah instance dari bash dimulai.

UID

Memperluas ke ID pengguna dari pengguna saat ini, diinisialisasi pada startup shell. Variabel ini hanya bisa dibaca.

Variabel berikut digunakan oleh shell. Dalam beberapa kasus, bash memberikan nilai default ke variabel; kasus-kasus ini dicatat di bawah ini.

BASH_ENV

Jika parameter ini diatur ketika bash mengeksekusi skrip shell, nilainya ditafsirkan sebagai nama file yang berisi perintah untuk menginisialisasi shell, seperti dalam ~ / .bashrc . Nilai BASH_ENV dikenakan ekspansi parameter, substitusi perintah, dan ekspansi aritmatika sebelum ditafsirkan sebagai nama file. PATH tidak digunakan untuk mencari nama file yang dihasilkan.

CDPATH

Jalur pencarian untuk perintah cd . Ini adalah daftar direktori yang dipisahkan dengan titik dua di mana shell mencari direktori tujuan yang ditentukan oleh perintah cd . Nilai sampel adalah ".: ~: / Usr".

COLUMNS

Digunakan oleh perintah builtin pilih untuk menentukan lebar terminal saat mencetak daftar pilihan. Ditetapkan secara otomatis setelah menerima SIGWINCH.

MENYESUAIKAN

Sebuah variabel array dari bash yang membaca kemungkinan penyelesaian yang dihasilkan oleh fungsi shell yang dipanggil oleh fasilitas penyelesaian programmable (lihat Penyelesaian yang Dapat Diprogram di bawah).

FCEDIT

Editor default untuk perintah fc builtin.

FIGNORE

Daftar akhiran yang dipisahkan oleh titik dua untuk diabaikan saat melakukan penyelesaian nama file (lihat BACA di bawah). Namafile yang sufiksnya cocok dengan salah satu entri dalam FIGNORE dikeluarkan dari daftar nama file yang cocok. Nilai sampel adalah ".o: ~".

GLOBIGNORE

Daftar pola yang dipisahkan dengan titik dua yang mendefinisikan kumpulan nama file yang akan diabaikan oleh ekspansi pathname. Jika nama file yang dicocokkan dengan pola ekspansi pathname juga cocok dengan salah satu pola di GLOBIGNORE , itu dihapus dari daftar pertandingan.

HISTCONTROL

Jika diatur ke nilai ignorespace , garis yang dimulai dengan karakter spasi tidak dimasukkan pada daftar riwayat. Jika disetel ke nilai yang diabaikan , garis yang cocok dengan garis riwayat terakhir tidak dimasukkan. Nilai ignoreboth menggabungkan dua opsi. Jika tidak disetel, atau jika disetel ke nilai lain selain yang di atas, semua baris yang dibaca oleh parser disimpan di daftar riwayat, sesuai dengan nilai HISTIGNORE . Fungsi variabel ini digantikan oleh HISTIGNORE . Baris kedua dan selanjutnya dari perintah majemuk multi-baris tidak diuji, dan ditambahkan ke dalam sejarah terlepas dari nilai HISTCONTROL .

HISTFILE

Nama file di mana sejarah perintah disimpan (lihat SEJARAH di bawah). Nilai default adalah ~ / .bash_history . Jika tidak disetel, sejarah perintah tidak disimpan ketika shell interaktif keluar.

HISTFILESIZE

Jumlah baris maksimum yang terdapat dalam file riwayat. Ketika variabel ini diberi nilai, file sejarah dipotong, jika perlu, mengandung tidak lebih dari jumlah baris tersebut. Nilai standarnya adalah 500. File riwayat juga dipotong ke ukuran ini setelah menulisnya ketika shell interaktif keluar.

HISTIGNORE

Daftar pola yang dipisahkan dengan titik dua yang digunakan untuk memutuskan baris perintah mana yang harus disimpan dalam daftar riwayat. Setiap pola berlabuh di awal baris dan harus sesuai dengan garis lengkap (tidak ada implisit ` * 'ditambahkan). Setiap pola diuji terhadap garis setelah pemeriksaan yang ditentukan oleh HISTCONTROL diterapkan. Selain karakter pencocokan pola cangkang normal, ` & 'cocok dengan garis riwayat sebelumnya. ` & 'dapat diloloskan menggunakan backslash; backslash dihapus sebelum mencoba pertandingan. Baris kedua dan selanjutnya dari perintah majemuk multi-baris tidak diuji, dan ditambahkan ke dalam sejarah terlepas dari nilai HISTIGNORE .

HISTSIZE

Jumlah perintah yang harus diingat dalam sejarah perintah (lihat SEJARAH di bawah). Nilai standarnya adalah 500.

RUMAH

Direktori home pengguna saat ini; argumen default untuk perintah cd builtin. Nilai variabel ini juga digunakan saat melakukan ekspansi tilde.

HOSTFILE

Berisi nama file dalam format yang sama dengan / etc / hosts yang harus dibaca ketika shell perlu menyelesaikan nama host. Daftar kemungkinan penyelesaian nama host dapat diubah ketika shell sedang berjalan; saat penyelesaian nama host dicoba setelah nilai diubah, bash menambahkan isi file baru ke daftar yang ada. Jika HOSTFILE diset, tetapi tidak memiliki nilai, cobalah bash untuk membaca / etc / hosts untuk mendapatkan daftar kemungkinan penyelesaian nama host. Ketika HOSTFILE tidak diset, daftar nama host dihapus.

IFS

Pemisah Bidang Internal yang digunakan untuk membagi kata setelah ekspansi dan untuk membagi garis menjadi kata-kata dengan perintah builtin baca . Nilai standarnya adalah `` ''.

IGNOREEOF

Mengontrol aksi shell interaktif saat menerima karakter EOF sebagai satu-satunya masukan. Jika disetel, nilainya adalah jumlah karakter EOF berurutan yang harus diketik sebagai karakter pertama pada baris masukan sebelum keluar bash . Jika variabel ada tetapi tidak memiliki nilai numerik, atau tidak memiliki nilai, nilai defaultnya adalah 10. Jika tidak ada, EOF menandakan akhir input ke shell.

INPUTRC

Nama file untuk file startup readline , mengesampingkan default ~ / .inputrc (lihat READLINE di bawah).

LANG

Digunakan untuk menentukan kategori lokal untuk kategori apa pun yang tidak dipilih secara khusus dengan variabel yang dimulai dengan LC_ .

LC_ALL

Variabel ini mengesampingkan nilai LANG dan variabel LC_ lainnya yang menentukan kategori lokal.

LC_COLLATE

Variabel ini menentukan urutan penumpukan yang digunakan saat menyortir hasil perluasan pathname, dan menentukan perilaku ekspresi jangkauan, kelas ekivalen, dan menyusun urutan dalam ekspansi pathname dan pencocokan pola.

LC_CTYPE

Variabel ini menentukan interpretasi karakter dan perilaku kelas karakter dalam perluasan dan pencocokan pola pathname.

LC_MESSAGES

Variabel ini menentukan lokal yang digunakan untuk menerjemahkan string kutipan ganda yang didahului oleh $ .

LC_NUMERIC

Variabel ini menentukan kategori lokal yang digunakan untuk pemformatan angka.

LINES

Digunakan oleh perintah builtin pilih untuk menentukan panjang kolom untuk mencetak daftar pilihan. Ditetapkan secara otomatis setelah menerima SIGWINCH.

SURAT

Jika parameter ini disetel ke nama file dan variabel MAILPATH tidak disetel, bash menginformasikan pengguna tentang kedatangan surat dalam file yang ditentukan.

MAILCHECK

Menentukan seberapa sering (dalam detik) bash memeriksa surat. Standarnya adalah 60 detik. Ketika saatnya untuk memeriksa surat, shell melakukannya sebelum menampilkan prompt utama. Jika variabel ini tidak disetel, atau disetel ke nilai yang bukan angka lebih besar dari atau sama dengan nol, shell menonaktifkan pemeriksaan email.

MAILPATH

Daftar nama file yang dipisahkan dengan titik dua untuk diperiksa surat. Pesan yang akan dicetak ketika email tiba di file tertentu dapat ditentukan dengan memisahkan nama file dari pesan dengan `? '. Ketika digunakan dalam teks pesan, $ _ meluas ke nama mailfile saat ini. Contoh:

MAILPATH = '/ var / mail / bfox? "Anda memiliki surat": ~ / shell-mail? "$ _ Memiliki surat!"'

Bash menyediakan nilai default untuk variabel ini, tetapi lokasi file email pengguna yang digunakannya bergantung pada sistem (misalnya, / var / mail / $ USER ).

OPTERR

Jika diatur ke nilai 1, bash menampilkan pesan kesalahan yang dihasilkan oleh perintah getopts builtin (lihat SHELL BUILTIN COMMANDS di bawah). OPTERR diinisialisasi ke 1 setiap kali shell dipanggil atau skrip shell dieksekusi.

PATH

Jalur pencarian untuk perintah. Ini adalah daftar direktori yang dipisahkan dengan titik dua di mana shell mencari perintah (lihat COMMAND EXECUTION di bawah). Jalur default tergantung pada sistem, dan diatur oleh administrator yang menginstal bash . Nilai yang umum adalah `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Jika variabel ini ada di lingkungan ketika bash dimulai, shell memasuki mode posix sebelum membaca file startup, seolah-olah opsi --posix callokasi telah disediakan. Jika sudah diatur ketika shell sedang berjalan, bash mengaktifkan mode posix , seolah-olah perintah set -o posix telah dieksekusi.

PROMPT_COMMAND

Jika diset, nilai dieksekusi sebagai perintah sebelum mengeluarkan setiap prompt utama.

PS1

Nilai parameter ini diperluas (lihat PROMPTING di bawah) dan digunakan sebagai string prompt utama. Nilai standarnya adalah `` \ s- \ v \ $ ''.

PS2

Nilai parameter ini diperluas seperti dengan PS1 dan digunakan sebagai string prompt sekunder. Standarnya adalah `` > ''.

PS3

Nilai parameter ini digunakan sebagai prompt untuk perintah pilih (lihat SHELL GRAMMAR di atas).

PS4

Nilai parameter ini diperluas seperti dengan PS1 dan nilai dicetak sebelum setiap bash perintah ditampilkan selama jejak eksekusi. Karakter pertama PS4 direplikasi berkali-kali, jika perlu, untuk menunjukkan beberapa tingkat tipuan. Standarnya adalah `` + ''.

FORMAT WAKTU

Nilai parameter ini digunakan sebagai string format yang menentukan bagaimana informasi waktu untuk jaringan pipa yang diawali dengan kata waktu yang dicadangkan harus ditampilkan. Karakter % memperkenalkan urutan pelarian yang diperluas ke nilai waktu atau informasi lainnya. Urutan pelarian dan artinya adalah sebagai berikut; kawat gigi menunjukkan bagian opsional.

%%

Sebuah % literal.

% [ p ] [l] R

Waktu yang telah berlalu dalam hitungan detik.

% [ p ] [l] U

Jumlah detik CPU yang dihabiskan dalam mode pengguna.

% [ p ] [l] S

Jumlah detik CPU yang dihabiskan dalam mode sistem.

% P

Persentase CPU, dihitung sebagai (% U +% S) /% R.

P opsional adalah digit yang menentukan presisi , jumlah pecahan digit setelah titik desimal. Nilai 0 tidak menyebabkan titik desimal atau pecahan menjadi output. Paling banyak tiga tempat setelah titik desimal dapat ditentukan; nilai p lebih besar dari 3 diubah menjadi 3. Jika p tidak ditentukan, nilai 3 digunakan.

Opsi opsional menetapkan format yang lebih panjang, termasuk menit, dari bentuk MM m SS . FF s. Nilai p menentukan apakah atau tidak fraksi disertakan.

Jika variabel ini tidak disetel, bash bertindak seolah-olah memiliki nilai $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Jika nilainya nol, tidak ada informasi waktu yang ditampilkan. Garis tambahan baru ditambahkan ketika string format ditampilkan.

TMOUT

Jika disetel ke nilai lebih besar dari nol, TMOUT diperlakukan sebagai batas waktu default untuk baca bawaan. Perintah pilih berakhir jika input tidak tiba setelah detik TMOUT ketika input berasal dari terminal. Dalam shell interaktif, nilai ditafsirkan sebagai jumlah detik untuk menunggu masukan setelah mengeluarkan prompt utama. Bash berakhir setelah menunggu jumlah detik itu jika input tidak datang.

auto_resume

Variabel ini mengontrol bagaimana shell berinteraksi dengan pengguna dan kontrol pekerjaan. Jika variabel ini disetel, perintah tunggal kata sederhana tanpa pengarahan ulang diperlakukan sebagai kandidat untuk memulai kembali pekerjaan berhenti yang ada. Tidak ada ambiguitas yang diizinkan; jika ada lebih dari satu pekerjaan yang diawali dengan string yang diketik, pekerjaan yang paling baru diakses dipilih. Nama pekerjaan yang dihentikan, dalam konteks ini, adalah baris perintah yang digunakan untuk memulainya. Jika diatur ke nilai yang tepat , string yang diberikan harus sesuai dengan nama pekerjaan yang dihentikan persis; jika diatur ke substring , string yang disediakan harus sesuai dengan substring nama pekerjaan yang dihentikan. Nilai substring memberikan fungsionalitas analog ke %? identifier pekerjaan (lihat JOB CONTROL di bawah). Jika disetel ke nilai lain, string yang disediakan harus merupakan awalan nama pekerjaan yang dihentikan; ini menyediakan fungsionalitas analog ke pengenal pekerjaan % .

histchars

Dua atau tiga karakter yang mengontrol ekspansi dan tokenisasi sejarah (lihat PENGALAMAN SEJARAH di bawah). Karakter pertama adalah karakter ekspansi sejarah , karakter yang menandai awal dari ekspansi histori, biasanya ` ! '. Karakter kedua adalah karakter substitusi cepat , yang digunakan sebagai singkatan untuk menjalankan kembali perintah sebelumnya yang dimasukkan, menggantikan satu string dengan yang lain dalam perintah. Standarnya adalah ` ^ '. Karakter ketiga opsional adalah karakter yang menunjukkan bahwa sisa baris adalah komentar ketika ditemukan sebagai karakter pertama dari sebuah kata, biasanya ` # '. Karakter komentar sejarah menyebabkan substitusi sejarah dilewati untuk kata-kata yang tersisa di telepon. Itu tidak selalu menyebabkan shell parser memperlakukan sisa baris sebagai komentar.

Array

Bash menyediakan variabel array satu dimensi. Variabel apa pun dapat digunakan sebagai larik; menyatakan builtin secara eksplisit akan mendeklarasikan array. Tidak ada batasan maksimum pada ukuran larik, atau persyaratan apa pun bagi anggota yang diindeks atau ditugaskan secara berdekatan. Array diindeks menggunakan bilangan bulat dan berbasis nol.

Array dibuat secara otomatis jika ada variabel yang ditetapkan untuk menggunakan nama sintaks [ subscript ] = nilai . Subskrip diperlakukan sebagai ekspresi aritmatika yang harus dievaluasi ke angka yang lebih besar atau sama dengan nol. Untuk mendeklarasikan array secara eksplisit, gunakan declare -a name (lihat SHELL BUILTIN COMMANDS di bawah). declare -a name [ subscript ] juga diterima; subskrip diabaikan. Atribut dapat ditentukan untuk variabel array menggunakan mendeklarasikan dan hanya builtin. Setiap atribut berlaku untuk semua anggota array.

Array ditugaskan untuk menggunakan penetapan gabungan dari nama formulir = ( nilai 1 ... nilai n ) , di mana setiap nilai berupa [ subscript ] = string . Hanya string yang diperlukan. Jika kurung dan subskrip opsional disediakan, indeks tersebut ditugaskan untuk; jika tidak, indeks elemen yang ditugaskan adalah indeks terakhir yang ditetapkan oleh pernyataan plus satu. Pengindeksan dimulai dari nol. Sintaks ini juga diterima oleh declare builtin. Elemen-elemen array individu dapat ditugaskan untuk menggunakan nama [ subscript ] = value syntax yang diperkenalkan di atas.

Unset builtin digunakan untuk menghancurkan array. nama unset [ subscript ] menghancurkan elemen array pada subscript indeks. nama tidak disetel , di mana nama adalah larik, atau nama yang tidak disetel [ subscript ], di mana subskripnya adalah * atau @ , menghapus seluruh larik.

Deklarasi yang menyatakan , lokal , dan hanya bisa dibaca masing-masing menerima opsi -a untuk menentukan susunan. The read builtin menerima opsi -a untuk menetapkan daftar kata yang dibaca dari input standar ke array. Kumpulan dan menyatakan builtin menampilkan nilai larik dengan cara yang memungkinkannya digunakan kembali sebagai tugas.

EKSPANSI

Ekspansi dilakukan pada baris perintah setelah dibagi menjadi kata-kata. Ada tujuh jenis ekspansi yang dilakukan: brace ekspansi , ekspansi tilde , parameter dan ekspansi variabel , substitusi perintah , ekspansi aritmatika , pemisahan kata , dan ekspansi pathname .

Urutan perluasan adalah: brace ekspansi, ekspansi tilde, parameter, variabel dan ekspansi aritmatika dan substitusi perintah (dilakukan dengan cara kiri ke kanan), pemisahan kata, dan ekspansi pathname.

Pada sistem yang dapat mendukungnya, ada perluasan tambahan yang tersedia: substitusi proses .

Ekspansi Brace

Ekspansi brace adalah mekanisme dimana string arbitrary dapat dihasilkan. Mekanisme ini mirip dengan ekspansi pathname , tetapi nama file yang dihasilkan tidak perlu ada. Pola-pola yang akan diperluas diperluas mengambil bentuk pembukaan opsional, diikuti oleh serangkaian string yang dipisahkan koma antara sepasang kawat gigi, diikuti oleh postscript opsional. Pembukaan diawali dengan setiap string yang terdapat dalam tanda kurung, dan postscript kemudian ditambahkan ke setiap string yang dihasilkan, melebar dari kiri ke kanan.

Brace ekspansi dapat bersarang. Hasil dari setiap string yang diperluas tidak disortir; urutan kiri ke kanan dipertahankan. Sebagai contoh, sebuah { d, c, b } e meluas ke `ade ace abe '.

Ekspansi brace dilakukan sebelum ekspansi lain, dan setiap karakter khusus untuk ekspansi lainnya dipertahankan dalam hasil. Ini sangat tekstual. Bash tidak menerapkan interpretasi sintaksis apa pun ke konteks ekspansi atau teks di antara kurung.

Konstruk ini biasanya digunakan sebagai singkatan ketika awalan umum string yang dihasilkan lebih panjang dari pada contoh di atas:

mkdir / usr / local / src / bash / {lama, baru, dist, bug}

atau

chown root /usr/{ucb/{ex,verifikasi},lib/{ex?.?*,how_ex}}

Ekspansi Brace memperkenalkan sedikit ketidaksesuaian dengan versi historis sh . sh tidak memperlakukan membuka atau menutup kawat gigi khususnya ketika mereka muncul sebagai bagian dari kata, dan mempertahankan mereka dalam output. Bash menghapus kawat gigi dari kata-kata sebagai konsekuensi dari perluasan brace. Sebagai contoh, sebuah kata yang dimasukkan ke sh sebagai file {1,2} muncul secara identik dalam output. Kata yang sama adalah output sebagai file1 file2 setelah ekspansi oleh bash . Jika kompatibilitas ketat dengan sh diinginkan, mulailah bash dengan opsi + B atau nonaktifkan perluasan brace dengan opsi + B untuk perintah set (lihat SHELL BUILTIN COMMANDS di bawah).

Ekspansi Tilde

Jika sebuah kata dimulai dengan karakter tilde yang tidak bertanda (` ~ '), semua karakter yang mendahului garis miring kutip pertama (atau semua karakter, jika tidak ada garis miring tanpa tanda kutip) dianggap awalan tilde . Jika tidak ada karakter dalam awalan tilde yang dikutip, karakter dalam awalan tilde setelah tilde diperlakukan sebagai kemungkinan nama login . Jika nama login ini adalah string null, tilde diganti dengan nilai parameter shell HOME . Jika HOME tidak diset, direktori home pengguna yang mengeksekusi shell diganti sebagai gantinya. Jika tidak, awalan tilde diganti dengan direktori home yang terkait dengan nama login yang ditentukan.

Jika awalan tilde adalah `~ + ', nilai dari variabel shell PWD menggantikan awalan tilde. Jika awalan tilde adalah `~ - ', nilai dari variabel shell OLDPWD , jika disetel, diganti. Jika karakter yang mengikuti tilde di awalan tilde terdiri dari angka N , opsional diawali dengan `+ 'atau` -', awalan tilde diganti dengan elemen yang sesuai dari tumpukan direktori, karena akan ditampilkan oleh dirs builtin dipanggil dengan awalan tilde sebagai argumen. Jika karakter yang mengikuti tilde di awalan tilde terdiri dari angka tanpa awalan `+ 'atau` -', `+ 'diasumsikan.

Jika nama login tidak valid, atau ekspansi tilde gagal, kata tidak berubah.

Setiap tugas variabel diperiksa untuk awalan tilde tanpa tanda kutip segera setelah : atau = . Dalam kasus ini, ekspansi tilde juga dilakukan. Akibatnya, seseorang dapat menggunakan nama file dengan tilde dalam tugas ke PATH , MAILPATH , dan CDPATH , dan shell memberikan nilai yang diperluas.

Ekspansi Parameter

Karakter ` $ 'memperkenalkan ekspansi parameter, substitusi perintah, atau ekspansi aritmatika. Nama parameter atau simbol untuk diperluas dapat diapit dalam tanda kurung, yang bersifat opsional tetapi berfungsi untuk melindungi variabel untuk diperluas dari karakter yang mengikutinya yang dapat ditafsirkan sebagai bagian dari nama.

Ketika kawat gigi digunakan, penjepit akhir yang cocok adalah yang pertama ` } 'tidak lolos oleh backslash atau dalam string yang dikutip, dan tidak dalam ekspansi aritmatika tertanam, substitusi perintah, atau ekspansi paramter.

Nilai parameter diganti. Kawat gigi diperlukan ketika parameter adalah parameter posisi dengan lebih dari satu digit, atau ketika parameter diikuti oleh karakter yang tidak harus ditafsirkan sebagai bagian dari namanya.

Dalam setiap kasus di bawah ini, kata tunduk pada ekspansi tilde, ekspansi parameter, substitusi perintah, dan ekspansi aritmatika. Ketika tidak melakukan ekspansi substring, uji bash untuk parameter yang tidak diset atau null; menghilangkan hasil titik dua dalam tes hanya untuk parameter yang tidak disetel.

Gunakan Nilai Default . Jika parameter tidak diset atau null, perluasan kata diganti. Jika tidak, nilai parameter diganti.

Tetapkan Nilai Default . Jika parameter tidak diset atau null, perluasan kata ditugaskan ke parameter . Nilai parameter kemudian diganti. Parameter posisi dan parameter khusus tidak dapat ditetapkan dengan cara ini.

Kesalahan Tampilan jika Null atau Tidak Disetel . Jika parameter nol atau tidak disetel, perluasan kata (atau pesan untuk efek itu jika kata tidak ada) ditulis ke kesalahan standar dan shell, jika tidak interaktif, keluar. Jika tidak, nilai parameter diganti.

Gunakan Nilai Alternatif . Jika parameter nol atau tidak disetel, tidak ada yang diganti, jika tidak, perluasan kata diganti.

Memperluas nama variabel yang namanya dimulai dengan awalan , dipisahkan oleh karakter pertama dari variabel khusus IFS .

Panjang karakter dari nilai parameter diganti. Jika parameter * atau @ , nilai yang digantikan adalah jumlah parameter posisi. Jika parameter adalah nama array yang ditulis oleh * atau @ , nilai yang digantikan adalah jumlah elemen dalam array.

Kata diperluas untuk menghasilkan pola seperti dalam ekspansi pathname. Jika polanya sesuai dengan awal nilai parameter , maka hasil dari ekspansi adalah nilai parameter yang diperluas dengan pola pencocokan terpendek (kasus `` # '') atau pola pencocokan terpanjang (`` ## ' 'kasus) dihapus. Jika parameter adalah @ atau * , operasi penghapusan pola diterapkan ke setiap parameter posisi secara bergantian, dan perluasan adalah daftar yang dihasilkan. Jika parameter adalah variabel larik yang di-subscript dengan @ atau * , operasi penghapusan pola diterapkan ke setiap anggota array secara bergiliran, dan ekspansi adalah daftar yang dihasilkan.

Kata diperluas untuk menghasilkan pola seperti dalam ekspansi pathname. Jika pola tersebut cocok dengan bagian trailing dari nilai parameter yang diperluas, maka hasil dari ekspansi adalah nilai parameter yang diperluas dengan pola pencocokan terpendek (kasus `` % '') atau pola pencocokan terpanjang (the `` % % '' kasus) dihapus. Jika parameter adalah @ atau * , operasi penghapusan pola diterapkan ke setiap parameter posisi secara bergantian, dan perluasan adalah daftar yang dihasilkan. Jika parameter adalah variabel larik yang di-subscript dengan @ atau * , operasi penghapusan pola diterapkan ke setiap anggota array secara bergiliran, dan ekspansi adalah daftar yang dihasilkan.

Pola ini diperluas untuk menghasilkan pola seperti pada ekspansi pathname. Parameter diperluas dan kecocokan pola terlama terhadap nilainya diganti dengan string . Dalam bentuk pertama, hanya pertandingan pertama yang diganti. Bentuk kedua menyebabkan semua kecocokan pola diganti dengan string . Jika pola dimulai dengan # , harus cocok pada awal nilai parameter yang diperluas. Jika pola dimulai dengan % , itu harus cocok di akhir nilai parameter yang diperluas. Jika string nol, kecocokan pola dihapus dan pola / berikut dapat dihilangkan. Jika parameter adalah @ atau * , operasi substitusi diterapkan ke setiap parameter posisi secara bergantian, dan ekspansi adalah daftar yang dihasilkan. Jika parameter adalah variabel array yang dipanggil dengan @ atau * , operasi substitusi diterapkan ke setiap anggota array secara bergantian, dan ekspansi adalah daftar yang dihasilkan.

Pergantian Komando

Substitusi perintah memungkinkan keluaran dari perintah untuk mengganti nama perintah. Ada dua bentuk:

$ ( perintah )

atau

` perintah`

Bash melakukan ekspansi dengan mengeksekusi perintah dan mengganti substitusi perintah dengan output standar dari perintah, dengan baris baru yang tertinggal dihapus. Embedded newlines tidak dihapus, tetapi mereka dapat dihapus selama perpecahan kata. Substitusi perintah $ ( file kucing ) dapat diganti dengan $ yang setara tetapi lebih cepat (< file ).

Ketika bentuk backquote gaya lama dari substitusi digunakan, backslash mempertahankan arti literalnya kecuali ketika diikuti oleh $ , ` , atau \ . Backquote pertama yang tidak didahului oleh backslash mengakhiri substitusi perintah. Saat menggunakan formulir $ ( perintah ), semua karakter di antara tanda kurung membentuk perintah; tidak ada yang diperlakukan secara khusus.

Substitusi komando dapat disarangkan. Untuk bersarang ketika menggunakan formulir backquoted, lepaskan backquotes belakang dengan backslashes.

Jika substitusi muncul dalam tanda kutip ganda, pembagian kata dan perluasan jalur nama tidak dilakukan pada hasil.

Ekspansi Aritmatika

Ekspansi aritmatika memungkinkan evaluasi ekspresi aritmatika dan substitusi hasil. Format untuk ekspansi aritmatika adalah:

$ (( ekspresi ))

Ekspresi diperlakukan seolah-olah itu dalam tanda kutip ganda, tetapi kutipan ganda di dalam tanda kurung tidak diperlakukan secara khusus. Semua token dalam ekspresi mengalami ekspansi parameter, ekspansi string, penggantian perintah, dan penghapusan kutipan. Penggantian aritmatika dapat bersarang.

Evaluasi dilakukan sesuai dengan aturan yang tercantum di bawah ini berdasarkan EVALUASI ARITMETIK . Jika ekspresi tidak valid, bash mencetak pesan yang mengindikasikan kegagalan dan tidak ada penggantian yang terjadi.

Substitusi Proses

Substitusi proses didukung pada sistem yang mendukung named pipes ( FIFOs ) atau metode / dev / fd untuk menamai file terbuka. Ini mengambil bentuk <( daftar ) atau > ( daftar ) . Daftar proses dijalankan dengan input atau output yang terhubung ke FIFO atau beberapa file di / dev / fd . Nama file ini dilewatkan sebagai argumen ke perintah saat ini sebagai hasil dari ekspansi. Jika formulir > ( daftar ) digunakan, menulis ke file akan memberikan masukan untuk daftar . Jika formulir <( list ) digunakan, file yang dilewatkan sebagai argumen harus dibaca untuk mendapatkan keluaran daftar .

Ketika tersedia, substitusi proses dilakukan bersamaan dengan parameter dan ekspansi variabel, substitusi perintah, dan ekspansi aritmatika.

Pemisahan Kata

Shell memindai hasil ekspansi parameter, substitusi perintah, dan ekspansi aritmatika yang tidak terjadi dalam tanda kutip ganda untuk pemisahan kata .

Shell memperlakukan setiap karakter IFS sebagai pemisah, dan membagi hasil dari ekspansi lain ke dalam kata-kata pada karakter ini. Jika IFS tidak diset, atau nilainya persis , default, maka setiap urutan karakter IFS berfungsi untuk membatasi kata-kata. Jika IFS memiliki nilai selain default, maka urutan ruang dan tab karakter spasi diabaikan di awal dan akhir kata, asalkan karakter spasi dalam nilai IFS (karakter spasi putih IFS ). Semua karakter dalam IFS yang bukan IFS whitespace, bersama dengan karakter whitespace IFS yang berdekatan, membatasi bidang. Urutan karakter whitespace IFS juga diperlakukan sebagai pemisah. Jika nilai IFS nol, tidak ada pemisahan kata yang terjadi.

Null argumen eksplisit ( "" atau '' ) dipertahankan. Unploted null argumen kosong, yang dihasilkan dari perluasan parameter yang tidak memiliki nilai, dihapus. Jika parameter tanpa nilai diperluas dalam tanda kutip ganda, hasil argumen null dan dipertahankan.

Perhatikan bahwa jika tidak ada ekspansi, tidak ada pemisahan yang dilakukan.

Perluasan Jalur Nama

Setelah perpecahan kata, kecuali opsi -f telah diatur, bash akan memindai setiap kata untuk karakter * ,? , dan [ . Jika salah satu karakter ini muncul, maka kata tersebut dianggap sebagai pola , dan diganti dengan daftar nama file yang diurut secara alfabet yang cocok dengan pola tersebut. Jika tidak ditemukan nama file yang cocok, dan opsi shell nullglob dinonaktifkan, kata tersebut tidak diubah. Jika opsi nullglob diatur, dan tidak ada kecocokan yang ditemukan, kata tersebut dihapus. Jika opsi shell nocaseglob diaktifkan, pertandingan dilakukan tanpa memperhatikan huruf karakter abjad. Ketika sebuah pola digunakan untuk ekspansi pathname, karakter ``. '' Pada awal nama atau segera mengikuti garis miring harus dicocokkan secara eksplisit, kecuali opsi shell dotglob diatur. Ketika mencocokkan nama path, karakter slash harus selalu dicocokkan secara eksplisit. Dalam kasus lain, karakter ``. '' Tidak diperlakukan secara khusus. Lihat deskripsi shopt di bawah ini di bawah SHELL BUILTIN COMMANDS untuk deskripsi opsi shell nocaseglob , nullglob , dan dotglob .

Variabel shell GLOBIGNORE dapat digunakan untuk membatasi set nama file yang cocok dengan pola . Jika GLOBIGNORE diatur, setiap nama file yang cocok yang juga cocok dengan salah satu pola di GLOBIGNORE dihapus dari daftar pertandingan. Nama file ``. '' Dan `` .. '' selalu diabaikan, bahkan ketika GLOBIGNORE diatur. Namun, pengaturan GLOBIGNORE memiliki efek mengaktifkan opsi shell dotglob , sehingga semua nama file lain yang diawali dengan ``. '' Akan cocok. Untuk mendapatkan perilaku lama mengabaikan nama file yang diawali dengan ``. '' , Buat ``. * '' Salah satu dari pola di GLOBIGNORE . Opsi dotglob dinonaktifkan ketika GLOBIGNORE tidak disetel.

Pencocokan Pola

Karakter apa pun yang muncul dalam pola, selain karakter pola khusus yang dideskripsikan di bawah ini, mencocokkan dirinya sendiri. Karakter NUL mungkin tidak terjadi dalam pola. Karakter pola khusus harus dikutip jika mereka harus dicocokkan secara harfiah.

Karakter pola khusus memiliki arti sebagai berikut:

*

Cocok dengan string apa pun, termasuk string null.

?

Cocok dengan karakter tunggal apa pun.

[...]

Cocok dengan salah satu karakter yang terlampir. Sepasang karakter yang dipisahkan oleh tanda hubung menunjukkan berbagai ekspresi ; karakter apa pun yang menyortir di antara dua karakter tersebut, termasuk, menggunakan rangkaian urutan dan rangkaian karakter lokal saat ini, dicocokkan. Jika karakter pertama mengikuti [ is a ! atau a ^ maka karakter apa pun yang tidak diapit akan dicocokkan. Urutan pengurutan karakter dalam rentang ekspresi ditentukan oleh lokal saat ini dan nilai variabel shell LC_COLLATE , jika diatur. A - dapat dicocokkan dengan memasukkannya sebagai karakter pertama atau terakhir dalam set. A ] dapat dicocokkan dengan memasukkannya sebagai karakter pertama dalam set.

Dalam [ dan ] , kelas karakter dapat ditentukan menggunakan sintaks [: class :] , di mana kelas adalah salah satu kelas berikut yang didefinisikan dalam standar POSIX.2:

alnum alpha ascii kosong cntrl digit graph lower print punct space atas kata xdigit
Kelas karakter cocok dengan karakter apa pun yang termasuk dalam kelas itu. Kelas karakter kata cocok dengan huruf, angka, dan karakter _.

Dalam [ dan ] , kelas ekivalen dapat ditentukan dengan menggunakan sintaks [= c =] , yang cocok dengan semua karakter dengan berat pengumpulan yang sama (sebagaimana didefinisikan oleh lokal saat ini) sebagai karakter c .

Dalam [ dan ] , sintaks [. simbol .] cocok dengan simbol simbol yang bertabrakan.

Jika opsi shell extglob diaktifkan menggunakan shopt builtin, beberapa operator pencocokan pola diperpanjang diakui. Dalam uraian berikut, daftar-pola adalah daftar dari satu atau lebih pola yang dipisahkan oleh | . Pola komposit dapat dibentuk menggunakan satu atau lebih dari sub-pola berikut:

? ( daftar pola )

Mencocokkan nol atau satu kemunculan pola yang diberikan

* ( daftar pola )

Mencocokkan nol atau lebih banyak kejadian dari pola yang diberikan

+ ( daftar pola )

Mencocokkan satu atau lebih kejadian dari pola yang diberikan

@ ( daftar pola )

Sama persis dengan salah satu pola yang diberikan

! ( daftar pola )

Cocok dengan apa pun kecuali salah satu pola yang diberikan

Penghapusan Kutipan

Setelah perluasan sebelumnya, semua kejadian karakter yang tidak dikutip \ , ' , dan " yang tidak dihasilkan dari salah satu perluasan di atas dihapus.

REDIRECTION

Sebelum perintah dijalankan, input dan outputnya dapat dialihkan menggunakan notasi khusus yang ditafsirkan oleh shell. Redirection juga dapat digunakan untuk membuka dan menutup file untuk lingkungan eksekusi shell saat ini. Operator redireksi berikut dapat mendahului atau muncul di mana saja dalam perintah sederhana atau dapat mengikuti perintah . Pengalihan diproses dalam urutan yang muncul, dari kiri ke kanan.

Dalam uraian berikut, jika nomor deskripsi file diabaikan, dan karakter pertama dari operator redirection adalah < , pengalihan mengacu pada input standar (file descriptor 0). Jika karakter pertama dari operator redirection adalah > , redirection mengacu pada output standar (file descriptor 1).

Kata berikut operator redirection dalam deskripsi berikut, kecuali dinyatakan lain, dikenai perluasan brace, ekspansi tilde, ekspansi parameter, substitusi perintah, ekspansi aritmatika, penghapusan kutipan, ekspansi pathname, dan pemisahan kata. Jika meluas ke lebih dari satu kata, bash melaporkan kesalahan.

Perhatikan bahwa urutan pengalihan penting. Misalnya, perintah

ls > dirlist 2 > & 1

mengarahkan kedua output standar dan standard error ke file dirlist , sementara perintah

ls 2 > & 1 > dirlist

hanya mengarahkan keluaran standar ke file dirlist , karena kesalahan standar diduplikasi sebagai output standar sebelum keluaran standar dialihkan ke dirlist .

Bash menangani beberapa nama file khususnya ketika mereka digunakan dalam pengarahan ulang, seperti yang dijelaskan dalam tabel berikut:

/ dev / fd / fd

Jika fd adalah integer yang valid, file descriptor fd diduplikasi.

/ dev / stdin

File descriptor 0 diduplikasi.

/ dev / stdout

File descriptor 1 diduplikasi.

/ dev / stderr

File descriptor 2 diduplikasi.

/ dev / tcp / host / port

Jika host adalah nama host atau alamat Internet yang valid, dan port adalah nomor port integer atau nama layanan, bash mencoba membuka koneksi TCP ke soket yang sesuai.

/ dev / udp / host / port

Jika host adalah nama host atau alamat Internet yang valid, dan port adalah nomor port integer atau nama layanan, bash mencoba untuk membuka koneksi UDP ke soket yang sesuai.

Kegagalan membuka atau membuat file menyebabkan pengalihan gagal.

Mengarahkan Input

Redirection of input menyebabkan file yang namanya hasil dari perluasan kata yang akan dibuka untuk membaca pada file deskriptor n , atau input standar (file descriptor 0) jika n tidak ditentukan.

Format umum untuk mengarahkan input adalah:

[ n ] < kata

Mengarahkan Output

Redirection of output menyebabkan file yang namanya hasil dari perluasan kata yang akan dibuka untuk menulis pada file deskriptor n , atau output standar (file descriptor 1) jika n tidak ditentukan. Jika file tidak ada maka dibuat; jika memang ada dipotong ke ukuran nol.

Format umum untuk mengarahkan output adalah:

[ n ] > kata

Jika operator redirection > , dan opsi noclobber ke set builtin telah diaktifkan, redirection akan gagal jika file yang namanya hasil dari perluasan kata ada dan merupakan file biasa. Jika operator redirection > | , atau operator redirection > dan opsi noclobber ke perintah set builtin tidak diaktifkan, redirection diupayakan meskipun file yang dinamai dengan kata ada.

Menambahkan Output yang Dialihkan

Redirection of output dalam mode ini menyebabkan file yang namanya hasil dari perluasan kata yang akan dibuka untuk menambahkan pada deskripsi file n , atau output standar (file descriptor 1) jika n tidak ditentukan. Jika file tidak ada, itu dibuat.

Format umum untuk menambahkan output adalah:

[ n ] >> kata

Mengarahkan Output Standar dan Kesalahan Standar

Bash memungkinkan kedua output standar (file descriptor 1) dan output error standar (file descriptor 2) untuk dialihkan ke file yang namanya adalah perluasan kata dengan konstruk ini.

Ada dua format untuk mengarahkan output standar dan kesalahan standar:

&> kata

dan

> & kata

Dari dua bentuk itu, yang pertama lebih disukai. Ini semantis setara dengan

> kata 2 > & 1

Di sini Dokumen

Jenis pengalihan ini menginstruksikan shell untuk membaca masukan dari sumber saat ini hingga baris yang hanya berisi kata (tanpa tanda kosong) akan terlihat. Semua garis yang dibaca hingga titik itu kemudian digunakan sebagai input standar untuk sebuah perintah.

Format dokumen di sini adalah:

<< [ - ] kata pemisah dokumen di sini

Tidak ada ekspansi parameter, substitusi perintah, ekspansi aritmatika, atau perluasan jalur nama dilakukan pada kata . Jika ada karakter dalam kata yang dikutip, pembatas adalah hasil dari penghapusan kutipan pada kata , dan garis-garis di sini-dokumen tidak diperluas. Jika kata tidak bertanda kutip, semua baris dokumen di sini dikenakan perluasan parameter, substitusi perintah, dan ekspansi aritmatika. Dalam kasus terakhir, urutan karakter \ diabaikan, dan \ harus digunakan untuk mengutip karakter \ , $ , dan ` .

Jika operator redirection adalah << - , maka semua karakter tab terkemuka dilucuti dari baris input dan garis berisi pembatas . Ini memungkinkan dokumen-dokumen di dalam skrip shell diindentasi secara alami.

Sini Strings

Varian dari dokumen di sini, formatnya adalah:

<<< kata

Kata itu diperluas dan dipasok ke perintah pada input standarnya.

Duplicating File Descriptors

Operator pengalihan

[ n ] <& kata

digunakan untuk menduplikasi deskripsi file input. Jika kata meluas ke satu atau lebih digit, deskriptor file dilambangkan dengan n dibuat menjadi salinan deskriptor file tersebut. Jika digit dalam kata tidak menentukan deskriptor file terbuka untuk input, kesalahan redirection terjadi. Jika kata mengevaluasi ke - , deskriptor file n ditutup. Jika n tidak ditentukan, input standar (file descriptor 0) digunakan.

Operator

[ n ] > & kata

digunakan sama untuk menduplikasi file deskripsi output. Jika n tidak ditentukan, output standar (file descriptor 1) digunakan. Jika digit dalam kata tidak menentukan deskriptor file terbuka untuk output, kesalahan redirection terjadi. Sebagai kasus khusus, jika n dihilangkan, dan kata tidak meluas menjadi satu atau lebih digit, output standar dan kesalahan standar dialihkan seperti yang dijelaskan sebelumnya.

Memindahkan File Deskriptor

Operator pengalihan

[ n ] <& digit -

memindahkan file deskriptor digit ke file descriptor n , atau input standar (file descriptor 0) jika n tidak ditentukan. digit ditutup setelah diduplikasi menjadi n .

Demikian pula operator pengalihan

[ n ] > & digit -

memindahkan file deskriptor digit ke file descriptor n , atau output standar (file descriptor 1) jika n tidak ditentukan.

Membuka File Deskriptor untuk Membaca dan Menulis

Operator pengalihan

[ n ] <> kata

menyebabkan file yang namanya adalah perluasan kata yang akan dibuka untuk membaca dan menulis pada file deskriptor n , atau pada file descriptor 0 jika n tidak ditentukan. Jika file tidak ada, itu dibuat.

ALIASES

Alias memungkinkan string untuk menggantikan kata ketika digunakan sebagai kata pertama dari perintah sederhana. Shell menyimpan daftar alias yang dapat disetel dan tidak disetel dengan alias dan perintah built-in unalias (lihat SHELL BUILTIN COMMANDS di bawah). Kata pertama dari setiap perintah, jika tanpa tanda kutip, dicentang untuk melihat apakah itu memiliki alias. Jika demikian, kata itu diganti dengan teks alias. Nama alias dan teks pengganti mungkin berisi input shell yang valid, termasuk metacharacters yang tercantum di atas, dengan pengecualian bahwa nama alias tidak boleh mengandung = . Kata pertama dari teks pengganti diuji untuk alias, tetapi kata yang identik dengan alias yang sedang diperluas tidak diperluas untuk kedua kalinya. Ini berarti bahwa satu dapat alias ls ke ls -F , misalnya, dan bash tidak mencoba untuk secara rekursif memperluas teks pengganti. Jika karakter terakhir dari nilai alias kosong , maka kata perintah berikutnya mengikuti alias juga diperiksa untuk ekspansi alias.

Alias ​​dibuat dan terdaftar dengan perintah alias , dan dihapus dengan perintah unalias .

Tidak ada mekanisme untuk menggunakan argumen dalam teks pengganti. Jika argumen diperlukan, fungsi shell harus digunakan (lihat FUNGSI di bawah).

Alias ​​tidak diperluas ketika shell tidak interaktif, kecuali opsi shell expand_aliases diatur menggunakan shopt (lihat deskripsi shopt di bawah SHELL BUILTIN COMMANDS di bawah).

Aturan tentang definisi dan penggunaan alias agak membingungkan. Bash selalu membaca setidaknya satu baris input lengkap sebelum menjalankan salah satu perintah pada baris itu. Alias ​​diperluas ketika perintah dibaca, bukan saat perintah dijalankan. Oleh karena itu, definisi alias yang muncul pada baris yang sama dengan perintah lain tidak berpengaruh hingga baris berikutnya dari input dibaca. Perintah mengikuti definisi alias pada baris itu tidak terpengaruh oleh alias baru. Perilaku ini juga merupakan masalah ketika fungsi dijalankan. Alias ​​diperluas ketika definisi fungsi dibaca, bukan ketika fungsi dijalankan, karena definisi fungsi itu sendiri adalah perintah majemuk. Sebagai akibatnya, alias yang didefinisikan dalam fungsi tidak tersedia hingga setelah fungsi tersebut dijalankan. Agar aman, selalu pasang definisi alias pada baris terpisah, dan jangan gunakan alias dalam perintah majemuk.

Untuk hampir semua tujuan, alias digantikan oleh fungsi shell.

FUNGSI

Fungsi shell, didefinisikan seperti yang dijelaskan di bawah SHELL GRAMMAR , menyimpan serangkaian perintah untuk eksekusi nanti. Ketika nama fungsi shell digunakan sebagai nama perintah sederhana, daftar perintah yang terkait dengan nama fungsi tersebut dijalankan. Fungsi dieksekusi dalam konteks shell saat ini; tidak ada proses baru yang dibuat untuk menafsirkannya (kontras ini dengan eksekusi skrip shell). Ketika suatu fungsi dijalankan, argumen ke fungsi menjadi parameter posisi selama pelaksanaannya. Parameter khusus # diperbarui untuk mencerminkan perubahan. Parameter posisional 0 tidak berubah. Variabel FUNCNAME diatur ke nama fungsi saat fungsi sedang dieksekusi. Semua aspek lain dari lingkungan eksekusi shell identik antara fungsi dan pemanggilnya dengan pengecualian bahwa jebakan DEBUG (lihat deskripsi jebakan yang dibangun di bawah SHELL BUILTIN COMMANDS di bawah) tidak diwarisi kecuali fungsi tersebut telah diberi atribut jejak ( lihat keterangan dari declare builtin di bawah ini).

Variabel lokal ke fungsi dapat dideklarasikan dengan perintah bawaan lokal . Biasanya, variabel dan nilainya dibagi antara fungsi dan pemanggilnya.

Jika pengembalian perintah bawaan dijalankan dalam fungsi, fungsi selesai dan eksekusi dilanjutkan dengan perintah berikutnya setelah panggilan fungsi. Ketika suatu fungsi selesai, nilai-nilai parameter posisi dan parameter khusus # dikembalikan ke nilai-nilai yang mereka miliki sebelum eksekusi fungsi.

Nama fungsi dan definisi dapat dicantumkan dengan opsi -f ke perintah declart atau setin . Opsi -F untuk menyatakan atau mengeset akan mencantumkan nama fungsi saja. Fungsi dapat diekspor sehingga subshells secara otomatis memiliki mereka didefinisikan dengan opsi -f ke export builtin.

Fungsi dapat rekursif. Tidak ada batasan yang dikenakan pada jumlah panggilan rekursif.

EVALUASI ARITMATIK

Shell memungkinkan ekspresi aritmatika dievaluasi, dalam keadaan tertentu (lihat perintah let builtin dan Arithmetic Expansion ). Evaluasi dilakukan dalam bilangan bulat dengan lebar tetap tanpa memeriksa luapan, meskipun pembagian dengan 0 dijebak dan ditandai sebagai kesalahan. Operator dan preseden dan associativity mereka sama seperti dalam bahasa C. Daftar operator berikut dikelompokkan ke dalam tingkatan operator yang sama-preseden. Tingkat tercantum dalam urutan penurunan presedensi.

id ++ id -

variabel post-increment dan post-decrement

++ id - id

variabel pra-pertambahan dan pra-penurunan

- +

minus dan plus unary

! ~

negasi logis dan bitwise

**

eksponensial

* /%

perkalian, pembagian, sisanya

+ -

penjumlahan, pengurangan

<< >>

pergeseran bitwise kiri dan kanan

<=> = <>

perbandingan

==! =

kesetaraan dan ketidaksetaraan

&

bitwise AND

^

ATAU bitwise eksklusif

|

bitwise OR

&&

logis AND

||

OR logis

expr ? expr : expr

evaluasi bersyarat

= * = / =% = + = - = << = >> = & = ^ = | =

tugas

expr1 , expr2

koma

Variabel shell diizinkan sebagai operan; Perluasan parameter dilakukan sebelum ekspresi dievaluasi. Dalam sebuah ekspresi, variabel shell juga dapat direferensikan oleh nama tanpa menggunakan sintaks ekspansi parameter. Nilai suatu variabel dievaluasi sebagai ekspresi aritmatika ketika dirujuk. Variabel shell tidak perlu atribut integernya diaktifkan untuk digunakan dalam ekspresi.

Konstanta dengan 0 terdepan ditafsirkan sebagai bilangan oktal. Terkemuka 0x atau 0X menunjukkan heksadesimal. Jika tidak, angka mengambil bentuk [ base # ] n, di mana basis adalah angka desimal antara 2 dan 64 yang mewakili basis aritmatika, dan n adalah angka dalam basis itu. Jika basis # dihilangkan, maka basis 10 digunakan. Digit lebih besar dari 9 diwakili oleh huruf kecil, huruf besar, @, dan _, dalam urutan itu. Jika basis kurang dari atau sama dengan 36, huruf kecil dan huruf besar dapat digunakan secara bergantian untuk mewakili angka antara 10 dan 35.

Operator dievaluasi berdasarkan prioritas. Sub-ekspresi dalam tanda kurung dievaluasi terlebih dahulu dan dapat mengesampingkan aturan prioritas di atas.

EKSPRESI KONDISI

Ekspresi kondisional digunakan oleh [[ perintah majemuk dan pengujian dan [ perintah bawaan untuk menguji atribut file dan melakukan perbandingan string dan aritmatika. Ekspresi terbentuk dari pendahuluan unary atau binary berikut. Jika ada argumen file ke salah satu primary adalah dari bentuk / dev / fd / n , maka file descriptor n dicentang. Jika argumen file ke salah satu primary adalah salah satu dari / dev / stdin , / dev / stdout , atau / dev / stderr , file descriptor 0, 1, atau 2, masing-masing, dicentang.

file -a

Benar jika file ada.

-b file

Benar jika file ada dan merupakan file khusus blok.

file -c

Benar jika file ada dan merupakan file khusus karakter.

-d file

Benar jika file ada dan merupakan direktori.

-e file

Benar jika file ada.

-f file

Benar jika file ada dan merupakan file biasa.

-g file

Benar jika file ada dan set-group-id.

-h file

Benar jika file ada dan merupakan tautan simbolis.

-k file

Benar jika file ada dan bit `` sticky '' disetel.

-p file

Benar jika file ada dan merupakan pipa bernama (FIFO).

-r file

Benar jika file ada dan dapat dibaca.

-s file

Benar jika file ada dan memiliki ukuran lebih besar dari nol.

-t fd

Benar jika file descriptor fd terbuka dan merujuk ke terminal.

-u file

True jika file ada dan bit set-user-id-nya diatur.

-w file

Benar jika file ada dan dapat ditulis.

-x file

Benar jika file ada dan dapat dieksekusi.

-O file

Benar jika file ada dan dimiliki oleh id pengguna yang efektif.

-G file

Benar jika file ada dan dimiliki oleh id grup yang efektif.

-L file

Benar jika file ada dan merupakan tautan simbolis.

File- S

Benar jika file ada dan merupakan soket.

-N file

Benar jika file ada dan telah dimodifikasi sejak terakhir dibaca.

file1 - nt file2

Benar jika file1 lebih baru (sesuai tanggal modifikasi) daripada file2 , atau jika file1 ada dan file2 tidak.

file1 - ot file2

Benar jika file1 lebih tua dari file2 , atau jika file2 ada dan file1 tidak.

file1 -ef file2

Benar jika file1 dan file2 merujuk ke perangkat yang sama dan nomor inode.

-jadi nama pengguna

Benar jika memilih opsi shell option diaktifkan. Lihat daftar opsi di bawah deskripsi opsi -o ke set builtin di bawah ini.

string -z

Benar jika panjang string adalah nol.

-n string

tali

Benar jika panjang string tidak nol.

string1 == string2

Benar jika string-nya sama. = dapat digunakan sebagai pengganti == untuk kepatuhan POSIX yang ketat.

string1 ! = string2

Benar jika string tidak sama.

string1 < string2

Benar jika string1 macam sebelum string2 leksikografis di lokal saat ini.

string1 > string2

Benar jika string1 menyortir setelah string2 leksikografis di lokal saat ini.

arg1 OP arg2

OP adalah salah satu dari -eq , -ne , -t , -le , -gt , atau -ge . Operator biner aritmatika ini kembali benar jika arg1 sama dengan, tidak sama dengan, kurang dari, kurang dari atau sama dengan, lebih besar dari, atau lebih besar dari atau sama dengan arg2 , masing-masing. Arg1 dan arg2 mungkin bilangan bulat positif atau negatif.

PENGEMBANGAN PERDAGANGAN SEDERHANA

Ketika perintah sederhana dijalankan, shell melakukan ekspansi, tugas, dan pengalihan berikut, dari kiri ke kanan.

1

Kata-kata yang telah ditandai oleh parser sebagai tugas variabel (yang mendahului nama perintah) dan pengalihan disimpan untuk pemrosesan selanjutnya.

2

Kata-kata yang bukan merupakan tugas atau pengalihan variabel diperluas. Jika kata-kata tetap ada setelah perluasan, kata pertama diambil untuk menjadi nama perintah dan kata-kata yang tersisa adalah argumen.

3

Pengalihan dilakukan seperti yang dijelaskan di atas di bawah REDIRECTION .

4.

Teks setelah = di setiap tugas variabel mengalami ekspansi tilde, ekspansi parameter, substitusi perintah, ekspansi aritmatika, dan penghapusan kutipan sebelum ditugaskan ke variabel.

Jika tidak ada hasil nama perintah, tugas variabel mempengaruhi lingkungan shell saat ini. Jika tidak, variabel ditambahkan ke lingkungan dari perintah yang dieksekusi dan tidak mempengaruhi lingkungan shell saat ini. Jika ada tugas yang mencoba menetapkan nilai ke variabel readonly, kesalahan terjadi, dan perintah keluar dengan status bukan nol.

Jika tidak ada hasil nama perintah, pengalihan dilakukan, tetapi tidak mempengaruhi lingkungan shell saat ini. Kesalahan redirection menyebabkan perintah untuk keluar dengan status bukan nol.

Jika ada nama perintah yang tersisa setelah perluasan, eksekusi berlangsung seperti yang dijelaskan di bawah ini. Jika tidak, perintah akan keluar. Jika salah satu perluasan mengandung substitusi perintah, status keluar dari perintah adalah status keluar dari substitusi perintah terakhir yang dilakukan. Jika tidak ada penggantian perintah, perintah keluar dengan status nol.

PELAKSANAAN PEREKRUTAN

Setelah sebuah perintah dibagi menjadi kata-kata, jika menghasilkan perintah sederhana dan daftar argumen opsional, tindakan berikut akan diambil.

Jika nama perintah tidak berisi garis miring, cangkang akan berusaha untuk menemukannya. Jika ada fungsi shell dengan nama itu, fungsi itu dipanggil seperti yang dijelaskan di atas dalam FUNGSI . Jika nama tidak cocok dengan fungsi, shell mencari di daftar shell builtins. Jika ditemukan kecocokan, builtin itu dipanggil.

Jika nama tersebut bukan fungsi shell atau builtin, dan tidak mengandung garis miring, bash akan mencari setiap elemen PATH untuk direktori yang berisi file yang dapat dieksekusi dengan nama itu. Bash menggunakan tabel hash untuk mengingat path lengkap dari file yang dapat dieksekusi (lihat hash di bawah SHELL BUILTIN COMMANDS di bawah). Pencarian lengkap dari direktori di PATH dilakukan hanya jika perintah tidak ditemukan dalam tabel hash. Jika pencarian tidak berhasil, shell mencetak pesan kesalahan dan mengembalikan status keluar 127.

Jika pencarian berhasil, atau jika nama perintah mengandung satu atau lebih garis miring, shell mengeksekusi program bernama dalam lingkungan eksekusi yang terpisah. Argumen 0 diatur ke nama yang diberikan, dan argumen yang tersisa untuk perintah diatur ke argumen yang diberikan, jika ada.

Jika eksekusi ini gagal karena file tersebut tidak dalam format eksekusi, dan file tersebut bukan direktori, diasumsikan sebagai skrip shell , file yang berisi perintah shell. Subkulit ditimbulkan untuk mengeksekusinya. Subkulit ini memulai ulang sendiri, sehingga efeknya seolah-olah shell baru telah dipanggil untuk menangani skrip, dengan pengecualian bahwa lokasi perintah yang diingat oleh orang tua (lihat hash di bawah di bawah SHELL BUILTIN COMMANDS ) disimpan oleh anak.

Jika programnya adalah file yang dimulai dengan #! , sisa baris pertama menentukan penerjemah untuk program. Shell mengeksekusi interpreter yang ditentukan pada sistem operasi yang tidak menangani format eksekusi ini sendiri. Argumen ke interpreter terdiri dari satu argumen opsional berikut nama penerjemah pada baris pertama dari program, diikuti oleh nama program, diikuti oleh argumen perintah, jika ada.

LINGKUNGAN PERLU LINGKUNGAN

Shell memiliki lingkungan eksekusi , yang terdiri dari hal-hal berikut:

*

buka file yang diwarisi oleh shell saat permintaan, seperti yang diubah oleh pengalihan yang disediakan ke exec builtin

*

direktori kerja saat ini seperti yang ditetapkan oleh cd , pushd , atau popd , atau diwarisi oleh shell saat dipanggil

*

masker mode pembuatan file seperti yang ditetapkan oleh umask atau diwarisi dari induk shell

*

perangkap saat ini yang diatur oleh perangkap

*

parameter shell yang ditetapkan oleh tugas variabel atau dengan set atau diwarisi dari induk shell di lingkungan

*

fungsi shell didefinisikan selama eksekusi atau diwarisi dari induk shell di lingkungan

*

pilihan diaktifkan saat panggilan (baik secara default atau dengan argumen baris perintah) atau dengan set

*

opsi diaktifkan oleh shopt

*

alias shell didefinisikan dengan alias

*

berbagai ID proses, termasuk pekerjaan latar belakang, nilai $$ , dan nilai $ PPID

Ketika perintah sederhana selain fungsi built-in atau shell akan dieksekusi, itu dipanggil dalam lingkungan eksekusi terpisah yang terdiri dari yang berikut. Kecuali dinyatakan lain, nilai-nilainya diwarisi dari cangkang.

*

file terbuka shell, ditambah modifikasi dan penambahan yang ditentukan oleh redirections ke perintah

*

direktori kerja saat ini

*

topeng mode pembuatan file

*

variabel shell yang ditandai untuk diekspor, bersama dengan variabel yang diekspor untuk perintah, diteruskan di lingkungan

*

perangkap yang tertangkap oleh shell direset ke nilai yang diwarisi dari induk shell, dan perangkap yang diabaikan oleh shell diabaikan

Perintah yang dipanggil dalam lingkungan yang terpisah ini tidak dapat mempengaruhi lingkungan eksekusi shell.

Substitusi perintah dan perintah asinkron dijalankan dalam lingkungan subkulit yang merupakan duplikat dari lingkungan shell, kecuali bahwa jebakan yang ditangkap oleh shell direset ke nilai yang diwarisi shell dari induknya saat dipanggil. Perintah builtin yang dipanggil sebagai bagian dari pipeline juga dieksekusi dalam lingkungan subkulit. Perubahan yang dilakukan pada lingkungan subkulit tidak dapat mempengaruhi lingkungan eksekusi shell.

Jika perintah diikuti oleh & dan kontrol pekerjaan tidak aktif, input standar default untuk perintah adalah file kosong / dev / null . Jika tidak, perintah yang dipanggil mewarisi deskriptor file dari shell panggilan yang dimodifikasi oleh redirections.

LIHAT JUGA

Bash Reference Manual , Brian Fox dan Chet Ramey

Perpustakaan Gnu Readline , Brian Fox, dan Chet Ramey

Perpustakaan Sejarah Gnu , Brian Fox, dan Chet Ramey

Portable Operating System Interface (POSIX) Bagian 2: Shell and Utilities , IEEE

sh (1), ksh (1), csh (1)

emacs (1), vi (1)

readline (3)