NAMA
sh - command interpreter ( shell )
RINGKASAN
sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -kata [ target ... ]
DESKRIPSI
Sh adalah penerjemah perintah standar untuk sistem. Versi sh saat ini sedang dalam proses diubah agar sesuai dengan spesifikasi POSIX 1003.2 dan 1003.2a untuk shell. Versi ini memiliki banyak fitur yang membuatnya tampak mirip dalam beberapa hal dengan shell Korn, tetapi ini bukan klon shell Korn (lihat ksh (1)). Hanya fitur yang ditunjuk oleh POSIX ditambah beberapa ekstensi Berkeley, yang dimasukkan ke dalam shell ini. Kami mengharapkan kesesuaian POSIX pada saat 4.4 BSD dirilis. Halaman manual ini tidak dimaksudkan untuk menjadi tutorial atau spesifikasi lengkap dari shell.
Ikhtisar
Shell adalah perintah yang membaca garis dari salah satu file atau terminal, menafsirkannya, dan umumnya mengeksekusi perintah lain. Ini adalah program yang sedang berjalan ketika pengguna login ke sistem (meskipun pengguna dapat memilih shell yang berbeda dengan perintah chsh (1)). Shell mengimplementasikan bahasa yang memiliki aliran kontrol konstruksi, fasilitas makro yang menyediakan berbagai fitur selain penyimpanan data, bersama dengan built in history dan kemampuan pengeditan baris. Ini menggabungkan banyak fitur untuk membantu penggunaan interaktif dan memiliki keuntungan bahwa bahasa interpretatif adalah umum baik untuk penggunaan interaktif dan non-interaktif (skrip shell). Artinya, perintah dapat diketik langsung ke shell yang sedang berjalan atau dapat dimasukkan ke dalam file dan file dapat dieksekusi langsung oleh shell.
Doa
Jika tidak ada arg yang hadir dan jika input standar dari shell dihubungkan ke terminal (atau jika flag - i diatur), dan opsi - c tidak ada, shell dianggap shell interaktif. Sebuah shell interaktif umumnya meminta sebelum setiap perintah dan menangani kesalahan pemrograman dan perintah secara berbeda (seperti yang dijelaskan di bawah). Ketika pertama kali memulai, shell memeriksa argumen 0, dan jika diawali dengan tanda `- 'shell juga dianggap sebagai shell login. Ini biasanya dilakukan secara otomatis oleh sistem ketika pengguna pertama kali masuk. Sebuah shell login pertama kali membaca perintah dari file / etc / profile dan .profile jika mereka ada. Jika variabel lingkungan ENV diatur pada entri ke shell, atau diatur dalam .profile dari shell login, shell selanjutnya membaca perintah dari file yang bernama dalam ENV Oleh karena itu, pengguna harus menempatkan perintah yang akan dieksekusi hanya pada waktu masuk dalam file .profile, dan perintah yang dijalankan untuk setiap shell di dalam file ENV . Untuk mengatur variabel ENV ke beberapa file, tempatkan baris berikut di .profile direktori home Anda
ENV = $ HOME / .shinit; ekspor ENV
mengganti dengan `` .shinit '' nama file apa pun yang Anda inginkan. Karena file ENV dibaca untuk setiap permintaan shell, termasuk skrip shell dan shell non-interaktif, paradigma berikut ini berguna untuk membatasi perintah dalam file ENV ke invokasi interaktif. Tempatkan perintah dalam `` kasus '' dan `` esac '' di bawah (perintah ini dijelaskan nanti):
case $ - in * i *)
Perintah # untuk penggunaan interaktif saja
...
esac
Jika argumen baris perintah selain opsi telah ditentukan, maka shell memperlakukan argumen pertama sebagai nama file yang dapat digunakan untuk membaca perintah (skrip shell), dan argumen yang tersisa ditetapkan sebagai parameter posisi shell ($ 1 , $ 2, dll.) Jika tidak, shell membaca perintah dari input standarnya.
Pengolahan Daftar Argumen
Semua opsi huruf tunggal memiliki nama yang sesuai yang dapat digunakan sebagai argumen ke opsi - o . Nama set - o disediakan di sebelah opsi huruf tunggal dalam uraian di bawah ini. Menentukan tanda hubung `` - '' akan mengaktifkan opsi, saat menggunakan plus `` + '' menonaktifkan opsi. Opsi berikut dapat disetel dari baris perintah atau dengan himpunan (1) bawaan (dijelaskan kemudian).
-sebuah allexport
Ekspor semua variabel yang ditetapkan ke. (TIDAK DITANGGUHKAN untuk 4.4alpha)
-c
Baca perintah dari baris perintah. Tidak ada perintah yang akan dibaca dari input standar.
-C noclobber
Jangan menimpa file yang ada dengan ``> '' (UNIMPLEMENTED for 4.4alpha)
-e errexit
Jika tidak interaktif, segera keluar jika ada perintah yang belum diuji gagal. Status keluar dari suatu perintah dianggap secara eksplisit diuji jika perintah digunakan untuk mengontrol apakah elif ketika atau sampai atau jika perintah adalah operan kiri dari operator `` && '' atau `` || ''.
-f noglob
Nonaktifkan perluasan jalur nama .
-n noexec
Jika tidak interaktif, baca perintah tetapi jangan jalankan. Ini berguna untuk memeriksa sintaks skrip shell.
-u nounset
Tulis pesan ke kesalahan standar ketika mencoba untuk memperluas variabel yang tidak disetel, dan jika shell tidak interaktif, segera keluar. (TIDAK DITANGGUHKAN untuk 4.4alpha)
-v verbose
Shell menulis masukannya ke standard error saat dibaca. Berguna untuk debugging.
-x xtrace
Tuliskan setiap perintah ke kesalahan standar (didahului oleh `+ 'sebelum dijalankan. Berguna untuk debugging.
-q quietprofile
Jika opsi - v atau - x telah ditetapkan, jangan menerapkannya ketika membaca file inisialisasi, ini adalah / etc / profile. Profil dan file yang ditentukan oleh variabel lingkungan ENV .
-Aku mengabaikannya
Abaikan EOF dari masukan saat interaktif.
-i interaktif
Paksa shell untuk berperilaku interaktif.
-m monitor
Aktifkan kontrol pekerjaan (diatur secara otomatis saat interaktif).
-s stdin
Baca perintah dari input standar (atur secara otomatis jika tidak ada argumen file). Pilihan ini tidak berpengaruh ketika diatur setelah shell sudah mulai berjalan (yaitu dengan set (1)).
-V vi
Aktifkan editor baris perintah vi (1) bawaan (nonaktifkan - E jika sudah diatur).
-E emacs
Aktifkan emac built-in (1) editor baris perintah (menonaktifkan - V jika sudah diatur).
-b beri tahu
Aktifkan pemberitahuan asynchronous penyelesaian pekerjaan latar belakang. (TIDAK DITANGGUHKAN untuk 4.4alpha)
Struktur Leksikal
Shell membaca masukan dalam bentuk garis dari sebuah file dan memecahnya menjadi kata-kata di whitespace (kosong dan tab), dan pada urutan tertentu dari karakter yang khusus untuk shell yang disebut `` operator '' Ada dua jenis operator: operator kontrol dan operator redirection (maknanya dibahas kemudian). Berikut ini adalah daftar operator:
"Operator kontrol:"
& && (); ;; | ||
"Operator Redirection:"
<>> | << >> <&> & << - <>
Mengutip
Mengutip digunakan untuk menghapus arti khusus dari karakter atau kata-kata tertentu ke shell, seperti operator, spasi, atau kata kunci. Ada tiga jenis kutipan: kutipan tunggal yang cocok, kutipan ganda yang cocok, dan backslash.
Backslash
Backslash mempertahankan makna literal dari karakter berikut, dengan pengecualian Aq newline. Backslash yang mendahului garis baru Aq diperlakukan sebagai garis lanjutan.
Kutipan Tunggal
Melampirkan karakter dalam tanda kutip tunggal mempertahankan arti harfiah dari semua karakter (kecuali tanda kutip tunggal, sehingga tidak mungkin untuk menempatkan tanda kutip tunggal dalam string yang dikutip tunggal).
Kutipan Ganda
Melampirkan karakter dalam tanda kutip ganda mempertahankan arti harfiah dari semua karakter kecuali dolar ($) backquote (`) dan backslash (\) Backslash di dalam tanda kutip ganda secara historis aneh, dan berfungsi untuk mengutip hanya karakter berikut:
$ `\
Kalau tidak, itu tetap literal.
Kata-kata yang Dicadangkan
Kata-kata yang dicadangkan adalah kata-kata yang memiliki arti khusus untuk shell dan dikenali pada awal baris dan setelah operator kontrol. Berikut adalah kata-kata yang dilindungi undang-undang:
! Ta elif Ta fi Ta sementara Ta case
lain Ta untuk Ta lalu Ta {Ta}
lakukan Ta dilakukan Ta sampai Ta jika Ta esac
Makna mereka dibahas nanti.
Alias
Alias adalah nama dan nilai terkait yang disetel menggunakan alias (1) perintah bawaan. Setiap kali kata cadangan dapat terjadi (lihat di atas), dan setelah memeriksa kata-kata yang dipesan, shell memeriksa kata untuk melihat apakah kata itu cocok dengan alias. Jika ya, itu menggantikannya dalam aliran input dengan nilainya. Misalnya, jika ada alias yang disebut `` lf '' dengan nilai `` ls -F '' maka inputnya:
Jika foobar
akan menjadi
ls -F foobar
Alias menyediakan cara mudah bagi pengguna yang naif untuk membuat shorthands untuk perintah tanpa harus belajar cara membuat fungsi dengan argumen. Mereka juga dapat digunakan untuk membuat kode tidak jelas secara leksikal. Penggunaan ini tidak disarankan.
Perintah
Shell menafsirkan kata-kata yang dibaca sesuai dengan bahasa, spesifikasi yang berada di luar lingkup halaman manual ini (lihat BNF dalam dokumen POSIX 1003.2). Pada dasarnya meskipun, garis dibaca dan jika kata pertama dari garis (atau setelah operator kontrol) bukan kata yang dilindungi undang-undang, maka shell telah mengenali perintah sederhana. Jika tidak, perintah kompleks atau beberapa konstruksi khusus lainnya mungkin telah diakui.
Perintah Sederhana
Jika perintah sederhana telah dikenali, shell melakukan tindakan berikut:
- Memimpin kata-kata dari bentuk `` nama = nilai '' dilucuti dan ditetapkan ke lingkungan dari perintah sederhana. Operator redireksi dan argumennya (seperti yang dijelaskan di bawah ini) dilucuti dan disimpan untuk diproses.
- Kata-kata yang tersisa diperluas seperti yang dijelaskan di bagian yang disebut `` Ekspansi '' dan kata pertama yang tersisa dianggap sebagai nama perintah dan perintah berada. Kata-kata yang tersisa dianggap argumen dari perintah. Jika tidak ada nama perintah yang dihasilkan, maka `` nama = nilai '' tugas variabel yang dikenal dalam butir 1 mempengaruhi shell saat ini.
- Pengalihan dilakukan seperti yang dijelaskan di bagian selanjutnya.
Pengalihan
Pengalihan digunakan untuk mengubah tempat perintah membaca masukannya atau mengirim outputnya. Secara umum, pengalihan membuka, menutup, atau menggandakan referensi yang ada ke file. Format keseluruhan yang digunakan untuk pengalihan adalah:
[n] redir-op file
dimana redir-op adalah salah satu operator redirection yang disebutkan sebelumnya. Berikut ini adalah daftar kemungkinan pengalihan. Bq n adalah nomor opsional, seperti pada `3 '(bukan` Bq 3' yang mengacu pada deskriptor file.
[n]> file
Alihkan output standar (atau n) ke file.
[n]> | mengajukan
Sama, tetapi mengesampingkan opsi - C.
[n] >> file
Tambahkan output standar (atau n) ke file.
[n]
Mengalihkan input standar (atau n) dari file.
[n1] <& n2
Gandakan input standar (atau n1) dari file descriptor n2.
[n] <& -
Tutup input standar (atau n).
[n1]> & n2
Gandakan keluaran standar (atau n1) dari n2.
[n]> & -
Tutup keluaran standar (atau n).
[n] <> file
Buka file untuk membaca dan menulis pada input standar (atau n).
Pengalihan berikut ini sering disebut `` di sini-dokumen ''
[n] << pembatas
di sini-dokumen-teks ...
pembatas
Semua teks pada baris berturut-turut hingga pembatas disimpan dan dibuat tersedia untuk perintah pada input standar, atau pendeskripsi file dan jika ditentukan. Jika pemisah seperti yang ditentukan pada baris awal dikutip, maka di sini-dokumen-teks diperlakukan secara harfiah, jika teks tersebut dikenakan ekspansi parameter, substitusi perintah, dan ekspansi aritmatika (seperti yang dijelaskan di bagian pada `` Ekspansi) ' 'Jika operator adalah `` << -' 'bukannya `` <<' 'maka tab-tab utama di sini-dokumen-teks dilucuti.
Pencarian dan Eksekusi
Ada tiga jenis perintah: fungsi shell, perintah builtin, dan program normal - dan perintah tersebut dicari (berdasarkan nama) dalam urutan itu. Mereka masing-masing dieksekusi dengan cara yang berbeda.
Ketika fungsi shell dijalankan, semua parameter posisi shell (kecuali $ 0, yang tetap tidak berubah) diatur ke argumen fungsi shell. Variabel yang secara eksplisit ditempatkan di lingkungan perintah (dengan menempatkan tugas kepada mereka sebelum nama fungsi) dibuat lokal ke fungsi dan diatur ke nilai-nilai yang diberikan. Kemudian perintah yang diberikan dalam definisi fungsi dijalankan. Parameter posisi dikembalikan ke nilai asli mereka ketika perintah selesai. Ini semua terjadi dalam shell saat ini.
Shell builtins dieksekusi secara internal ke shell, tanpa memunculkan proses baru.
Jika tidak, jika nama perintah tidak sesuai dengan fungsi atau builtin, perintah dicari sebagai program normal dalam sistem berkas (seperti yang dijelaskan di bagian berikutnya). Ketika program normal dijalankan, shell menjalankan program, meneruskan argumen dan lingkungan ke program. Jika program ini bukan file eksekusi normal (misalnya, jika tidak dimulai dengan "angka ajaib" yang representasi ASCII-nya adalah "#!", Maka jalankan (2) mengembalikan Er ENOEXEC lalu) shell akan menafsirkan program dalam subkulit. Shell anak akan reinitialize sendiri dalam kasus ini, sehingga efeknya akan seolah-olah shell baru telah dipanggil untuk menangani skrip shell ad-hoc, kecuali bahwa lokasi perintah hash terletak di shell induk akan diingat oleh anak.
Perhatikan bahwa versi sebelumnya dari dokumen ini dan kode sumber itu sendiri menyesatkan dan secara sporadis merujuk ke skrip shell tanpa nomor ajaib sebagai "prosedur shell".
Pencarian Jalur
Ketika menemukan sebuah perintah, shell pertama terlihat untuk melihat apakah ia memiliki fungsi shell dengan nama itu. Kemudian ia mencari perintah bawaan dengan nama itu. Jika perintah builtin tidak ditemukan, salah satu dari dua hal terjadi:
- Nama perintah yang berisi garis miring hanya dieksekusi tanpa melakukan pencarian apa pun.
- Shell mencari setiap entri dalam PATH sebagai ganti perintah. Nilai variabel PATH harus merupakan serangkaian entri yang dipisahkan oleh titik dua. Setiap entri terdiri dari nama direktori. Direktori saat ini dapat diindikasikan secara implisit oleh nama direktori kosong, atau secara eksplisit oleh satu periode.
Status Keluar Komando
Setiap perintah memiliki status keluar yang dapat mempengaruhi perilaku perintah shell lainnya. Paradigmanya adalah bahwa sebuah perintah keluar dengan nol untuk normal atau sukses, dan bukan nol untuk kegagalan, kesalahan, atau indikasi yang salah. Halaman manual untuk setiap perintah harus menunjukkan berbagai kode keluar dan apa artinya. Selain itu, perintah builtin mengembalikan kode keluar, seperti halnya fungsi shell yang dieksekusi.
Perintah Kompleks
Perintah kompleks adalah kombinasi dari perintah sederhana dengan operator kontrol atau kata-kata yang dilindungi undang-undang, bersama-sama membuat perintah kompleks yang lebih besar. Secara umum, perintah adalah salah satu dari yang berikut:
- perintah sederhana
- saluran pipa
- daftar atau daftar gabungan
- komando gabungan
- definisi fungsi
Kecuali dinyatakan lain, status keluar dari perintah adalah perintah sederhana terakhir yang dijalankan oleh perintah.
Saluran pipa
Pipeline adalah urutan satu atau lebih perintah yang dipisahkan oleh operator kontrol |. Output standar dari semua tetapi perintah terakhir terhubung ke input standar dari perintah selanjutnya. Output standar dari perintah terakhir diwarisi dari shell, seperti biasa.
Format untuk jalur pipa adalah:
[!] command1 [| command2 ...]
Output standar dari command1 terhubung ke input standar dari command2. Input standar, output standar, atau kedua perintah dianggap ditugaskan oleh pipa sebelum pengarahan ulang yang ditentukan oleh operator redirection yang merupakan bagian dari perintah.
Jika pipa tidak di latar belakang (dibahas nanti), shell menunggu semua perintah selesai.
Jika kata pendiam! tidak mendahului saluran pipa, status keluar adalah status keluar dari perintah terakhir yang ditentukan dalam pipa. Jika tidak, status keluar adalah logis TIDAK dari status keluar dari perintah terakhir. Artinya, jika perintah terakhir mengembalikan nol, status keluar adalah 1; jika perintah terakhir mengembalikan lebih besar dari nol, status exit adalah nol.
Karena penetapan pipa input standar atau output standar atau keduanya terjadi sebelum redirection, itu dapat dimodifikasi oleh redirection. Sebagai contoh:
$ command1 2> & 1 | perintah2
mengirim output standar dan standard error dari perintah1 ke input standar dari command2.
SEBUAH ; atau terminator
Perhatikan bahwa tidak seperti beberapa shell lainnya, setiap proses dalam pipa adalah anak dari shell memohon (kecuali shell builtin, dalam hal ini mengeksekusi dalam shell saat ini - tetapi efeknya terhadap lingkungan dihapus).
Perintah Latar Belakang -
Jika perintah diakhiri oleh operator kontrol ampersand (&), shell mengeksekusi perintah secara asinkron - yaitu, shell tidak menunggu perintah selesai sebelum menjalankan perintah berikutnya.
Format untuk menjalankan perintah di latar belakang adalah:
command1 & [command2 & ...]
Jika shell tidak interaktif, input standar dari perintah asynchronous diatur ke / dev / null
Daftar - Umumnya Berbicara
Daftar adalah urutan nol atau lebih perintah yang dipisahkan oleh baris baru, titik koma, atau ampersand, dan secara opsional diakhiri oleh salah satu dari tiga karakter ini. Perintah-perintah dalam daftar dijalankan dalam urutan yang ditulis. Jika perintah diikuti oleh ampersand, shell memulai perintah dan segera melanjutkan ke perintah berikutnya; jika tidak menunggu perintah untuk mengakhiri sebelum melanjutkan ke yang berikutnya.
Operator Daftar Sirkuit Pendek
`` && '' dan `` || '' adalah operator daftar AND-OR. `` && '' mengeksekusi perintah pertama, dan kemudian mengeksekusi perintah kedua jika status keluar dari perintah pertama adalah nol. `` || '' serupa, tetapi mengeksekusi perintah kedua jika status keluar dari perintah pertama adalah nol. `` && '' dan `` || '' keduanya memiliki prioritas yang sama.
Flow-Control Constructs - jika, sementara, untuk, case
Sintaks dari perintah if adalah
jika daftar
kemudian daftar
[daftar elif
kemudian daftar] ...
[daftar lain]
fi
Sintaks dari perintah sementara adalah
saat daftar
lakukan daftar
selesai
Kedua daftar dieksekusi berulang kali ketika status keluar dari daftar pertama adalah nol. Perintah sampai mirip, tetapi memiliki kata sampai di tempat sementara, yang menyebabkannya mengulangi sampai status keluar dari daftar pertama adalah nol.
Perintah sintaks untuk perintah adalah
untuk variabel dalam kata ...
lakukan daftar
selesai
Kata-kata diperluas, dan kemudian daftar dijalankan berulang-ulang dengan variabel yang ditetapkan untuk setiap kata secara bergantian. lakukan dan lakukan dapat diganti dengan `` {'' dan ``} ''
Sintaks dari perintah break dan continue adalah
break [num]
lanjutkan [num]
Break mengakhiri num terdalam untuk atau sementara loop. Terus lanjutkan dengan iterasi berikutnya dari loop terdalam. Ini diimplementasikan sebagai perintah builtin.
Sintaks dari perintah case adalah
kata kata dalam
pola) daftar ;;
...
esac
Pola ini sebenarnya bisa menjadi satu atau lebih pola (lihat Pola Shell yang dijelaskan nanti), dipisahkan oleh karakter `` ''.
Mengelompokkan Perintah Bersama
Perintah dapat dikelompokkan dengan menulis baik
(daftar)
atau
{daftar;
Yang pertama dari ini mengeksekusi perintah dalam subkulit. Perintah-perintah builtin dikelompokkan ke dalam (daftar) tidak akan mempengaruhi shell saat ini. Bentuk kedua tidak membuat shell lain jadi sedikit lebih efisien. Mengelompokkan perintah bersama-sama dengan cara ini memungkinkan Anda untuk mengarahkan output mereka seolah-olah mereka satu program:
{printf hello; printf world \ n ";}> ucapan
Fungsi
Sintaks dari definisi fungsi
nama () perintah
Definisi fungsi adalah pernyataan yang dapat dieksekusi; ketika dieksekusi itu menginstal nama fungsi bernama dan mengembalikan status keluar dari nol. Perintah biasanya adalah daftar yang dilampirkan antara `` {'' dan ``} ''
Variabel dapat dideklarasikan menjadi lokal ke fungsi dengan menggunakan perintah lokal. Ini seharusnya muncul sebagai pernyataan pertama dari suatu fungsi, dan sintaksnya
lokal [variabel | -] ...
Lokal diimplementasikan sebagai perintah bawaan.
Ketika sebuah variabel dibuat lokal, ia mewarisi nilai awal dan bendera yang diekspor dan hanya bisa dibaca dari variabel dengan nama yang sama dalam lingkup sekitarnya, jika ada. Jika tidak, variabel awalnya tidak disetel. Shell menggunakan pencakupan dinamis, sehingga jika Anda membuat variabel x lokal ke fungsi f, yang kemudian memanggil fungsi g, referensi ke variabel x dibuat di dalam g akan merujuk ke variabel x yang dinyatakan di dalam f, bukan ke variabel global bernama x .
Satu-satunya parameter khusus daripada yang bisa dibuat lokal adalah `` - '' Membuat `` - '' opsi shell lokal yang diubah melalui perintah yang ditetapkan di dalam fungsi untuk dikembalikan ke nilai aslinya ketika fungsi kembali.
Sintaks perintah kembalinya adalah
kembali [exitstatus
Ini mengakhiri fungsi yang sedang dieksekusi. Pengembalian diimplementasikan sebagai perintah bawaan.
Variabel dan Parameter
Shell mempertahankan satu set parameter. Parameter yang dilambangkan dengan nama disebut variabel. Ketika memulai, shell mengubah semua variabel lingkungan menjadi variabel shell. Variabel baru dapat diatur menggunakan formulir
nama = nilai
Variabel yang ditetapkan oleh pengguna harus memiliki nama yang hanya terdiri dari abjad, angka, dan garis bawah - yang pertama tidak boleh numerik. Parameter juga dapat dilambangkan dengan angka atau karakter khusus seperti yang dijelaskan di bawah ini.
Parameter Posisional
Parameter posisional adalah parameter yang dilambangkan dengan angka (n> 0). Shell mengatur ini awalnya ke nilai-nilai argumen baris perintahnya yang mengikuti nama skrip shell. Himpunan (1) bawaan juga dapat digunakan untuk mengatur atau mengatur ulang.
Parameter Khusus
Parameter khusus adalah parameter yang dilambangkan oleh salah satu karakter khusus berikut. Nilai parameter tercantum di sebelah karakternya.
*
Memperluas ke parameter posisi, mulai dari satu. Ketika ekspansi terjadi dalam string yang dikutip ganda itu memperluas ke satu bidang dengan nilai setiap parameter yang dipisahkan oleh karakter pertama dari variabel IFS , atau oleh
@
Memperluas ke parameter posisi, mulai dari satu. Ketika ekspansi terjadi dalam tanda kutip ganda, setiap parameter posisi diperluas sebagai argumen terpisah. Jika tidak ada parameter posisi, perluasan @ menghasilkan nol argumen, bahkan ketika @ adalah kutipan ganda. Apa artinya ini pada dasarnya, misalnya, adalah jika $ 1 adalah `` abc '' dan $ 2 adalah `` def ghi '' maka Qq $ @ memperluas ke dua argumen:
abc def ghi
#
Memperluas ke jumlah parameter posisi.
?
Memperluas ke status keluar dari saluran pipa terbaru.
- (Tanda hubung.)
Memperluas ke bendera opsi saat ini (nama-nama opsi satu huruf digabung menjadi string) sebagaimana ditentukan pada permintaan, oleh perintah setin builtin, atau secara implisit oleh shell.
$
Memperluas ke ID proses dari shell yang dipanggil. Subkunci mempertahankan nilai $ yang sama sebagai induknya.
!
Memperluas ke ID proses dari perintah latar belakang terbaru yang dijalankan dari shell saat ini. Untuk jalur pipa, ID proses adalah perintah terakhir dalam pipa.
0 (Nol.)
Perluas nama skrip shell atau shell.
Ekspansi Word
Ayat ini menjelaskan berbagai ekspansi yang dilakukan pada kata-kata. Tidak semua ekspansi dilakukan pada setiap kata, seperti yang dijelaskan kemudian.
Ekspansi tilde, perluasan parameter, penggantian perintah, perluasan aritmatika, dan penghapusan kutipan yang terjadi dalam satu kata meluas ke satu bidang. Hanya perluasan bidang atau perluasan jalur yang dapat membuat beberapa bidang dari satu kata. Pengecualian tunggal untuk aturan ini adalah perluasan parameter khusus @ dalam tanda kutip ganda, seperti yang dijelaskan di atas.
Urutan perluasan kata adalah:
- Ekspansi Tilde, Ekspansi Parameter, Pergantian Perintah, Ekspansi Aritmetika (semua ini terjadi pada saat yang sama).
- Pemisahan Lapangan dilakukan pada bidang yang dihasilkan oleh langkah (1) kecuali variabel IFS nol.
- Ekspansi Pathname (kecuali set - f berlaku).
- Penghapusan Kutipan.
Karakter $ digunakan untuk memperkenalkan ekspansi parameter, substitusi perintah, atau evaluasi aritmatika.
Tilde Expansion (mengganti direktori home pengguna)
Kata yang diawali dengan karakter tilde tanpa tanda (~) dikenakan ekspansi tilde. Semua karakter hingga slash (/) atau akhir kata diperlakukan sebagai nama pengguna dan diganti dengan direktori home pengguna. Jika nama pengguna hilang (seperti di ~ / foobar), tilde diganti dengan nilai variabel HOME (direktori home pengguna saat ini).
Ekspansi Parameter
Format untuk ekspansi parameter adalah sebagai berikut:
di mana ekspresi terdiri dari semua karakter sampai pencocokan ``} '' Any ``} '' lolos oleh backslash atau dalam string yang dikutip, dan karakter dalam ekspansi aritmatika tertanam, penggantian perintah, dan ekspansi variabel, tidak diperiksa dalam menentukan cocok dengan ``} ''
Bentuk paling sederhana untuk ekspansi parameter adalah:
Nilai, jika ada, parameter diganti.
Nama atau simbol parameter dapat diapit dalam tanda kurung, yang bersifat opsional kecuali untuk parameter posisi dengan lebih dari satu digit atau ketika parameter diikuti oleh karakter yang dapat ditafsirkan sebagai bagian dari nama. Jika ekspansi parameter terjadi di dalam tanda kutip ganda:
- Perluasan nama jalan tidak dilakukan pada hasil ekspansi.
- Pemisahan bidang tidak dilakukan pada hasil perluasan, dengan pengecualian @.
Selain itu, perluasan parameter dapat dimodifikasi dengan menggunakan salah satu format berikut.
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. Dalam semua kasus, nilai akhir dari parameter diganti. Hanya variabel, bukan parameter posisi atau parameter khusus, yang dapat ditetapkan dengan cara ini.
Tunjukkan Kesalahan jika Null atau Tidak Disetel. Jika parameter tidak disetel atau null, perluasan kata (atau pesan yang menunjukkan itu tidak disetel jika kata dihilangkan) ditulis ke kesalahan standar dan shell keluar dengan status keluar non-nol. Jika tidak, nilai parameter diganti. Cangkang interaktif tidak perlu keluar.
Gunakan Nilai Alternatif. Jika parameter tidak diset atau null, null diganti; jika tidak, perluasan kata diganti.
Dalam parameter ekspansi yang ditunjukkan sebelumnya, penggunaan titik dua dalam format menghasilkan tes untuk parameter yang tidak diset atau null; penghilangan hasil usus besar dalam tes untuk parameter yang hanya tidak disetel.
Panjang String. Panjang karakter dari nilai parameter.
Empat varietas perluasan parameter berikut ini menyediakan pemrosesan substring. Dalam setiap kasus, notasi pencocokan pola (lihat Pola Kerangka), daripada notasi ekspresi reguler, digunakan untuk mengevaluasi pola. Jika parameter * atau @, hasil dari ekspansi tidak ditentukan. Memasukkan string ekspansi parameter penuh dalam tanda kutip ganda tidak menyebabkan empat jenis pola karakter yang akan dikutip, sedangkan mengutip karakter dalam kurung memiliki efek ini.
Hapus Pola Suffix Terkecil. Kata itu diperluas untuk menghasilkan pola. Perluasan parameter kemudian menghasilkan parameter, dengan bagian terkecil dari akhiran yang dicocokkan dengan pola yang dihapus.
Hapus Suffix Pola Terbesar. Kata itu diperluas untuk menghasilkan pola. Perluasan parameter kemudian menghasilkan parameter, dengan bagian terbesar dari akhiran yang dicocokkan dengan pola yang dihapus.
Hapus Pola Prefix Terkecil. Kata itu diperluas untuk menghasilkan pola. Perluasan parameter kemudian menghasilkan parameter, dengan bagian terkecil dari awalan yang dicocokkan dengan pola yang dihapus.
Hapus Pola Prefiks Terbesar. Kata itu diperluas untuk menghasilkan pola. Perluasan parameter kemudian menghasilkan parameter, dengan bagian terbesar dari awalan yang cocok dengan pola yang dihapus.
Pergantian Komando
Substitusi perintah memungkinkan keluaran dari sebuah perintah untuk menggantikan tempat dari nama perintah itu sendiri. Substitusi komando terjadi ketika perintah ditutup sebagai berikut:
$ (perintah)
atau Po `` backquoted '' versi Pc:
`perintah`
Shell memperluas substitusi perintah dengan mengeksekusi perintah dalam lingkungan subkulit dan mengganti substitusi perintah dengan output standar dari perintah, menghapus urutan satu atau lebih
Ekspansi Aritmatika
Ekspansi aritmatika menyediakan mekanisme untuk mengevaluasi ekspresi aritmatika dan mengganti nilainya. Format untuk ekspansi aritmatika adalah sebagai berikut:
$ ((ekspresi))
Ekspresi diperlakukan seolah-olah itu dalam tanda kutip ganda, kecuali bahwa kutipan ganda di dalam ekspresi tidak diperlakukan secara khusus. Shell memperluas semua token dalam ekspresi untuk ekspansi parameter, penggantian perintah, dan penghapusan kutipan.
Selanjutnya, shell memperlakukan ini sebagai ekspresi aritmatika dan mengganti nilai dari ekspresi.
Pemisahan Ruang Putih (Pemisahan Lapangan)
Setelah perluasan parameter, substitusi perintah, dan ekspansi aritmatika, shell memindai hasil ekspansi dan substitusi yang tidak terjadi dalam tanda kutip ganda untuk pembagian bidang dan beberapa bidang dapat dihasilkan.
Shell memperlakukan setiap karakter IFS sebagai pemisah dan menggunakan pembatas untuk membagi hasil ekspansi parameter dan substitusi perintah ke dalam bidang.
Ekspansi Pathname (Nama File Generasi)
Kecuali flag - f disetel, pembuatan nama file dilakukan setelah pemisahan kata selesai. Setiap kata dipandang sebagai serangkaian pola, dipisahkan oleh garis miring. Proses ekspansi menggantikan kata dengan nama semua file yang ada yang namanya dapat dibentuk dengan mengganti setiap pola dengan string yang cocok dengan pola yang ditentukan. Ada dua batasan pada ini: pertama, sebuah pola tidak dapat cocok dengan string yang berisi garis miring, dan kedua, sebuah pola tidak dapat cocok dengan string yang dimulai dengan periode kecuali karakter pertama dari pola tersebut adalah periode. Bagian selanjutnya menjelaskan pola yang digunakan untuk kedua Ekspansi Pathname dan perintah case (1).
Pola Kerang
Pola terdiri dari karakter normal, yang cocok dengan diri mereka sendiri, dan meta-karakter. Meta-karakternya adalah ``! '' `` * '' ``? '' Dan `` ['' Karakter-karakter ini kehilangan arti khususnya jika mereka dikutip. Ketika perintah atau substitusi variabel dilakukan dan tanda dolar atau tanda kutip belakang tidak dikutip ganda, nilai variabel atau output perintah dipindai untuk karakter-karakter ini dan mereka diubah menjadi meta-karakter.
Tanda bintang (`` * '') cocok dengan string karakter apa pun. Tanda tanya cocok dengan setiap karakter tunggal. Siku kiri (`` ['') memperkenalkan kelas karakter. Akhir kelas karakter ditunjukkan oleh (``] '') jika ``] '' hilang maka `` ['' cocok dengan `` ['' daripada memperkenalkan kelas karakter. Kelas karakter cocok dengan salah satu karakter di antara tanda kurung siku. Berbagai karakter dapat ditentukan menggunakan tanda minus. Kelas karakter dapat dilengkapi dengan membuat tanda seru karakter pertama dari kelas karakter.
Untuk memasukkan ``] '' dalam kelas karakter, buatlah karakter pertama yang terdaftar (setelah ``! '' Jika ada). Untuk menyertakan tanda minus, buatlah karakter pertama atau terakhir yang terdaftar
Builtins
Bagian ini mencantumkan perintah-perintah bawaan yang dibuat karena mereka perlu melakukan beberapa operasi yang tidak dapat dilakukan oleh proses terpisah. Selain ini, ada beberapa perintah lain yang mungkin dibangun untuk efisiensi (misalnya echo 1).
:
Perintah null yang mengembalikan nilai keluar 0 (true).
. mengajukan
Perintah-perintah dalam file yang ditentukan dibaca dan dieksekusi oleh shell.
alias [ nama [ = string ... ]]
Jika nama = string ditentukan, shell mendefinisikan nama alias dengan string nilai. Jika hanya nama yang ditentukan, nilai dari nama alias dicetak. Tanpa argumen, alias builtin mencetak nama dan nilai dari semua alias yang didefinisikan (lihat unalias)
bg [ pekerjaan] ...
Lanjutkan pekerjaan yang ditentukan (atau pekerjaan saat ini jika tidak ada pekerjaan yang diberikan) di latar belakang.
perintah komando arg ...
Jalankan perintah bawaan yang ditentukan. (Ini berguna ketika Anda memiliki fungsi shell dengan nama yang sama sebagai perintah builtin.)
cd [ direktori ]
Beralih ke direktori yang ditentukan (default $ HOME) Jika entri untuk CDPATH muncul di lingkungan perintah cd atau variabel shell CDPATH diatur dan nama direktori tidak dimulai dengan garis miring, maka direktori yang tercantum dalam CDPATH akan dicari untuk direktori yang ditentukan. Format CDPATH sama dengan PATH Dalam shell interaktif, perintah cd akan mencetak nama direktori yang benar-benar beralih ke jika ini berbeda dari nama yang diberikan pengguna. Ini mungkin berbeda karena mekanisme CDPATH digunakan atau karena tautan simbolis disilangkan.
string eval ...
Gabungkan semua argumen dengan spasi. Kemudian kembali parse dan jalankan perintah.
exec [ perintah arg ... ]
Kecuali perintah dihilangkan, proses shell diganti dengan program yang ditentukan (yang harus merupakan program nyata, bukan shell builtin atau fungsi). Pengalihan apa pun pada perintah exec ditandai sebagai permanen, sehingga mereka tidak dibatalkan saat perintah exec selesai.
keluar [ exitstatus ]
Hentikan proses shell. Jika exitstatus diberikan itu digunakan sebagai status keluar dari shell; jika tidak, status keluar dari perintah sebelumnya digunakan.
nama ekspor ...
ekspor -p
Nama yang ditentukan diekspor sehingga mereka akan muncul di lingkungan perintah berikutnya. Satu-satunya cara untuk un-ekspor variabel adalah untuk membatalkannya. Shell memungkinkan nilai variabel yang akan ditetapkan pada saat yang sama diekspor dengan menulis
nama ekspor = nilai
Tanpa argumen, perintah ekspor mencantumkan nama semua variabel yang diekspor. Dengan opsi - p ditentukan, output akan diformat sesuai untuk penggunaan non-interaktif.
fc [- editor ] [ pertama [ terakhir ]]
fc -l [- nr ] [ pertama [ terakhir ]]
fc -s [ old = new ] [ pertama ]
Fc builtin mencantumkan, atau mengedit dan menjalankan ulang, perintah yang sebelumnya dimasukkan ke shell interaktif.
-e editor
Gunakan editor yang bernama oleh editor untuk mengedit perintah. String editor adalah nama perintah, tunduk pada pencarian melalui variabel PATH . Nilai dalam variabel FCEDIT digunakan sebagai default ketika - e tidak ditentukan. Jika FCEDIT tidak valid atau tidak disetel, nilai variabel EDITOR digunakan. Jika EDITOR nol atau tidak disetel, ed (1) digunakan sebagai editor.
-l (ell)
Buat daftar perintah daripada menggunakan editor pada mereka. Perintah-perintah ditulis dalam urutan yang ditunjukkan oleh operan pertama dan terakhir, yang dipengaruhi oleh - r dengan setiap perintah yang didahului oleh nomor perintah.
-n
Menekan nomor perintah saat mendaftar dengan -l.
-r
Membalik urutan perintah yang terdaftar (dengan - atau diedit (dengan tidak - saya juga - s)
-s
Jalankan ulang perintah tanpa menggunakan editor.
pertama
terakhir
Pilih perintah untuk daftar atau edit. Jumlah perintah sebelumnya yang dapat diakses ditentukan oleh nilai variabel HISTSIZE . Nilai pertama atau terakhir atau keduanya adalah salah satu dari yang berikut:
[+] angka
Bilangan positif yang mewakili nomor perintah; nomor perintah dapat ditampilkan dengan opsi - l .
-jumlah
Angka desimal negatif yang mewakili perintah yang dieksekusi sejumlah perintah sebelumnya. Misalnya, -1 adalah perintah langsung sebelumnya.
tali
String yang menunjukkan perintah yang paling baru dimasukkan yang dimulai dengan string itu. Jika operan = lama baru tidak juga ditentukan dengan - s bentuk string dari operan pertama tidak dapat berisi tanda sama yang disematkan.
Variabel lingkungan berikut mempengaruhi pelaksanaan fc:
FCEDIT
Nama editor untuk digunakan.
HISTSIZE
Jumlah perintah sebelumnya yang dapat diakses.
fg [ pekerjaan ]
Pindahkan pekerjaan yang ditentukan atau pekerjaan saat ini ke latar depan.
getopts optstring var
Perintah POSIX getopts , jangan bingung dengan Bell Labs -derived getopt (1).
Argumen pertama harus berupa serangkaian huruf, yang masing-masing dapat secara opsional diikuti oleh titik dua untuk menunjukkan bahwa opsi tersebut memerlukan argumen. Variabel yang ditentukan diatur ke opsi parsing.
Perintah getopts menghentikan penggunaan getopt yang lama (1) karena penanganannya berisi argumen yang berisi spasi.
The getopts builtin dapat digunakan untuk mendapatkan opsi dan argumen mereka dari daftar parameter. Ketika dipanggil, getopts menempatkan nilai opsi berikutnya dari string opsi dalam daftar dalam variabel shell yang ditentukan oleh var dan indeks itu dalam variabel shell OPTIND Ketika shell dipanggil, OPTIND diinisialisasi ke 1. Untuk setiap opsi yang memerlukan argumen, getopts builtin akan menempatkannya dalam variabel shell OPTARG Jika opsi tidak diperbolehkan dalam optstring maka OPTARG akan tidak diset.
optstring adalah serangkaian huruf opsi yang dikenal. Jika huruf diikuti oleh titik dua, opsi ini diharapkan memiliki argumen yang mungkin atau mungkin tidak dipisahkan dari itu oleh spasi. Jika karakter opsi tidak ditemukan di tempat yang diharapkan, getopts akan mengatur variabel var ke getop ``? '' Kemudian akan menghapus OPTARG dan menulis output ke standard error. Dengan menetapkan titik dua sebagai karakter pertama dari optstring semua kesalahan akan diabaikan.
Nilai bukan nol dikembalikan ketika opsi terakhir tercapai. Jika tidak ada argumen yang tersisa, getop akan mengatur var ke opsi khusus, `` - '' jika tidak, ia akan mengatur var ke ``? ''
Fragmen kode berikut menunjukkan bagaimana seseorang dapat memproses argumen untuk sebuah perintah yang dapat mengambil opsi [a] dan [b] dan opsi [c] yang memerlukan argumen.
sementara getopts abc: f
melakukan
huruf $ f dalam
a | b) bendera = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; keluar 1 ;;
esac
selesai
shift `expr $ OPTIND - 1`
Kode ini akan menerima hal-hal berikut sebagai yang setara:
file file cmd -acarg
file file cmd -a -c arg
cmd -carg -a file file
cmd -a -carg - file file
perintah hash -rv ...
Shell mempertahankan tabel hash yang mengingat lokasi perintah. Tanpa argumen apapun, perintah hash akan mencetak isi dari tabel ini. Entri yang belum dilihat sejak perintah cd terakhir ditandai dengan tanda bintang; mungkin entri-entri ini tidak valid.
Dengan argumen, perintah hash menghapus perintah yang ditentukan dari tabel hash (kecuali mereka berfungsi) dan kemudian menempatkan mereka. Dengan opsi - v , hash akan mencetak lokasi dari perintah yang ditemukannya. Opsi - r menyebabkan perintah hash untuk menghapus semua entri dalam tabel hash kecuali untuk fungsi.
jobid [ pekerjaan ]
Cetak proses id dari proses dalam pekerjaan. Jika argumen pekerjaan dihilangkan, pekerjaan saat ini digunakan.
pekerjaan
Perintah ini mencantumkan semua proses latar belakang yang merupakan anak-anak dari proses shell saat ini.
Cetak direktori saat ini. Perintah builtin mungkin berbeda dari program dengan nama yang sama karena perintah builtin mengingat apa direktori saat ini daripada mengkomputasi ulang setiap kali. Ini membuatnya lebih cepat. Namun, jika direktori saat ini berganti nama, versi builtin pwd akan terus mencetak nama lama untuk direktori.
membaca [- p prompt ] [- r ] variabel ...
Prompt dicetak jika opsi - p ditentukan dan input standar adalah terminal. Kemudian garis dibaca dari input standar. Garis akhir baru dihapus dari garis dan garis dibagi seperti yang dijelaskan di bagian pada pembagian kata di atas, dan potongan-potongan ditugaskan ke variabel dalam urutan. Setidaknya satu variabel harus ditentukan. Jika ada lebih banyak potongan daripada variabel, bagian yang tersisa (bersama dengan karakter dalam IFS yang memisahkannya) ditetapkan ke variabel terakhir. Jika ada lebih banyak variabel daripada potongan, variabel yang tersisa diberi string null. Buildin yang telah dibaca akan menunjukkan keberhasilan kecuali EOF ditemukan pada input, di mana kegagalan terjadi.
Secara default, kecuali opsi- r ditentukan, backslash `` \ '' bertindak sebagai karakter escape, menyebabkan karakter berikut diperlakukan secara harfiah. Jika backslash diikuti oleh newline, backslash dan newline akan dihapus.
nama hanya baca ...
hanya baca -p
Nama yang ditentukan ditandai sebagai hanya-baca, sehingga mereka tidak dapat dimodifikasi atau tidak disetel. Shell memungkinkan nilai variabel yang akan ditetapkan pada saat yang sama ditandai bertanda hanya dengan menulis
nama baca = nilai
Tanpa argumen, perintah hanya-baca mencantumkan nama semua variabel hanya-baca. Dengan opsi - p ditentukan, output akan diformat sesuai untuk penggunaan non-interaktif.
set [{- opsi | + opsi | - arg ... ]
Perintah set melakukan tiga fungsi yang berbeda.
Tanpa argumen, daftar nilai dari semua variabel shell.
Jika opsi diberikan, itu menetapkan bendera opsi yang ditentukan, atau membersihkan mereka seperti yang dijelaskan di bagian yang disebut Sx Argument List Processing.
Penggunaan ketiga dari perintah set adalah untuk mengatur nilai parameter posisi shell ke argumen yang ditentukan. Untuk mengubah parameter posisi tanpa mengubah opsi apa pun, gunakan `` - '' sebagai argumen pertama yang ditetapkan. Jika tidak ada arg, maka perintah set akan menghapus semua parameter posisi (setara dengan mengeksekusi `` shift $ #. ''
nilai variabel
Menetapkan nilai ke variabel. (Secara umum lebih baik menulis variabel = nilai daripada menggunakan setvar setvar dimaksudkan untuk digunakan dalam fungsi yang menetapkan nilai ke variabel yang namanya dilewatkan sebagai parameter.)
bergeser [ n ]
Geser parameter posisional n kali. Pergeseran menetapkan nilai $ 1 ke nilai $ 2 nilai $ 2 ke nilai $ 3 dan seterusnya, menurunkan nilai $ # oleh satu. Jika n lebih besar dari jumlah parameter posisi, pergeseran akan mengeluarkan pesan kesalahan, dan keluar dengan status pengembalian 2.
waktu
Cetak akumulasi pengguna dan waktu sistem untuk shell dan untuk proses yang dijalankan dari shell. Status kembalinya adalah 0.
Penyebab shell mem-parsing dan mengeksekusi aksi ketika ada sinyal yang ditentukan diterima. Sinyal ditentukan oleh nomor sinyal. Jika sinyal 0 tindakan dijalankan ketika shell keluar. tindakan mungkin nol atau `` - '' yang pertama menyebabkan sinyal yang ditentukan diabaikan dan yang terakhir menyebabkan tindakan default yang akan diambil. Ketika shell bercabang dari subkulit , ia mengatur ulang sinyal yang terperangkap (tetapi tidak diabaikan) ke tindakan default. Perintah trap tidak berpengaruh pada sinyal yang diabaikan saat masuk ke shell.
ketik [ nama ... ]
Tafsirkan setiap nama sebagai perintah dan cetak resolusi pencarian perintah. Kemungkinan resolusinya adalah: shell keyword, alias, shell builtin , perintah, dilacak alias dan tidak ditemukan. Untuk alias, perluasan alias dicetak; untuk perintah dan dilacak alias pathname lengkap dari perintah dicetak.
ulimit [- H -S ] [- a -tfdscmlpn [ value ]]
Tanyakan tentang atau tetapkan batas keras atau lunak pada proses atau tetapkan batas baru. Pilihan antara batas keras (yang tidak ada proses diperbolehkan untuk melanggar, dan yang mungkin tidak dibangkitkan setelah telah diturunkan) dan batas lunak (yang menyebabkan proses yang akan ditandai tetapi tidak harus dibunuh, dan yang mungkin dibangkitkan) dibuat dengan bendera-bendera ini:
-H
mengatur atau menanyakan tentang batas keras
-S
mengatur atau menanyakan tentang batas-batas lunak. Jika tidak - H atau - S ditentukan, batas lunak ditampilkan atau kedua batas ditetapkan. Jika keduanya ditentukan, yang terakhir menang.
Batas untuk diinterogasi atau diatur, kemudian, dipilih dengan menentukan salah satu dari bendera-bendera ini:
-Sebuah
tampilkan semua batasan saat ini
-t
tampilkan atau atur batas waktu CPU (dalam detik)
-f
tampilkan atau tetapkan batas pada file terbesar yang dapat dibuat (dalam blok 512-byte)
-d
tampilkan atau atur batas pada ukuran segmen data dari suatu proses (dalam kilobyte)
-s
tampilkan atau tetapkan batas pada ukuran tumpukan dari suatu proses (dalam kilobyte)
-c
tampilkan atau atur batas ukuran inti dump terbesar yang dapat diproduksi (dalam blok 512-byte)
-m
tampilkan atau atur batas pada total memori fisik yang dapat digunakan oleh suatu proses (dalam kilobyte)
-l
tampilkan atau atur batas pada berapa banyak memori yang dapat dikunci dengan mlock (2) (dalam kilobyte )
-p
tampilkan atau tetapkan batas jumlah proses yang dapat dimiliki pengguna ini pada satu waktu
-n
tampilkan atau atur batas pada nomor file yang bisa dibuka proses sekaligus
Jika tidak ada yang ditentukan, itu adalah batas ukuran file yang ditampilkan atau disetel. Jika nilai ditentukan, batas diatur ke nomor itu; jika tidak, batas saat ini ditampilkan.
Batas proses arbitrer dapat ditampilkan atau diatur menggunakan utilitas sysctl (8).
umask [ topeng ]
Set nilai umask (lihat umask (2)) ke nilai oktal yang ditentukan. Jika argumen dihilangkan, nilai umask dicetak.
unalias [- a ] [ nama ]
Jika nama ditentukan, shell menghapus alias itu. Jika - a ditentukan, semua alias dihapus.
nama yang tidak disetel ...
Variabel dan fungsi yang ditentukan tidak disetel dan tidak dieksport. Jika nama yang diberikan sesuai dengan variabel dan fungsi, baik variabel maupun fungsinya tidak disetel.
tunggu [ pekerjaan ]
Tunggu pekerjaan yang ditentukan untuk menyelesaikan dan mengembalikan status keluar dari proses terakhir dalam pekerjaan. Jika argumen dihilangkan, tunggu semua pekerjaan selesai dan kembalikan status keluar dari nol.
Pengeditan Baris Perintah
Ketika sh sedang digunakan secara interaktif dari terminal, perintah saat ini dan sejarah perintah (lihat fc di Sx Builtins) dapat diedit menggunakan pengeditan baris perintah vi-mode. Mode ini menggunakan perintah, yang dijelaskan di bawah ini, mirip dengan subset dari yang dijelaskan di halaman manual vi. Perintah `set '-o vi memungkinkan pengeditan vi-mode dan menempatkan sh ke mode vi insert. Dengan vi-mode diaktifkan, sh dapat dialihkan antara mode insert dan mode perintah. Editor tidak dijelaskan secara lengkap di sini, tetapi akan ada di dokumen selanjutnya. Ini mirip dengan vi: mengetik Aq ESC akan melemparkan Anda ke mode perintah perintah VI. Memukul Aq kembali saat dalam mode perintah akan meneruskan baris ke shell.
Penting: Gunakan perintah man ( % man ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.