ផេះ - ពាក្យបញ្ជាលីនុច - ពាក្យបញ្ជាយូនីក

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) ។ សំខាន់បើទោះបីជាបន្ទាត់ត្រូវបានអានហើយបើពាក្យដំបូងនៃបន្ទាត់ (ឬបន្ទាប់ពីសញ្ញាប្រមាណវិធីបញ្ជា) មិនមែនជាពាក្យបម្រុងនោះសែលបានទទួលស្គាល់ពាក្យបញ្ជាសាមញ្ញ។ បើមិនដូច្នោះទេពាក្យបញ្ជាស្មុគស្មាញឬការសាងសង់ពិសេសមួយចំនួនផ្សេងទៀតប្រហែលជាត្រូវបានទទួលស្គាល់។

ពាក្យបញ្ជាសាមញ្ញ

ប្រសិនបើពាក្យបញ្ជាសាមញ្ញត្រូវបានទទួលស្គាល់សែលនឹងធ្វើសកម្មភាពដូចខាងក្រោម:

  1. ពាក្យឈានមុខគេនៃទំរង់ `` name = value '' ត្រូវបានដកចេញហើយត្រូវបានផ្តល់ឱ្យចំពោះបរិស្ថាននៃពាក្យបញ្ជាសាមញ្ញ។ សញ្ញាប្រមាណវិធីប្តូរទិសនិងអាគុយម៉ង់របស់ពួកវា (ដូចបានពិពណ៌នាខាងក្រោម) ត្រូវបានបិទនិងរក្សាទុកដើម្បីដំណើរការ។
  2. ពាក្យដែលនៅសល់ត្រូវបានពង្រីកដូចដែលបានពណ៌នានៅក្នុងផ្នែកដែលត្រូវបានគេហៅថា "ការពង្រីក" ហើយពាក្យដែលនៅសល់ដំបូងគេត្រូវបានគេចាត់ទុកថាជាឈ្មោះពាក្យបញ្ជានិងពាក្យបញ្ជាស្ថិតនៅ។ ពាក្យដែលនៅសល់ត្រូវបានចាត់ទុកជាអាគុយម៉ង់នៃពាក្យបញ្ជា។ ប្រសិនបើគ្មានឈ្មោះលទ្ធផលទេនោះកិច្ចការ `` name = value '' ត្រូវបានទទួលស្គាល់ក្នុងធាតុ 1 ប៉ះពាល់សែលបច្ចុប្បន្ន។
  3. ការប្តូរទិសដៅត្រូវបានអនុវត្តដូចដែលបានពណ៌នានៅក្នុងផ្នែកបន្ទាប់។

ការប្តូរទិស

ការប្តូរទិសត្រូវបានប្រើដើម្បីផ្លាស់ប្តូរកន្លែងដែលពាក្យបញ្ជាអានធាតុបញ្ចូលរបស់វាឬបញ្ជូនលទ្ធផលរបស់វា។ ជាទូទៅការប្តូរទិសបើកបើកបិទឬស្ទួនសេចក្តីយោងដែលមានស្រាប់ទៅឯកសារ។ ទ្រង់ទ្រាយរួមសម្រាប់ការប្តូរទិសគឺ:

