Amazon Best VPN GoSearch

Favicon OnWorks

rc - Dalam talian di Awan

Jalankan rc dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan rc yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


rc - cangkerang

SINOPSIS


rc [-deiIlnopsvx] [-c arahan] [hujah]

DESCRIPTION


rc ialah penterjemah arahan dan bahasa pengaturcaraan yang serupa dengan sh(1). Ia berdasarkan kepada
Shell AT&T Plan 9 dengan nama yang sama. Cangkang menawarkan sintaks seperti C (lebih daripada
shell C), dan mekanisme yang berkuasa untuk memanipulasi pembolehubah. Ia agak kecil
dan agak pantas, terutamanya jika dibandingkan dengan cengkerang kontemporari. Penggunaannya adalah bertujuan
untuk menjadi interaktif, tetapi bahasa itu sesuai dengan skrip.

PILIHAN


-c Jika -c hadir, arahan dilaksanakan daripada hujah berikut serta-merta.
Sebarang hujah lanjut ke rc diletakkan dalam $*. Oleh itu:

rc -c 'echo $*' 1 2 3

mencetak

1 2 3

-d Bendera ini menyebabkan rc tidak mengabaikan SIGQUIT atau SIGTERM. Justeru rc boleh dibuat untuk dibuang
teras jika dihantar SIGQUIT. Bendera ini hanya berguna untuk nyahpepijat rc.

-e Jika bendera -e hadir, maka rc akan keluar jika status keluar arahan adalah
palsu (bukan sifar). rc tidak akan keluar, walau bagaimanapun, jika bersyarat gagal, contohnya, jika()
perintah.

-i Jika bendera -i hadir atau jika input kepada rc adalah dari terminal (seperti yang ditentukan
by isatty(3)) kemudian rc akan masuk interaktif mod. Iaitu, gesaan (dari
$segera(1)) akan dicetak sebelum baris input diambil, dan rc akan abaikan
TANDATANGAN.

-I Jika bendera -I hadir, atau jika input kepada rc bukan dari terminal, maka rc
tidak akan berada dalam mod interaktif. Tiada gesaan akan dicetak dan SIGINT akan menyebabkan
rc untuk keluar.

-l Jika bendera -l hadir, atau jika rc's argv[0][0] ialah tanda sempang (-), kemudian rc akan berkelakuan
sebagai shell log masuk. Iaitu, ia akan menjalankan arahan daripada $home/.rcrc, jika fail ini
wujud, sebelum membaca sebarang input lain.

-n Bendera ini menyebabkan rc untuk membaca inputnya dan menghuraikannya, tetapi bukan untuk melaksanakan apa-apa
arahan. Ini berguna untuk semakan sintaks pada skrip. Jika digunakan secara gabungan
dengan bendera -x, rc akan mencetak setiap arahan kerana ia dihuraikan dalam bentuk yang serupa dengan
yang digunakan untuk mengeksport fungsi ke alam sekitar.

-o Bendera ini menghalang amalan biasa cuba membuka /dev/null pada fail
deskriptor 0, 1 dan 2, jika mana-mana deskriptor tersebut diwarisi tertutup.

-p Bendera ini menghalang rc daripada memulakan fungsi shell daripada persekitaran. ini
membolehkan rc untuk dijalankan dalam mod yang dilindungi, yang mana ia menjadi lebih sukar untuk a rc
skrip untuk ditumbangkan dengan meletakkan arahan palsu dalam persekitaran. (Perhatikan bahawa
kehadiran bendera ini tidak tidak bermakna ia selamat untuk menjalankan setuid rc skrip;
kaveat biasa tentang bit setuid masih terpakai.)

-s Bendera ini menyebabkan rc untuk membaca daripada input standard. Sebarang hujah diletakkan dalam $*.

-v Bendera ini menyebabkan rc untuk menggemakan inputnya kepada ralat standard semasa ia dibaca.

-x Bendera ini menyebabkan rc untuk mencetak setiap arahan pada ralat standard sebelum ia dilaksanakan.
Ia boleh berguna untuk nyahpepijat rc skrip.

PERINTAH


Perintah mudah ialah urutan perkataan, dipisahkan oleh ruang putih (ruang dan tab)
aksara yang berakhir dengan baris baharu, koma bertitik (;), atau ampersand (&). Perkataan pertama a
perintah adalah nama perintah itu. Jika nama bermula dengan /, ./, atau ../, maka nama itu
digunakan sebagai nama laluan mutlak merujuk kepada fail boleh laku. Jika tidak, nama
arahan itu dicari dalam jadual fungsi shell, arahan terbina dalam, atau sebagai fail dalam
direktori yang dinamakan oleh $path.

Latar Belakang Tugas
Perintah yang berakhir dengan & dijalankan di latar belakang; iaitu cangkerang kembali serta merta
daripada menunggu arahan selesai. Perintah latar belakang mempunyai /dev/null
disambungkan kepada input standard mereka melainkan pengalihan eksplisit untuk input standard adalah
terpakai.

Subkulit
Perintah yang diawali dengan at-sign (@) dilaksanakan dalam subkulit. Ini melindungi
shell induk daripada kesan operasi perubahan keadaan seperti a cd atau pembolehubah
tugasan. Sebagai contoh:

@ {cd ..; buat}

akan lari membuat(1) dalam direktori induk (..), tetapi membiarkan shell berjalan dalam arus
direktori.

Talian kesinambungan
Garis logik yang panjang boleh diteruskan pada beberapa baris fizikal dengan menamatkan setiap baris
(kecuali yang terakhir) dengan garis miring ke belakang (\). Urutan garis sengkang belakang-garis baharu dianggap sebagai a
angkasa lepas. Serangan ke belakang bukanlah sesuatu yang istimewa rc. (Selain itu, petikan dalam a
garis miring terbalik kehilangan makna istimewanya walaupun ia diikuti oleh baris baharu.)

