NAME
sh - អ្នកបកប្រែពាក្យបញ្ជា ( សែល )
SYNOPSIS
sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ គោលដៅ ... ]
DESCRIPTION
Sh គឺជាអ្នកបកប្រែពាក្យបញ្ជាស្តង់ដារសម្រាប់ប្រព័ន្ធ។ កំណែបច្ចុប្បន្នរបស់ sh គឺស្ថិតនៅក្នុងដំណើរការដែលត្រូវបានផ្លាស់ប្តូរដើម្បីឱ្យសមស្របជាមួយ POSIX 1003.2 និង 1003.2a សម្រាប់សែល។ កំណែនេះមានលក្ខណៈពិសេសជាច្រើនដែលធ្វើឱ្យវាលេចឡើងស្រដៀងគ្នាទៅនឹងសែល Korn ប៉ុន្តែវាមិនមែនជាក្លូនសែល Korn (សូមមើល ksh (1)) ។ មានតែលក្ខណៈពិសេសដែលបានកំណត់ដោយ POSIX និងបូកបន្ថែម Berkeley មួយចំនួនកំពុងត្រូវបានដាក់បញ្ចូលទៅក្នុងសែលនេះ។ យើងរំពឹងថានឹងមានភាពស្របតាម POSIX នៅ ត្រឹមពេល 4.4 BSD ត្រូវបានបញ្ចេញ។ ទំព័រមេនេះមិនត្រូវបានបង្កើតឡើងដើម្បីជាការបង្រៀនឬការបញ្ជាក់ពេញលេញនៃសែលទេ។
ទិដ្ឋភាពទូទៅ
សែលគឺជាពាក្យបញ្ជា ដែលអានបន្ទាត់ពីឯកសារឬស្ថានីយបកប្រែពួកវាហើយជាទូទៅវាប្រតិបត្តិពាក្យបញ្ជាផ្សេងទៀត។ វាជាកម្មវិធីដែលកំពុងដំណើរការនៅពេលអ្នកប្រើចូលក្នុងប្រព័ន្ធ (ទោះបីជាអ្នកប្រើអាចជ្រើសរើសសែលផ្សេងគ្នាជាមួយពាក្យបញ្ជា chsh (1) ក៏ដោយ។ សែលអនុវត្តភាសាដែលមានការត្រួតពិនិត្យលំហូរជាមធ្យោបាយម៉ាក្រូដែលផ្ដល់នូវលក្ខណៈពិសេសជាច្រើនបន្ថែមពីលើការផ្ទុកទិន្នន័យរួមជាមួយនឹងសមត្ថភាពក្នុងការកែសម្រួលប្រវត្តិនិងបន្ទាត់។ វារួមបញ្ចូលលក្ខណៈពិសេសជាច្រើនដើម្បីជួយដល់ការប្រើអន្តរកម្មនិងមានអត្ថប្រយោជន៍ដែលភាសាបកប្រែគឺជារឿងធម្មតាចំពោះការប្រើអន្តរសកម្មនិងមិនមានអន្តរកម្ម (សែលស្គ្រីប) ។ នោះគឺពាក្យបញ្ជាអាចត្រូវបានវាយដោយផ្ទាល់ទៅសែលដែលកំពុងរត់ឬអាចដាក់ទៅក្នុងឯកសារហើយឯកសារអាចត្រូវបានប្រតិបត្តិដោយផ្ទាល់ដោយសែល។
ការហៅ
បើគ្មានអាគុយម៉ង់ទេហើយបើបញ្ចូលស្តង់ដាររបស់សែលត្រូវបានភ្ជាប់ទៅស្ថានីយ (ឬបើទង់ - i ត្រូវបានកំណត់) ហើយជម្រើស - c មិនមានវត្តមានសែលត្រូវបានចាត់ទុកថាជា សែល អន្តរសកម្ម។ សែលអន្តរកម្មជាទូទៅរំលឹកមុននឹងពាក្យបញ្ជានិមួយៗនិងដោះស្រាយការសរសេរកម្មវិធីនិងកំហុស បញ្ជា ខុសគ្នា (ដូចបានរៀបរាប់ខាងក្រោម) ។ នៅពេលចាប់ផ្ដើមដំបូងសែលពិនិត្យអាគុយម៉ង់ 0 ហើយបើវាចាប់ផ្ដើមដោយសញ្ញា - `` - សែលត្រូវបានចាត់ទុកជាសែលចូល។ ជាធម្មតាវាត្រូវបានធ្វើដោយស្វ័យប្រវត្តិដោយប្រព័ន្ធនៅពេលដែលអ្នកប្រើចូលជាមុន។ សែលចូលដំបូងអានពាក្យបញ្ជាពីឯកសារ / etc / profile និង .profile ប្រសិនបើវាមាន។ ប្រសិនបើអថេរបរិស្ថាន ENV ត្រូវបានកំណត់លើធាតុទៅសែលឬត្រូវបានកំណត់ក្នុង .profile នៃស្គ្រីបចូលសែលក្រោយអានពាក្យបញ្ជាពីឯកសារដែលមានឈ្មោះ ENV ដូច្នេះអ្នកប្រើគួរតែដាក់ពាក្យបញ្ជាដែលត្រូវប្រតិបត្តិតែនៅ ពេលវេលាចូលនៅក្នុងឯកសារ .profile និងពាក្យបញ្ជាដែលត្រូវបានប្រតិបត្តិសម្រាប់គ្រប់សែលទាំងអស់នៅក្នុងឯកសារ ENV ។ ដើម្បីកំណត់អថេរ ENV ទៅឯកសារមួយចំនួនសូមដាក់បន្ទាត់ដូចខាងក្រោមក្នុង .profile នៃថតផ្ទះរបស់អ្នក
ENV = $ HOME / .shinit; នាំចេញ ENV
ជំនួសសម្រាប់ `` .shinit '' ឈ្មោះឯកសារដែល អ្នកចង់បាន។ ចាប់តាំងពីឯកសារ ENV ត្រូវបានអានសម្រាប់រាល់ការហៅរបស់សែលរួមទាំងស្គ្រីបសែលនិងសែលអន្តរកម្មគំរូដូចខាងក្រោមគឺមានប្រយោជន៍សម្រាប់ការដាក់កម្រិតពាក្យបញ្ជានៅក្នុងឯកសារ ENV ទៅការហៅអន្តរសកម្ម។ ដាក់ពាក្យបញ្ជាក្នុង `` case '' និង `` esac '' ខាងក្រោម (ពាក្យបញ្ជាទាំងនេះត្រូវបានពិពណ៌នានៅពេលក្រោយ):
ករណី $ - ក្នុង * i *)
# សម្រាប់ការប្រើអន្តរសកម្មតែប៉ុណ្ណោះ
...
esac
ប្រសិនបើអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជាក្រៅពីជម្រើសត្រូវបានបញ្ជាក់នោះសែលនឹងដោះស្រាយអាគុយម៉ង់ទីមួយជាឈ្មោះឯកសារដែលត្រូវអានពាក្យបញ្ជា (សែលស្គ្រីប) ហើយអាគុយម៉ង់ដែលនៅសល់ត្រូវបានកំណត់ជាប៉ារ៉ាម៉ែត្រទីតាំងនៃសែល ($ 1 , $ 2, ល។ ) ។ បើមិនដូច្នោះទេសែលនឹងអានពាក្យបញ្ជាពីការបញ្ចូលស្តង់ដាររបស់វា។
ដំណើរការបញ្ជីអាគុយម៉ង់
ជម្រើសអក្សរតែមួយទាំងអស់មានឈ្មោះត្រូវគ្នាដែលអាចត្រូវបានប្រើជាអាគុយម៉ង់ទៅជម្រើស - o ។ ឈ្មោះសំណុំ - o ត្រូវបានផ្តល់ជូននៅជាប់នឹងជម្រើសអក្សរតែមួយនៅក្នុងការពិពណ៌នាខាងក្រោម។ ការបញ្ជាក់សញ្ញា `` - '' បំលាស់ជម្រើសខណៈពេលដែលប្រើ '`+' 'មិនអនុញ្ញាតជម្រើស។ ជម្រើសខាងក្រោមអាចត្រូវបានកំណត់ពីបន្ទាត់ពាក្យបញ្ជាឬដោយសំណុំ (1) បានសាងសង់ (បានពិពណ៌នានៅពេលក្រោយ) ។
- allexport
នាំចេញអថេរទាំងអស់ដែលបានកំណត់ទៅ។ (UNIMPLEMENTED សម្រាប់ 4.4 ស្លាយ)
-c
អានពាក្យបញ្ជាពីបន្ទាត់ពាក្យបញ្ជា។ គ្មានពាក្យបញ្ជានឹងត្រូវបានអានពីការបញ្ចូលស្តង់ដារ។
-C noclobber
កុំសរសេរជាន់លើឯកសារដែលមានជាមួយ ``> '' (UNIMPLEMENTED សម្រាប់ 4.4 ក្រាហ្វ)
-e ចៃដន្យ
ប្រសិនបើមិនមានអន្តរកម្មទេសូមចាកចេញភ្លាមៗប្រសិនបើមានពាក្យសម្ងាត់ដែលមិនបានធ្វើរួច។ ស្ថានភាពចេញរបស់ពាក្យបញ្ជាមួយត្រូវបានចាត់ទុកថាត្រូវបានសាកល្បងយ៉ាងជាក់លាក់ប្រសិនបើពាក្យបញ្ជាត្រូវបានប្រើដើម្បីត្រួតត្រា ប្រសិនបើ elif ខណៈពេល ឬ រហូតដល់ ឬប្រសិនបើពាក្យបញ្ជាគឺជា operand `` && '' ឬ `` || '' ខាងឆ្វេង។
-f noglob
បិទដំណើរការពង្រីក ឈ្មោះផ្លូវ ។
-n noexec
បើមិនអន្តរកម្មទេអានបញ្ជាប៉ុន្តែកុំប្រតិបត្តិពួកវា។ វាមានប្រយោជន៍សម្រាប់ការពិនិត្យវាក្យសម្ព័ន្ធស្គ្រីបសែល។
-u nounset
សរសេរសារទៅកំហុសស្តង់ដារនៅពេលប៉ុនប៉ងពង្រីកអថេរដែលមិនត្រូវបានកំណត់ហើយប្រសិនបើសែលមិនមានអន្តរសកម្មចេញភ្លាមៗ។ (UNIMPLEMENTED សម្រាប់ 4.4 ស្លាយ)
-v verbose
សែលសរសេរការបញ្ចូលរបស់វាទៅជាកំហុសស្តង់ដាដូចដែលវាត្រូវបានអាន។ មានប្រយោជន៍សម្រាប់បំបាត់កំហុស។
-x xtrace
សរសេរពាក្យបញ្ជានីមួយៗទៅ កំហុសស្តង់ដារ (មុនដោយ `+ 'មុនពេលវាត្រូវបានប្រតិបត្តិ។ មានប្រយោជន៍សម្រាប់ការបំបាត់កំហុស។
-q quietprofile
ប្រសិនបើជម្រើស - v ឬ - x ត្រូវបានកំណត់កុំអនុវត្តពួកវានៅពេលអានឯកសារចាប់ផ្ដើមដែលទាំងនេះត្រូវបាន / etc / profile ។ profile និងឯកសារដែលបានបញ្ជាក់ដោយអថេរបរិស្ថាន ENV ។
- ខ្ញុំមិន អើពើ
មិនអើពើធាតុរបស់ EOF ពីការបញ្ចូលនៅពេលអន្តរកម្ម។
-i អន្តរកម្ម
បង្ខំសែលអោយមានឥរិយាបថអន្តរកម្ម។
-m
បើកការត្រួតពិនិត្យការងារ (កំណត់ដោយស្វ័យប្រវត្តិនៅពេលអន្តរសកម្ម) ។
-s stdin
អានពាក្យបញ្ជាពី ការបញ្ចូលស្តង់ដារ (កំណត់ដោយស្វ័យប្រវត្តិបើមិនមានអាគុយម៉ង់ឯកសារទេ) ។ ជម្រើសនេះមិនមានប្រសិទ្ធិភាពទេនៅពេលកំណត់បន្ទាប់ពីសែលបានរត់រួចហើយ (ឧទាហរណ៍ជាមួយសំណុំ (1)) ។
-V vi
បើកកម្មវិធីកែសម្រួលបន្ទាត់ពាក្យបញ្ជា vi (1) ដែលភ្ជាប់មកជាមួយ (បិទ - អ៊ី បើវាត្រូវបានកំណត់) ។
-E emacs
បើកកម្មវិធីនិពន្ធបន្ទាត់ emacs ដែលមានស្រាប់ (1) (បិទ - V បើវាត្រូវបានកំណត់) ។
-b ជូនដំណឹង
បើកដំណើរការការជូនដំណឹងអសមកាលនៃការបំពេញការងារផ្ទៃខាងក្រោយ។ (UNIMPLEMENTED សម្រាប់ 4.4 ស្លាយ)
រចនាប័ទ្ម Lexical
សែលអានការបញ្ចូលតាមបន្ទាត់ពីឯកសារនិងបំបែកវាជាពាក្យនៅចន្លោះ (ទទេនិងថេប) និងនៅលំដាប់តួអក្សរជាក់លាក់ដែលពិសេសចំពោះសែលដែលហៅថា `` operators '' មានសញ្ញាប្រមាណវិធីពីរប្រភេទ: សញ្ញាប្រមាណវិធីបញ្ជានិងប្រតិបត្តិករប្ដូរទិស (អត្ថន័យរបស់ពួកវាត្រូវបានពិភាក្សានៅពេលក្រោយ) ។ ខាងក្រោមនេះគឺជាបញ្ជីនៃប្រតិបត្តិករ:
"ប្រតិបត្តិករត្រួតពិនិត្យ:"
&& () & # 160; ; | || <បន្ទាត់ថ្មី>
"ប្រតិបត្តិករប្តូរទិស:"
<>> | << >> <&> - << - <>
សម្រង់
ការដកស្រង់ត្រូវបានប្រើដើម្បីយកអត្ថន័យពិសេសនៃតួអក្សរជាក់លាក់ឬពាក្យទៅកាន់សែលដូចជាសញ្ញាប្រមាណវិធីដកឃ្លាឬពាក្យគន្លឹះ។ មានសម្រង់ 3 ប្រភេទ: សម្រង់ទោលតែមួយគត់សញ្ញាសម្រង់ទ្វេដែលត្រូវគ្នានិងសញ្ញា \\ ។
សញ្ញាឆាក
សញ្ញា \ ការពាររក្សាអត្ថន័យតាមព្យញ្ជនៈនៃតួអក្សរដូចខាងក្រោមដោយលើកលែងតែបន្ទាត់ថ្មីរបស់ Aq ។ សញ្ញា \ "សញ្ញា \ 'ដែលនៅខាងមុខបន្ទាត់ថ្មី Aq ត្រូវបានចាត់ទុកជាបន្ទាត់បន្ត។
សម្រង់មួយ
ការភ្ជាប់តួអក្សរនៅក្នុងសញ្ញាសម្រង់តែមួយរក្សាអត្ថន័យព្យញ្ជនៈនៃតួអក្សរទាំងអស់ (លើកលែងតែសញ្ញាសម្រង់តែមួយដែលធ្វើឱ្យវាមិនអាចដាក់សញ្ញាតែមួយក្នុងខ្សែអក្សរដែលបានដកស្រង់មួយបានទេ) ។
សម្រង់ទ្វេ
តួអក្សរបញ្ជូលក្នុងសញ្ញាសម្រង់ទ្វេរក្សាអត្ថន័យរបស់តួអង្គទាំងអស់លើកលែងតែ backign ($) backside (`) និងសញ្ញា (\) សញ្ញាឆេកនៅក្នុងទ្វេរដងគឺជាប្រវត្តិសាស្ត្រចំលែកហើយប្រើដើម្បីដកស្រង់តួអក្សរដូចខាងក្រោម:
$ `\ <បន្ទាត់ថ្មី>
បើមិនដូច្នោះទេវានៅតែជាព្យញ្ជនៈ។
ពាក្យបម្រុង
ពាក្យរក្សាទុកគឺជាពាក្យដែលមានអត្ថន័យពិសេសចំពោះសែលនិងត្រូវបានទទួលស្គាល់នៅដើមបន្ទាត់និងបន្ទាប់ពីសញ្ញាប្រមាណវិធីបញ្ជា។ ខាងក្រោមនេះគឺជាពាក្យដែលបម្រុងទុក:
! Ta elif Ta Ta Ta ខណៈពេលដែលករណីរបស់ Ta
អញ្ចឹងខ្ញុំតាសម្រាប់ខ្ញុំតាតាតា
តើអ្នក ធ្វើតារហូតដល់តាបើតាអេស
អត្ថន័យរបស់ពួកគេត្រូវបានពិភាក្សានៅពេលក្រោយ។
ឈ្មោះក្លែងក្លាយ
ឈ្មោះក្លែងក្លាយគឺជាឈ្មោះនិងតម្លៃដែលត្រូវគ្នាដោយប្រើពាក្យបញ្ជា builtin ឈ្មោះក្លែងក្លាយ (1) ។ នៅពេលណាដែលពាក្យបម្រុងទុកអាចកើតឡើង (មើលខាងលើ) ហើយបន្ទាប់ពីពិនិត្យមើលពាក្យដែលបម្រុងសែលពិនិត្យមើលពាក្យដើម្បីមើលថាតើវាផ្គូផ្គងឈ្មោះក្លែងក្លាយដែរឬទេ។ ប្រសិនបើវាធ្វើវាជំនួសវានៅក្នុងស្ទ្រីមបញ្ចូលជាមួយតម្លៃរបស់វា។ ឧទាហរណ៍ប្រសិនបើមានឈ្មោះក្លែងក្លាយដែលគេហៅថា `` lf '' ជាមួយតម្លៃ `` ls -F '' បន្ទាប់មកបញ្ចូល:
lf foobar <ត្រឡប់>
នឹងក្លាយជា
ls -F foobar
ឈ្មោះក្លែងក្លាយផ្តល់នូវមធ្យោបាយងាយស្រួលសម្រាប់អ្នកប្រើដែលឆោតល្ងង់ដើម្បីបង្កើតពាក្យបញ្ជាសម្រាប់ពាក្យបញ្ជាដោយមិនចាំបាច់រៀនពីរបៀបបង្កើតអនុគមន៍ជាមួយអាគុយម៉ង់។ ពួកវាក៏អាចត្រូវបានប្រើដើម្បីបង្កើតកូដមិនច្បាស់លាស់។ ការប្រើប្រាស់នេះមិនត្រូវបានលើកទឹកចិត្តទេ។
ពាក្យបញ្ជា
សែលបកប្រែពាក្យដែលវាអានតាមភាសាមួយដែលបញ្ជាក់ពីខាងក្រៅវិសាលភាពនៃទំព័របុរសនេះ (យោងលើ BNF នៅក្នុងឯកសារ POSIX 1003.2) ។ សំខាន់បើទោះបីជាបន្ទាត់ត្រូវបានអានហើយបើពាក្យដំបូងនៃបន្ទាត់ (ឬបន្ទាប់ពីសញ្ញាប្រមាណវិធីបញ្ជា) មិនមែនជាពាក្យបម្រុងនោះសែលបានទទួលស្គាល់ពាក្យបញ្ជាសាមញ្ញ។ បើមិនដូច្នោះទេពាក្យបញ្ជាស្មុគស្មាញឬការសាងសង់ពិសេសមួយចំនួនផ្សេងទៀតប្រហែលជាត្រូវបានទទួលស្គាល់។
ពាក្យបញ្ជាសាមញ្ញ
ប្រសិនបើពាក្យបញ្ជាសាមញ្ញត្រូវបានទទួលស្គាល់សែលនឹងធ្វើសកម្មភាពដូចខាងក្រោម:
- ពាក្យឈានមុខគេនៃទំរង់ `` name = value '' ត្រូវបានដកចេញហើយត្រូវបានផ្តល់ឱ្យចំពោះបរិស្ថាននៃពាក្យបញ្ជាសាមញ្ញ។ សញ្ញាប្រមាណវិធីប្តូរទិសនិងអាគុយម៉ង់របស់ពួកវា (ដូចបានពិពណ៌នាខាងក្រោម) ត្រូវបានបិទនិងរក្សាទុកដើម្បីដំណើរការ។
- ពាក្យដែលនៅសល់ត្រូវបានពង្រីកដូចដែលបានពណ៌នានៅក្នុងផ្នែកដែលត្រូវបានគេហៅថា "ការពង្រីក" ហើយពាក្យដែលនៅសល់ដំបូងគេត្រូវបានគេចាត់ទុកថាជាឈ្មោះពាក្យបញ្ជានិងពាក្យបញ្ជាស្ថិតនៅ។ ពាក្យដែលនៅសល់ត្រូវបានចាត់ទុកជាអាគុយម៉ង់នៃពាក្យបញ្ជា។ ប្រសិនបើគ្មានឈ្មោះលទ្ធផលទេនោះកិច្ចការ `` name = value '' ត្រូវបានទទួលស្គាល់ក្នុងធាតុ 1 ប៉ះពាល់សែលបច្ចុប្បន្ន។
- ការប្តូរទិសដៅត្រូវបានអនុវត្តដូចដែលបានពណ៌នានៅក្នុងផ្នែកបន្ទាប់។
ការប្តូរទិស
ការប្តូរទិសត្រូវបានប្រើដើម្បីផ្លាស់ប្តូរកន្លែងដែលពាក្យបញ្ជាអានធាតុបញ្ចូលរបស់វាឬបញ្ជូនលទ្ធផលរបស់វា។ ជាទូទៅការប្តូរទិសបើកបើកបិទឬស្ទួនសេចក្តីយោងដែលមានស្រាប់ទៅឯកសារ។ ទ្រង់ទ្រាយរួមសម្រាប់ការប្តូរទិសគឺ:
[n] redir-op ឯកសារ
កន្លែងដែល redir-op គឺជាប្រតិបត្តិករប្ដូរទិសដែលបានរៀបរាប់ពីមុន។ ខាងក្រោមនេះគឺជាបញ្ជីនៃការបញ្ជូនបន្ត។ Bq n គឺជាលេខស្រេចចិត្តដូចក្នុង `3 '(មិនមែន` Bq 3' ដែលសំដៅទៅអ្នកពិពណ៌នាឯកសារ។
[n]> ឯកសារ
ប្ដូរទិសលទ្ធផលស្តង់ដារ (ឬ n) ទៅឯកសារ។
[n]> | ឯកសារ
ដូចគ្នាដែរប៉ុន្តែបដិសេធជម្រើស C ។
[n] >> ឯកសារ
បន្ថែមលទ្ធផលស្តង់ដារ (ឬ n) ទៅឯកសារ។
[n] <ឯកសារ
ប្តូរទិសបញ្ចូលស្តង់ដារ (ឬ n) ពីឯកសារ។
[n1] <& nbsp
ស្ទួនបញ្ចូលស្តង់ដារ (ឬ n1) ពីអ្នកពិពណ៌នាឯកសារ n2 ។
[n] <& -
បិទការបញ្ចូលស្តង់ដារ (ឬ n) ។
[n1]> n2
ស្ទួនទិន្នផលស្ដង់ដារ (ឬ n1) ពី n2 ។
[n]> -
បិទទិន្នផលស្តង់ដារ (ឬ n) ។
[n] <> ឯកសារ
បើកឯកសារសម្រាប់អាននិងសរសេរលើការបញ្ចូលស្តង់ដារ (ឬ n) ។
ការបញ្ជូនបន្តដូចខាងក្រោមត្រូវបានគេហៅថា `ឯកសារនៅទីនេះ '
[n] << អ្នកកំណត់ព្រំដែន
នៅទីនេះ - អត្ថបទ - អត្ថបទ ...
អ្នកកំណត់ព្រំដែន
អក្សរទាំងអស់នៅលើខ្សែបន្តបន្ទាប់រហូតដល់អ្នកកំណត់ព្រំដែនត្រូវបានរក្សាទុកនិងធ្វើឱ្យមានពាក្យបញ្ជាលើការបញ្ចូលស្តង់ដារឬកម្មវិធីពិពណ៌នាឯកសារបើវាត្រូវបានបញ្ជាក់។ ប្រសិនបើអ្នកកំណត់ព្រំដែនដូចដែលបានបញ្ជាក់នៅលើបន្ទាត់ដំបូងត្រូវបានដកស្រង់នោះអត្ថបទនៅទីនេះត្រូវបានចាត់ទុកជាព្យញ្ជនៈបើមិនដូច្នោះទេអត្ថបទត្រូវបានពង្រីកការប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធ (ដូចបានរៀបរាប់នៅក្នុងផ្នែក "ការពង្រីក") ។ 'ប្រសិនបើប្រតិបត្តិករគឺ `` << -' 'ជំនួសឱ្យ `` <<' 'នោះផ្ទាំងនាំមុខក្នុងអត្ថបទនៅទីនេះត្រូវបានយកចេញ។
ស្វែងរកនិងប្រតិបត្តិ
មានពាក្យបញ្ជាបីប្រភេទ: មុខងារសែលពាក្យបញ្ជា builtin និងកម្មវិធីធម្មតា - ហើយពាក្យបញ្ជាត្រូវបានស្វែងរក (តាមឈ្មោះ) ក្នុងលំដាប់នោះ។ ពួកវានីមួយៗត្រូវបានប្រតិបត្តិតាមវិធីផ្សេងគ្នា។
នៅពេលអនុគមន៍សែលត្រូវបានប្រតិបត្តិប៉ារ៉ាម៉ែត្រនៃទីតាំងសែលទាំងអស់ (លើកលែងតែ $ 0 ដែលមិនផ្លាស់ប្តូរ) ត្រូវបានកំណត់ទៅអាគុយម៉ង់នៃអនុគមន៍សែល។ អថេរដែលត្រូវបានដាក់យ៉ាងជាក់លាក់នៅក្នុងបរិស្ថាននៃពាក្យបញ្ជា (ដោយការដាក់កិច្ចការទៅពួកគេមុនឈ្មោះអនុគមន៍) ត្រូវបានបង្កើតជាមូលដ្ឋានទៅមុខងារនិងត្រូវបានកំណត់ទៅតម្លៃដែលបានផ្តល់ឱ្យ។ បន្ទាប់មកពាក្យបញ្ជាដែលបានផ្ដល់ក្នុងនិយមន័យអនុគមន៍ត្រូវបានប្រតិបត្តិ។ ប៉ារ៉ាម៉ែត្រទីតាំងត្រូវបានស្ដារឡើងវិញទៅតម្លៃដើមរបស់ពួកគេនៅពេលពាក្យបញ្ជាបានបញ្ចប់។ ទាំងអស់នេះកើតឡើងនៅក្នុងសែលបច្ចុប្បន្ន។
សឺឡែនសែលត្រូវបានប្រតិបត្តិនៅខាងក្នុងដើម្បីសែលដោយគ្មានពងបែកដំណើរការថ្មី។
បើមិនដូច្នោះទេប្រសិនបើឈ្មោះពាក្យបញ្ជាមិនត្រូវគ្នានឹងមុខងារឬ builtin ពាក្យបញ្ជាត្រូវបានស្វែងរកជាកម្មវិធីធម្មតានៅក្នុងប្រព័ន្ធឯកសារ (ដូចបានរៀបរាប់នៅផ្នែកបន្ទាប់) ។ នៅពេលដែលកម្មវិធីធម្មតាត្រូវបានប្រតិបត្តិសែលដំណើរការកម្មវិធីបញ្ជូនអាគុយម៉ង់និងបរិស្ថានទៅកម្មវិធី។ ប្រសិនបើកម្មវិធីមិនមែនជាឯកសារដែលអាចប្រតិបត្តិបានធម្មតា (ឧទាហរណ៍បើវាមិនចាប់ផ្តើមដោយ "លេខវេទមន្ត" ដែលតំណាង ASCII គឺ "#!" ដូច្នេះ execve (2) ត្រឡប់ Er ENOEXEC បន្ទាប់មកសែលនឹងបកប្រែកម្មវិធីក្នុង subshell ។ សែលកូននឹងចាប់ផ្ដើមឡើងវិញដោយខ្លួនវាផ្ទាល់ក្នុងករណីនេះដូច្នេះប្រសិទ្ធិភាពនឹងដូចជាប្រសិនបើសែលថ្មីត្រូវបានហៅដើម្បីដោះស្រាយស្គ្រីបស្គ្រីបអាដហុកនោះទេលើកលែងតែទីតាំងរបស់ពាក្យបញ្ជាដែលបានដាក់នៅក្នុងសែលមេនឹងត្រូវបានចងចាំដោយ កូន។
ចំណាំថាកំណែមុននៃឯកសារនេះនិងកូដប្រភពខ្លួនវាខុសឆ្គងហើយជាយថាហេតុសំដៅទៅលើស្គ្រីបសែលដោយគ្មានលេខមន្តជា "វេទិកាសែល" ។
ស្វែងរកផ្លូវ
ពេលដែលរកទីតាំងពាក្យបញ្ជាសែលដំបូងមើលដើម្បីឱ្យដឹងថាវាមានមុខងារសែលដោយឈ្មោះនោះ។ បន្ទាប់មកវារកមើលពាក្យបញ្ជា builtin ដោយឈ្មោះនោះ។ ប្រសិនបើពាក្យបញ្ជា builtin មិនត្រូវបានរកឃើញមានរឿងពីរកើតឡើង:
- ឈ្មោះពាក្យបញ្ជាដែលមានសញ្ញាវាស់ត្រូវបានប្រតិបត្តិដោយមិនចាំបាច់ធ្វើការស្វែងរកទេ។
- សែលស្វែងរកពាក្យនីមួយៗនៅក្នុង PATH ដើម្បីបញ្ជា។ តម្លៃនៃអថេរ PATH គួរតែជាស៊េរីធាតុដែលបានបំបែកដោយសញ្ញាចុចពីរ។ ធាតុនីមួយៗមានឈ្មោះថត។ ថតបច្ចុប្បន្នអាចត្រូវបានចង្អុលបង្ហាញដោយឈ្មោះថតទទេរឬយ៉ាងជាក់លាក់ដោយកំឡុងពេលតែមួយ។
ស្ថានភាពចាកចេញពីពាក្យបញ្ជា
ពាក្យបញ្ជានីមួយៗមានស្ថានភាពចេញដែលអាចមានឥទ្ធិពលលើឥរិយាបទនៃពាក្យបញ្ជាសែលផ្សេងទៀត។ គំរូគឺថាពាក្យបញ្ជាមួយចេញដោយសូន្យសម្រាប់ធម្មតាឬជោគជ័យហើយមិនមែនសូន្យចំពោះកំហុសបរាជ័យឬការបញ្ជាក់មិនពិត។ ទំព័រមេសម្រាប់ពាក្យបញ្ជានីមួយៗគួរតែបង្ហាញលេខកូដចេញនិងអ្វីដែលពួកគេចង់និយាយ។ លើសពីនេះពាក្យបញ្ជា builtin ត្រឡប់កូដចេញដូចទៅនឹងមុខងារសែលដែលបានប្រតិបត្តិ។
ពាក្យបញ្ជាស្មុគ្រស្មាញ
ពាក្យបញ្ជាស្មុគ្រស្មាញគឺជាបន្សំនៃពាក្យបញ្ជាសាមញ្ញជាមួយសញ្ញាប្រមាណវិធីបញ្ជាឬពាក្យបម្រុងរួមគ្នាបង្កើតពាក្យបញ្ជាស្មុគ្រស្មាញធំជាងមុន។ ជាទូទៅពាក្យបញ្ជាមួយគឺដូចខាងក្រោម:
- ពាក្យបញ្ជាសាមញ្ញ
- បំពង់បង្ហូរ
- បញ្ជីឬបរិវេណបញ្ជី
- ពាក្យបញ្ជាសមាសធាតុ
- និយមន័យអនុគមន៍
លើកលែងតែបានបញ្ជាក់លក្ខខណ្ឌចេញរបស់ពាក្យបញ្ជាគឺថាពាក្យបញ្ជាសាមញ្ញចុងក្រោយដែលប្រតិបត្តិដោយពាក្យបញ្ជា។
បំពង់បង្ហូរទឹក
បំពង់បណ្តាញគឺជាលំដាប់នៃពាក្យបញ្ជាមួយឬច្រើនដែលបំបែកដោយប្រតិបត្តិករវត្ថុបញ្ជា។ លទ្ធផលស្តង់ដារទាំងអស់ប៉ុន្តែពាក្យបញ្ជាចុងក្រោយត្រូវបានភ្ជាប់ទៅការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជាបន្ទាប់។ លទ្ធផលស្តង់ដារនៃពាក្យបញ្ជាចុងក្រោយគឺត្រូវបានទទួលពីសែលជាធម្មតា។
ទម្រង់សម្រាប់បំពង់បង្ហូរប្រេងមួយគឺ:
[!] ពាក្យបញ្ជា 1 [| ពាក្យបញ្ជា 2 ... ]
លទ្ធផលស្តង់ដារនៃពាក្យបញ្ជា 1 ត្រូវបានភ្ជាប់ទៅនឹងការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជា2។ ការបញ្ចូលស្តង់ដារទិន្នផលស្តង់ដារឬពាក្យបញ្ជាពីរត្រូវបានចាត់ទុកថាត្រូវបានផ្ដល់ដោយបំពង់បង្ហូរមុនពេលប្តូរទិសដៅដែលបានបញ្ជាក់ដោយសញ្ញាប្រមាណវិធីប្ដូរទិសដែលជាផ្នែកនៃពាក្យបញ្ជា។
ប្រសិនបើបំពង់បង្ហូរមិនស្ថិតនៅក្នុងផ្ទៃខាងក្រោយទេ (បានពិភាក្សានៅពេលក្រោយ) សែលរង់ចាំការបញ្ជាទាំងអស់ត្រូវបញ្ចប់។
ប្រសិនបើពាក្យបម្រុង! មិនដើរពីបំពង់បង្ហូរនោះស្ថានភាពចេញគឺជាស្ថានភាពចេញរបស់ពាក្យបញ្ជាចុងក្រោយដែលបានបញ្ជាក់ក្នុងបំពង់។ បើមិនដូច្នោះទេស្ថានភាពចេញគឺជាឡូជីខលនៃស្ថានភាពចេញនៃពាក្យបញ្ជាចុងក្រោយ។ នោះគឺប្រសិនបើពាក្យបញ្ជាចុងក្រោយត្រឡប់សូន្យនោះស្ថានភាពចេញគឺ 1; ប្រសិនបើពាក្យបញ្ជាចុងក្រោយត្រឡប់ធំជាងសូន្យនោះស្ថានភាពចាកចេញគឺសូន្យ។
ពីព្រោះការបញ្ជូនទិន្នន័យនៃការបញ្ចូលស្តង់ដារឬទិន្នផលស្តង់ដារឬទាំងពីរកើតឡើងមុនពេលប្តូរទិសវាអាចត្រូវបានកែប្រែដោយការប្តូរទិស។ ឧទាហរណ៍:
$ command1 2> & 1 | command2
ផ្ញើទាំងលទ្ធផលស្តង់ដារនិងកំហុសស្តង់ដារនៃពាក្យបញ្ជា 1 ទៅការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជា2។
A; ឬបន្ទាត់ថ្មី
ចំណាំថាមិនដូចសែលមួយចំនួនដំណើរការនីមួយៗនៅក្នុងបំពង់បង្ហូរគឺជាកូនរបស់សែលហៅ (លុះត្រាតែវាជាសែលដែលបានសាងសង់ក្នុងករណីដែលវាប្រតិបត្តិក្នុងសែលបច្ចុប្បន្នប៉ុន្តែផលប៉ះពាល់ដែលវាមានលើបរិស្ថានត្រូវបានលុបចោល) ។
ពាក្យបញ្ជាផ្ទៃខាងក្រោយ -
ប្រសិនបើពាក្យបញ្ជាត្រូវបានបញ្ចប់ដោយសញ្ញាប្រមាណវិធីបញ្ជា ampersand (&) សែលប្រតិបត្តិពាក្យសម្ងាត់អសមកាល - នោះសែលមិនរង់ចាំពាក្យបញ្ជាបញ្ចប់មុននឹងប្រតិបត្តិពាក្យបញ្ជាបន្ទាប់។
ទ្រង់ទ្រាយសម្រាប់ដំណើរការពាក្យបញ្ជានៅផ្ទៃខាងក្រោយគឺ:
ពាក្យបញ្ជា 1 & [command2 & ... ]
ប្រសិនបើសែលមិនមានអន្តរសកម្មការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជាអសមកាលត្រូវបានកំណត់ជា / dev / null
បញ្ជី - និយាយជាទូទៅ
បញ្ជីគឺលំដាប់នៃពាក្យបញ្ជាសូន្យឬច្រើនដែលបំបែកដោយបន្ទាត់ថ្មី, សញ្ញាព្រួញឬសញ្ញាព្រួញនិងបានបញ្ចប់ដោយជម្រើសណាមួយក្នុងចំណោមតួអក្សរទាំងបីនេះ។ ពាក្យបញ្ជាក្នុងបញ្ជីត្រូវបានប្រតិបត្តិតាមលំដាប់ដែលពួកវាត្រូវបានសរសេរ។ ប្រសិនបើពាក្យបញ្ជាត្រូវបានបន្តដោយអាំងភ្លាសសែលចាប់ផ្ដើមពាក្យបញ្ជាហើយភ្លាមៗបន្តទៅពាក្យបញ្ជាបន្ទាប់។ បើមិនដូច្នេះទេវារង់ចាំពាក្យបញ្ជាបញ្ចប់មុនពេលបន្តទៅមុខទៀត។
ប្រតិបត្តិករបញ្ជីខ្លី
`` && '' និង `` || '' គឺជាប្រតិបត្តិករបញ្ជីឈ្មោះ។ `` && '' ប្រតិបត្តិពាក្យបញ្ជាដំបូងហើយបន្ទាប់មកប្រតិបត្តិពាក្យបញ្ជាទីពីរបើអាយត្រាស្ថានភាពចេញរបស់ពាក្យបញ្ជាដំបូងគឺសូន្យ។ `` || '' គឺស្រដៀងគ្នាប៉ុន្តែប្រតិបត្តិពាក្យបញ្ជាទីពីរប្រសិនបើ f ស្ថានភាពនៃការចាកចេញដំបូងនៃពាក្យបញ្ជាគឺ nonzero ។ `` && '' និង `` || '' ទាំងពីរមានអាទិភាពដូចគ្នា។
ការសាងសង់លំហូរ - ប្រសិនបើ, ខណៈពេល, សម្រាប់, ករណី
វាក្យសម្ពន្ធនៃពាក្យបញ្ជា if
ប្រសិនបើបញ្ជី
បន្ទាប់មកបញ្ជី
[បញ្ជី elif
បន្ទាប់មកចុះបញ្ជី] ...
[បញ្ជីផ្សេងទៀត]
fi
វាក្យសម្ពន្ធពាក្យបញ្ជាខណៈពេល
ខណៈពេលដែលបញ្ជី
ធ្វើបញ្ជី
បានធ្វើ
បញ្ជីពីរត្រូវបានប្រតិបត្តិម្តងហើយម្តងទៀតខណៈពេលដែលស្ថានភាពចេញនៃបញ្ជីទីមួយគឺសូន្យ។ ពាក្យបញ្ជារហូតដល់ពាក្យស្រដៀងគ្នាប៉ុន្តែមានពាក្យរហូតដល់ជំនួសកន្លែងដែលធ្វើឱ្យវាកើតឡើងវិញរហូតដល់ស្ថានភាពចេញពីបញ្ជីដំបូងគឺសូន្យ។
វាក្យសម្ពន្ធនៃពាក្យបញ្ជាគឺ
សម្រាប់អថេរក្នុងពាក្យ ...
ធ្វើបញ្ជី
បានធ្វើ
ពាក្យត្រូវបានពង្រីកហើយបន្ទាប់មកបញ្ជីត្រូវបានគេប្រតិបត្តិម្តងហើយម្តងទៀតជាមួយអថេរដែលបានកំណត់ទៅពាក្យនីមួយៗ។ ធ្វើនិងធ្វើរួចអាចត្រូវបានជំនួសដោយ `` {'' និង ``} ''
វាក្យសម្ពន្ធនៃការបំបែកនិងបន្តពាក្យបញ្ជាគឺ
បំបែក [លេខ]
បន្ត [លេខ]
សម្រាកបញ្ចប់លេខនៅខាងក្នុងបំផុតឬពេលរង្វិលជុំ។ បន្តបន្តជាមួយការនិយាយបន្ទាប់នៃរង្វិលជុំខាងក្នុងបំផុត។ ទាំងនេះត្រូវបានអនុវត្តជាពាក្យបញ្ជាខាងក្នុង។
វាក្យសម្ពន្ធនៃពាក្យបញ្ជាករណីគឺ
ពាក្យនៅក្នុង
គំរូ);
...
esac
លំនាំអាចជាលំនាំមួយឬច្រើនជាងនេះ (សូមមើលលំនាំសែលដែលបានពិពណ៌នានៅពេលក្រោយ) ដែលបំបែកដោយតួអក្សរ `` "។
ដាក់ក្រុមរួមគ្នាជាមួយគ្នា
ពាក្យបញ្ជាអាចត្រូវបានដាក់ជាក្រុមដោយសរសេរទាំង
(បញ្ជី)
ឬ
{បញ្ជី;
នេះជាលើកដំបូងនៃការប្រតិបត្តិពាក្យបញ្ជានៅក្នុង subshell មួយ។ ពាក្យបញ្ជា Builtin ដាក់ជាក្រុមទៅក្នុងបញ្ជី (បញ្ជី) នឹងមិនប៉ះពាល់ដល់សែលបច្ចុប្បន្នទេ។ សំណុំបែបបទទីពីរមិនបាន fork សែលផ្សេងទៀតដូច្នេះគឺមានប្រសិទ្ធិភាពបន្តិចបន្ថែមទៀត។ ការដាក់បញ្ចូលពាក្យបញ្ជារួមគ្នាតាមវិធីនេះអនុញ្ញាតឱ្យអ្នកប្តូរទិសលទ្ធផលរបស់ពួកគេដូចដែលពួកគេគឺជាកម្មវិធីមួយ:
{printf hello; printf world \ n ";}> ស្វាគមន៍
អនុគមន៍
វាក្យសម្ពន្ធនៃនិយមន័យអនុគមន៍មួយគឺ
ឈ្មោះ ()
និយមន័យអនុគមន៍មួយគឺជាសេចក្តីថ្លែងការណ៍ដែលអាចប្រតិបត្តិបាន។ នៅពេលប្រតិបត្តិវាដំឡើងមុខងារដែលមានឈ្មោះឈ្មោះនិងត្រឡប់ស្ថានភាពចាកចេញពីសូន្យ។ ពាក្យបញ្ជាជាធម្មតាជាបញ្ជីដែលបានភ្ជាប់រវាង `` {'' និង ``} ''
អថេរអាចត្រូវបានប្រកាសជាមូលដ្ឋានចំពោះអនុគមន៍មួយដោយប្រើពាក្យបញ្ជាមូលដ្ឋាន។ វាគួរលេចឡើងជាសេចក្តីថ្លែងការណ៍ដំបូងនៃអនុគមន៍មួយហើយវាក្យសម្ព័ន្ធគឺ
មូលដ្ឋាន [អថេរ -] ...
មូលដ្ឋានត្រូវបានអនុវត្តជាពាក្យបញ្ជា builtin ។
នៅពេលអថេរត្រូវបានធ្វើមូលដ្ឋានវាទទួលបាននូវតម្លៃដំបូងនិងទង់ដែលបាននាំចេញនិងអានតែមួយដងគត់ពីអថេរដែលមានឈ្មោះដូចគ្នានៅក្នុងវិសាលភាពជុំវិញប្រសិនបើមាន។ បើមិនដូច្នោះទេអថេរត្រូវបានកំណត់មិនចាប់ផ្តើម។ សែលប្រើវិសាលភាពថាមវន្តដូច្នេះប្រសិនបើអ្នកធ្វើអថេរ x មូលដ្ឋានដើម្បីដំណើរការ f ដែលបន្ទាប់មកហៅ function g សេចក្តីយោងទៅអថេរ x ដែលបានធ្វើនៅខាងក្នុង g នឹងយោងទៅអថេរ x ដែលបានប្រកាសនៅខាងក្នុង f, មិនមែនទៅអថេរសកលដែលមានឈ្មោះ x ។
ប៉ារ៉ាម៉ែត្រពិសេសតែមួយអាចត្រូវបានធ្វើមូលដ្ឋានគឺ `` - '' ការធ្វើ `` - '' មូលដ្ឋានជម្រើសសែលណាមួយដែលត្រូវបានផ្លាស់ប្តូរតាមរយៈពាក្យបញ្ជាកំណត់នៅខាងក្នុងមុខងារដែលត្រូវបានស្ដារឡើងវិញទៅតម្លៃដើមរបស់ពួកគេនៅពេលដែលអនុគមន៍ត្រឡប់។
វាក្យសម្ពន្ធនៃពាក្យបញ្ជាត្រឡប់គឺ
ត្រឡប់ [exitstatus
វាបញ្ចប់មុខងារបច្ចុប្បន្ន។ ត្រឡប់ត្រូវបានអនុវត្តជាពាក្យបញ្ជាដែលមានស្រាប់។
អថេរនិងប៉ារ៉ាម៉ែត្រ
សែលរក្សាសំណុំនៃប៉ារ៉ាម៉ែត្រ។ ប៉ារ៉ាម៉ែត្រដែលចង្អុលបង្ហាញដោយឈ្មោះមួយត្រូវបានគេហៅថាអថេរមួយ។ នៅពេលចាប់ផ្តើមសែលប្ដូរអថេរបរិស្ថានទាំងអស់ទៅជាអថេរសែល។ អថេរថ្មីអាចត្រូវបានកំណត់ដោយប្រើសំណុំបែបបទ
ឈ្មោះ = តម្លៃ
អថេរដែលកំណត់ដោយអ្នកប្រើត្រូវមានឈ្មោះតែម្នាក់គត់នៃអក្សរក្រមលេខនិងសញ្ញាគូសក្រោមដែលលេខទីមួយមិនត្រូវជាលេខទេ។ ប៉ារ៉ាម៉ែត្រក៏អាចត្រូវបានតាងដោយលេខឬតួអក្សរពិសេសដូចដែលបានពន្យល់ដូចខាងក្រោម។
ប៉ារ៉ាម៉ែត្រស្តង់ដារ
ប៉ារ៉ាម៉ែត្រទីតាំងគឺជាប៉ារ៉ាម៉ែត្រដែលតំណាងដោយលេខ (n> 0) ។ សែលកំណត់ទាំងនេះដំបូងចំពោះតម្លៃអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជារបស់វាដែលមានឈ្មោះស្គ្រីបសែល។ សំណុំ (1) builtin ក៏អាចត្រូវបានប្រើដើម្បីកំណត់ឬកំណត់ឡើងវិញ។
ប៉ារ៉ាម៉ែត្រពិសេស
ប៉ារ៉ាម៉ែត្រពិសេសគឺប៉ារ៉ាម៉ែត្រដែលមានសញ្ញាមួយនៃតួអក្សរពិសេសដូចខាងក្រោម។ តម្លៃនៃប៉ារ៉ាម៉ែត្រត្រូវបានរាយនៅជាប់តួអក្សររបស់វា។
*
ពង្រីកទៅប៉ារ៉ាម៉ែត្រទីតាំងចាប់ផ្តើមពីមួយ។ ពេលការពង្រីកកើតឡើងក្នុង ខ្សែអក្សរដែលបាន ដកស្រង់ទ្វេដងវាពង្រីកទៅវាលតែមួយដែលមានតម្លៃនៃប៉ារ៉ាម៉ែត្រនីមួយៗដែលបំបែកដោយតួអក្សរដំបូងនៃអថេរ IFS ឬដោយ
@
ពង្រីកទៅប៉ារ៉ាម៉ែត្រទីតាំងចាប់ផ្តើមពីមួយ។ នៅពេលការពង្រីកកើតឡើងនៅក្នុងសញ្ញាសម្រង់ពីរប៉ារ៉ាម៉ែត្រនីមួយៗពង្រីកជាអាគុយម៉ង់ដាច់ដោយឡែក។ ប្រសិនបើគ្មានប៉ារ៉ាម៉ែត្រទីតាំងទេការពង្រីក @ បង្កើតអាគុយម៉ង់សូន្យសូម្បីនៅពេល @ ត្រូវបានដកស្រង់ទ្វេ។ តើនេះមានន័យយ៉ាងដូចម្តេចឧទាហរណ៍ប្រសិនបើ $ 1 គឺ `` abc '' ហើយ $ 2 គឺ `` def ghi '' បន្ទាប់មក Qq $ @ ពង្រីកទៅអាគុយម៉ង់ពីរ:
abc ជម្រះ
#
ពង្រីកចំនួនប៉ារ៉ាម៉ែត្រទីតាំង។
?
ពង្រីកទៅស្ថានភាពចេញរបស់បំពង់បង្ហូរថ្មីបំផុត។
- (សហសញ្ញា។ )
ពង្រីកទៅទង់ជម្រើសបច្ចុប្បន្ន (ឈ្មោះជម្រើសអក្សរតែមួយដែលដាក់ក្នុងស៊ុម) ដូចដែលបានបញ្ជាក់លើការហៅដោយពាក្យបញ្ជា builtin ឬ implicitly ដោយសែល។
$
ពង្រីកទៅដំណើរការ ID នៃសែលដែលបានហៅ។ subshell រក្សាតម្លៃដូចគ្នានៃ $ ជាមេរបស់ខ្លួន។
!
ពង្រីកទៅដំណើរការ ID នៃពាក្យបញ្ជាផ្ទៃខាងក្រោយថ្មីបំផុតដែលប្រតិបត្តិពីសែលបច្ចុប្បន្ន។ សម្រាប់បំពង់បង្ហូរមួយលេខសម្គាល់ដំណើរការគឺថាពាក្យបញ្ជាចុងក្រោយនៅក្នុងបំពង់បង្ហូរ។
0 (សូន្យ) ។
ពង្រីកទៅជាឈ្មោះសែលឬសែលស្គ្រីប។
ការពង្រីកពាក្យ
ឃ្លានេះពិពណ៌នាអំពីការពង្រីកជាច្រើនដែលត្រូវបានអនុវត្តលើពាក្យ។ មិនមែនការពង្រីកទាំងអស់ត្រូវបានអនុវត្តលើគ្រប់ពាក្យដូចដែលបានពន្យល់នៅពេលក្រោយ។
ការពង្រីក Tilde ការពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជាការពង្រីកនព្វន្ធនិងការដកយកចេញដែលមាននៅក្នុងពាក្យតែមួយពង្រីកទៅវាលតែមួយ។ វាមានតែការបំបែកវាលឬការពង្រីកឈ្មោះផ្លូវដែលអាចបង្កើតវាលច្រើនពីពាក្យតែមួយ។ ការលើកលែងតែមួយចំពោះក្បួននេះគឺការពង្រីកប៉ារ៉ាម៉ែត្រពិសេស @ ក្នុងសញ្ញាសម្រង់ទ្វេរដូចដែលបានពិពណ៌នាខាងលើ។
លំដាប់នៃការពង្រីកពាក្យគឺ:
- ការពង្រីក Tilde ការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជា, ការពង្រីកនព្វន្ធ (ទាំងអស់នេះកើតឡើងក្នុងពេលតែមួយ) ។
- ការបំបែកវាលត្រូវបានអនុវត្តលើវាលដែលបានបង្កើតដោយជំហាន (1) លុះត្រាតែអថេរ IFS គ្មានតម្លៃ។
- ការពង្រីកឈ្មោះផ្លូវ (លុះត្រាតែកំណត់ - f មានប្រសិទ្ធិភាព) ។
- ដកចេញសម្រង់។
តួអក្សរ $ ត្រូវបានប្រើដើម្បីណែនាំការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជាឬការវាយតម្លៃនព្វន្ធ។
ការពង្រីក Tilde (ជំនួសថតផ្ទះរបស់អ្នកប្រើ)
ពាក្យដែលចាប់ផ្តើមជាមួយតួអក្សរសញ្ញា (~) មិនត្រូវបានបង្ហាញត្រូវបានពង្រីក។ តួអក្សរទាំងអស់ដែលមានសញ្ញា (/) ឬចុងពាក្យត្រូវបានចាត់ទុកជាឈ្មោះអ្នកប្រើហើយត្រូវបានជំនួសដោយថតផ្ទះរបស់អ្នកប្រើ។ ប្រសិនបើបាត់ឈ្មោះអ្នកប្រើ (ដូចនៅក្នុង ~ / foobar) tilde ត្រូវបានជំនួសដោយតម្លៃនៃអថេរ HOME (ថតផ្ទះរបស់អ្នកប្រើបច្ចុប្បន្ន) ។
ការពង្រីកប៉ារ៉ាម៉ែត្រ
ទ្រង់ទ្រាយសម្រាប់ការពង្រីកប៉ារ៉ាម៉ែត្រមានដូចខាងក្រោម:
ដែលកន្សោមមានតួអក្សរទាំងអស់រហូតដល់ផ្គូផ្គង `` `` '' '' ``} '' ដែលបានរត់ដោយសញ្ញា (\\) ឬនៅក្នុងខ្សែអក្សរដែលបានដកស្រង់ហើយតួអក្សរក្នុងការពង្រីកអទ្រីមីធីកជំនួសពាក្យបញ្ជានិងការពង្រីកអថេរមិនត្រូវបានពិនិត្យនៅក្នុងការកំណត់ ផ្គូផ្គង ``} ''
ទម្រង់សាមញ្ញបំផុតសម្រាប់ពង្រីកប៉ារ៉ាម៉ែត្រគឺ:
តម្លៃប្រសិនបើប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។
ឈ្មោះឬនិមិត្តសញ្ញាប៉ារ៉ាម៉ែត្រអាចត្រូវបានភ្ជាប់ក្នុងដង្កៀបដែលជាជម្រើសលើកលែងតែប៉ារ៉ាម៉ែត្រទីតាំងដែលមានច្រើនជាងមួយឬនៅពេលប៉ារ៉ាម៉ែត្រត្រូវបានបន្តដោយតួអក្សរដែលអាចត្រូវបានបកប្រែជាផ្នែកនៃឈ្មោះ។ ប្រសិនបើការពង្រីកប៉ារ៉ាម៉ែត្រកើតឡើងនៅខាងក្នុងសញ្ញាពីរ:
- ការពង្រីកឈ្មោះផ្លូវមិនត្រូវបានអនុវត្តលើលទ្ធផលនៃការពង្រីក។
- ការបំបែកវាលមិនត្រូវបានអនុវត្តលើលទ្ធផលនៃការពង្រីកទេលើកលែងតែ @ ។
លើសពីនេះការពង្រីកប៉ារ៉ាម៉ែត្រអាចត្រូវបានកែប្រែដោយប្រើទ្រង់ទ្រាយមួយក្នុងចំណោមទ្រង់ទ្រាយខាងក្រោម។
ប្រើតម្លៃលំនាំដើម។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬមិនពិតការពង្រីកពាក្យត្រូវបានជំនួស។ បើមិនដូច្នោះទេតម្លៃនៃប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។
ផ្ដល់តម្លៃលំនាំដើម។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬទទេការពង្រីកពាក្យត្រូវបានកំណត់ទៅប៉ារ៉ាម៉ែត្រ។ ក្នុងករណីទាំងអស់តម្លៃចុងក្រោយនៃប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។ មានតែអថេរមិនមែនប៉ារ៉ាម៉ែត្រទីតាំងឬប៉ារ៉ាម៉ែត្រពិសេសទេដែលអាចត្រូវបានផ្តល់តាមវិធីនេះ។
ចង្អុលបង្ហាញកំហុសប្រសិនបើគ្មានតម្លៃឬមិនកំណត់។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬមិនពិតការពង្រីកពាក្យ (ឬសារដែលចង្អុលបង្ហាញវាមិនត្រូវបានកំណត់ប្រសិនបើពាក្យត្រូវបានលុប) ត្រូវបានសរសេរទៅជាកំហុសឆ្គងស្តង់ដារនិងសែលចេញជាមួយស្ថានភាពចាកចេញពី nonzero ។ បើមិនដូច្នោះទេតម្លៃនៃប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។ សែលអន្តរកម្មមិនចាំបាច់ចេញ។
ប្រើតម្លៃជម្មើសជំនួស។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬមិនពិត null ត្រូវបានជំនួស; បើមិនដូច្នោះទេការពង្រីកពាក្យត្រូវបានជំនួស។
នៅក្នុងការពង្រីកប៉ារ៉ាម៉ែត្រដែលបានបង្ហាញពីមុនការប្រើសញ្ញាចុចនៅក្នុងទ្រង់ទ្រាយលទ្ធផលនៅក្នុងការធ្វើតេស្តសម្រាប់ប៉ារ៉ាម៉ែត្រដែលមិនត្រូវបានកំណត់ឬទទេ; omission នៃលទ្ធផលពហុកោណក្នុងការធ្វើតេស្តសម្រាប់ប៉ារ៉ាម៉ែត្រដែលត្រូវបានកំណត់តែប៉ុណ្ណោះ។
ប្រវែងស៊ុម។ ប្រវែងជាតួអក្សរនៃតម្លៃនៃប៉ារ៉ាម៉ែត្រ។
ពូជបួននៃការពង្រីកប៉ារ៉ាម៉ែត្រដូចខាងក្រោមផ្តល់សម្រាប់ដំណើរការស្រទាប់។ ក្នុងករណីនិមួយៗការកំណត់ផ្គូរផ្គងគំរូ (មើលលំនាំសែល) ជាជាងការកំណត់កន្សោមធម្មតាត្រូវបានប្រើដើម្បីវាយតម្លៃលំនាំ។ បើប៉ារ៉ាម៉ែត្រគឺ * ឬ @ លទ្ធផលនៃការពង្រីកមិនត្រូវបានបញ្ជាក់។ ការបញ្ចូលខ្សែពង្រីកពង្រីកប៉ារ៉ាម៉ែត្រពេញលេញក្នុងសញ្ញាសម្រង់ទ្វេមិនបង្កឱ្យតួអក្សរលំនាំបួនប្រភេទត្រូវបានដកស្រង់ខណៈការដកស្រង់តួអក្សរនៅក្នុងដង្កៀបមានប្រសិទ្ធិភាពនេះ។
យកលំនាំដើមតូចបំផុតចេញ។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលជាប៉ារ៉ាម៉ែត្រដែលមានផ្នែកតូចបំផុតនៃបច្ច័យដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។
លុបលំនាំស៊ុលធំបំផុត។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលនៅក្នុងប៉ារ៉ាម៉ែត្រដែលមានផ្នែកធំបំផុតនៃបច្ច័យដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។
លុបលំនាំដើមបុព្វបទតូចបំផុត។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលនៅក្នុងប៉ារ៉ាម៉ែត្រដែលមានផ្នែកតូចបំផុតនៃបុព្វបទដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។
យកលំនាំដើមបុព្វបទធំបំផុតចេញ។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលជាប៉ារ៉ាម៉ែត្រដោយភាគធំបំផុតនៃបុព្វបទដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។
ការជំនួសពាក្យបញ្ជា
ការជំនួសពាក្យបញ្ជា អនុញ្ញាតឱ្យលទ្ធផលនៃពាក្យបញ្ជាត្រូវបានជំនួសជំនួសឈ្មោះរបស់ពាក្យបញ្ជា។ ពាក្យបញ្ជាជំនួសកើតឡើងនៅពេលពាក្យបញ្ជាត្រូវបានរាំងស្ទះដូចខាងក្រោម:
$ (ពាក្យបញ្ជា)
ឬ Po `` backquoted '' កំណែ Pc:
`ពាក្យបញ្ជា`
សែលពង្រីកការជំនួសពាក្យបញ្ជាដោយប្រតិបត្តិពាក្យបញ្ជាក្នុងបរិស្ថាន subshell មួយនិងជំនួសការជំនួសពាក្យបញ្ជាជាមួយលទ្ធផលស្តង់ដារនៃពាក្យបញ្ជាយកចេញនូវលំដាប់មួយឬច្រើន <បន្ទាត់ថ្មី> នៅចុងនៃការជំនួស។ (ការបង្កប់
ការពង្រីកនព្វន្ធ
ការពង្រីកនព្វន្ធផ្តល់នូវយន្តការមួយដើម្បីវាយតម្លៃកន្សោមនព្វន្ធនិងជំនួសតម្លៃរបស់វា។ ទ្រង់ទ្រាយសម្រាប់ការពង្រីកនព្វន្ធមានដូចខាងក្រោម:
$ ((កន្សោម))
កន្សោមត្រូវបានចាត់ទុកដូចជាវាស្ថិតក្នុងសញ្ញាសម្រង់ទ្វេដែរលើកលែងតែសម្រង់ពីរនៅខាងក្នុងកន្សោមមិនត្រូវបានចាត់ទុកជាពិសេស។ សែលពង្រីកថូខឹនទាំងអស់នៅក្នុងកន្សោមសម្រាប់ការពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជានិងយកចេញ។
បន្ទាប់មកសែលចាត់ទុកវាជាកន្សោមនព្វន្ធនិងជំនួសតម្លៃនៃកន្សោម។
ការបំបែកចន្លោះពណ៌ស (ការបំបែកវាល)
បន្ទាប់ពីការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធសែលនឹងស្កេនលទ្ធផលនៃការពង្រីកនិងការជំនួសដែលមិនបានកើតឡើងក្នុងសញ្ញាសម្រង់ពីរសម្រាប់បំបែកពហុវាលនិងអាចមានលទ្ធផលច្រើន។
សែលសំអាតតួអក្សរនីមួយៗរបស់ IFS ជាអ្នកកំណត់ព្រំដែនហើយប្រើអ្នកកំណត់ព្រំដែនដើម្បីបំបែកលទ្ធផលនៃការពង្រីកប៉ារ៉ាម៉ែត្រនិងពាក្យបញ្ជាជំនួសទៅក្នុងវាល។
ការពង្រីកឈ្មោះផ្លូវ (បង្កើតឈ្មោះឯកសារ)
លើកលែងតែទង់ - f ត្រូវបានកំណត់ការបង្កើតឈ្មោះឯកសារត្រូវបានអនុវត្តបន្ទាប់ពីការញែកពាក្យត្រូវបានបញ្ចប់។ ពាក្យនីមួយៗត្រូវបានគេមើលឃើញជាស៊េរីនៃលំនាំដែលបំបែកដោយសញ្ញា។ ដំណើរការនៃការពង្រីកជំនួសពាក្យដោយឈ្មោះនៃឯកសារដែលមានស្រាប់ទាំងអស់ដែលឈ្មោះរបស់វាអាចត្រូវបានបង្កើតឡើងដោយជំនួសលំនាំនីមួយៗដោយខ្សែអក្សរដែលផ្គូផ្គងនឹងលំនាំដែលបានបញ្ជាក់។ មានការដាក់កម្រិតពីរនៅលើនេះ: ទីមួយលំនាំមិនអាចផ្គូផ្គងខ្សែអក្សរដែលមានសញ្ញាទេហើយទីពីរលំនាំមិនអាចផ្គូផ្គងខ្សែអក្សរចាប់ផ្ដើមដោយសញ្ញាចុចទេលើកលែងតែតួអក្សរដំបូងនៃលំនាំជាអំឡុង។ ផ្នែកបន្ទាប់ពណ៌នាអំពីលំនាំដែលប្រើសម្រាប់ទាំងការពង្រីកឈ្មោះផ្លូវនិងពាក្យបញ្ជា (1) ។
លំនាំសែល
លំនាំមានតួអក្សរធម្មតាដែលផ្គូផ្គងខ្លួនឯងនិងតួអក្សរមេតា។ តួអក្សរមេតាគឺ ``! '' `` `` * '' ``? '' និង `` ['' តួអង្គទាំងនេះនឹងបាត់បង់អត្ថន័យពិសេសរបស់ពួកគេប្រសិនបើពួកគេត្រូវបានដកស្រង់។ នៅពេលដែលពាក្យបញ្ជាឬការជំនួសអថេរត្រូវបានអនុវត្តហើយសញ្ញាប្រាក់ដុល្លារឬសម្រង់ក្រោយមិនត្រូវបានដកស្រង់ទ្វេនោះតម្លៃនៃអថេរឬលទ្ធផលរបស់ពាក្យបញ្ជាត្រូវបានស្កេនសម្រាប់តួអក្សរទាំងនេះហើយពួកគេត្រូវបានប្តូរទៅជាតួអក្សរមេតា។
សញ្ញាផ្កាយ (`` * '') ផ្គូផ្គងខ្សែអក្សរមួយចំនួន។ សញ្ញាសួរផ្គូផ្គងតួអក្សរតែមួយ។ តង្កៀបខាងឆ្វេង (`` [''] បង្ហាញថ្នាក់តួអក្សរ។ ចុងបញ្ចប់នៃថ្នាក់តួអក្សរត្រូវបានចង្អុលបង្ហាញដោយ `` `` ប្រសិនបើ `` `` `` ប្រសិនបើបាត់ `` `` បន្ទាប់មក `` ['' ផ្គូផ្គង `` [''] ជាជាងការណែនាំក្រុមតួអក្សរ។ ថ្នាក់តួអក្សរមួយផ្គូផ្គងតួអក្សរណាមួយរវាងតង្កៀបការ៉េ។ ជួរនៃតួអក្សរអាចត្រូវបានបញ្ជាក់ដោយប្រើសញ្ញាដក។ ថ្នាក់តួអក្សរអាចត្រូវបានបំពេញដោយការសរសេរសញ្ញាឧទានជាតួអក្សរដំបូងនៃថ្នាក់តួអក្សរ។
ដើម្បីរួមបញ្ចូល `` `` '' នៅក្នុងថ្នាក់តួអក្សរសូមធ្វើវាជាតួអក្សរដំបូងដែលបានរាយបញ្ជី (បន្ទាប់ពី ``! '' ប្រសិនបើមាន) ។ ដើម្បីរួមបញ្ចូលសញ្ញាដកចូរធ្វើវាជាតួអក្សរដំបូងឬចុងក្រោយដែលបានរាយ
សាងសង់
ផ្នែកនេះរាយពាក្យបញ្ជា builtin ដែលត្រូវបានសាងសង់ព្រោះពួកវាត្រូវការធ្វើប្រតិបត្តិការមួយចំនួនដែលមិនអាចធ្វើបានដោយដំណើរការដាច់ដោយឡែក។ ក្រៅពីនេះមានពាក្យបញ្ជាជាច្រើនផ្សេងទៀតដែលអាចត្រូវបានសាងសង់សម្រាប់ប្រសិទ្ធភាព (ឧ។ អេកូ 1) ។
:
ពាក្យបញ្ជា null ដែលត្រឡប់តម្លៃ 0 (ពិត) ។
។ ឯកសារ
ពាក្យបញ្ជាក្នុងឯកសារដែលបានបញ្ជាក់ត្រូវបានអាននិងប្រតិបត្តិដោយសែល។
ឈ្មោះក្លែងក្លាយ [ ឈ្មោះ [ = ខ្សែអក្សរ ... ]]
ប្រសិនបើ ឈ្មោះ = string ត្រូវបានបញ្ជាក់សែលកំណត់ឈ្មោះក្លែងក្លាយជាមួយ ខ្សែអក្សរ តម្លៃ។ បើគ្រាន់តែបានបញ្ជាក់ឈ្មោះរបស់ឈ្មោះក្លែងក្លាយត្រូវបានបោះពុម្ព។ ដោយគ្មានអាគុយម៉ង់អាលុយមីញ៉ូមនឹងបោះពុម្ពឈ្មោះនិងតម្លៃនៃឈ្មោះក្លែងក្លាយដែលបានកំណត់ទាំងអស់ (សូមមើល unalias)
bg [ ការងារ] ...
បន្តការងារដែលបានបញ្ជាក់ (ឬការងារបច្ចុប្បន្នប្រសិនបើគ្មានការងារត្រូវបានផ្ដល់) ក្នុងផ្ទៃខាងក្រោយ។
ពាក្យបញ្ជាពាក្យ បញ្ជាអា ...
ប្រតិបត្តិពាក្យបញ្ជាដែលបានសាងសង់។ (វាមានប្រយោជន៍ពេលអ្នកមានមុខងារសែលដែលមានឈ្មោះដូចគ្នានឹងពាក្យបញ្ជា builtin ។ )
ស៊ីឌី [ ថត ]
ប្ដូរទៅថតដែលបានបញ្ជាក់ (លំនាំដើម $ HOME) ។ បើធាតុសម្រាប់ CDPATH លេចឡើងក្នុងបរិស្ថាននៃពាក្យបញ្ជា cd ឬអថេរសែល CDPATH ត្រូវបានកំណត់ហើយឈ្មោះថតនឹងមិនចាប់ផ្ដើមដោយសញ្ញាទេនោះថតដែលរាយក្នុង CDPATH នឹងត្រូវបានស្វែងរក។ សម្រាប់ថតដែលបានបញ្ជាក់។ ទ្រង់ទ្រាយរបស់ CDPATH គឺដូចគ្នានឹង PATH នៅក្នុងសែលអន្តរសកម្មពាក្យបញ្ជា ស៊ីឌី នឹងបោះពុម្ពឈ្មោះថតដែលវាបានប្តូរទៅប្រសិនបើវាខុសពីឈ្មោះអ្នកប្រើបានផ្ដល់។ ទាំងនេះអាចខុសគ្នាដោយសារតែយន្តការ CDPATH ត្រូវបានប្រើឬដោយសារតែតំណនិមិត្តសញ្ញាត្រូវបានឆ្លងកាត់។
ខ្សែអក្សរ eval ...
សំរបសំរួលអាគុយម៉ង់ទាំងអស់ជាមួយដកឃ្លា។ បន្ទាប់មកវិភាគនិងប្រតិបត្តិពាក្យបញ្ជាឡើងវិញ។
exec [ អាគុយម៉ង់ពាក្យបញ្ជា ... ]
លើកលែងតែពាក្យបញ្ជាត្រូវបានលុបដំណើរការសែលត្រូវបានជំនួសដោយកម្មវិធីដែលបានបញ្ជាក់ (ដែលត្រូវតែជាកម្មវិធីពិតមិនមែនជាសែលឬមុខងារទេ) ។ ការបញ្ជូនបន្តនៅលើពាក្យបញ្ជា exec ត្រូវបានសម្គាល់ជាអចិន្ត្រៃយ៍ដូច្នេះពួកវាមិនត្រូវបានធ្វើវិញទេនៅពេលដែលពាក្យបញ្ជា exec បញ្ចប់។
ចេញ [ exitstatus ]
បញ្ចប់ដំណើរការសែល។ ប្រសិនបើបានចេញ exitstatus វាត្រូវបានប្រើជាស្ថានភាពចាកចេញរបស់សែល។ បើមិនដូច្នោះទេស្ថានភាពចេញរបស់ពាក្យបញ្ជាពីមុនត្រូវបានប្រើ។
នាំចេញ ឈ្មោះ ...
នាំចេញ -p
ឈ្មោះដែលបានបញ្ជាក់ត្រូវបាននាំចេញដូច្នេះវានឹងលេចឡើងក្នុងបរិស្ថានពាក្យបញ្ជាជាបន្តបន្ទាប់។ មធ្យោបាយតែមួយគត់ដើម្បីដកការនាំចេញអថេរគឺមិនត្រូវកំណត់វា។ សែលអនុញ្ញាតឱ្យតម្លៃនៃអថេរត្រូវបានកំណត់ក្នុងពេលតែមួយដែលវាត្រូវបាននាំចេញដោយការសរសេរ
នាំចេញឈ្មោះ = តម្លៃ
ដោយគ្មានអាគុយម៉ង់ពាក្យបញ្ជានាំចេញរាយនាមអថេរដែលបាននាំចេញ។ ជាមួយជម្រើស - p បានបញ្ជាក់ថាលទ្ធផលនឹងត្រូវបានធ្វើទ្រង់ទ្រាយសមស្របសម្រាប់ការមិនប្រើអន្តរកម្ម។
fc [- កម្មវិធីនិពន្ធអេកូ ] [ ដំបូង [ ចុងក្រោយ ]]
fc -l [- nr ] [ ដំបូង [ ចុងក្រោយ ]]
fc -s [ old = new ] [ ដំបូង ]
បញ្ជីឋានៈ fc សាងសង់ឬកែសម្រួលនិងប្រតិបត្តិឡើងវិញពាក្យបញ្ជាដែលបានបញ្ចូលពីមុនទៅសែលអន្តរកម្ម។
- អ្នកកែសម្រួល
ប្រើកម្មវិធីនិពន្ធដែលបានដាក់ឈ្មោះដោយកម្មវិធីនិពន្ធដើម្បីកែសម្រួលពាក្យបញ្ជា។ ខ្សែអក្សរអ្នករៀបរៀងគឺជាឈ្មោះពាក្យបញ្ជាដែលប្រធានបទត្រូវស្វែងរកតាមរយៈអថេរ PATH ។ តម្លៃក្នុងអថេរ FCEDIT ត្រូវបានប្រើជាលំនាំដើមនៅពេល - e មិនត្រូវបានបញ្ជាក់។ ប្រសិនបើ FCEDIT មិនត្រឹមត្រូវឬមិនកំណត់តំលៃនៃអថេរ EDITOR ត្រូវបានប្រើ។ ប្រសិនបើ EDITOR មិនត្រឹមត្រូវឬមិនកំណត់ ed (1) ត្រូវបានប្រើជាកម្មវិធីនិពន្ធ។
- l (ell)
រាយពាក្យបញ្ជាជាជាងការហៅកម្មវិធីនិពន្ធលើពួកវា។ ពាក្យបញ្ជាត្រូវបានសរសេរក្នុងលំដាប់ដែលបានបង្ហាញដោយអថេរដំបូងនិងចុងក្រោយដែលរងផលប៉ះពាល់ដោយ - r ជាមួយពាក្យបញ្ជានីមួយៗដែលនាំមុខដោយលេខបញ្ជា។
-n
រារាំងលេខបញ្ជានៅពេលរាយបញ្ជីជាមួយ -l ។
-r
បញ្ច្រាសលំដាប់នៃពាក្យបញ្ជាដែលបានរាយ (with - l ឬ edited (ជាមួយ neither - l nor - s)
-s
ប្រតិបត្តិពាក្យបញ្ជាឡើងវិញដោយមិនចាំបាច់ហៅកម្មវិធីនិពន្ធ។
ដំបូង
ចុងក្រោយ
ជ្រើសពាក្យបញ្ជាដើម្បីរាយឬកែសម្រួល។ ចំនួនពាក្យបញ្ជាពីមុនដែលអាចចូលដំណើរការត្រូវបានកំណត់ដោយតម្លៃនៃ អថេរ HISTSIZE ។ តម្លៃដំបូងឬចុងឬទាំងពីរគឺជាផ្នែកមួយដូចខាងក្រោម:
[+] លេខ
ចំនួនវិជ្ជមានដែលតំណាងឱ្យលេខបញ្ជា។ លេខពាក្យបញ្ជាអាចត្រូវបានបង្ហាញជាមួយជម្រើស - l ។
-ចំនួន
លេខគោលដប់អវិជ្ជមានតំណាងឱ្យពាក្យបញ្ជាដែលបានប្រតិបត្តិចំនួនពាក្យបញ្ជាពីមុន។ ឧទាហរណ៍ -1 គឺជាពាក្យបញ្ជាពីមុនភ្លាមៗ។
ខ្សែអក្សរ
ខ្សែអក្សរមួយដែលចង្អុលបង្ហាញពាក្យបញ្ជាដែលបានបញ្ចូលថ្មីៗបំផុតដែលចាប់ផ្តើមជាមួយខ្សែអក្សរនោះ។ ប្រសិនបើល្ខោនថ្មី = operand ថ្មីមិនត្រូវបានបញ្ជាក់ដោយ - s ទម្រង់ខ្សែអក្សរនៃ operand ដំបូងមិនអាចមានសញ្ញាស្មើដែលបានបង្កប់។
អថេរបរិស្ថានខាងក្រោមនេះប៉ះពាល់ដល់ដំណើរការនៃ fc:
FCEDIT
ឈ្មោះកម្មវិធីនិពន្ធដែលត្រូវប្រើ។
HISTSIZE
ចំនួនពាក្យបញ្ជាពីមុនដែលអាចចូលបាន។
fg [ ការងារ ]
ផ្លាស់ទីការងារជាក់លាក់ឬការងារបច្ចុប្បន្នទៅផ្ទៃខាងមុខ។
getopts optstring var
ពាក្យបញ្ជា POSIX getopts មិនត្រូវច្រឡំជាមួយ កណ្ដុរ Labs -derned getopt (1) ។
អាគុយម៉ង់ដំបូងគួរតែជាស៊េរីនៃអក្សរដែលនីមួយៗអាចត្រូវបានធ្វើតាមដោយពហុកោណដើម្បីបង្ហាញថាជម្រើសនេះត្រូវការអំណះអំណាង។ អថេរដែលបានបញ្ជាក់ត្រូវបានកំណត់ទៅជម្រើសដែលបានញែកចេញ។
ពាក្យបញ្ជា getopts មិនរាប់បញ្ចូលឧបករណ៍ getopt ចាស់ (1) ដោយសារតែវាគ្រប់គ្រងអាគុយម៉ង់ដែលមានដកឃ្លា។
getopts builtin អាចត្រូវបានប្រើដើម្បីទទួលយកជម្រើសនិងអាគុយម៉ង់ពីបញ្ជីប៉ារ៉ាម៉ែត្រ។ នៅពេលដែលត្រូវបានហៅ getopts ដាក់តម្លៃរបស់ជម្រើសបន្ទាប់ពីខ្សែអក្សរជម្រើសក្នុងបញ្ជីនៅក្នុងអញ្ញាសែលអថេរដែលបានបញ្ជាក់ដោយ var ហើយវាជាលិបិក្រមនៅក្នុងអថេរ shell ។ OPTIND នៅពេលសែលត្រូវបានគេហៅថា OPTIND ត្រូវបានចាប់ផ្តើមទៅ 1 ។ ចំពោះជម្រើសនីមួយៗដែលត្រូវការ អាគុយម៉ង់មួយ getopts builtin នឹងដាក់វានៅក្នុងអថេរ shell OPTARG ប្រសិនបើជម្រើសមិនត្រូវបានអនុញ្ញាតនៅក្នុង optstring បន្ទាប់មក OPTARG នឹងមិនត្រូវបានកំណត់។
optstring គឺជាខ្សែអក្សរជម្រើសដែលត្រូវបានទទួលស្គាល់។ ប្រសិនបើលិខិតមួយត្រូវបានបន្តដោយសញ្ញាចុចពីរជម្រើសជម្រើសត្រូវបានរំពឹងថានឹងមានអាគុយម៉ង់មួយដែលអាចឬមិនអាចបំបែកពីវាដោយចន្លោះពណ៌ស។ ប្រសិនបើតួអក្សរជម្រើសមិនត្រូវបានរកឃើញនៅកន្លែងដែល getopts នឹងកំណត់វ៉ារ្យ៉ង់ var ទៅ ``? ' getopts នឹងមិនកំណត់ OPTARG ហើយសរសេរលទ្ធផលទៅជាកំហុសស្តង់ដារ។ ដោយការបញ្ជាក់សញ្ញាចុចពីរជាតួអក្សរដំបូងនៃកំហុសឆ្គងកំហុសឆ្គងទាំងអស់នឹងមិនត្រូវបានអើពើ។
តម្លៃមិនត្រឹមត្រូវត្រូវបានត្រឡប់នៅពេលដែលជម្រើសចុងក្រោយត្រូវបានដល់។ បើមិនមានអាគុយម៉ង់ដែលនៅសល់ទេ getopts នឹងកំណត់ var ទៅជម្រើសពិសេស `` - '' បើមិនដូច្នោះវានឹងកំណត់ var ទៅ ``? ''
បំណែកកូដខាងក្រោមនេះបង្ហាញពីវិធីដំណើរការអាគុយម៉ង់សម្រាប់ពាក្យបញ្ជាដែលអាចយកជម្រើស [a] និង [b] និងជម្រើស [c] ដែលទាមទារអាគុយម៉ង់។
ខណៈពេល getopts abc: f
ធ្វើ
ករណី $ f ក្នុង
a | b) ទង់ = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; ចេញ 1;
esac
បានធ្វើ
shift `expr $ OPTIND - 1`
លេខកូដនេះនឹងទទួលយកដូចខាងក្រោម:
cmd -carg ឯកសារឯកសារ
cmd -a -c ឯកសារឯកសារអា
cmd -carg - ឯកសារឯកសារ
cmd-a-carg - ឯកសារឯកសារ
ពាក្យបញ្ជា hash -rv ...
សែលរក្សាតុសញ្ញាមួយដែលចងចាំទីតាំងនៃពាក្យបញ្ជា។ ដោយគ្មានអាគុយម៉ង់អ្វីទាំងអស់ពាក្យបញ្ជា hash ចេញនូវមាតិកានៃតារាងនេះ។ ធាតុដែលមិនត្រូវបានគេមើលឃើញថាចាប់តាំងពីពាក្យបញ្ជា cd ចុងក្រោយត្រូវបានសម្គាល់ដោយសញ្ញាផ្កាយ។ វាអាចកើតឡើងសម្រាប់ធាតុទាំងនេះមិនត្រឹមត្រូវ។
ជាមួយអាគុយម៉ង់ពាក្យបញ្ជា សញ្ញា ដកយកពាក្យបញ្ជាដែលបានបញ្ជាក់ចេញពីតារាងសញ្ញា (លុះត្រាតែពួកវាជាអនុគមន៍) ហើយបន្ទាប់មកកំណត់ទីតាំងពួកវា។ ដោយប្រើជម្រើស - v សញ្ញាហាសនឹងបោះពុម្ពទីតាំងពាក្យបញ្ជាដូចដែលវារកឃើញ។ ជម្រើស - r ធ្វើឱ្យពាក្យបញ្ជា hash លុបធាតុទាំងអស់ក្នុងតារាង hash លើកលែងតែអនុគមន៍។
jobid [ ការងារ ]
បោះពុម្ពលេខសម្គាល់ដំណើរការនៃដំណើរការនៅក្នុងការងារ។ ប្រសិនបើអាគុយម៉ង់ ការងារ ត្រូវបានលុបការងារបច្ចុប្បន្នត្រូវបានប្រើ។
ការងារ
ពាក្យបញ្ជានេះរៀបរាប់ពីដំណើរការផ្ទៃខាងក្រោយទាំងអស់ដែលជាកូនរបស់ដំណើរការសែលបច្ចុប្បន្ន។
បោះពុម្ពថតបច្ចុប្បន្ន។ ពាក្យបញ្ជា builtin អាចខុសពីកម្មវីធីដែលមានឈ្មោះដូចគ្នាព្រោះពាក្យបញ្ជា builtin ចងចាំថាអ្វីដែលថតបច្ចុប្បន្នជាជាង recomputing វារាល់ពេល។ នេះធ្វើឱ្យវាកាន់តែលឿន។ ទោះជាយ៉ាងណាក៏ដោយប្រសិនបើថតបច្ចុប្បន្នត្រូវបានប្តូរឈ្មោះកំណែ pwd ដែលបានបញ្ចូល នឹងបន្តបោះពុម្ពឈ្មោះចាស់សម្រាប់ថត។
អាន [- p prompt ] [- r ] អថេរ ...
ប្រអប់បញ្ចូលត្រូវបានបោះពុម្ពប្រសិនបើជម្រើស - p ត្រូវបានបញ្ជាក់ហើយការបញ្ចូលស្តង់ដារគឺជាស្ថានីយ។ បន្ទាប់មកបន្ទាត់មួយត្រូវបានអានពីការបញ្ចូលស្តង់ដារ។ បន្ទាត់ថ្មីនៅពីក្រោយនឹងត្រូវបានលុបចេញពីបន្ទាត់ហើយបន្ទាត់ត្រូវបានបំបែកដូចដែលបានពណ៌នាក្នុងផ្នែកនៅលើពាក្យពុះខាងលើហើយបំណែកត្រូវបានផ្ដល់ទៅអថេរក្នុងលំដាប់។ យ៉ាងហោចណាស់ត្រូវតែបញ្ជាក់អថេរមួយ។ ប្រសិនបើមានបំណែកច្រើនជាងអថេរបំណែកដែលនៅសល់ (រួមជាមួយតួអក្សរក្នុង IFS ដែលបំបែកវា) ត្រូវបានកំណត់ទៅអថេរចុងក្រោយ។ ប្រសិនបើមានអថេរច្រើនជាងបំណែកអញ្ញត្តិដែលនៅសល់ត្រូវបានផ្តល់តម្លៃខ្សែអក្សរទទេ។ ខ្សែ អក្សរដែលបានអាន នឹងបង្ហាញពីភាពជោគជ័យលុះត្រាតែអេហ្វអេហ្វត្រូវបានជួបប្រទះលើធាតុបញ្ចូលក្នុងករណីដែលករណីបរាជ័យបរាជ័យ។
តាមលំនាំដើមលុះត្រាតែជម្រើស r ត្រូវបានបញ្ជាក់សញ្ញា `` \ '' ដើរតួនាទីជាតួអក្សរគេចចេញដែលបណ្តាលតួអក្សរដូចខាងក្រោមត្រូវបានព្យញ្ជនៈ។ បើសិនជាសញ្ញា \\ ត្រូវបានធ្វើតាមដោយបន្ទាត់ថ្មីសញ្ញា \ និងបន្ទាត់ថ្មីនឹងត្រូវបានលុប។
តែ ឈ្មោះប៉ុណ្ណោះ ...
readonly-p
ឈ្មោះដែលបានបញ្ជាក់ត្រូវបានសម្គាល់ថាបានអានតែប៉ុណ្ណោះដូច្នេះពួកវាមិនអាចកែប្រែឬមិនបានកំណត់។ សែលអនុញ្ញាតឱ្យតម្លៃនៃអថេរត្រូវបានកំណត់ក្នុងពេលតែមួយវាត្រូវបានសម្គាល់ថាបាន អានតែប៉ុណ្ណោះ ដោយការសរសេរ
readonly name = value
ដោយគ្មានអាគុយម៉ង់ពាក្យបញ្ជាដែលបានតែអានរាយនាមអថេរដែលបានអានទាំងអស់។ ជាមួយជម្រើស - p បានបញ្ជាក់ថាលទ្ធផលនឹងត្រូវបានធ្វើទ្រង់ទ្រាយសមស្របសម្រាប់ការមិនប្រើអន្តរកម្ម។
កំណត់ [{- ជម្រើស | + ជម្រើស - អាគុយម៉ង់ ... ]
ពាក្យបញ្ជា កំណត់ អនុវត្តមុខងារបីផ្សេងគ្នា។
ដោយគ្មានអាគុយម៉ង់វារាយតម្លៃនៃអថេរសែលទាំងអស់។
ប្រសិនបើជម្រើសត្រូវបានផ្តល់វាកំណត់ទង់ជម្រើសដែលបានបញ្ជាក់ឬលុបពួកវាដូចដែលបានពិពណ៌នានៅក្នុងផ្នែកដែលហៅថាដំណើរការបញ្ជីអាគុយម៉ង់ Sx ។
ការប្រើពាក្យបញ្ជាលំដាប់ទីបីគឺកំណត់តម្លៃប៉ារ៉ាម៉ែត្រទីតាំងរបស់សែលទៅជាអាគុយម៉ង់ដែលបានបញ្ជាក់។ ដើម្បីផ្លាស់ប្ដូរប៉ារ៉ាម៉ែត្រទីតាំងដោយមិនផ្លាស់ប្ដូរជម្រើសណាមួយសូមប្រើ `` - '' ជាអាគុយម៉ង់ដំបូងត្រូវកំណត់។ ប្រសិនបើគ្មានអាគុយទេពាក្យបញ្ជាកំណត់នឹងសម្អាតប៉ារ៉ាម៉ែត្រទីតាំងទាំងអស់ (ស្មើនឹងការប្រតិបត្តិ `` shift $ # '') ។
តម្លៃអថេរ
ផ្តល់តម្លៃទៅអថេរ។ (ជាទូទៅវាល្អប្រសើរជាងក្នុងការសរសេរអថេរ = តម្លៃជាជាងការប្រើ setvar setvar ដែល ត្រូវបានប្រើសម្រាប់មុខងារដែលផ្តល់តម្លៃទៅឱ្យអថេរដែលឈ្មោះត្រូវបានបញ្ជូនជាប៉ារ៉ាម៉ែត្រ។ )
shift [ n ]
ប្តូរប៉ារ៉ាម៉ែត្រទីតាំង N ដង។ ការផ្លាស់ប្ដូរ កំណត់តម្លៃ $ 1 ទៅតម្លៃ $ 2 តម្លៃ $ 2 ទៅតម្លៃនៃ $ 3 និងច្រើនជាងនេះដែលបន្ថយតម្លៃនៃ $ # ដោយមួយ។ បើ n ធំជាងចំនួនប៉ារ៉ាម៉ែត្រទីតាំង ផ្លាស់ប្ដូរ នឹងចេញសារកំហុសហើយចេញជាមួយស្ថានភាពត្រឡប់ 2 ។
ដង
បោះពុម្ពពេលវេលាអ្នកប្រើប្រាស់និងពេលវេលាប្រព័ន្ធសម្រាប់សែលនិងដំណើរការសម្រាប់ដំណើរការពីសែល។ ស្ថានភាពត្រឡប់គឺ 0 ។
បណ្តាលឱ្យសែលញែកនិងប្រតិបត្តិសកម្មភាពនៅពេលទទួលសញ្ញាណាមួយដែលបានបញ្ជាក់។ សញ្ញានេះត្រូវបានបញ្ជាក់ដោយលេខសញ្ញា។ ប្រសិនបើ សញ្ញា គឺ 0 សកម្មភាពត្រូវបានប្រតិបត្តិនៅពេលដែលសែលចេញ។ សកម្មភាព អាចជា null ឬ `` - '' ដើមធ្វើឱ្យសញ្ញាដែលបានបញ្ជាក់ត្រូវបានអើពើហើយក្រោយមកទៀតបណ្តាលឱ្យមានសកម្មភាពលំនាំដើម។ នៅពេលសែលពន្លកចេញពី subshell វាកំណត់សញ្ញាដែលបានជាប់ (ប៉ុន្តែមិនត្រូវបានអើពើ) ទៅសកម្មភាពលំនាំដើម។ ពាក្យបញ្ជា អន្ទាក់ គ្មានប្រសិទ្ធិភាពចំពោះសញ្ញាដែលមិនអើពើនៅពេលចូលទៅសែលទេ។
វាយ [ ឈ្មោះ ... ]
ចេះបកស្រាយនាមនិមួយៗថាជាពាក្យបញ្ជាហើយបោះពុម្ពលទ្ធផលស្វែងរក។ ដំណោះស្រាយដែលអាចធ្វើបានគឺ: ពាក្យគន្លឹះសែលឈ្មោះក្លែងក្លាយ សែលសាងសង់ ពាក្យបញ្ជារកឈ្មោះក្លែងក្លាយនិងមិនត្រូវបានរកឃើញ។ សម្រាប់ឈ្មោះក្លែងក្លាយការពង្រីកឈ្មោះក្លែងក្លាយត្រូវបានបោះពុម្ព។ សម្រាប់ពាក្យបញ្ជានិងឈ្មោះក្លែងក្លាយដែលបានតាមដានឈ្មោះផ្លូវពេញលេញនៃពាក្យបញ្ជាត្រូវបានបោះពុម្ព។
ulimit [- H -S ] [- a-tfdscmlpn [ តម្លៃ ]]
សួរអំពីឬកំណត់ដែនកំណត់រឹងឬទន់លើដំណើរការឬកំណត់ដែនកំណត់ថ្មី។ ជម្រើសរវាងព្រំដែនរឹង (ដែលគ្មានដំណើរការត្រូវបានអនុញ្ញាតិឱ្យបំពានហើយដែលមិនអាចត្រូវបានលើកឡើងនៅពេលដែលវាត្រូវបានគេបន្ថយ) និងដែនកំណត់ទន់ (ដែលបណ្តាលឱ្យដំណើរការត្រូវបានបង្ហាញប៉ុន្តែមិនចាំបាច់ត្រូវបានសំលាប់ហើយដែលអាចត្រូវបានលើកឡើង) ត្រូវបានធ្វើឡើងជាមួយ ទង់ទាំងនេះ:
-H
កំណត់ឬសួរអំពីដែនកំណត់រឹង
-
កំណត់ឬសួរអំពីដែនកំណត់ទន់។ ប្រសិនបើមិនបានកំណត់ - H និង - S ត្រូវបានបង្ហាញឬដែនកំនត់ត្រូវបានកំណត់។ ប្រសិនបើទាំងពីរត្រូវបានបញ្ជាក់លេខចុងក្រោយឈ្នះ។
ដែនកំណត់ដែលត្រូវសួរចម្លើយឬកំណត់ត្រូវបានជ្រើសរើសដោយការបញ្ជាក់អំពីទង់ជាតិណាមួយក្នុងចំណោមទង់ទាំងនេះ:
- ក
បង្ហាញរាល់ដែនកំណត់បច្ចុប្បន្ន
- ត
បង្ហាញឬកំណត់ដែនកំណត់លើ ពេលវេលាស៊ីភីយូ (គិតជាវិនាទី)
-f
បង្ហាញឬកំណត់ដែនកំណត់លើឯកសារធំបំផុតដែលអាចត្រូវបានបង្កើត (ក្នុងប្លុក 512 បៃ)
-d
បង្ហាញឬកំណត់ដែនកំណត់លើទំហំផ្នែកទិន្នន័យនៃដំណើរការ (ជាគីឡូបៃ)
-s
បង្ហាញឬកំណត់ដែនកំណត់លើទំហំជង់នៃដំណើរការ (ជាគីឡូបៃ)
-c
បង្ហាញឬកំណត់ដែនកំណត់លើទំហំចាក់សំរាមធំបំផុតដែលអាចត្រូវបានផលិត (ក្នុងប្លុក 512 បៃ)
-m
បង្ហាញឬកំណត់ដែនកំណត់លើសតិហ្វីលសរុបដែលអាចប្រើបានដោយដំណើរការ (ជាគីឡូបៃ)
-l
បង្ហាញឬកំណត់ដែនកំណត់លើសតិច្រើនដែលដំណើរការអាចជាប់សោជាមួយ mlock (2) ( គិតជាគីឡូបៃ )
-p
បង្ហាញឬកំណត់ដែនកំណត់លើចំនួនដំណើរការដែលអ្នកប្រើនេះអាចមានក្នុងពេលតែមួយ
-n
បង្ហាញឬកំណត់ដែនកំណត់លើឯកសារលេខដែលដំណើរការអាចបើកបានក្នុងពេលតែមួយ
ប្រសិនបើគ្មានអ្វីទាំងនេះត្រូវបានបញ្ជាក់វាជាដែនកំណត់លើទំហំឯកសារដែលត្រូវបានបង្ហាញឬកំណត់។ ប្រសិនបើតម្លៃត្រូវបានបញ្ជាក់ដែនកំណត់ត្រូវបានកំណត់ទៅលេខនោះ។ បើមិនដូច្នេះទេដែនកំណត់បច្ចុប្បន្នត្រូវបានបង្ហាញ។
ដែនកំណត់នៃដំណើរការដោយបំពានអាចត្រូវបានបង្ហាញឬកំណត់ដោយប្រើប្រាស់ឧបករណ៍ sysctl (8) ។
umask [ របាំង ]
កំណត់តម្លៃនៃ umask (មើល umask (2)) ទៅតម្លៃប្រាំបីដែលបានបញ្ជាក់។ ប្រសិនបើអាគុយម៉ង់ត្រូវបានលុបតម្លៃ umask ត្រូវបានបោះពុម្ព។
unalias [- a ] [ ឈ្មោះ ]
ប្រសិនបើ ឈ្មោះ ត្រូវបានបញ្ជាក់សែលនឹង លុបឈ្មោះ ក្លែងក្លាយនោះ។ បើ - a ត្រូវបានបញ្ជាក់គ្រប់ឈ្មោះក្លែងក្លាយទាំងអស់ត្រូវបានយកចេញ។
មិនកំណត់ ឈ្មោះ ...
អថេរនិងអនុគមន៍ដែលបានបញ្ជាក់មិនត្រូវបានកំណត់និងមិនត្រូវបាននាំយកទេ។ ប្រសិនបើឈ្មោះដែលត្រូវបានផ្តល់អោយទាំងអថេរនិងអនុគមន៍ទាំងអថេរនិងអនុគមន៍មិនត្រូវបានកំណត់។
រង់ចាំ [ ការងារ ]
រង់ចាំការងារដែលបានបញ្ជាក់បញ្ចប់និងត្រឡប់ស្ថានភាពចាកចេញពីដំណើរការចុងក្រោយនៅក្នុងការងារ។ ប្រសិនបើអាគុយម៉ង់ត្រូវបានលុបរង់ចាំសម្រាប់ការងារទាំងអស់ត្រូវបញ្ចប់ហើយត្រឡប់ស្ថានភាពចាកចេញពីសូន្យ។
ការកែសម្រួលបន្ទាត់ពាក្យបញ្ជា
នៅពេលដែល sh ត្រូវបានប្រើអន្តរកម្មពីស្ថានីយពាក្យបញ្ជាបច្ចុប្បន្ននិងប្រវត្តិពាក្យបញ្ជា (មើល fc នៅក្នុង Sx Builtins) អាចត្រូវបានកែសម្រួលដោយប្រើការកែសម្រួលបន្ទាត់ពាក្យរបៀបវ។ របៀបនេះប្រើពាក្យបញ្ជាដែលបានពិពណ៌នាដូចខាងក្រោមនេះស្រដៀងទៅនឹងសំណុំរងនៃអ្វីដែលបានពិពណ៌នានៅក្នុងទំព័រមេ។ ពាក្យបញ្ជា `set '-o vi អនុញ្ញាតិឱ្យកែសម្រួលរបៀបជាវនិងដាក់ sh ក្នុងរបៀបបញ្ចូល។ ជាមួយនឹងរបៀបបើកដំណើរការឆឺវែ sh អាចត្រូវបានប្តូររវាងរបៀបបញ្ចូលនិងរបៀបពាក្យបញ្ជា។ កម្មវិធីនិពន្ធមិនត្រូវបានពិពណ៌នាពេញលេញនៅទីនេះទេប៉ុន្តែនឹងមាននៅក្នុងឯកសារក្រោយ។ វាស្រដៀងទៅនឹង vi: ការវាយ Aq ESC នឹងបោះអ្នកទៅក្នុងរបៀបបញ្ជាពាក្យបញ្ជា VI ។ ការត្រឡប់មកវិញ Aq នៅពេលដែលនៅក្នុងរបៀបពាក្យបញ្ជានឹងហុចបន្ទាត់ទៅកាន់សែល។
សំខាន់: ប្រើ ពាក្យបញ្ជា man ( % man ) ដើម្បីមើលពីរបៀបប្រើពាក្យបញ្ជាលើកុំព្យូទ័រជាក់លាក់របស់អ្នក។