[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 មិនត្រូវបានរកឃើញមានរឿងពីរកើតឡើង:

  1. ឈ្មោះពាក្យបញ្ជាដែលមានសញ្ញាវាស់ត្រូវបានប្រតិបត្តិដោយមិនចាំបាច់ធ្វើការស្វែងរកទេ។
  2. សែលស្វែងរកពាក្យនីមួយៗនៅក្នុង PATH ដើម្បីបញ្ជា។ តម្លៃនៃអថេរ PATH គួរតែជាស៊េរីធាតុដែលបានបំបែកដោយសញ្ញាចុចពីរ។ ធាតុនីមួយៗមានឈ្មោះថត។ ថតបច្ចុប្បន្នអាចត្រូវបានចង្អុលបង្ហាញដោយឈ្មោះថតទទេរឬយ៉ាងជាក់លាក់ដោយកំឡុងពេលតែមួយ។

ស្ថានភាពចាកចេញពីពាក្យបញ្ជា

ពាក្យបញ្ជានីមួយៗមានស្ថានភាពចេញដែលអាចមានឥទ្ធិពលលើឥរិយាបទនៃពាក្យបញ្ជាសែលផ្សេងទៀត។ គំរូគឺថាពាក្យបញ្ជាមួយចេញដោយសូន្យសម្រាប់ធម្មតាឬជោគជ័យហើយមិនមែនសូន្យចំពោះកំហុសបរាជ័យឬការបញ្ជាក់មិនពិត។ ទំព័រមេសម្រាប់ពាក្យបញ្ជានីមួយៗគួរតែបង្ហាញលេខកូដចេញនិងអ្វីដែលពួកគេចង់និយាយ។ លើសពីនេះពាក្យបញ្ជា builtin ត្រឡប់កូដចេញដូចទៅនឹងមុខងារសែលដែលបានប្រតិបត្តិ។

ពាក្យបញ្ជាស្មុគ្រស្មាញ

ពាក្យបញ្ជាស្មុគ្រស្មាញគឺជាបន្សំនៃពាក្យបញ្ជាសាមញ្ញជាមួយសញ្ញាប្រមាណវិធីបញ្ជាឬពាក្យបម្រុងរួមគ្នាបង្កើតពាក្យបញ្ជាស្មុគ្រស្មាញធំជាងមុន។ ជាទូទៅពាក្យបញ្ជាមួយគឺដូចខាងក្រោម:

លើកលែងតែបានបញ្ជាក់លក្ខខណ្ឌចេញរបស់ពាក្យបញ្ជាគឺថាពាក្យបញ្ជាសាមញ្ញចុងក្រោយដែលប្រតិបត្តិដោយពាក្យបញ្ជា។

បំពង់បង្ហូរទឹក

បំពង់បណ្តាញគឺជាលំដាប់នៃពាក្យបញ្ជាមួយឬច្រើនដែលបំបែកដោយប្រតិបត្តិករវត្ថុបញ្ជា។ លទ្ធផលស្តង់ដារទាំងអស់ប៉ុន្តែពាក្យបញ្ជាចុងក្រោយត្រូវបានភ្ជាប់ទៅការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជាបន្ទាប់។ លទ្ធផលស្តង់ដារនៃពាក្យបញ្ជាចុងក្រោយគឺត្រូវបានទទួលពីសែលជាធម្មតា។

ទម្រង់សម្រាប់បំពង់បង្ហូរប្រេងមួយគឺ:

[!] ពាក្យបញ្ជា 1 [| ពាក្យបញ្ជា 2 ... ]

លទ្ធផលស្តង់ដារនៃពាក្យបញ្ជា 1 ត្រូវបានភ្ជាប់ទៅនឹងការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជា2។ ការបញ្ចូលស្តង់ដារទិន្នផលស្តង់ដារឬពាក្យបញ្ជាពីរត្រូវបានចាត់ទុកថាត្រូវបានផ្ដល់ដោយបំពង់បង្ហូរមុនពេលប្តូរទិសដៅដែលបានបញ្ជាក់ដោយសញ្ញាប្រមាណវិធីប្ដូរទិសដែលជាផ្នែកនៃពាក្យបញ្ជា។

ប្រសិនបើបំពង់បង្ហូរមិនស្ថិតនៅក្នុងផ្ទៃខាងក្រោយទេ (បានពិភាក្សានៅពេលក្រោយ) សែលរង់ចាំការបញ្ជាទាំងអស់ត្រូវបញ្ចប់។

ប្រសិនបើពាក្យបម្រុង! មិនដើរពីបំពង់បង្ហូរនោះស្ថានភាពចេញគឺជាស្ថានភាពចេញរបស់ពាក្យបញ្ជាចុងក្រោយដែលបានបញ្ជាក់ក្នុងបំពង់។ បើមិនដូច្នោះទេស្ថានភាពចេញគឺជាឡូជីខលនៃស្ថានភាពចេញនៃពាក្យបញ្ជាចុងក្រោយ។ នោះគឺប្រសិនបើពាក្យបញ្ជាចុងក្រោយត្រឡប់សូន្យនោះស្ថានភាពចេញគឺ 1; ប្រសិនបើពាក្យបញ្ជាចុងក្រោយត្រឡប់ធំជាងសូន្យនោះស្ថានភាពចាកចេញគឺសូន្យ។

ពីព្រោះការបញ្ជូនទិន្នន័យនៃការបញ្ចូលស្តង់ដារឬទិន្នផលស្តង់ដារឬទាំងពីរកើតឡើងមុនពេលប្តូរទិសវាអាចត្រូវបានកែប្រែដោយការប្តូរទិស។ ឧទាហរណ៍:

$ command1 2> & 1 | command2

ផ្ញើទាំងលទ្ធផលស្តង់ដារនិងកំហុសស្តង់ដារនៃពាក្យបញ្ជា 1 ទៅការបញ្ចូលស្តង់ដារនៃពាក្យបញ្ជា2។

A; ឬបន្ទាត់ថ្មី បណ្តាលឱ្យលេខរៀងឬលំដាប់ពីមុន (ដែលបានពណ៌នាបន្ទាប់) ត្រូវបានប្រតិបត្តិជាបន្តបន្ទាប់។ a & បណ្តាលឱ្យដំណើរការអសមកាលនៃ AND-OR-list ខាងមុខ។

ចំណាំថាមិនដូចសែលមួយចំនួនដំណើរការនីមួយៗនៅក្នុងបំពង់បង្ហូរគឺជាកូនរបស់សែលហៅ (លុះត្រាតែវាជាសែលដែលបានសាងសង់ក្នុងករណីដែលវាប្រតិបត្តិក្នុងសែលបច្ចុប្បន្នប៉ុន្តែផលប៉ះពាល់ដែលវាមានលើបរិស្ថានត្រូវបានលុបចោល) ។

ពាក្យបញ្ជាផ្ទៃខាងក្រោយ -

ប្រសិនបើពាក្យបញ្ជាត្រូវបានបញ្ចប់ដោយសញ្ញាប្រមាណវិធីបញ្ជា 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 ឬដោយ ប្រសិនបើ IFS មិនត្រូវបានកំណត់។

@

ពង្រីកទៅប៉ារ៉ាម៉ែត្រទីតាំងចាប់ផ្តើមពីមួយ។ នៅពេលការពង្រីកកើតឡើងនៅក្នុងសញ្ញាសម្រង់ពីរប៉ារ៉ាម៉ែត្រនីមួយៗពង្រីកជាអាគុយម៉ង់ដាច់ដោយឡែក។ ប្រសិនបើគ្មានប៉ារ៉ាម៉ែត្រទីតាំងទេការពង្រីក @ បង្កើតអាគុយម៉ង់សូន្យសូម្បីនៅពេល @ ត្រូវបានដកស្រង់ទ្វេ។ តើនេះមានន័យយ៉ាងដូចម្តេចឧទាហរណ៍ប្រសិនបើ $ 1 គឺ `` abc '' ហើយ $ 2 គឺ `` def ghi '' បន្ទាប់មក Qq $ @ ពង្រីកទៅអាគុយម៉ង់ពីរ:

abc ជម្រះ

#

ពង្រីកចំនួនប៉ារ៉ាម៉ែត្រទីតាំង។

?

ពង្រីកទៅស្ថានភាពចេញរបស់បំពង់បង្ហូរថ្មីបំផុត។

- (សហសញ្ញា។ )

ពង្រីកទៅទង់ជម្រើសបច្ចុប្បន្ន (ឈ្មោះជម្រើសអក្សរតែមួយដែលដាក់ក្នុងស៊ុម) ដូចដែលបានបញ្ជាក់លើការហៅដោយពាក្យបញ្ជា builtin ឬ implicitly ដោយសែល។

$

ពង្រីកទៅដំណើរការ ID នៃសែលដែលបានហៅ។ subshell រក្សាតម្លៃដូចគ្នានៃ $ ជាមេរបស់ខ្លួន។

!

ពង្រីកទៅដំណើរការ ID នៃពាក្យបញ្ជាផ្ទៃខាងក្រោយថ្មីបំផុតដែលប្រតិបត្តិពីសែលបច្ចុប្បន្ន។ សម្រាប់បំពង់បង្ហូរមួយលេខសម្គាល់ដំណើរការគឺថាពាក្យបញ្ជាចុងក្រោយនៅក្នុងបំពង់បង្ហូរ។

0 (សូន្យ) ។

ពង្រីកទៅជាឈ្មោះសែលឬសែលស្គ្រីប។

ការពង្រីកពាក្យ

ឃ្លានេះពិពណ៌នាអំពីការពង្រីកជាច្រើនដែលត្រូវបានអនុវត្តលើពាក្យ។ មិនមែនការពង្រីកទាំងអស់ត្រូវបានអនុវត្តលើគ្រប់ពាក្យដូចដែលបានពន្យល់នៅពេលក្រោយ។

ការពង្រីក Tilde ការពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជាការពង្រីកនព្វន្ធនិងការដកយកចេញដែលមាននៅក្នុងពាក្យតែមួយពង្រីកទៅវាលតែមួយ។ វាមានតែការបំបែកវាលឬការពង្រីកឈ្មោះផ្លូវដែលអាចបង្កើតវាលច្រើនពីពាក្យតែមួយ។ ការលើកលែងតែមួយចំពោះក្បួននេះគឺការពង្រីកប៉ារ៉ាម៉ែត្រពិសេស @ ក្នុងសញ្ញាសម្រង់ទ្វេរដូចដែលបានពិពណ៌នាខាងលើ។

លំដាប់នៃការពង្រីកពាក្យគឺ:

  1. ការពង្រីក Tilde ការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជា, ការពង្រីកនព្វន្ធ (ទាំងអស់នេះកើតឡើងក្នុងពេលតែមួយ) ។
  2. ការបំបែកវាលត្រូវបានអនុវត្តលើវាលដែលបានបង្កើតដោយជំហាន (1) លុះត្រាតែអថេរ IFS គ្មានតម្លៃ។
  3. ការពង្រីកឈ្មោះផ្លូវ (លុះត្រាតែកំណត់ - f មានប្រសិទ្ធិភាព) ។
  4. ដកចេញសម្រង់។

តួអក្សរ $ ត្រូវបានប្រើដើម្បីណែនាំការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជាឬការវាយតម្លៃនព្វន្ធ។

ការពង្រីក Tilde (ជំនួសថតផ្ទះរបស់អ្នកប្រើ)

ពាក្យដែលចាប់ផ្តើមជាមួយតួអក្សរសញ្ញា (~) មិនត្រូវបានបង្ហាញត្រូវបានពង្រីក។ តួអក្សរទាំងអស់ដែលមានសញ្ញា (/) ឬចុងពាក្យត្រូវបានចាត់ទុកជាឈ្មោះអ្នកប្រើហើយត្រូវបានជំនួសដោយថតផ្ទះរបស់អ្នកប្រើ។ ប្រសិនបើបាត់ឈ្មោះអ្នកប្រើ (ដូចនៅក្នុង ~ / foobar) tilde ត្រូវបានជំនួសដោយតម្លៃនៃអថេរ HOME (ថតផ្ទះរបស់អ្នកប្រើបច្ចុប្បន្ន) ។

ការពង្រីកប៉ារ៉ាម៉ែត្រ

ទ្រង់ទ្រាយសម្រាប់ការពង្រីកប៉ារ៉ាម៉ែត្រមានដូចខាងក្រោម:

ដែលកន្សោមមានតួអក្សរទាំងអស់រហូតដល់ផ្គូផ្គង `` `` '' '' ``} '' ដែលបានរត់ដោយសញ្ញា (\\) ឬនៅក្នុងខ្សែអក្សរដែលបានដកស្រង់ហើយតួអក្សរក្នុងការពង្រីកអទ្រីមីធីកជំនួសពាក្យបញ្ជានិងការពង្រីកអថេរមិនត្រូវបានពិនិត្យនៅក្នុងការកំណត់ ផ្គូផ្គង ``} ''