Memetik
rc mentafsir beberapa watak secara khusus; aksara khas ditamatkan secara automatik
perkataan. Watak-watak berikut adalah istimewa:

# ; & | ^ $ = ` ' { } ( ) < >

Petikan tunggal (') menghalang layanan istimewa bagi mana-mana watak selain dirinya. Semua
aksara, termasuk aksara kawalan, baris baharu dan garis miring ke belakang antara dua petikan
aksara dianggap sebagai rentetan yang tidak ditafsirkan. Watak petikan itu sendiri boleh dipetik
dengan meletakkan dua petikan berturut-turut. Urutan minimum yang diperlukan untuk memasukkan aksara petikan
ialah ''''. Rentetan kosong diwakili oleh ''. Oleh itu:

echo 'Apa rancangannya, Stan?'

mencetak

Apa rancangannya, Stan?

Tanda nombor (#) memulakan ulasan masuk rc. Semua aksara sehingga tetapi tidak termasuk
baris baharu seterusnya diabaikan. Ambil perhatian bahawa penerusan garis miring ke belakang tidak berfungsi di dalam a
komen, iaitu, garis miring ke belakang diabaikan bersama-sama dengan yang lain.

Pengumpulan
Sifar atau lebih arahan boleh dikumpulkan dalam kurungan (“{” dan “}”), dan kemudiannya dianggap sebagai
satu perintah. Pendakap tidak mentakrifkan skop; mereka hanya digunakan untuk arahan
berkumpulan. Khususnya, berhati-hati dengan arahan:

untuk (i) {
arahan
} | perintah

Oleh kerana paip mengikat lebih ketat daripada untuk, arahan ini tidak melaksanakan apa yang pengguna jangkakan
kepada. Sebaliknya, sertakan keseluruhan untuk pernyataan dalam pendakap:

{untuk (i) arahan} | perintah

Mujurlah, rcTatabahasa 's cukup mudah bahawa pengguna (yakin) boleh memahaminya
memeriksa rangka yacc(1) tatabahasa pada akhir halaman manusia ini (lihat bahagian
Berhak GRAMMAR).

Input and output
Output standard boleh diubah hala ke fail dengan

arahan > fail

dan input standard boleh diambil daripada fail dengan

perintah < fail

Ubah hala boleh muncul di mana-mana dalam baris: perkataan yang mengikuti simbol ubah hala ialah
nama fail dan mesti dipetik jika ia mengandungi ruang atau aksara khas lain. Ini
semuanya setara.

gema 1 2 3 > foo
> foo echo 1 2 3
gema 1 2 > foo 3

Deskriptor fail selain 0 dan 1 boleh ditentukan juga. Sebagai contoh, untuk mengubah hala
ralat standard pada fail, gunakan:

perintah > [2] fail

Untuk menduplikasi deskriptor fail, gunakan >[n=m]. Oleh itu untuk mengubah hala kedua-dua standard
output dan ralat standard ke fail yang sama, gunakan

arahan > fail >[2=1]

Seperti dalam sh, ubah hala diproses dari kiri ke kanan. Oleh itu urutan ini

arahan >[2=1] > fail

selalunya satu kesilapan. Ia mula-mula menduplikasi ralat standard kepada output standard; kemudian
mengubah hala output standard ke fail, meninggalkan ralat standard di mana-mana output standard
asalnya ialah.

Untuk menutup deskriptor fail yang mungkin dibuka, gunakan >[n=]. Contohnya, untuk menutup fail
deskriptor 7:

perintah >[7=]

Ambil perhatian bahawa tiada ruang boleh muncul dalam binaan ini:

perintah > [2] fail

akan menghantar output arahan ke fail bernama [2], dengan nama fail yang dimaksudkan
muncul dalam senarai hujah arahan.

Untuk meletakkan output arahan pada penghujung fail yang sedia ada, gunakan:

arahan >> fail

Jika fail itu tidak wujud, maka ia dicipta.

"Dokumen di sini" disokong seperti dalam sh dengan penggunaan

arahan << 'eof-marker'

Baris berikutnya membentuk input standard arahan, sehingga baris yang mengandungi hanya
penanda, dalam kes ini eof-marker, ditemui.

Jika penanda akhir fail disertakan dalam petikan, maka tiada penggantian pembolehubah berlaku
di dalam dokumen di sini. Jika tidak, setiap pembolehubah digantikan dengan ruangnya-
nilai senarai berasingan (lihat Flat senarai, di bawah), dan jika aksara ^ mengikuti pembolehubah
nama, ia dipadamkan. Ini membolehkan penggunaan pembolehubah yang tidak jelas bersebelahan dengan teks, seperti dalam

$pembolehubah^ikut

Untuk memasukkan $ literal dalam dokumen di sini apabila penanda akhir fail yang tidak disebut
digunakan, masukkannya sebagai $$.

Selain itu, rc menyokong "rentetan di sini", yang seperti dokumen di sini, kecuali input itu
diambil terus daripada rentetan pada baris arahan. Penggunaan mereka digambarkan di sini:

kucing <<< 'ini adalah rentetan di sini' | wc

(Ciri ini membolehkan rc untuk mengeksport fungsi menggunakan dokumen di sini ke dalam persekitaran;
pengarang tidak mengharapkan pengguna mendapati ciri ini berguna.)

Paip
Dua atau lebih arahan boleh digabungkan dalam saluran paip dengan meletakkan bar menegak (|) di antara
mereka. Output standard (deskriptor fail 1) arahan di sebelah kiri terikat pada
input standard (deskriptor fail 0) bagi arahan di sebelah kanan. Notasi |[n=m]
menunjukkan bahawa deskriptor fail n daripada proses kiri disambungkan ke deskriptor fail m of
proses yang betul. |[n] ialah singkatan untuk |[n=0]. Sebagai contoh, untuk paip standard
kesilapan arahan kepada wc(1), gunakan:

perintah |[2] wc

Seperti halnya ubah hala fail, tiada ruang boleh berlaku dalam konstruk yang menentukan fail bernombor
deskriptor.

Status keluar saluran paip dianggap benar jika dan hanya jika setiap arahan dalam
saluran paip keluar benar.

arahan as Argumen
Beberapa arahan, seperti cmp(1) atau diff(1), ambil hujah mereka pada baris arahan, dan lakukan
tidak membaca input daripada input standard. Kadangkala mudah untuk membina tak linear
saluran paip supaya arahan suka cmp boleh membaca output dua arahan lain sekaligus.
rc adakah ia seperti ini:

cmp <{command} <{command}

membandingkan output dua arahan dalam pendakap. Nota: sejak bentuk ubah hala ini
dilaksanakan dengan beberapa jenis paip, dan kerana seseorang tidak boleh mencari(2) pada paip, arahan
penggunaan itu mencari(2) akan digantung. Sebagai contoh, beberapa versi diff(1) penggunaan mencari(2) pada mereka
input.

Data boleh dihantar ke bawah paip ke beberapa arahan menggunakan tee(1) dan versi keluaran daripada
tatatanda ini:

echo hai | tee >{sed 's/^/p1 /'} >{sed 's/^/p2 /'}

KAWALAN STRUKTUR


Yang berikut boleh digunakan untuk mengawal aliran masuk rc:

Jika tidak Penyata
jika (ujian) {
cmd
} lain cmd
. ujian dilaksanakan, dan jika status pengembaliannya ialah sifar, arahan pertama ialah
dilaksanakan, jika tidak yang kedua ialah. Pendakap tidak wajib di sekeliling arahan.
Walau bagaimanapun, pernyataan else adalah sah hanya jika ia mengikut pendakap dekat pada yang sama
barisan. Jika tidak, if dianggap sebagai simple-if:

jika (ujian)
arahan

Manakala and Untuk gelung
sementara (ujian) cmd
rc melaksanakan ujian dan melaksanakan perintah selagi ujian betul.

untuk (var in senarai) cmd
rc set var kepada setiap elemen senarai (yang mungkin mengandungi pembolehubah dan petikan belakang
penggantian) dan larian cmd. Jika “dalam senarai” ditinggalkan, maka rc akan ditetapkan var kepada setiap
unsur $*. Sebagai contoh:

untuk (i dalam `{ls -F | grep '\*$' | sed 's/\*$//'}) { arahan }

akan menetapkan $i kepada nama setiap fail dalam direktori semasa yang boleh dilaksanakan.

Beralih
suis (senarai) { kes ... }
rc melihat ke dalam pendakap selepas suis untuk pernyataan yang bermula dengan perkataan
kes. Jika mana-mana corak kes berikut sepadan dengan senarai yang dibekalkan untuk bertukar,
kemudian arahan sehingga pernyataan kes seterusnya dilaksanakan. The
metacharacters *, [ atau ? tidak boleh dipetik; padanan dilakukan hanya terhadap
rentetan dalam senarai, bukan terhadap nama fail. (Padanan untuk pernyataan kes ialah
sama seperti perintah ~.)

logik Operator
Terdapat beberapa operator di rc yang bergantung pada status keluar sesuatu arahan.

perintah && perintah

melaksanakan perintah pertama dan kemudian melaksanakan perintah kedua jika dan hanya jika yang pertama
arahan keluar dengan status keluar sifar ("benar" dalam Unix).

arahan || perintah

melaksanakan perintah pertama dan kemudian melaksanakan perintah kedua jika dan hanya jika yang pertama
arahan keluar dengan status keluar bukan sifar ("palsu" dalam Unix).

! perintah

menafikan status keluar arahan.

CORAK PERTANDINGAN


Terdapat dua bentuk padanan corak dalam rc. Satu adalah globbing shell tradisional. ini
berlaku dalam pemadanan untuk nama fail dalam senarai argumen:

hujah hujah perintah...

Apabila aksara *, [ atau ? berlaku dalam hujah atau perintah, rc melihat hujah
sebagai corak padanan dengan fail. (Bertentangan dengan tingkah laku yang dipamerkan oleh cangkerang lain,
rc hanya akan melakukan padanan corak jika metacharacter berlaku tanpa disebut dan secara literal dalam
input. Oleh itu,

foo='*'
echo $foo

akan sentiasa bergema hanya bintang. Agar metakarakter bukan literal dapat dikembangkan, an
pernyataan eval mesti digunakan untuk mengimbas semula input.) Padanan corak berlaku
mengikut peraturan berikut: a * sepadan dengan mana-mana nombor (termasuk sifar) aksara.
A ? sepadan dengan mana-mana aksara tunggal, dan [ diikuti oleh beberapa aksara diikuti oleh
a ] sepadan dengan satu aksara dalam kelas itu. Peraturan untuk pemadanan kelas watak ialah
sama seperti yang bagi ed(1), dengan pengecualian bahawa penolakan kelas watak dicapai
dengan tanda tilde (~), bukan tanda tanda (^), kerana tanda tanda tanda sudah bermakna sesuatu yang lain rc.

rc juga memadankan corak dengan rentetan dengan perintah ~:

~ pola pola subjek ...

~ menetapkan $status kepada sifar jika dan hanya jika corak yang dibekalkan sepadan dengan mana-mana elemen tunggal
senarai subjek. Justeru

~ foo f*

menetapkan status kepada sifar, manakala

~ (bar baz) f*

menetapkan status kepada satu. Senarai null dipadankan dengan senarai null, jadi

~ $foo ()

menyemak untuk melihat sama ada $foo kosong atau tidak. Ini juga boleh dicapai dengan ujian

~ $#foo 0

Perhatikan bahawa di dalam perintah ~ rc tidak sepadan dengan corak dengan nama fail, jadi tidak
perlu untuk memetik aksara *, [ dan ?. Walau bagaimanapun, rc mengembangkan subjek terhadap
nama fail jika ia mengandungi metakarakter. Justeru, perintah

~ * ?

kembali benar jika mana-mana fail dalam direktori semasa mempunyai nama aksara tunggal.
Jika arahan ~ diberikan senarai sebagai hujah pertamanya, maka perlawanan yang berjaya melawan
mana-mana elemen senarai itu akan menyebabkan ~ kembali benar. Sebagai contoh:

~ (foo goo zoo) z*

betul.

SENARAI DAN PELBAGAI


Struktur data utama dalam rc ialah senarai, iaitu urutan perkataan. Tanda kurung
digunakan untuk senarai kumpulan. Senarai kosong diwakili oleh (). Senarai tidak mempunyai hierarki
struktur; senarai di dalam senarai lain dikembangkan supaya senarai luar mengandungi semua
elemen senarai dalaman. Oleh itu, semua yang berikut adalah setara

satu dua tiga

(satu dua tiga)

((satu dua tiga)))

Ambil perhatian bahawa rentetan null, '', dan senarai null, (), adalah dua perkara yang sangat berbeza.
Menetapkan rentetan nol kepada pembolehubah ialah operasi yang sah, tetapi ia tidak mengalih keluarnya
definisi.

null = '' kosong = () echo $#null $#empty

menghasilkan output

1 0

senarai Gabungan
Dua senarai boleh disertai oleh operator penggabungan (^). Penggabungan berfungsi mengikut
kepada peraturan berikut: jika kedua-dua senarai mempunyai bilangan elemen yang sama, maka
penggabungan adalah berpasangan:

gema (a- b- c-)^(1 2 3)

menghasilkan output

a-1 b-2 c-3

Jika tidak, sekurang-kurangnya satu daripada senarai mesti mempunyai satu elemen, dan kemudiannya
penggabungan adalah pengedaran:

cc -^(O gc) (malloc alloca)^.c

mempunyai kesan melaksanakan arahan

cc -O -g -c malloc.c alloca.c

Satu perkataan ialah senarai panjang satu, jadi

echo foo^bar

menghasilkan output

foobar

Percuma Karet
rc memasukkan karet (operator penggabungan) secara percuma dalam situasi tertentu, untuk
simpan beberapa menaip bagi pihak pengguna. Sebagai contoh, contoh di atas juga boleh ditaip
dalam sebagai:

opts=(O gc) files=(malloc alloca) cc -$opts $files.c

rc berhati-hati untuk memasukkan karet percuma antara "-" dan $opts, serta antara $files
dan .c. Peraturan untuk karet percuma adalah seperti berikut: jika perkataan atau kata kunci adalah serta-merta
diikuti dengan perkataan lain, kata kunci, tanda dolar atau petikan belakang, kemudian rc memasukkan karet
antara mereka.

Pembolehubah
Senarai boleh diberikan kepada pembolehubah, menggunakan notasi:

var = senarai

Pembolehubah khas * juga boleh ditetapkan untuk menggunakan tatatanda ini; rc tidak mempunyai menetapkan terbina dalam.

Sebarang jujukan aksara yang tidak kosong, kecuali jujukan termasuk hanya digit, boleh digunakan
sebagai nama pembolehubah. Mana-mana aksara kecuali = boleh digunakan, tetapi aksara khas mesti digunakan
dipetik. Semua pembolehubah yang ditentukan pengguna dieksport ke dalam persekitaran.

Nilai pembolehubah dirujuk dengan pengendali dolar ($):

$var

Mana-mana pembolehubah yang belum diberikan nilai mengembalikan senarai nol, (), apabila
dirujuk. Rujukan berbilang dibenarkan:

a = foo
b = a
gema $$ b

cetakan

foo

Takrif pembolehubah juga boleh dialih keluar dengan memberikan senarai nol kepada pembolehubah:

var=()

Untuk "penjagaan percuma" berfungsi dengan betul, rc mesti membuat andaian tertentu tentang apa
aksara mungkin muncul dalam nama berubah. rc menganggap bahawa nama pembolehubah hanya terdiri
daripada aksara alfanumerik, garis bawah (_) dan bintang (*). Untuk merujuk pembolehubah dengan
aksara lain dalam namanya, petik nama pembolehubah. Oleh itu:

echo $'we$Ird:Variab!le'

Tempatan Pembolehubah
Sebarang bilangan tugasan pembolehubah boleh dibuat setempat kepada satu arahan dengan menaip:

a=foo b=bar ... arahan

Perintah itu mungkin perintah kompaun, jadi sebagai contoh:

laluan=. ifs=() {
...
}

menetapkan laluan ke . dan mengalih keluar ifs untuk tempoh satu arahan kompaun yang panjang.

Pembolehubah Subskrip
Pembolehubah boleh dilanggan dengan notasi

$var(n)

di mana n ialah senarai integer (asal 1). Tanda kurungan pembukaan mesti segera diikuti
nama pembolehubah. Senarai subskrip tidak perlu mengikut susunan malah unik. Oleh itu,

a=(satu dua tiga)
gema $a(3 3 3)

cetakan

tiga tiga tiga

If n merujuk elemen yang tidak wujud, kemudian $var(n) mengembalikan senarai nol. Tatatanda itu
$n, Di mana n ialah integer, ialah singkatan untuk $*(n). Oleh itu, rchujah boleh dirujuk
kepada $1, $2 dan seterusnya.

Perhatikan juga bahawa senarai subskrip mungkin diberikan oleh mana-mana rcoperasi senarai:

$var(`{awk 'BERMULA{untuk(i=1;i<=10;i++)cetak i;keluar; }'})

mengembalikan 10 elemen pertama $var.

Untuk mengira bilangan elemen dalam pembolehubah, gunakan

$#var

Ini mengembalikan senarai elemen tunggal, dengan bilangan elemen dalam $var.

Flat senarai
Untuk mencipta senarai elemen tunggal daripada senarai berbilang elemen, dengan komponen
dipisahkan dengan ruang, gunakan pengendali dolar-karet ($^):

$^var

Ini berguna apabila peraturan penggabungan senarai biasa perlu dipintas. Sebagai contoh,
untuk menambahkan satu noktah pada penghujung $path, gunakan:

echo $^path.

petikan belakang Penggantian
Senarai boleh dibentuk daripada output arahan dengan menggunakan penggantian petikan belakang:

`{ perintah }

mengembalikan senarai yang terbentuk daripada output standard arahan dalam pendakap. $ifs sudah biasa
bahagikan output kepada elemen senarai. Secara lalai, $ifs mempunyai nilai space-tab-newline.
Pendakap boleh ditinggalkan jika perintah itu adalah satu perkataan. Oleh itu `ls boleh digunakan sebaliknya
daripada `{ls}. Ciri terakhir ini berguna apabila mentakrifkan fungsi yang berkembang kepada berguna
senarai hujah. Penggunaan yang kerap ialah:

fn src { echo *.[chy] }

diikuti oleh

wc `src

(Ini akan mencetak kiraan perkataan semua fail sumber C dalam direktori semasa.)

Untuk mengatasi nilai $ifs untuk penggantian petikan belakang tunggal, gunakan:

`` (ifs-list) { arahan }

$ifs akan diabaikan buat sementara waktu dan output arahan akan dibahagikan seperti yang ditentukan oleh
senarai berikut petikan belakang berganda. Sebagai contoh:

`` ($nl :) {kucing / etc / passwd}

berpecah / etc / passwd ke dalam medan, dengan mengandaikan bahawa $nl mengandungi baris baharu sebagai nilainya.

KHAS PELBAGAI


Beberapa pembolehubah diketahui rc dan dilayan secara istimewa. Dalam senarai berikut,
"lalai" menunjukkan bahawa rc memberikan pembolehubah nilai lalai pada permulaan; "tiada eksport"
menunjukkan bahawa pembolehubah tidak pernah dieksport; dan "baca sahaja" menunjukkan bahawa percubaan
untuk menetapkan pembolehubah secara senyap tidak akan memberi kesan.

Selain itu, “alias” bermaksud pembolehubah dialiaskan kepada nama yang sama dalam huruf besar. Untuk
contoh, tugasan kepada $cdpath menyebabkan tugasan automatik kepada $CDPATH, dan sebaliknya
sebaliknya. Jika $CDPATH ditetapkan apabila rc dimulakan, nilainya diimport ke dalam $cdpath. $cdpath
dan $path adalah rc senarai; $CDPATH dan $PATH ialah senarai yang dipisahkan dengan kolon. Hanya nama yang dieja
dalam modal dieksport ke alam sekitar.

* (tiada eksport)
Senarai hujah bagi rc. $1, $2, dsb. adalah sama dengan $*(1), $*(2), dsb.

0 (tiada eksport lalai)
Pembolehubah $0 memegang nilai argv[0] yang mana rc telah dipanggil.
Selain itu, $0 ditetapkan kepada nama fungsi untuk tempoh pelaksanaan
daripada fungsi itu, dan $0 juga ditetapkan kepada nama fail yang ditafsirkan
tempoh a . perintah. $0 bukan unsur $* dan tidak pernah dianggap sebagai
one.

apid (tiada eksport)
ID proses proses terakhir bermula di latar belakang.

apids (tiada eksport baca sahaja)
Senarai yang elemennya ialah ID proses semua proses latar belakang yang
masih hidup, atau yang telah meninggal dunia dan belum ditunggu.

bqstatus (tiada eksport)
Status keluar daripada rc bercabang untuk melaksanakan penggantian backquote terbaharu.
Ambil perhatian bahawa, tidak seperti $status, $bqstatus sentiasa satu senarai elemen (lihat EXIT
STATUS di bawah). Sebagai contoh:

echo foo |grep bar; apakah status

cetakan

status=(0 1)

sedangkan

x=`{echo foo |grep bar}; apakah bqstatus

cetakan

bqstatus=1

cdpath (alias)
Senarai direktori untuk mencari sasaran a cd perintah. Rentetan kosong
bermaksud direktori semasa. Ambil perhatian bahawa jika pembolehubah $cdpath tidak
mengandungi direktori semasa, maka direktori semasa tidak akan dicari;
ini membolehkan carian direktori bermula dalam direktori selain daripada semasa
direktori.

sejarah
$history mengandungi nama fail yang mana arahan dilampirkan sebagai rc dibaca
mereka. Ini memudahkan penggunaan program sejarah yang berdiri sendiri (seperti
sejarah(1)) yang menghuraikan kandungan fail sejarah dan membentangkannya kepada rc
untuk tafsiran semula. Jika $history tidak ditetapkan, maka rc tidak menambah arahan kepada
mana-mana fail.

rumah (alias)
Direktori lalai untuk builtin cd arahan, dan direktori di mana rc
kelihatan untuk mencari fail permulaannya, .rcrc, jika rc telah dimulakan sebagai log masuk
tempurung.

ifs (lalai)
Pemisah medan dalaman, digunakan untuk memisahkan keluaran petikan belakang
arahan untuk pencernaan sebagai senarai. Pada permulaan, rc memberikan senarai yang mengandungi
ruang aksara, tab dan baris baharu kepada $ifs.

laluan (alias)
Ini ialah senarai direktori untuk mencari arahan. Rentetan kosong berdiri
untuk direktori semasa. Jika $PATH mahupun $path tidak ditetapkan pada masa permulaan,
$path menganggap nilai lalai yang sesuai untuk sistem anda. Ini biasanya
(/ usr / local / bin / usr / bin / usr / ucb / bin .)

pid (tiada eksport lalai)
Pada permulaan, $pid dimulakan kepada ID proses berangka yang sedang dijalankan
rc.

segera (lalai)
Pembolehubah ini memegang dua gesaan (dalam bentuk senarai, sudah tentu) itu rc cetakan.
$segera(1) dicetak sebelum setiap arahan dibaca, dan $segera(2) dicetak apabila
input dijangka berterusan pada baris seterusnya. rc menetapkan $prompt kepada ('; ' '') oleh
lalai. Sebab untuk ini ialah ia membolehkan an rc pengguna untuk mengambil arahan daripada
baris sebelumnya menggunakan tetikus, dan untuk membentangkannya kepada rc untuk tafsiran semula; yang
Gesaan koma bertitik hanya diabaikan oleh rc. $ nullsegera(2) juga mempunyainya
justifikasi: an rc skrip, apabila ditaip secara interaktif, tidak akan meninggalkan $segera(2)'s
pada skrin, dan oleh itu boleh dipegang oleh tetikus dan diletakkan terus ke dalam a
fail untuk digunakan sebagai skrip shell, tanpa perlu menyunting selanjutnya.

gesaan (fungsi)
Jika fungsi ini ditakrifkan, maka ia akan dilaksanakan setiap kali rc akan dicetak
$segera(1).

status (tiada eksport baca sahaja)
Status keluar perintah terakhir. Jika arahan keluar dengan nilai angka,
nombor itu adalah status. Jika arahan itu mati dengan isyarat, statusnya ialah
nama isyarat itu; jika fail teras dicipta, rentetan "+teras" dilampirkan.
Nilai $status untuk saluran paip ialah senarai, dengan satu entri, seperti di atas, untuk setiap satu
proses dalam saluran paip. Sebagai contoh, arahan

ls | wc

biasanya menetapkan $status kepada (0 0).

versi (lalai)
Pada permulaan, elemen pertama pembolehubah senarai ini dimulakan kepada rentetan
yang mengenal pasti versi ini rc. Elemen kedua dimulakan kepada rentetan
yang boleh didapati oleh ident(1) dan apa arahan dari sccs(1).

FUNGSI


rc fungsi adalah sama dengan rc skrip, kecuali ia disimpan dalam ingatan dan adalah
secara automatik dieksport ke alam sekitar. Fungsi shell diisytiharkan sebagai:

nama fn { perintah }

rc mengimbas definisi sehingga pendakap rapat, jadi fungsi boleh menjangkau lebih daripada satu
barisan. Definisi fungsi boleh dialih keluar dengan menaip

nama fn

(Satu atau lebih nama mungkin dinyatakan. Dengan takrifan yang disertakan, semua nama menerima
definisi yang sama. Ini kadangkala berguna untuk memberikan pengendali isyarat yang sama kepada
banyak isyarat. Tanpa definisi, semua fungsi yang dinamakan dipadamkan.) Apabila sesuatu fungsi itu
dilaksanakan, $* ditetapkan kepada argumen untuk fungsi itu untuk tempoh arahan.
Oleh itu definisi munasabah untuk l, singkatan untuk ls(1), boleh jadi:

fn l { ls -FC $* }

tetapi tidak

fn l { ls -FC } # SALAH

GANGGUAN DAN ISYARAT


rc mengenali beberapa isyarat, dan membenarkan pengguna untuk menentukan fungsi shell yang bertindak
sebagai pengendali isyarat. rc secara lalai memerangkap SIGINT apabila ia berada dalam mod interaktif. SIGQUIT
dan SIGTERM diabaikan, melainkan rc telah dipanggil dengan bendera -d. Bagaimanapun, pengguna-
pengendali isyarat yang ditentukan boleh ditulis untuk ini dan semua isyarat lain. Cara untuk menentukan
pengendali isyarat adalah untuk menulis fungsi dengan nama isyarat dalam huruf kecil. Oleh itu:

fn sighup { echo hangup; rm /tmp/rc$pid.*; keluar }

Selain isyarat Unix, rc mengenali isyarat buatan SIGEXIT yang berlaku sebagai
rc hendak keluar.

Untuk mengalih keluar definisi pengendali isyarat, alih keluarnya seolah-olah ia biasa
fungsi. Sebagai contoh:

tanda fn

mengembalikan pengendali SIGINT kepada nilai lalai. Untuk mengabaikan isyarat, tetapkan
nilai pengendali isyarat kepada {}. Oleh itu:

tanda fn {}

menyebabkan SIGINT diabaikan oleh shell. Hanya isyarat yang diabaikan dilalui
ke program yang dijalankan oleh rc; fungsi isyarat tidak dieksport.

Pada sistem Unix berasaskan V Sistem, rc tidak akan membenarkan anda memerangkap SIGCLD.

BUILTIN PERINTAH


Perintah terbina dilaksanakan dalam konteks shell, tetapi sebaliknya berkelakuan sama seperti
perintah lain. walaupun !, ~ and @ bukan arahan terbina dalam, mereka boleh
biasanya digunakan seperti itu.

. [-i] fail [berhujah ...]
Dibaca fail sebagai input kepada rc dan melaksanakan kandungannya. Dengan bendera -i, input ialah
interaktif. Oleh itu dari dalam skrip shell,

. -i /dev/tty

melakukan "perkara yang betul".

memecahkan Pecah dari bahagian paling dalam untuk atau sementara, seperti dalam C. Ia adalah ralat untuk dipanggil memecahkan
di luar gelung. (Perhatikan bahawa tidak ada memecahkan kata kunci antara arahan dalam suis
pernyataan, tidak seperti C.)

dibina arahan [berhujah ...]
Melaksanakan arahan yang mengabaikan sebarang definisi fungsi dengan nama yang sama. ini
arahan hadir untuk membenarkan fungsi dengan nama yang sama seperti builtin untuk menggunakan
asas terbina atau binari. Sebagai contoh:

fn ls { terbina dalam ls -FC $* }

ialah cara yang munasabah untuk menghantar set argumen lalai kepada ls(1), sedangkan

fn ls { ls -FC $* } # SALAH

ialah rekursi tidak tamat, yang akan menyebabkan rc kehabisan ruang tindanannya dan
(akhirnya) ditamatkan jika ia dilaksanakan.

cd [direktori]
Menukar direktori semasa kepada direktori. Pembolehubah $cdpath dicari
lokasi yang mungkin direktori, sama dengan pencarian $path untuk boleh laku
fail. Tanpa hujah, cd menukar direktori semasa kepada $home.

echo [-n] [--] [berhujah ...]
Mencetak hujahnya kepada output standard, ditamatkan oleh baris baharu. Hujah adalah
dipisahkan oleh ruang. Jika hujah pertama ialah -n tiada baris baharu akhir dicetak. Jika
hujah pertama ialah --, maka semua hujah lain dikumandangkan secara literal. Ini adalah
digunakan untuk menggemakan literal -n.

menipu [senarai]
Menggabungkan unsur-unsur senarai dengan ruang dan suapan rentetan yang terhasil ke rc
untuk pengimbasan semula. Ini adalah satu-satunya masa input diimbas semula rc.

exec [berhujah ...]
Menggantikannya rc dengan arahan yang diberikan. Jika exec mengandungi hanya ubah hala, maka
ubah hala ini digunakan pada shell semasa dan shell tidak keluar. Untuk
contohnya,

exec >[2] err.out

meletakkan output selanjutnya kepada ralat standard dalam fail err.out.

keluar [terkini]
Menyebabkan shell semasa keluar dengan keluar yang diberikan terkini. Jika tiada hujah
diberikan, nilai semasa $status digunakan.

menghadkan [-h] [sumber [nilai]]
Sama seperti csh(1) menghadkan builtin, arahan ini beroperasi pada gaya BSD
had sumber sesuatu proses. Bendera -h memaparkan/mengubah had keras. The
sumber yang boleh ditunjukkan atau diubah ialah cputime, saiz fail, saiz data, bertindan,
coredumpsize, penggunaan ingatan, dan, jika disokong, penerangan, penggunaan ingatan, memorirss,
maxproc, terkunci ingatan, dan kunci fail. Sebagai contoh:

hadkan coredumpsize 0

melumpuhkan pembuangan teras. Untuk menetapkan had lembut bersamaan dengan had keras:

hadkan `{limit -h saiz data}

newpgrp
Meletakkan rc ke dalam kumpulan proses baharu. Binaan ini berguna untuk membuat rc berkelakuan seperti
cangkang kawalan kerja dalam persekitaran yang bermusuhan. Satu contoh ialah Terminal NeXT
program, yang secara tersirat menganggap bahawa setiap cangkang yang dicabangnya akan meletakkan dirinya ke dalam a
kumpulan proses baharu.

pulangan [n]
Kembali daripada fungsi semasa, dengan status n, Di mana n ialah status keluar yang sah,
atau senarai mereka. Oleh itu adalah sah untuk dimiliki

kembali (sigpipe 1 2 3)

(Ini biasanya digunakan untuk membenarkan fungsi kembali dengan status keluar a
saluran paip arahan yang dilaksanakan sebelum ini.) Jika n ditinggalkan, maka $status ditinggalkan
tidak berubah. Ia adalah satu kesilapan untuk memohon pulangan apabila tidak berada di dalam fungsi.

peralihan [n]
Memadam n elemen dari permulaan $* dan menganjakkan elemen lain ke bawah dengan
n. n lalai kepada 1.

umask [topeng]
Menetapkan umask semasa (lihat umask(2)) kepada perlapanan topeng. Jika tiada hujah
sekarang, nilai topeng semasa dicetak.

tunggu [pid]
Menunggu proses dengan yang ditentukan pid, yang semestinya telah dimulakan oleh rc, Untuk
keluar. Jika tidak pid dinyatakan, rc menunggu semua proses anaknya keluar.

apa [-b] [-f] [-p] [-s] [-v] [--] [nama ...]
Mencetak definisi objek yang dinamakan. Untuk builtin, builtin foo dicetak;
untuk fungsi, termasuk pengendali isyarat, definisinya dicetak; untuk
fail boleh laku, nama laluan dicetak; dan bagi pembolehubah, nilainya ialah
dicetak. Bendera mengehadkan output kepada binaan, fungsi, program boleh laku,
pengendali isyarat, dan pembolehubah, masing-masing. Jika tidak namas dinyatakan, rc senarai
semua objek jenis itu. (Ini tidak dibenarkan untuk -p.) Tanpa hujah,
whatis adalah bersamaan dengan whatis -fv, dan mencetak nilai semua pembolehubah shell
dan fungsi.

Perhatikan bahawa apa keluaran sesuai untuk input kepada rc; dengan menyimpan output daripada apa
dalam fail, ia sepatutnya boleh mencipta semula keadaan rc dengan mendapatkan fail ini
dengan . perintah. Nota lain: whatis -s > fail tidak boleh digunakan untuk menyimpan fail
keadaan rcpengendali isyarat dalam fail, kerana binaan dengan ubah hala dijalankan
dalam subkulit, dan rc sentiasa memulihkan pengendali isyarat kepada nilai lalai mereka selepas
garfu().

Sejak apa menggunakan getopt(3) untuk menghuraikan hujahnya, anda boleh menggunakan khas
hujah -- untuk menamatkan benderanya. Ini membolehkan anda menggunakan nama yang bermula dengan a
sengkang, seperti sejarah(1) perintah. Sebagai contoh,

apa itu -- -p

CONTOH


. peralihan builtin hanya menganjak $*. Fungsi ini boleh mengalihkan sebarang pembolehubah (kecuali $lshift).

fn lshift { lshift=$*; *=$$1; anjakan $lshift(2); $lshift(1)=$* }

Dengan adanya definisi ini,

walrus = (kasut kapal pengedap-lilin kubis raja)
lshift walrus 3
apa itu walrus

cetakan

walrus=(raja kubis)

Operator $^var meratakan senarai dengan mengasingkan setiap elemen dengan ruang. Fungsi ini
membolehkan pemisah menjadi rentetan sewenang-wenangnya.

fn lflat {
lflat=$*; *=$$1
manakala () {
echo -n $1; syif
~ $#* 0 && rehat
echo -n $lflat(2)
}

Dengan adanya definisi ini,

hop=(uunet mcvax ukc tlg)
lflat hops !

cetakan (tanpa baris baharu akhir)

uunet!mcvax!ukc!tlg

EXIT STATUS


Status keluar daripada rc lazimnya sama dengan arahan terakhir yang dilaksanakan. Sekiranya
arahan terakhir ialah saluran paip, rc keluar 0 jika setiap arahan dalam saluran paip melakukannya; sebaliknya ia
keluar 1.

rc boleh dibuat untuk keluar dengan status tertentu menggunakan keluar terbina dalam.

GRAMMAR


Di sini ialah rctatabahasa 's, disunting untuk mengalih keluar tindakan semantik.

%istilah ANDAND BACKBACK BANG KIRAAN KES DUP LAIN TAMAT FLAT FN UNTUK JIKA DALAM
%istilah OROR PIPE REDIR SUB SUBKELILING SUIS SWITCH TWIDDLE MANAKALA KATA HUH

% left WHILE ')' ELSE
%left ANDAND OROR '\n'
%left BANG SUBSCELL
%paip kiri
%right '$'
% meninggalkan SUB

%mulakan rc

%%

rc: hujung baris
| tamat ralat

tamat: TAMAT /* EOF */ | '\n'

cmdsa: cmd ';' | cmd '&'

baris: cmd | baris cmdsa

badan: cmd | badan cmdsan

cmdsan: cmdsa | cmd '\n'

pendakap: '{' badan '}'

ibu bapa: '(' badan ')'

tetapkan: perkataan '=' pertama

epilog: /* kosong */ | redir epilog

redir: DUP | perkataan REDIR

kes: perkataan KES ';' | perkataan CASE '\n'

cbody: cmd | kes cbody | cmdsan cbody

iftail: cmd %prec ELSE
| kurung ELSE optnl cmd

cmd : /* kosong */ %prec WHILE
| ringkas
| epilog pendakap
| JIKA paren optnl iftail
| UNTUK '(' perkataan DALAM perkataan ')' optnl cmd
| UNTUK '(' perkataan ')' optnl cmd
| MANAKALA paren optnl cmd
| TUKAR '(' perkataan ')' optnl '{' cbody '}'
| perkataan perkataan optcaret TWIDDLE
| cmd ANDAND optnl cmd
| cmd OROR optnl cmd
| cmd PIPE optnl cmd
| redir cmd %prec BANG
| tetapkan cmd %prec BANG
| BANG optcaret cmd
| SUBSHELL optcaret cmd
| Kata-kata FN pendakap
| perkataan FN

optcaret: /* kosong */ | '^'

mudah: pertama | perkataan mudah | redir mudah

pertama: comword | pedang '^' pertama

pedang: comword | kata kunci

perkataan: pedang | perkataan '^' pedang

comword: '$' pedang
| '$' pedang SUB perkataan ')'
| COUNT pedang
| pedang FLAT
| ''pedang
| ''' baju kurung
| BACKBACK kata pendakap | KEMBALI pedang perkataan
| '(' perkataan ')'
| pendakap REDIR
| PERKATAAN

kata kunci: UNTUK | DALAM | SEDANGKAN | JIKA | TUKAR
| FN | LAIN | KES | TWIDDLE | BANG | KULIT KECIL

perkataan: /* kosong */ | perkataan perkataan

optnl: /* kosong */ | optnl '\n'

Gunakan rc dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad




×
Pengiklanan
❤ ️Beli, tempah atau beli di sini — tanpa kos, membantu memastikan perkhidmatan percuma.