ទម្រង់សាមញ្ញបំផុតសម្រាប់ពង្រីកប៉ារ៉ាម៉ែត្រគឺ:

តម្លៃប្រសិនបើប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។

ឈ្មោះឬនិមិត្តសញ្ញាប៉ារ៉ាម៉ែត្រអាចត្រូវបានភ្ជាប់ក្នុងដង្កៀបដែលជាជម្រើសលើកលែងតែប៉ារ៉ាម៉ែត្រទីតាំងដែលមានច្រើនជាងមួយឬនៅពេលប៉ារ៉ាម៉ែត្រត្រូវបានបន្តដោយតួអក្សរដែលអាចត្រូវបានបកប្រែជាផ្នែកនៃឈ្មោះ។ ប្រសិនបើការពង្រីកប៉ារ៉ាម៉ែត្រកើតឡើងនៅខាងក្នុងសញ្ញាពីរ:

  1. ការពង្រីកឈ្មោះផ្លូវមិនត្រូវបានអនុវត្តលើលទ្ធផលនៃការពង្រីក។
  2. ការបំបែកវាលមិនត្រូវបានអនុវត្តលើលទ្ធផលនៃការពង្រីកទេលើកលែងតែ @ ។

លើសពីនេះការពង្រីកប៉ារ៉ាម៉ែត្រអាចត្រូវបានកែប្រែដោយប្រើទ្រង់ទ្រាយមួយក្នុងចំណោមទ្រង់ទ្រាយខាងក្រោម។

ប្រើតម្លៃលំនាំដើម។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬមិនពិតការពង្រីកពាក្យត្រូវបានជំនួស។ បើមិនដូច្នោះទេតម្លៃនៃប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។

ផ្ដល់តម្លៃលំនាំដើម។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬទទេការពង្រីកពាក្យត្រូវបានកំណត់ទៅប៉ារ៉ាម៉ែត្រ។ ក្នុងករណីទាំងអស់តម្លៃចុងក្រោយនៃប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។ មានតែអថេរមិនមែនប៉ារ៉ាម៉ែត្រទីតាំងឬប៉ារ៉ាម៉ែត្រពិសេសទេដែលអាចត្រូវបានផ្តល់តាមវិធីនេះ។

ចង្អុលបង្ហាញកំហុសប្រសិនបើគ្មានតម្លៃឬមិនកំណត់។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬមិនពិតការពង្រីកពាក្យ (ឬសារដែលចង្អុលបង្ហាញវាមិនត្រូវបានកំណត់ប្រសិនបើពាក្យត្រូវបានលុប) ត្រូវបានសរសេរទៅជាកំហុសឆ្គងស្តង់ដារនិងសែលចេញជាមួយស្ថានភាពចាកចេញពី nonzero ។ បើមិនដូច្នោះទេតម្លៃនៃប៉ារ៉ាម៉ែត្រត្រូវបានជំនួស។ សែលអន្តរកម្មមិនចាំបាច់ចេញ។

ប្រើតម្លៃជម្មើសជំនួស។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមិនត្រូវបានកំណត់ឬមិនពិត null ត្រូវបានជំនួស; បើមិនដូច្នោះទេការពង្រីកពាក្យត្រូវបានជំនួស។

នៅក្នុងការពង្រីកប៉ារ៉ាម៉ែត្រដែលបានបង្ហាញពីមុនការប្រើសញ្ញាចុចនៅក្នុងទ្រង់ទ្រាយលទ្ធផលនៅក្នុងការធ្វើតេស្តសម្រាប់ប៉ារ៉ាម៉ែត្រដែលមិនត្រូវបានកំណត់ឬទទេ; omission នៃលទ្ធផលពហុកោណក្នុងការធ្វើតេស្តសម្រាប់ប៉ារ៉ាម៉ែត្រដែលត្រូវបានកំណត់តែប៉ុណ្ណោះ។

ប្រវែងស៊ុម។ ប្រវែងជាតួអក្សរនៃតម្លៃនៃប៉ារ៉ាម៉ែត្រ។

ពូជបួននៃការពង្រីកប៉ារ៉ាម៉ែត្រដូចខាងក្រោមផ្តល់សម្រាប់ដំណើរការស្រទាប់។ ក្នុងករណីនិមួយៗការកំណត់ផ្គូរផ្គងគំរូ (មើលលំនាំសែល) ជាជាងការកំណត់កន្សោមធម្មតាត្រូវបានប្រើដើម្បីវាយតម្លៃលំនាំ។ បើប៉ារ៉ាម៉ែត្រគឺ * ឬ @ លទ្ធផលនៃការពង្រីកមិនត្រូវបានបញ្ជាក់។ ការបញ្ចូលខ្សែពង្រីកពង្រីកប៉ារ៉ាម៉ែត្រពេញលេញក្នុងសញ្ញាសម្រង់ទ្វេមិនបង្កឱ្យតួអក្សរលំនាំបួនប្រភេទត្រូវបានដកស្រង់ខណៈការដកស្រង់តួអក្សរនៅក្នុងដង្កៀបមានប្រសិទ្ធិភាពនេះ។

យកលំនាំដើមតូចបំផុតចេញ។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលជាប៉ារ៉ាម៉ែត្រដែលមានផ្នែកតូចបំផុតនៃបច្ច័យដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។

លុបលំនាំស៊ុលធំបំផុត។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលនៅក្នុងប៉ារ៉ាម៉ែត្រដែលមានផ្នែកធំបំផុតនៃបច្ច័យដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។

លុបលំនាំដើមបុព្វបទតូចបំផុត។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលនៅក្នុងប៉ារ៉ាម៉ែត្រដែលមានផ្នែកតូចបំផុតនៃបុព្វបទដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។

យកលំនាំដើមបុព្វបទធំបំផុតចេញ។ ពាក្យនេះត្រូវបានពង្រីកដើម្បីបង្កើតគំរូមួយ។ ការពង្រីកប៉ារ៉ាម៉ែត្របន្ទាប់មកលទ្ធផលជាប៉ារ៉ាម៉ែត្រដោយភាគធំបំផុតនៃបុព្វបទដែលត្រូវគ្នានឹងលំនាំដែលបានលុប។

ការជំនួសពាក្យបញ្ជា

ការជំនួសពាក្យបញ្ជា អនុញ្ញាតឱ្យលទ្ធផលនៃពាក្យបញ្ជាត្រូវបានជំនួសជំនួសឈ្មោះរបស់ពាក្យបញ្ជា។ ពាក្យបញ្ជាជំនួសកើតឡើងនៅពេលពាក្យបញ្ជាត្រូវបានរាំងស្ទះដូចខាងក្រោម:

$ (ពាក្យបញ្ជា)

ឬ Po `` backquoted '' កំណែ Pc:

`ពាក្យបញ្ជា`

សែលពង្រីកការជំនួសពាក្យបញ្ជាដោយប្រតិបត្តិពាក្យបញ្ជាក្នុងបរិស្ថាន subshell មួយនិងជំនួសការជំនួសពាក្យបញ្ជាជាមួយលទ្ធផលស្តង់ដារនៃពាក្យបញ្ជាយកចេញនូវលំដាប់មួយឬច្រើន <បន្ទាត់ថ្មី> នៅចុងនៃការជំនួស។ (ការបង្កប់ s មុនពេលបញ្ចប់នៃទិន្នផលមិនត្រូវបានយកចេញទេប៉ុន្តែក្នុងអំឡុងពេលបំបែកវាលពួកគេអាចត្រូវបានបកប្រែទៅ s អាស្រ័យលើតម្លៃនៃ IFS និងសម្រង់ដែលមានប្រសិទ្ធិភាព។ )

ការពង្រីកនព្វន្ធ

ការពង្រីកនព្វន្ធផ្តល់នូវយន្តការមួយដើម្បីវាយតម្លៃកន្សោមនព្វន្ធនិងជំនួសតម្លៃរបស់វា។ ទ្រង់ទ្រាយសម្រាប់ការពង្រីកនព្វន្ធមានដូចខាងក្រោម:

$ ((កន្សោម))

កន្សោមត្រូវបានចាត់ទុកដូចជាវាស្ថិតក្នុងសញ្ញាសម្រង់ទ្វេដែរលើកលែងតែសម្រង់ពីរនៅខាងក្នុងកន្សោមមិនត្រូវបានចាត់ទុកជាពិសេស។ សែលពង្រីកថូខឹនទាំងអស់នៅក្នុងកន្សោមសម្រាប់ការពង្រីកប៉ារ៉ាម៉ែត្រជំនួសពាក្យបញ្ជានិងយកចេញ។

បន្ទាប់មកសែលចាត់ទុកវាជាកន្សោមនព្វន្ធនិងជំនួសតម្លៃនៃកន្សោម។

ការបំបែកចន្លោះពណ៌ស (ការបំបែកវាល)

បន្ទាប់ពីការពង្រីកប៉ារ៉ាម៉ែត្រការជំនួសពាក្យបញ្ជានិងការពង្រីកនព្វន្ធសែលនឹងស្កេនលទ្ធផលនៃការពង្រីកនិងការជំនួសដែលមិនបានកើតឡើងក្នុងសញ្ញាសម្រង់ពីរសម្រាប់បំបែកពហុវាលនិងអាចមានលទ្ធផលច្រើន។

សែលសំអាតតួអក្សរនីមួយៗរបស់ 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 [ ការងារ ]

បោះពុម្ពលេខសម្គាល់ដំណើរការនៃដំណើរការនៅក្នុងការងារ។ ប្រសិនបើអាគុយម៉ង់ ការងារ ត្រូវបានលុបការងារបច្ចុប្បន្នត្រូវបានប្រើ។

ការងារ

ពាក្យបញ្ជានេះរៀបរាប់ពីដំណើរការផ្ទៃខាងក្រោយទាំងអស់ដែលជាកូនរបស់ដំណើរការសែលបច្ចុប្បន្ន។

pwd

បោះពុម្ពថតបច្ចុប្បន្ន។ ពាក្យបញ្ជា 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 ) ដើម្បីមើលពីរបៀបប្រើពាក្យបញ្ជាលើកុំព្យូទ័រជាក់លាក់របស់អ្នក។