ຂີ້ - Linux Command - Unix Command

NAME

sh-command interpreter ( shell )

SYNOPSIS

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ target ... ]

DESCRIPTION

Sh ເປັນຕົວແປຄໍາສັ່ງມາດຕະຖານສໍາລັບລະບົບ. ສະບັບປະຈຸບັນຂອງ sh ແມ່ນຢູ່ໃນຂະບວນການທີ່ຖືກປ່ຽນແປງໃຫ້ສອດຄ່ອງກັບຂໍ້ກໍານົດ POSIX 1003.2 ແລະ 10032a ສໍາລັບ Shell. ສະບັບນີ້ມີລັກສະນະຫຼາຍຢ່າງທີ່ເຮັດໃຫ້ມັນຄ້າຍຄືກັນກັບເຄົ້າ Korn, ແຕ່ມັນບໍ່ແມ່ນ Kone shell clone (ເບິ່ງ ksh (1)). ມີພຽງແຕ່ລັກສະນະທີ່ຖືກກໍານົດໂດຍ POSIX ບວກກັບຂະຫຍາຍບາງ Berkeley, ຖືກລວມເຂົ້າໃນແກະນີ້. ພວກເຮົາຄາດຫວັງວ່າຈະສອດຄ່ອງກັບ POSIX ເວລາ 4.4 BSD ຖືກປ່ອຍອອກມາ. ຫນ້າຜູ້ຊາຍນີ້ບໍ່ໄດ້ມີຈຸດມຸ້ງຫມາຍເປັນບົດແນະນໍາຫຼືຂໍ້ກໍານົດຄົບຖ້ວນສົມບູນຂອງແກະ.

ພາບລວມ

Shell ແມ່ນຄໍາສັ່ງ ທີ່ຈະອ່ານສາຍຈາກໄຟລ໌ຫຼືປາຍ, ຕີລາຄາພວກມັນແລະປະຕິບັດຕາມຄໍາສັ່ງອື່ນໆ. ມັນແມ່ນໂຄງການທີ່ໃຊ້ໃນເວລາທີ່ຜູ້ໃຊ້ເຂົ້າສູ່ລະບົບ (ເຖິງແມ່ນວ່າຜູ້ໃຊ້ສາມາດເລືອກເອົາ shell ອື່ນທີ່ມີຄໍາສັ່ງ chsh (1). Shell ປະຕິບັດພາສາທີ່ມີການຄວບຄຸມການຄວບຄຸມການໄຫຼວຽນ, ສະຖານທີ່ມະຫັດສະຈັນທີ່ສະຫນອງຄຸນນະສົມບັດທີ່ແຕກຕ່າງກັນນອກເຫນືອຈາກການຈັດເກັບຂໍ້ມູນພ້ອມດ້ວຍການສ້າງຄວາມສາມາດໃນການດັດແກ້ປະຫວັດແລະສາຍ. ມັນລວມເອົາຄຸນສົມບັດຈໍານວນຫຼາຍເພື່ອຊ່ວຍໃຫ້ການນໍາໃຊ້ແບບໂຕ້ຕອບແລະມີປະໂຫຍດທີ່ພາສາການຕີຄວາມແມ່ນເປັນປະໂຫຍດຕໍ່ການນໍາໃຊ້ແບບໂຕ້ຕອບແລະການນໍາໃຊ້ທີ່ບໍ່ແມ່ນໂຕ້ຕອບ (shell scripts). ດັ່ງນັ້ນ, ຄໍາສັ່ງສາມາດຖືກພິມໂດຍກົງກັບແກະທີ່ໃຊ້ງານຫຼືສາມາດຖືກເອົາເຂົ້າໃນໄຟລ໌ແລະໄຟລ໌ສາມາດຖືກປະຕິບັດໂດຍກົງໂດຍແກະສະຫຼັກ.

Invocation

ຖ້າບໍ່ມີອາວຸດໃດໆແລະຖ້າການປ້ອນຂໍ້ມູນມາດຕະຖານຂອງແກະແມ່ນເຊື່ອມຕໍ່ກັບສັນຍານ (ຫຼືຖ້າທົງໄດ້ຖືກກໍານົດ), ແລະທາງເລືອກທີ່ບໍ່ມີ - c ກໍ່ຈະຖືກພິຈາລະນາເປັນ shell interactive. ເປືອກໂຕ້ຕອບໂດຍທົ່ວໄປມັກຈະເຕືອນກ່ອນທີ່ແຕ່ລະຄໍາສັ່ງແລະຈັດການຂໍ້ຜິດພາດໃນການຂຽນແລະ ຄໍາສັ່ງ ແຕກຕ່າງກັນ (ດັ່ງທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້). ເມື່ອເລີ່ມຕົ້ນຄັ້ງທໍາອິດ, ແກະກວດສອບການໂຕ້ແຍ້ງ 0 ແລະຖ້າມັນເລີ່ມຕົ້ນດ້ວຍ dash `- 'shell ແມ່ນຖືວ່າເປັນ shell ເຂົ້າສູ່ລະບົບ. ນີ້ແມ່ນປະຕິບັດໂດຍອັດຕະໂນມັດໂດຍລະບົບເມື່ອຜູ້ໃຊ້ເຂົ້າສູ່ລະບົບຄັ້ງທໍາອິດ. ປ່ອງເຂົ້າສູ່ລະບົບທໍາອິດໄດ້ອ່ານຄໍາສັ່ງຈາກໄຟລ໌ / etc / profile ແລະ .profile ຖ້າພວກເຂົາມີຢູ່. ຖ້າ ENV ກໍານົດສະພາບແວດລ້ອມແມ່ນຖືກກໍານົດໃນການເຂົ້າໄປໃນແກະຫຼືຖືກຕັ້ງໄວ້ໃນ .profile ຂອງ shell login, shell ຕໍ່ໄປຈະອ່ານຄໍາສັ່ງຈາກໄຟລ໌ທີ່ຕັ້ງຊື່ ENV ດັ່ງນັ້ນ, ຜູ້ໃຊ້ຄວນວາງຄໍາສັ່ງທີ່ຈະຕ້ອງປະຕິບັດເທົ່ານັ້ນທີ່ ເວລາເຂົ້າສູ່ລະບົບໄຟລ໌ profile, ແລະຄໍາສັ່ງທີ່ຖືກປະຕິບັດສໍາລັບທຸກ shell ພາຍໃນເອກະສານ ENV . ເພື່ອກໍານົດຕົວແປ ENV ກັບໄຟລ໌ບາງ, ໃຫ້ໃສ່ເສັ້ນຕໍ່ໄປນີ້ໃນໂປແກຼມ profile ຂອງທ່ານ

ENV = $ HOME / shinit ສົ່ງອອກ ENV

ປ່ຽນແທນ `` shinit '' ໃດກໍ່ຕາມທີ່ທ່ານຕ້ອງການ. ນັບຕັ້ງແຕ່ໄຟລ໌ ENV ແມ່ນອ່ານສໍາລັບທຸກການເອີ້ນຂອງແກະ, ລວມທັງແກະ shell ແລະ shells ທີ່ບໍ່ແມ່ນ interactive, ຮູບແບບດັ່ງຕໍ່ໄປນີ້ແມ່ນມີປະໂຫຍດສໍາລັບການຈໍາກັດຄໍາສັ່ງໃນແຟ້ມ ENV ເພື່ອການສະຫນັບສະຫນູນແບບໂຕ້ຕອບ. ຄໍາສັ່ງທີ່ຢູ່ໃນ `` case '' ແລະ ' esac ' ຂ້າງລຸ່ມນີ້ (ຄໍາສັ່ງເຫຼົ່ານີ້ຈະຖືກອະທິບາຍຕໍ່ມາ):

ກໍລະນີ $ - ໃນ * i *)

ຄໍາສັ່ງ # ສໍາລັບການນໍາໃຊ້ແບບໂຕ້ຕອບເທົ່ານັ້ນ

...

esac

ຖ້າການໂຕ້ຖຽງບັນທັດຄໍາສັ່ງນອກເຫນືອຈາກຕົວເລືອກໄດ້ຖືກລະບຸ, ຫຼັງຈາກນັ້ນແກະໄດ້ປະຕິບັດການໂຕ້ຖຽງທໍາອິດເປັນຊື່ຂອງໄຟລ໌ທີ່ຕ້ອງການອ່ານຄໍາສັ່ງ (shell script) ແລະການໂຕ້ຖຽງທີ່ຍັງເຫຼືອແມ່ນກໍານົດຕົວກໍານົດຕໍາແຫນ່ງຂອງແກະ ($ 1 , $ 2, etc). ຖ້າບໍ່ດັ່ງນັ້ນ, ແກະຈະອ່ານຄໍາສັ່ງຈາກຂໍ້ມູນປະກອບມາດຕະຖານ.

ການແກ້ໄຂບັນຫາການໂຕ້ຖຽງ

ຕົວເລືອກຕົວອັກສອນທັງຫມົດມີຊື່ທີ່ສອດຄ້ອງກັນເຊິ່ງສາມາດນໍາໃຊ້ເປັນຕົວຢ່າງຂອງຕົວເລືອກ - o . ຊື່ set- o ແມ່ນຢູ່ພາຍໃຕ້ຕົວເລືອກຈົດຫມາຍດຽວໃນຄໍາອະທິບາຍຂ້າງລຸ່ມນີ້. ການກໍານົດ dash `` - '' turns ທາງເລືອກໃນ, ໃນຂະນະທີ່ນໍາໃຊ້ບວກ `` + '' ປິດການໃຊ້ງານ. ຕົວເລືອກດັ່ງຕໍ່ໄປນີ້ສາມາດຕັ້ງຄ່າໄດ້ຈາກເສັ້ນຄໍາສັ່ງຫຼືກັບຊຸດ (1) ລໍາໂພງ (ອະທິບາຍຕໍ່ໄປ).

-a alportport

ສົ່ງອອກທຸກຕົວປ່ຽນແປງທີ່ຖືກມອບໃຫ້. (UNIMPLEMENTED for 4.4alpha)

-c

ອ່ານຄໍາສັ່ງຈາກບັນທັດຄໍາສັ່ງ. ຄໍາສັ່ງທີ່ບໍ່ມີຈະຖືກອ່ານອອກມາຈາກຂໍ້ມູນປະເພດມາດຕະຖານ.

-C noclobber

ຢ່າລົບລ້າງໄຟລ໌ທີ່ມີຢູ່ແລ້ວດ້ວຍ ``> '' (UNIMPLEMENTED ສໍາລັບ 4.4alpha)

-e errexit

ຖ້າບໍ່ໂຕ້ຕອບ, ອອກຈາກທັນທີຖ້າມີຄໍາສັ່ງ untested ລົ້ມເຫລວ. ສະຖານະການອອກຂອງຄໍາສັ່ງຖືກພິຈາລະນາພິຈາລະນາຢ່າງລະອຽດຖ້າຄໍາສັ່ງຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມ ຖ້າ elif ໃນຂະນະທີ່ ຫຼື ຈົນກວ່າ ຫຼືຖ້າຄໍາສັ່ງເປັນມືຂວາມືຂອງຕົວແປ `` && '' ຫຼື `` || ''.

-f noglob

ປິດການໃຊ້ງານການຂະຫຍາຍຕົວ ຊື່ໂດເມນ .

-n noexec

ຖ້າບໍ່ໂຕ້ຕອບ, ໃຫ້ອ່ານຄໍາສັ່ງແຕ່ບໍ່ປະຕິບັດໃຫ້ເຂົາເຈົ້າ. ນີ້ແມ່ນປະໂຫຍດສໍາລັບການກວດສອບ syntax ຂອງ script shell.

-u nounset

ຂຽນຂໍ້ຄວາມໄປຍັງຂໍ້ຜິດພະລາດມາດຕະຖານເມື່ອພະຢາຍາມຂະຫຍາຍຕົວແປທີ່ບໍ່ໄດ້ກໍາຫນົດແລະຖ້າຫອຍບໍ່ໂຕ້ຕອບອອກມາທັນທີ (UNIMPLEMENTED for 4.4alpha)

-v verbose

ແກະຂຽນຂໍ້ມູນໃສ່ຂໍ້ຜິດພາດມາດຕະຖານຍ້ອນວ່າມັນຖືກອ່ານ. ມີປະໂຍດສໍາລັບການແກ້ໄຂ.

-x xtrace

ຂຽນຄໍາສັ່ງຂອງແຕ່ລະ ຂໍ້ຜິດພາດມາດຕະຖານ (ກ່ອນທີ່ມີ `+ 'ກ່ອນທີ່ຈະຖືກປະຕິບັດ. ມີປະໂຫຍດສໍາລັບການແກ້ໄຂ.

-q quietprofile

ຖ້າຕົວເລືອກ - v or - x ໄດ້ຖືກກໍານົດ, ຢ່າໃຊ້ພວກມັນເມື່ອອ່ານໄຟລ໌ເລີ່ມຕົ້ນ, ເຫຼົ່ານີ້ແມ່ນ / etc / profile .profile ແລະໄຟລ໌ທີ່ກໍານົດໂດຍຕົວແປສະພາບແວດລ້ອມ ENV .

-I ignoreeof

ບໍ່ສົນໃຈ EOF ຈາກ input ເມື່ອ interactive.

-i interactive

ບັງຄັບເປືອກເພື່ອປະຕິບັດຕົວຈິງ.

-m monitor

ເປີດການຄວບຄຸມວຽກ (ຕັ້ງຄ່າອັດຕະໂນມັດເມື່ອໂຕ້ຕອບ).

-s stdin

ອ່ານຄໍາສັ່ງຈາກການ ປ້ອນຂໍ້ມູນມາດຕະຖານ (ຕັ້ງໂດຍອັດຕະໂນມັດຖ້າບໍ່ມີການໂຕ້ຖຽງໄຟລ໌). ຕົວເລືອກນີ້ບໍ່ມີຜົນກະທົບເມື່ອຕັ້ງຄ່າຫຼັງຈາກແກະໄດ້ເລີ່ມເຮັດວຽກແລ້ວ (ເຊົ່ນກັບຊຸດ (1)).

-V vi

ເປີດຕົວບັນຊີລາຍການບັນຊີຄໍາສັ່ງ vi (1) ທີ່ມີການຕິດຕັ້ງ (disables - E ຖ້າມັນຖືກຕັ້ງໄວ້).

-E emacs

ເປີດຕົວບັນນາທິການບັນທັດຄໍາສັ່ງ emacs (1) ທີ່ຖືກສ້າງໄວ້ (Disabled - V ຖ້າມັນຖືກຕັ້ງໄວ້).

-b ແຈ້ງ

ແຈ້ງການແຈ້ງເຕືອນທີ່ບໍ່ຖືກຕ້ອງຂອງການສໍາເລັດວຽກງານພື້ນຫລັງ. (UNIMPLEMENTED for 4.4alpha)

ໂຄງສ້າງ Lexical

Shell ໄດ້ອ່ານຂໍ້ມູນກ່ຽວກັບເສັ້ນທາງຈາກໄຟລ໌ແລະແຍກມັນອອກເປັນຄໍາທີ່ຢູ່ໃນຊ່ອງຫວ່າງ (ແຖບແລະແທັບ) ແລະໃນບາງລໍາດັບຂອງຕົວອັກສອນທີ່ພິເສດກັບແກະທີ່ເອີ້ນວ່າ `` operators '' ມີສອງປະເພດຂອງຕົວປະຕິບັດ: ຜູ້ດໍາເນີນການຄວບຄຸມແລະຜູ້ດໍາເນີນການການໂອນຍ້າຍ (ຄວາມຫມາຍຂອງພວກເຂົາຈະຖືກພິຈາລະນາຕໍ່ມາ). ຕໍ່ໄປນີ້ແມ່ນບັນຊີລາຍຊື່ຂອງຜູ້ປະກອບການ:

"ຜູ້ປະຕິບັດການຄວບຄຸມ:"

& && () 0 | ||

"ຜູ້ດໍາເນີນການປ່ຽນເສັ້ນທາງ:"

<> | | << >> <&> ແລະ << - <>

Quoting

ການຖອດຖອນແມ່ນໃຊ້ເພື່ອລົບຄວາມຫມາຍພິເສດຂອງລັກສະນະໃດຫນຶ່ງຫຼືຄໍາສັບຕ່າງໆໃຫ້ກັບແກະ, ເຊັ່ນ: ຜູ້ປະຕິບັດງານ, ຊ່ອງສະຫວ່າງຫຼືຄໍາສໍາຄັນ. ມີສາມປະເພດຂອງການສະຫຼຸບມີຄໍາວ່າຄູ່ດຽວເທົ່ານັ້ນ, ຄໍາເວົ້າຄູ່ແລະຄູ່ກັບ.

Backslash

ຮອຍຍິ້ມປົກປັກຮັກສາຄວາມຫມາຍທີ່ຮູ້ຫນັງສືຂອງລັກສະນະດັ່ງຕໍ່ໄປນີ້, ຍົກເວັ້ນ Aq newline. ຮ່ອງຮອຍທີ່ຢູ່ຂ້າງຫນ້າ Aq newline ຖືກຖືວ່າເປັນການສືບຕໍ່ສາຍ.

Single Quotes

ອັກຂະຫລະໃນອັກສອນດຽວຮັກສາຄວາມຫມາຍຕົວອັກສອນຂອງຕົວອັກສອນທັງຫມົດ (ຍົກເວັ້ນພາສາດຽວ, ເຮັດໃຫ້ມັນບໍ່ສາມາດໃສ່ຄໍາດຽວໃນແຖວດຽວ).

Double Quotes

ຕົວອັກສອນທີ່ຢູ່ພາຍໃນວົງຢືມ double preserves ຄວາມຫມາຍຂອງຕົວອັກສອນທັງຫມົດຍົກເວັ້ນ $ backchote ($) backquote (`) ແລະ backslash (\) ຮ່ອງຮອຍໃນວົງຢືມຄູ່ແມ່ນປະຫວັດສາດທີ່ແປກປະຫລາດແລະໃຊ້ແທນຕົວອັກສອນຕໍ່ໄປນີ້:

$ `\

ຖ້າບໍ່ດັ່ງນັ້ນມັນຍັງເປັນຕົວຈິງ.

Reserved Words

ຄໍາສັບທີ່ຖືກເກັບໄວ້ແມ່ນຄໍາທີ່ມີຄວາມຫມາຍພິເສດສໍາລັບແກະແລະຖືກຮັບຮູ້ໃນຕອນຕົ້ນຂອງເສັ້ນແລະຫຼັງຈາກຜູ້ຄວບຄຸມການຄວບຄຸມ. ຕໍ່ໄປນີ້ແມ່ນຄໍາສັບຕ່າງໆທີ່ສະຫງວນໄວ້:

! ພວກເຮົາຕ້ອງການໃຫ້ພວກເຮົາ ໃນຂະນະທີ່ພວກເຮົາມີຄວາມເຊື່ອ

ອື່ນ Ta ສໍາລັບ Ta ຫຼັງຈາກນັ້ນ Ta {Ta}

ເຮັດໃຫ້ເຈົ້າ ເຮັດໃຫ້ຂ້ອຍຈົນກະທັ່ງຖ້າຂ້ອຍເປັນເຈົ້າ

ຄວາມຫມາຍຂອງພວກມັນຈະຖືກກ່າວເຖິງພາຍຫລັງ.

Aliases

ນາມແຝງເປັນຊື່ແລະມູນຄ່າທີ່ສອດຄ້ອງກັນໂດຍໃຊ້ ຊື່ alias (1) builtin. ເມື່ອໃດກໍຕາມຄໍາສັບອາດຈະເກີດຂື້ນ (ເບິ່ງຂ້າງເທິງ) ແລະຫຼັງຈາກກວດເບິ່ງຄໍາສັບທີ່ສະຫງວນໄວ້, ແກະຈະກວດເບິ່ງຄໍາສັບເພື່ອເບິ່ງວ່າມັນກົງກັນກັບນາມແຝງໃດ. ຖ້າມັນບໍ່, ມັນຈະປ່ຽນມັນຢູ່ໃນສາຍນ້ໍາເຂົ້າກັບມູນຄ່າຂອງມັນ. ຕົວຢ່າງເຊັ່ນຖ້າມີນາມແຝງເອີ້ນວ່າ `` lf '`ດ້ວຍຄ່າ` `ls -F' 'ແລ້ວໃສ່:

lf foobar

ຈະກາຍເປັນ

ls-F foobar

Aliases ໃຫ້ເປັນວິທີທີ່ສະດວກສໍາລັບຜູ້ໃຊ້ naive ເພື່ອສ້າງຄໍາສັບສໍາລັບຄໍາສັ່ງໂດຍບໍ່ຕ້ອງຮຽນຮູ້ວິທີການສ້າງຫນ້າທີ່ມີການໂຕ້ຖຽງ. ພວກເຂົາຍັງສາມາດຖືກນໍາໃຊ້ເພື່ອສ້າງລະຫັດທີ່ບໍ່ເປັນລະບຽບແບບເລິກເຊິ່ງ. ການນໍາໃຊ້ນີ້ແມ່ນທໍ້ຖອຍໃຈ.

ຄໍາສັ່ງ

ແກະແປຄໍາທີ່ມັນອ່ານຕາມພາສາ, ຂໍ້ກໍານົດທີ່ຢູ່ນອກຂອບເຂດຂອງຫນ້າຜູ້ຊາຍນີ້ (ເບິ່ງ BNF ໃນເອກະສານ POSIX 1003.2). ຢ່າງໃດກໍ່ຕາມ, ເສັ້ນແມ່ນອ່ານແລະຖ້າຄໍາທໍາອິດຂອງເສັ້ນ (ຫຼືຫຼັງຈາກຜູ້ຄວບຄຸມການຄວບຄຸມ) ບໍ່ແມ່ນຄໍາສັບ, ຫຼັງຈາກນັ້ນແກະໄດ້ຮັບການຍອມຮັບຄໍາສັ່ງງ່າຍໆ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຄໍາສັ່ງທີ່ສັບສົນຫລືການກໍ່ສ້າງພິເສດອື່ນໆບາງຢ່າງອາດໄດ້ຮັບການຍອມຮັບ.

ຄໍາສັ່ງງ່າຍໆ

ຖ້າຄໍາສັ່ງງ່າຍໆໄດ້ຮັບການຍອມຮັບ, shell ສາມາດດໍາເນີນການຕໍ່ໄປນີ້:

  1. ຄໍາທີ່ນໍາຫນ້າຂອງແບບຟອມ `` ຊື່ = ມູນຄ່າ '' ຖືກໂຍກຍ້າຍອອກແລະຖືກມອບຫມາຍໃຫ້ກັບສະພາບແວດລ້ອມຂອງຄໍາສັ່ງງ່າຍດາຍ. ຜູ້ປະຕິບັດງານການປ່ຽນເສັ້ນທາງແລະການໂຕ້ຖຽງຂອງພວກເຂົາ (ດັ່ງທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້) ຖືກລົບອອກແລະຖືກບັນທຶກໄວ້ສໍາລັບການປຸງແຕ່ງ.
  2. ຄໍາທີ່ຍັງເຫຼືອແມ່ນໄດ້ຂະຫຍາຍອອກເປັນອະທິບາຍໃນສ່ວນທີ່ເອີ້ນວ່າ `ການຂະຫຍາຍຕົວ 'ແລະຄໍາທີ່ຍັງເຫຼືອທໍາອິດຖືກພິຈາລະນາຊື່ຄໍາສັ່ງແລະຄໍາສັ່ງທີ່ຢູ່. ຄໍາທີ່ເຫລືອແມ່ນຄໍາພິພາກສາຂອງຄໍາສັ່ງ. ຖ້າບໍ່ມີຊື່ຄໍາສັ່ງແລ້ວ, ຄ່າ `` ຊື່ = ມູນຄ່າ '' ທີ່ໄດ້ຮັບການຮັບຮູ້ໃນລາຍການ 1 ມີຜົນກະທົບຕໍ່ລະບົບປະຈຸບັນ.
  3. ການປ່ຽນເສັ້ນທາງຖືກປະຕິບັດຕາມອະທິບາຍໃນພາກຕໍ່ໄປ.

Redirections

redirections ຖືກນໍາໃຊ້ເພື່ອປ່ຽນບ່ອນທີ່ຄໍາສັ່ງອ່ານຂໍ້ມູນຂອງມັນຫຼືສົ່ງຜົນຂອງມັນ. ໂດຍທົ່ວໄປ, redirections ເປີດ, ປິດ, ຫຼືຊ້ໍາການອ້າງອິງທີ່ມີຢູ່ແລ້ວກັບໄຟລ໌. ຮູບແບບທົ່ວໄປທີ່ໃຊ້ສໍາລັບການໂອນຍ້າຍແມ່ນ:

[n] redir-op file

ບ່ອນທີ່ redir-op ແມ່ນຫນຶ່ງໃນຜູ້ປະຕິບັດການທີ່ຖືກກ່າວເຖິງກ່ອນຫນ້ານີ້. ຕໍ່ໄປນີ້ແມ່ນບັນຊີລາຍຊື່ຂອງການປ່ຽນເສັ້ນທາງທີ່ເປັນໄປໄດ້. Bq n ເປັນຫມາຍເລກຕົວເລືອກເຊັ່ນໃນ `3 '(ໄມ່` Bq 3' ທີ່ຫມາຍເຖິງຕົວລະບຸແຟ້ມ).

[n]> ໄຟລ໌

ປ່ຽນຜົນໄດ້ຮັບມາດຕະຖານ (ຫຼື n) ເພື່ອຍື່ນ.

[n]> | file

ແຕ່ດຽວກັນ, ແຕ່ວ່າ override ທາງເລືອກ - C.

[n] >> ໄຟລ໌

ປ້ອນຜົນຜະລິດມາດຕະຖານ (ຫລື n) ເພື່ອຍື່ນ.

[n] <ໄຟລ໌

ປ່ຽນເສັ້ນທາງເຂົ້າມາດຕະຖານ (ຫຼື n) ຈາກໄຟລ໌.

[n1] <& n2

duplicate input standard (or n1) from file descriptor n2

[n] <& -

ປິດການນໍາເຂົ້າມາດຕະຖານ (ຫຼື n).

[n1]> & n2

ຜະລິດຜົນຜະລິດມາດຕະຖານດັ້ງເດີມ (ຫຼື n1) ຈາກ n2.

[n]> & -

ປິດຜະລິດຕະພັນມາດຕະຖານ (ຫຼື n).

[n] <> ໄຟ

ເປີດໄຟລ໌ສໍາລັບການອ່ານແລະຂຽນກ່ຽວກັບການປ້ອນຂໍ້ມູນມາດຕະຖານ (ຫຼື n).

ການປ່ຽນເສັ້ນທາງດັ່ງຕໍ່ໄປນີ້ຖືກເອີ້ນວ່າ `` ທີ່ຢູ່ໃນເອກະສານນີ້ ''

[n]

ນີ້ແມ່ນຂໍ້ຄວາມ - doc ...

delimiter

ຂໍ້ຄວາມທັງຫມົດກ່ຽວກັບສາຍຕໍ່ໄປເຖິງຕົວລະບຸເຂດແມ່ນຖືກບັນທຶກໄວ້ແລະເຮັດໃຫ້ມີຄໍາສັ່ງກ່ຽວກັບການນໍາໃຊ້ມາດຕະຖານ, ຫຼືລາຍລະອຽດຂອງໄຟລ໌ n ຖ້າມັນຖືກລະບຸໄວ້. ຖ້າຕົວກໍານົດທີ່ຖືກກໍານົດໄວ້ໃນເສັ້ນເບື້ອງຕົ້ນຖືກລາຍລັກອັກສອນ, ຂໍ້ຄວາມທີ່ຢູ່ນີ້ຈະຖືກນໍາມາໃຊ້ເປັນຕົວຫນັງສື, ຖ້າບໍ່ດັ່ງນັ້ນຂໍ້ຄວາມຈະຕ້ອງມີການຂະຫຍາຍຕົວກໍານົດ, ການປ່ຽນແທນຄໍາສັ່ງແລະການຂະຫຍາຍຕົວເລກຄະນິດສາດ (ດັ່ງທີ່ໄດ້ກ່າວໃນສ່ວນ "ການຂະຫຍາຍ)" 'ຖ້າຕົວປະຕິບັດການແມ່ນ << `- -' 'ແທນທີ່` `<< <<' ຫຼັງຈາກນັ້ນແຖບນໍາຫນ້າໃນຂໍ້ຄວາມທີ່ນີ້ -doc ຖືກລອກເອົາ.

ຄົ້ນຫາແລະການປະຕິບັດ

ມີຄໍາສັ່ງສາມປະເພດຄື: ຫນ້າທີ່ shell, ຄໍາສັ່ງ builtin, ແລະໂປລແກລມປົກກະຕິ - ແລະຄໍາສັ່ງແມ່ນຄົ້ນຫາ (ໂດຍຊື່) ໃນຄໍາສັ່ງນັ້ນ. ພວກເຂົາແຕ່ລະແມ່ນຖືກປະຕິບັດໃນທາງທີ່ແຕກຕ່າງກັນ.

ໃນເວລາທີ່ການເຮັດວຽກຂອງແກະຖືກປະຕິບັດ, ທັງຫມົດຂອງຕົວກໍານົດຕໍາແຫນ່ງຂອງແກະ (ຍົກເວັ້ນ $ 0, ເຊິ່ງຍັງຄົງບໍ່ປ່ຽນແປງ) ຖືກກໍານົດໃຫ້ໂຕ້ແຍ້ງຂອງຫນ້າທີ່ຂອງແກະ. ຕົວແປທີ່ຖືກຈັດໄວ້ຢ່າງຊັດເຈນໃນສະພາບແວດລ້ອມຂອງຄໍາສັ່ງ (ໂດຍການວາງການມອບຫມາຍໃຫ້ເຂົາເຈົ້າກ່ອນຫນ້າຊື່ຟັງຊັນ) ຖືກເຮັດໃຫ້ຢູ່ໃນສະຖານທີ່ເຮັດວຽກແລະຖືກກໍາຫນົດໃຫ້ເປັນຄ່າ. ຫຼັງຈາກນັ້ນ, ຄໍາສັ່ງໃຫ້ຢູ່ໃນຄໍານິຍາມຄໍາຮ້ອງສະຫມັກແມ່ນປະຕິບັດ. ຕົວກໍານົດຕໍາແຫນ່ງທີ່ຖືກຟື້ນຟູກັບຄ່າຕົ້ນສະບັບຂອງພວກເຂົາເມື່ອຄໍາສັ່ງສໍາເລັດ. ນີ້ທັງຫມົດເກີດຂຶ້ນພາຍໃນແກະປັດຈຸບັນ.

ການກໍ່ສ້າງ Shell ແມ່ນປະຕິບັດພາຍໃນກັບແກະ, ໂດຍບໍ່ມີການຮາກຂັ້ນຕອນໃຫມ່.

ຖ້າບໍ່ດັ່ງນັ້ນ, ຖ້າຊື່ຄໍາສັ່ງບໍ່ກົງກັນກັບຫນ້າທີ່ຫຼືລໍາໂພງ, ຄໍາສັ່ງຈະຖືກຄົ້ນຫາເປັນໂປລແກລມປົກກະຕິໃນລະບົບໄຟລ໌ (ຕາມທີ່ອະທິບາຍໃນພາກຕໍ່ໄປ). ເມື່ອໂຄງການປົກກະຕິຖືກປະຕິບັດ, ແກະເນັ້ນໂຄງການ, ຜ່ານການໂຕ້ຖຽງແລະສະພາບແວດລ້ອມໃນໂຄງການ. ຖ້າໂປລແກລມບໍ່ແມ່ນແຟ້ມທີ່ປະຕິບັດຕາມປະກະຕິ (ເຊົ່ນຖ້າບໍ່ເລີ່ມຕົ້ນດ້ວຍ "ເລກ magic" ທີ່ມີ ຕົວ ແທນ ASCII ຄື "#!", execve (2) ຈະສົ່ງຜົນຕໍ່ Er ENOEXEC ແລ້ວ) shell ຈະແປຄວາມຫມາຍໃນໂປລແກລມ subshell Shell ເດັກຈະປັບຕົວໃຫມ່ໃນກໍລະນີນີ້ເພື່ອວ່າຜົນກະທົບຈະຄ້າຍກັບວ່າ shell ໃຫມ່ຖືກເອີ້ນເພື່ອຈັດການ script shell ad-hoc, ເວັ້ນເສຍແຕ່ວ່າສະຖານທີ່ຂອງຄໍາສັ່ງຮວບຮວມຢູ່ໃນຫອຍແມ່ຈະຖືກຈົດຈໍາໂດຍ ເດັກນ້ອຍ.

ໃຫ້ສັງເກດວ່າສະບັບທີ່ຜ່ານມາຂອງເອກະສານນີ້ແລະລະຫັດແຫຼ່ງຂໍ້ມູນຕົວມັນເອງຜິດພາດແລະສະຫລາດໄປຫາສະຄິບໂດຍບໍ່ມີເລກ magic ເປັນ "ຂັ້ນຕອນການແກະ".

ເສັ້ນທາງຄົ້ນຫາ

ເມື່ອຕັ້ງຕໍາແຫນ່ງຄໍາສັ່ງ, ແກະຄັ້ງທໍາອິດເບິ່ງເບິ່ງວ່າມັນມີຫນ້າທີ່ຂອງແກະດ້ວຍຊື່ນັ້ນ. ຫຼັງຈາກນັ້ນ, ມັນເບິ່ງສໍາລັບຄໍາສັ່ງ builtin ໂດຍຊື່ວ່າ. ຖ້າບໍ່ພົບຄໍາສັ່ງ builtin, ຫນຶ່ງໃນສອງສິ່ງທີ່ເກີດຂື້ນ:

  1. ຊື່ຄໍາສັ່ງທີ່ມີ slash ແມ່ນພຽງແຕ່ປະຕິບັດໂດຍບໍ່ມີການຊອກຫາໃດໆ.
  2. Shell ຄົ້ນຫາແຕ່ລະລາຍະການໃນ PATH ສໍາລັບຄໍາສັ່ງ. ຄ່າຂອງຕົວແປ PATH ຄວນເປັນຊຸດຂອງລາຍະການແຍກດ້ວຍຄໍລໍາ ລາຍະການແຕ່ລະປະກອບດ້ວຍຊື່ຂອງໄດເລກະທໍລີ. ໄດເລກະທໍລີປະຈຸບັນອາດຖືກສະແດງໂດຍກົງໂດຍຊື່ໄດເລກະທໍລີເປົ່າ, ຫຼື explicitly ໂດຍໄລຍະດຽວ.

ສະຖານະການອອກຈາກຄໍາສັ່ງ

ຄໍາສັ່ງແຕ່ລະມີສະຖານະການການທ່ອງທ່ຽວທີ່ສາມາດມີອິດທິພົນຕໍ່ພຶດຕິກໍາຂອງຄໍາສັ່ງຂອງແກະອື່ນ. ຮູບແບບດັ່ງກ່າວແມ່ນວ່າຄໍາສັ່ງອອກຈາກສູນສໍາລັບປະກະຕິຫຼືຜົນສໍາເລັດ, ແລະບໍ່ແມ່ນສູນສໍາລັບຄວາມລົ້ມເຫລວ, ຄວາມຜິດພາດ, ຫຼືຕົວຊີ້ບອກທີ່ບໍ່ຖືກຕ້ອງ. ຫນ້າຜູ້ຊາຍສໍາລັບແຕ່ລະຄໍາສັ່ງຄວນລະບຸລະຫັດການທ່ອງທ່ຽວຕ່າງໆແລະຫມາຍຄວາມວ່າແນວໃດ. ນອກຈາກນັ້ນ, ຄໍາສັ່ງ builtin ກັບຄືນລະຫັດອອກ, ເຊັ່ນດຽວກັນກັບການປະຕິບັດງານແກະປະຕິບັດ.

Complex Commands

ຄໍາສັບສະລັບສັບຊ້ອນແມ່ນການປະສົມປະສານຂອງຄໍາສັ່ງງ່າຍດາຍທີ່ມີຜູ້ຄວບຄຸມການຄວບຄຸມຫຼືຄໍາສັບຕ່າງໆ, ຮ່ວມກັນສ້າງຄໍາສັ່ງທີ່ສັບສົນຂະຫນາດໃຫຍ່. ໂດຍທົ່ວໄປ, ຄໍາສັ່ງແມ່ນຫນຶ່ງໃນດັ່ງຕໍ່ໄປນີ້:

  • ຄໍາສັ່ງງ່າຍດາຍ
  • pipeline
  • ລາຍຊື່ຫຼືລາຍການປະສົມປະສານ
  • ຄໍາສັ່ງປະສົມ
  • definition function

ເວັ້ນເສຍແຕ່ວ່າໄດ້ລະບຸໄວ້ຖ້າບໍ່ດັ່ງນັ້ນ, ສະຖານະພາບການທ່ອງທ່ຽວຂອງຄໍາສັ່ງແມ່ນຄໍາສັ່ງງ່າຍໆສຸດທ້າຍທີ່ຖືກນໍາໃຊ້ໂດຍຄໍາສັ່ງ.

ທໍ່ລະບາຍນ້ໍາ

ທໍ່ເປັນລໍາດັບຂອງຄໍາສັ່ງຫນຶ່ງຫລືຫຼາຍທີ່ແຍກອອກໂດຍຕົວຄວບຄຸມຄວບຄຸມ |. ຜະລິດຕະພັນມາດຕະຖານຂອງທັງຫມົດແຕ່ຄໍາສັ່ງສຸດທ້າຍແມ່ນເຊື່ອມຕໍ່ກັບການນໍາໃຊ້ມາດຕະຖານຂອງຄໍາສັ່ງຕໍ່ໄປ. ຜົນຜະລິດມາດຕະຖານຂອງຄໍາສັ່ງສຸດທ້າຍແມ່ນໄດ້ຮັບການສືບທອດຈາກແກະ, ຕາມປົກກະຕິ.

ຮູບແບບສໍາລັບທໍ່ສົ່ງແມ່ນ:

[!] command1 [| command2]

ຜົນຜະລິດມາດຕະຖານຂອງຄໍາສັ່ງ 1 ແມ່ນເຊື່ອມຕໍ່ກັບ input standard ຂອງ command2. ການປ້ອນຂໍ້ມູນມາດຕະຖານ, ຜົນຜະລິດມາດຕະຖານ, ຫຼືຄໍາສັ່ງທັງສອງຖືກຖືວ່າໄດ້ຮັບການມອບຫມາຍໂດຍທາງທໍ່ກ່ອນທີ່ການປ່ຽນເສັ້ນທາງໃດໆທີ່ກໍານົດໂດຍຕົວແທນຜູ້ສົ່ງອອກທີ່ເປັນສ່ວນຫນຶ່ງຂອງຄໍາສັ່ງ.

ຖ້າເສັ້ນທາງບໍ່ຢູ່ໃນພື້ນຫລັງ (ສົນທະນາຕໍ່ມາ), Shell ລໍຖ້າຄໍາສັ່ງທັງຫມົດເພື່ອໃຫ້ສໍາເລັດ.

ຖ້າຫາກວ່າຄໍາສັບສະຫງວນ! ສະຖານະການການທ່ອງທ່ຽວແມ່ນບໍ່ຢູ່ໃນແຜນທີ່, ສະຖານະການການທ່ອງທ່ຽວແມ່ນສະຖານະການອອກຂອງຄໍາສັ່ງສຸດທ້າຍທີ່ໄດ້ລະບຸໄວ້ໃນທໍ່. ຖ້າບໍ່ດັ່ງນັ້ນ, ສະຖານະການການທ່ອງທ່ຽວແມ່ນບໍ່ມີເຫດຜົນທີ່ບໍ່ແມ່ນສະຖານະການອອກຂອງຄໍາສັ່ງສຸດທ້າຍ. ດັ່ງນັ້ນ, ຖ້າຄໍາສັ່ງສຸດທ້າຍກັບຄືນສູນ, ສະຖານະການການທ່ອງທ່ຽວແມ່ນ 1; ຖ້າຄໍາສັ່ງສຸດທ້າຍສົ່ງຄືນຫຼາຍກວ່າສູນ, ສະຖານະການອອກຈະສູນ.

ເນື່ອງຈາກການປະຕິບັດເສັ້ນທາງຂອງມາດຕະຖານການປ້ອນຂໍ້ມູນຫຼືມາດຕະຖານຜົນຜະລິດຫຼືທັງສອງຈະເກີດຂຶ້ນກ່ອນການໂອນ, ມັນສາມາດດັດແປງໄດ້ໂດຍການປ່ຽນເສັ້ນທາງ. ຍົກ​ຕົວ​ຢ່າງ:

$ command1 2> & 1 | command2

ສົ່ງທັງຜົນຜະລິດມາດຕະຖານແລະຂໍ້ຜິດພາດມາດຕະຖານຂອງຄໍາສັ່ງ 1 ກັບຄໍາສັ່ງມາດຕະຖານຂອງຄໍາສັ່ງ 2.

A ຫຼື terminator ເຮັດໃຫ້ OR-list ກ່ອນຫນ້າ (ອະທິບາຍຕໍ່ໄປ) ຈະຖືກປະຕິບັດຕາມລໍາດັບ; & ເຮັດໃຫ້ການປະຕິບັດ asynchronous ຂອງ preceding AND-OR-list.

ຫມາຍເຫດວ່າບໍ່ຄ້າຍຄືກັບແກະອື່ນໆບາງ, ແຕ່ລະຂັ້ນຕອນໃນເສັ້ນທໍ່ນັ້ນແມ່ນເດັກຂອງຫີບທີ່ເອີ້ນກັນ (ເວັ້ນແຕ່ວ່າມັນເປັນ shellin, ໃນກໍລະນີທີ່ມັນປະຕິບັດໃນແກະໃນປະຈຸບັນ - ແຕ່ຜົນກະທົບທີ່ມັນມີຢູ່ໃນສະພາບແວດລ້ອມຖືກລຶບລ້າງແລ້ວ).

ຄໍາສັ່ງພື້ນຖານ -

ຖ້າຄໍາສັ່ງຖືກຢຸດໂດຍຕົວຄວບຄຸມຄວບຄຸມ ampersand (&), shell ສາມາດເຮັດຄໍາສັ່ງ asynchronously - ດັ່ງນັ້ນ, shell ບໍ່ໄດ້ລໍຖ້າຄໍາສັ່ງສໍາເລັດກ່ອນທີ່ຈະປະຕິບັດຄໍາສັ່ງຕໍ່ໄປ.

ຮູບແບບສໍາລັບການດໍາເນີນການຄໍາສັ່ງຢູ່ໃນພື້ນຫລັງແມ່ນ:

command1 & [command2 &]

ຖ້າຫອຍບໍ່ໂຕ້ຕອບການໂຕ້ຕອບມາດຕະຖານຂອງຄໍາສັ່ງທີ່ບໍ່ຖືກຕ້ອງຖືກກໍານົດໃຫ້ / dev / null

ລາຍຊື່ - ໂດຍທົ່ວໄປເວົ້າ

ບັນຊີລາຍການແມ່ນລໍາດັບຂອງຄໍາສັ່ງສູນຫຼືຫຼາຍກວ່າແຍກໂດຍ newlines, semicolons, or ampersands, ແລະໄດ້ຮັບການຍົກເລີກໂດຍການຫນຶ່ງຂອງສາມຕົວອັກສອນເຫຼົ່ານີ້. ຄໍາສັ່ງຢູ່ໃນບັນຊີແມ່ນຖືກປະຕິບັດຕາມຄໍາສັ່ງທີ່ພວກເຂົາຂຽນ. ຖ້າຄໍາສັ່ງຖືກຕິດຕາມມາໂດຍລໍາໂພງແລ້ວ, ແກະຈະເລີ່ມຄໍາສັ່ງແລະດໍາເນີນການຕໍ່ໄປໃນຄໍາສັ່ງຕໍ່ໄປ; ຖ້າບໍ່ດັ່ງນັ້ນມັນລໍຖ້າຄໍາສັ່ງທີ່ຈະຢຸດກ່ອນທີ່ຈະດໍາເນີນການຕໍ່ໄປ.

ຜູ້ປະຕິບັດງານວົງຈອນສັ້ນວົງຈອນ

`` && '' ແລະ `` || '' ແມ່ນຜູ້ປະກອບຄໍາສັ່ງ OR-OR. `` && '' ດໍາເນີນການຄໍາສັ່ງທໍາອິດ, ແລະຫຼັງຈາກນັ້ນ executes ຄໍາສັ່ງທີສອງ iff ສະຖານະການອອກຂອງຄໍາສັ່ງຄັ້ງທໍາອິດແມ່ນສູນ. `` || '' ແມ່ນຄ້າຍຄືກັນ, ແຕ່ປະຕິບັດຄໍາສັ່ງທີສອງຖ້າ if ສະຖານະການອອກຂອງຄໍາສັ່ງທໍາອິດແມ່ນ nonzero. `` && '' ແລະ `` || '' ທັງສອງມີຄວາມສໍາຄັນດຽວກັນ.

ການຄວບຄຸມການໄຫຼ - ຄວບຄຸມ - ຖ້າ, ໃນຂະນະທີ່, ສໍາລັບ, ກໍລະນີ

syntax ຂອງຄໍາສັ່ງ if ແມ່ນ

ຖ້າຫາກວ່າບັນຊີ
ຫຼັງຈາກນັ້ນລາຍການ
[elif list
ຫຼັງຈາກນັ້ນລາຍການ] ...
[ລາຍຊື່ອື່ນ]
fi

syntax ຂອງຄໍາສັ່ງໃນຂະນະທີ່ແມ່ນ

ໃນຂະນະທີ່ລາຍຊື່
do list
ເຮັດແລ້ວ

ບັນຊີລາຍຊື່ສອງແມ່ນຖືກປະຕິບັດຢ່າງຕໍ່ເນື່ອງໃນຂະນະທີ່ສະຖານະການອອກຂອງບັນຊີທໍາອິດແມ່ນສູນ. ຄໍາສັ່ງຈົນກ່ວາຄໍາສັ່ງແມ່ນຄ້າຍຄືກັນ, ແຕ່ມີຄໍາຈົນກວ່າໃນເວລາທີ່, ຊຶ່ງເຮັດໃຫ້ມັນເຮັດຊ້ໍາຈົນກ່ວາສະຖານະການອອກຂອງບັນຊີທໍາອິດແມ່ນສູນ.

syntax ຂອງຄໍາສັ່ງສໍາລັບແມ່ນ

ສໍາລັບຕົວແປໃນຄໍາສັບ ...
do list
ເຮັດແລ້ວ

ຄໍາສັບໄດ້ຖືກຂະຫຍາຍອອກໄປ, ແລະຫຼັງຈາກນັ້ນບັນຊີລາຍການຖືກປະຕິບັດຢ່າງຕໍ່ເນື່ອງກັບຕົວແປທີ່ຕັ້ງໄວ້ໃນແຕ່ລະຄໍາ. ເຮັດແລະເຮັດໄດ້ອາດຈະຖືກແທນທີ່ດ້ວຍ `` {'' ແລະ ``} ''

syntax ຂອງການຢຸດແລະສືບຕໍ່ຄໍາສັ່ງແມ່ນ

break [num]
ສືບຕໍ່ [num]

Break breaks the num innermost for or while loops ສືບຕໍ່ສືບຕໍ່ກັບການເລີ້ມຕໍ່ໄປຂອງຮອບທີ່ສຸດ. ເຫຼົ່ານີ້ແມ່ນຖືກປະຕິບັດເປັນຄໍາສັ່ງ builtin.

syntax ຂອງຄໍາສັ່ງກໍລະນີແມ່ນ

case word in
pattern) list ;;
...
esac

ຮູບແບບດັ່ງກ່າວສາມາດເປັນຮູບແບບຫນຶ່ງຫຼືຫຼາຍກວ່າ (ເບິ່ງຮູບແບບ Shell ທີ່ໄດ້ອະທິບາຍຕໍ່ມາ), ແຍກດ້ວຍລັກສະນະ `` ``.

Grouping Commands Together

ຄໍາສັ່ງສາມາດຖືກຈັດແບ່ງເປັນລາຍລັກອັກສອນ

(ລາຍຊື່)

ຫຼື

{list

ຄັ້ງທໍາອິດຂອງການເຫຼົ່ານີ້ປະຕິບັດຄໍາສັ່ງໃນ subshell. ຄໍາສັ່ງຂອງ Builtin ທີ່ຖືກຈັດເປັນກຸ່ມ (ລາຍຊື່) ຈະບໍ່ມີຜົນກະທົບຕໍ່ລະບົບປະຈຸບັນ. ແບບຟອມທີສອງບໍ່ສ້ອມແຊັກອື່ນເພື່ອໃຫ້ມີປະສິດທິຜົນເລັກນ້ອຍ. ການຈັດກຸ່ມຄໍາສັ່ງດ້ວຍວິທີນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດໂອນຜົນຜະລິດຂອງພວກເຂົາໄດ້ຕາມທີ່ພວກເຂົາເປັນຫນຶ່ງໃນໂຄງການ:

{printf hello printf world \ n "}}> greeting

ຟັງຊັນ

syntax ຂອງຄໍານິຍາມຄໍາຮ້ອງສະຫມັກແມ່ນ

name () command

ຄໍານິຍາມຫນ້າທີ່ແມ່ນຄໍາສັ່ງປະຕິບັດ; ໃນເວລາທີ່ມັນປະຕິບັດມັນຕິດຕັ້ງຟັງຊັນທີ່ມີຊື່ຊື່ແລະສົ່ງກັບຄືນສະຖານະການຂອງສູນ. ຄໍາສັ່ງແມ່ນຕາມປົກກະຕິບັນຊີລາຍຊື່ທີ່ຢູ່ລະຫວ່າງ `` {'' ແລະ ``} ''

ຕົວແປອາດຈະໄດ້ຮັບການປະກາດວ່າເປັນທ້ອງຖິ່ນເພື່ອຟັງຊັນໂດຍໃຊ້ຄໍາສັ່ງຂອງທ້ອງຖິ່ນ. ນີ້ຄວນຈະປາກົດເປັນຄໍາເວົ້າທໍາອິດຂອງຟັງຊັນແລະ syntax ແມ່ນ

ທ້ອງຖິ່ນ [variable | -]

ທ້ອງຖິ່ນຖືກປະຕິບັດເປັນຄໍາສັ່ງ builtin.

ໃນເວລາທີ່ຕົວແປແມ່ນຢູ່ໃນທ້ອງຖິ່ນ, ມັນ inherits ມູນຄ່າເບື້ອງຕົ້ນແລະທຸງສົ່ງອອກແລະ readonly ຈາກຕົວແປທີ່ມີຊື່ດຽວກັນໃນຂອບເຂດທີ່ອ້ອມຂ້າງ, ຖ້າມີ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຕົວປ່ຽນແປງແມ່ນເລີ່ມຕົ້ນບໍ່ໄດ້. Shell ໃຊ້ Scoping ແບບເຄື່ອນໄຫວ, ດັ່ງນັ້ນຖ້າທ່ານເຮັດໃຫ້ຕົວແປ x ທີ່ຢູ່ໃນການເຮັດວຽກ f, ເຊິ່ງຫຼັງຈາກນັ້ນເອີ້ນ function g, ການອ້າງອິງກັບຕົວແປ x ທີ່ເຮັດພາຍໃນ g ຈະອ້າງອີງເຖິງຕົວແປ x ປະກາດພາຍໃນ f, ບໍ່ແມ່ນຕົວແປທົ່ວໂລກທີ່ມີຊື່ x ທີ່ຢູ່

ຕົວກໍານົດການພິເສດເທົ່ານັ້ນທີ່ສາມາດເຮັດໄດ້ແມ່ນ local `` - '' ການເຮັດ `` - '' ທ້ອງຖິ່ນຕົວເລືອກ shell ທີ່ມີການປ່ຽນແປງຜ່ານຄໍາສັ່ງທີ່ກໍານົດໄວ້ພາຍໃນຫນ້າທີ່ເພື່ອຄືນຄ່າຄ່າຕົ້ນສະບັບຂອງພວກເຂົາເມື່ອມີຜົນຕອບແທນ.

syntax ຂອງຄໍາສັ່ງກັບແມ່ນ

return [exitstatus

ມັນຢຸດການເຮັດວຽກໃນປະຈຸບັນ. ການກັບຄືນຖືກປະຕິບັດເປັນຄໍາສັ່ງທີ່ສ້າງຂຶ້ນ.

Variables and Parameters

ແກະສະແດງຊຸດຕົວກໍານົດການ. ພາລາມິເຕີທີ່ຫມາຍເຖິງຊື່ທີ່ເອີ້ນວ່າຕົວແປ. ໃນເວລາທີ່ເລີ່ມຕົ້ນ, ແກະປ່ຽນທຸກຕົວປ່ຽນສະພາບແວດລ້ອມໃນຕົວແປຂອງແກະ. ຕົວແປໃຫມ່ສາມາດກໍານົດໂດຍໃຊ້ແບບຟອມ

name = value

ຕົວແປທີ່ກໍານົດໂດຍຜູ້ໃຊ້ຕ້ອງມີຊື່ທີ່ປະກອບດ້ວຍຕົວອັກສອນ, ຕົວເລກແລະເລິກເທົ່ານັ້ນ - ສ່ວນທໍາອິດທີ່ຕ້ອງບໍ່ຈໍານວນຕົວເລກ. ພາລາມິເຕີສາມາດຫມາຍເລກຫລືຕົວອັກສອນພິເສດທີ່ໄດ້ອະທິບາຍໄວ້ຂ້າງລຸ່ມນີ້.

Positional Parameters

ພາລາມິເຕີຕໍາແຫນ່ງເປັນພາລາມິເຕີໂດຍຫມາຍເລກ (n> 0) Shell ກໍານົດເຫຼົ່ານີ້ໃນເບື້ອງຕົ້ນກັບຄ່າຂອງການໂຕ້ຖຽງບັນທັດຄໍາສັ່ງຂອງມັນທີ່ປະຕິບັດຕາມຊື່ຂອງ shell shell. ການ ຕັ້ງຄ່າ (1) builtin ຍັງສາມາດໃຊ້ເພື່ອກໍານົດຫຼືປັບຄ່າພວກມັນໄດ້.

Special Parameters

ພາລາມິເຕີພິເສດເປັນພາລາມິເຕີທີ່ຫມາຍໂດຍຫນຶ່ງຂອງຕົວອັກສອນພິເສດຕໍ່ໄປນີ້. ຄ່າຂອງພາລາມິເຕີແມ່ນລະບຸໄວ້ຕໍ່ກັບຕົວອັກສອນຂອງມັນ.

*

ຂະຫຍາຍຕົວໄປຫາຕົວກໍານົດຕໍາແຫນ່ງ, ເລີ່ມຕົ້ນຈາກຫນຶ່ງ. ໃນເວລາທີ່ການຂະຫຍາຍຕົວເກີດຂຶ້ນພາຍໃນສະ ຕິງ ຄູ່ຄູ່, ມັນຂະຫຍາຍໄປຫາສະຫນາມດຽວທີ່ມີຄ່າຂອງແຕ່ລະພາລາທີ່ແຍກອອກໂດຍຕົວອັກສອນທໍາອິດຂອງຕົວແປ IFS ຫຼືໂດຍ ຖ້າ IFS ບໍ່ກໍານົດ.

@

ຂະຫຍາຍຕົວໄປຫາຕົວກໍານົດຕໍາແຫນ່ງ, ເລີ່ມຕົ້ນຈາກຫນຶ່ງ. ໃນເວລາທີ່ການຂະຫຍາຍຕົວເກີດຂຶ້ນພາຍໃນວົງຢືມຄູ່, ແຕ່ລະພາລາທິສະທາງທີ່ຂະຫຍາຍຕົວເປັນການໂຕ້ຖຽງແຍກຕ່າງຫາກ. ຖ້າບໍ່ມີຕົວກໍານົດຕໍາແຫນ່ງ, ການຂະຫຍາຍ @ ສ້າງການໂຕ້ຖຽງບໍ່ໄດ້, ເຖິງແມ່ນວ່າ @ ແມ່ນ double-quoted. ຕົວຢ່າງເຊັ່ນນີ້ຫມາຍຄວາມວ່າຖ້າ $ 1 ແມ່ນ `` abc '' ແລະ $ 2 ແມ່ນ `` def ບັນທຶກ '' ຫຼັງຈາກນັ້ນ Qq $ @ ຈະຂະຫຍາຍຕົວກັບສອງໂຕ້ຖຽງ:

abc def ghi

#

ຂະຫຍາຍຕົວໄປຫາຈໍານວນຕົວກໍານົດຕໍາແຫນ່ງ.

?

ຂະຫຍາຍໄປສູ່ສະຖານະການອອກຂອງທໍ່ທີ່ຜ່ານມາທີ່ສຸດ.

- (Hyphen)

ການຂະຫຍາຍຕົວໄປຍັງປ່ອງທາງເລືອກໃນປະຈຸບັນ (ຊື່ຕົວເລືອກຕົວອັກສອນດຽວທີ່ສອດຄ້ອງກັບສາຍອັກຂະລະ) ຕາມທີ່ໄດ້ກໍານົດໄວ້ໃນການເອີ້ນໂດຍຄໍາສັ່ງ builtin command ຫຼື implicitly ໂດຍ shell.

$

ຂະຫຍາຍໄປຍັງຫມາຍເລກຂະບວນການຂອງ shell ທີ່ເອີ້ນວ່າ. subshell ຍັງຄົງມີມູນຄ່າດຽວກັນຂອງ $ ເປັນພໍ່ແມ່ຂອງຕົນ.

!

ຂະຫຍາຍຂະບວນການ ID ຂອງຄໍາສັ່ງພື້ນຖານທີ່ຜ່ານມາຫຼ້າສຸດທີ່ປະຕິບັດຈາກແກະປັດຈຸບັນ. ສໍາລັບທໍ່, ຫມາຍເລກຂະບວນການແມ່ນຄໍາສັ່ງສຸດທ້າຍໃນທໍ່.

0 (ສູນ)

ຂະຫຍາຍໄປຍັງຊື່ຂອງ shell ຫຼື shell script.

Word Expansions

ຂໍ້ກໍານົດນີ້ອະທິບາຍການຂະຫຍາຍຕົວຕ່າງໆທີ່ຖືກປະຕິບັດໃນຄໍາສັບຕ່າງໆ. ບໍ່ແມ່ນການຂະຫຍາຍຕົວທັງຫມົດແມ່ນປະຕິບັດໃນທຸກຄໍາ, ດັ່ງທີ່ອະທິບາຍຕໍ່ມາ.

ຂະຫຍາຍ Tilde, ຂະຫຍາຍຕົວກໍານົດ, ປ່ຽນແທນຄໍາສັ່ງ, ການຂະຫຍາຍຕົວເລກ, ແລະການຖອນຂໍ້ມູນທີ່ເກີດຂຶ້ນພາຍໃນຄໍາດຽວຂະຫຍາຍໄປເປັນພາກສະຫນາມດຽວ. ມັນແມ່ນພຽງແຕ່ການຂະຫຍາຍພາກສະຫນາມຫຼືການຂະຫຍາຍຕົວທີ່ສາມາດສ້າງຂົງເຂດຫຼາຍຈາກຄໍາດຽວ. ຂໍ້ຍົກເວັ້ນດຽວກັບກົດນີ້ແມ່ນການຂະຫຍາຍຕົວຂອງພາລາມິເຕີພິເສດ @ ພາຍໃນວົງຢືມ double, ດັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງເທິງ.

ຄໍາສັ່ງຂະຫຍາຍຄໍາແມ່ນ:

  1. Tilde Expansion, Parameter Expansion, Command Substitution, Expansion Arithmetic (ທັງຫມົດນີ້ເກີດຂຶ້ນໃນເວລາດຽວກັນ).
  2. ການກະທໍາພາກສະຫນາມແມ່ນດໍາເນີນໃນຂົງເຂດທີ່ສ້າງໂດຍຂັ້ນຕອນ (1) ເວັ້ນເສຍແຕ່ວ່າຕົວແປ IFS ແມ່ນ null.
  3. Pathname Expansion (ເວັ້ນເສຍແຕ່ກໍານົດໄວ້ - f ແມ່ນມີຜົນ).
  4. Quote Removal

ຕົວອັກສອນ $ ໄດ້ຖືກນໍາໃຊ້ເພື່ອແນະນໍາການຂະຫຍາຍຕົວພາການ, ການປ່ຽນແທນຄໍາສັ່ງ, ຫຼືການປະເມີນຄະນິດສາດ.

ການຂະຫຍາຍ Tilde (ແທນປື້ມທີ່ຢູ່ຂອງຜູ້ໃຊ້)

ຄໍາທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນທີ່ບໍ່ໄດ້ລະບຸ (~) ແມ່ນຕ້ອງມີການຂະຫຍາຍຕົວເລັກນ້ອຍ. ຕົວອັກສອນທັງຫມົດເຖິງ slash (/) ຫຼືທ້າຍຄໍາແມ່ນຖືກຖືວ່າເປັນຊື່ຜູ້ໃຊ້ແລະຖືກແທນທີ່ດ້ວຍລະບົບປະຕິບັດຫນ້າທໍາອິດຂອງຜູ້ໃຊ້. ຖ້າຫາກວ່າຊື່ຜູ້ໃຊ້ຫາຍໄປ (ໃນ ~ / foobar) tilde ຈະຖືກແທນທີ່ດ້ວຍຄ່າຂອງ ຫນ້າທໍາອິດ (ລະບົບປະຕິທິນບ້ານຂອງຜູ້ໃຊ້ປັດຈຸບັນ).

Parameter Expansion

ຮູບແບບສໍາລັບການຂະຫຍາຍຕົວພາລາມີດັ່ງນີ້:

ບ່ອນທີ່ການສະແດງອອກປະກອບດ້ວຍລັກສະນະທັງຫມົດຈົນກ່ວາຄໍາວ່າ `` `` `` `` `` `` '' ທັງຫມົດ escaped ໂດຍຮວບຮວມຫຼືພາຍໃນຊ່ອຍແນ່, ແລະລັກສະນະຂອງການຂະຫຍາຍຕົວເລກຖານ, ການປ່ຽນແທນຄໍາສັ່ງແລະການຂະຫຍາຍຕົວບໍ່ໄດ້ຖືກກວດສອບໃນການກໍານົດ matching ``} ''

ຮູບແບບທີ່ງ່າຍທີ່ສຸດສໍາລັບການຂະຫຍາຍຕົວຕົວກໍານົດແມ່ນ:

ຄ່າ, ຖ້າມີ, ຂອງພາລາມິເຕີຈະຖືກແທນທີ່.

ຊື່ຫຼືສັນຍາລັກຂອງພາລາມິເຕີສາມາດຖືກປິດໄວ້ໃນຂົວ, ເຊິ່ງແມ່ນຕົວເລືອກ, ຍົກເວັ້ນສໍາລັບຕົວກໍານົດຕໍາແຫນ່ງທີ່ມີຫຼາຍກ່ວາຕົວເລກຫຼືໃນເວລາທີ່ພາການຕິດຕາມໂດຍຕົວອັກສອນທີ່ສາມາດແປເປັນສ່ວນຫນຶ່ງຂອງຊື່. ຖ້າການຂະຫຍາຍຕົວພາການເກີດຂື້ນພາຍໃນສອງຄໍາເວົ້າ:

  1. ການຂະຫຍາຍຕົວ Pathname ບໍ່ໄດ້ປະຕິບັດຕາມຜົນຂອງການຂະຫຍາຍຕົວ.
  2. ການແບ່ງປັນພາກສະຫນາມບໍ່ໄດ້ຜົນຕໍ່ຜົນຂອງການຂະຫຍາຍຕົວ, ຍົກເວັ້ນ @.

ນອກຈາກນັ້ນ, ການຂະຫຍາຍຕົວພາລາຄາສາມາດດັດແປງໂດຍໃຊ້ຮູບແບບຫນຶ່ງໃນຮູບແບບດັ່ງຕໍ່ໄປນີ້.

ໃຊ້ຄ່າເລີ່ມຕົ້ນ ຖ້າພາລາມິເຕີຖືກກໍາຫນົດຫລືບໍ່ຖືກຕ້ອງ, ການຂະຫຍາຍຕົວຂອງຄໍາຖືກແທນທີ່; ຖ້າບໍ່ດັ່ງນັ້ນ, ມູນຄ່າຂອງພາລາມິເຕີຈະຖືກແທນທີ່.

Assign Default Values ຖ້າພາລາມິເຕີຖືກກໍາຫນົດຫລືບໍ່ຖືກຕ້ອງ, ການຂະຫຍາຍຕົວຂອງຄໍາຖືກກໍາຫນົດໃຫ້ເປັນພາລາມິເຕີ ໃນທຸກໆກໍລະນີ, ມູນຄ່າສຸດທ້າຍຂອງພາລາມິເຕີຈະຖືກແທນທີ່. ພຽງແຕ່ຕົວແປ, ບໍ່ແມ່ນຕົວກໍານົດຕໍາແຫນ່ງຫຼືຕົວກໍານົດການພິເສດ, ສາມາດໄດ້ຮັບການມອບຫມາຍໃນທາງນີ້.

ລະບຸຂໍ້ຜິດພະລາດຖ້າບໍ່ຖືກຕ້ອງຫລືບໍ່ ຖ້າພາລາມິເຕີຖືກກໍາຫນົດຫລືບໍ່ຖືກຕ້ອງ, ການຂະຫຍາຍຄໍາ (ຫລືຂໍ້ຄວາມທີ່ຊີ້ໃຫ້ເຫັນວ່າມັນບໍ່ຖືກກໍາຫນົດຖ້າຄໍາຖືກຍົກເລີກ) ຈະຖືກຂຽນໄວ້ໃນຂໍ້ຜິດພະລາດມາດຕະຖານແລະເປືອກອອກຈາກສະຖານະການອອກນອກເຫນືອໄປຈາກ ຖ້າບໍ່ດັ່ງນັ້ນ, ມູນຄ່າຂອງພາລາມິເຕີຈະຖືກແທນທີ່. ເປືອກໂຕ້ຕອບຕ້ອງບໍ່ອອກ.

ໃຊ້ຄ່າທາງເລືອກ. ຖ້າພາລາມິເຕີບໍ່ຖືກກໍາຫນົດຫລືບໍ່ຖືກຕ້ອງແທນ ຖ້າບໍ່ດັ່ງນັ້ນ, ການຂະຫຍາຍຕົວຂອງຄໍາຖືກແທນທີ່.

ໃນການຂະຫຍາຍຕົວພາລາມິເຕີທີ່ສະແດງໃຫ້ເຫັນກ່ອນຫນ້ານີ້, ການນໍາໃຊ້ຕົວຊີ້ບອກໃນຮູບແບບຜົນໄດ້ຮັບໃນການທົດສອບສໍາລັບພາລາມິເຕີທີ່ບໍ່ຖືກກໍານົດຫລືບໍ່; omission ຂອງຜົນໄດ້ຮັບຂອງຈໍ້າສອງເມັດໃນການທົດສອບສໍາລັບພາລາມິເຕີທີ່ບໍ່ຖືກຕັ້ງຄ່າເທົ່ານັ້ນ.

Length String ຄວາມຍາວໃນລັກສະນະຂອງມູນຄ່າຂອງພາລາມິເຕີ

ຕໍ່ໄປນີ້ສີ່ແນວພັນຂອງການຂະຫຍາຍຕົວພາການສະຫນອງໃຫ້ສໍາລັບການປຸງແຕ່ງ substring. ໃນແຕ່ລະກໍລະນີ, ການກໍານົດຮູບແບບການຈັບສະຫຼັບ (ເບິ່ງຮູບແບບ Shell), ແທນທີ່ຈະຫມາຍເຖິງການສະແດງອອກແບບປົກກະຕິ, ຖືກນໍາໃຊ້ເພື່ອປະເມີນຮູບແບບຕ່າງໆ. ຖ້າພາລາມິເຕີແມ່ນ * ຫຼື @, ຜົນຂອງການຂະຫຍາຍຕົວແມ່ນບໍ່ໄດ້ລະບຸ. ການຕິດຕັ້ງຕົວກໍານົດການຂະຫຍາຍຕົວແບບພາສາຢ່າງເຕັມທີ່ໃນສອງຂວດບໍ່ໄດ້ເຮັດໃຫ້ສີ່ລັກສະນະດັ່ງຕໍ່ໄປນີ້ຂອງລັກສະນະຮູບແບບທີ່ໄດ້ຮັບການຕີລາຄາ, ໃນຂະນະທີ່ການອ້າງເຖິງຕົວອັກສອນພາຍໃນແຖບທີ່ມີຜົນກະທົບນີ້.

ເອົາຮູບແບບສຸຂະພາບທີ່ນ້ອຍທີ່ສຸດອອກ. ຄໍາສັບຖືກຂະຫຍາຍອອກເພື່ອສ້າງຮູບແບບ. ຂະຫຍາຍພາລາມິເຕີຫຼັງຈາກນັ້ນຜົນໄດ້ຮັບໃນພາລາມິເຕີ, ສ່ວນນ້ອຍສຸດຂອງນາມສະກຸນທີ່ກົງກັບຮູບແບບທີ່ຖືກລຶບ.

ເອົາຮູບແບບສຸຂະພາບທີ່ໃຫຍ່ທີ່ສຸດອອກ. ຄໍາສັບຖືກຂະຫຍາຍອອກເພື່ອສ້າງຮູບແບບ. ການຂະຫຍາຍຕົວຕົວກໍານົດຫຼັງຈາກນັ້ນຜົນໄດ້ຮັບໃນພາລາມິເຕີ, ສ່ວນສ່ວນໃຫຍ່ຂອງນາມສະກຸນທີ່ກົງກັບຮູບແບບທີ່ຖືກລຶບ.

ດຶງອອກຈາກຮູບແບບຕົວ Prefix ຂະຫນາດນ້ອຍສຸດ. ຄໍາສັບຖືກຂະຫຍາຍອອກເພື່ອສ້າງຮູບແບບ. ການຂະຫຍາຍຕົວພາລາມີຜົນໃນພາລາມິເຕີ, ດ້ວຍສ່ວນທີ່ນ້ອຍທີ່ສຸດຂອງຄໍານໍາຫນ້າທີ່ສອດຄ້ອງກັບຮູບແບບທີ່ຖືກລຶບ.

ລົບຮູບແບບຕົວເລກທີ່ໃຫຍ່ທີ່ສຸດ. ຄໍາສັບຖືກຂະຫຍາຍອອກເພື່ອສ້າງຮູບແບບ. ການຂະຫຍາຍຕົວຕົວກໍານົດຫຼັງຈາກນັ້ນຜົນໄດ້ຮັບໃນພາລາມິເຕີ, ສ່ວນສ່ວນໃຫຍ່ຂອງຄໍາແນະນໍາທີ່ກົງກັບຮູບແບບທີ່ຖືກລຶບ.

Command Substitution

ການປ່ຽນແທນຄໍາສັ່ງ ອະນຸຍາດໃຫ້ຜົນຜະລິດຂອງຄໍາສັ່ງທີ່ຈະຖືກແທນທີ່ແທນຊື່ຄໍາສັ່ງຕົວມັນເອງ. ການປ່ຽນແທນຄໍາສັ່ງເກີດຂື້ນໃນເວລາທີ່ຄໍາສັ່ງຖືກປິດບັງດັ່ງຕໍ່ໄປນີ້:

$ (ຄໍາສັ່ງ)

ຫລື Po `` backquoted '' ຮຸ່ນ Pc:

`command`

Shell ຂະຫຍາຍການປ່ຽນແທນຄໍາສັ່ງໂດຍການປະຕິບັດຄໍາສັ່ງໃນສະພາບແວດລ້ອມ subshell ແລະແທນການປ່ຽນແທນຄໍາສັ່ງກັບ output ມາດຕະຖານຂອງຄໍາສັ່ງ, ຖອດລໍາດັບຂອງຫນຶ່ງຫຼືຫຼາຍ s ຢູ່ໃນຕອນທ້າຍຂອງການທົດແທນ. (Embedded s ກ່ອນທີ່ຈະສິ້ນສຸດຂອງຜົນຜະລິດບໍ່ໄດ້ຖືກໂຍກຍ້າຍອອກ, ແຕ່ໃນລະຫວ່າງການແຍກຂໍ້ມູນ, ພວກເຂົາອາດຈະຖືກແປເປັນ , ອີງຕາມມູນຄ່າຂອງ IFS ແລະຖ້ອຍຄໍາທີ່ມີຜົນ.)

Arithmetic expansion

ການຂະຫຍາຍຕົວເລກຄະນິດສາດໃຫ້ກົນໄກສໍາລັບການປະເມີນການສະແດງອອກເປັນເລກໄນແລະການປ່ຽນແທນຄ່າຂອງມັນ. ຮູບແບບສໍາລັບການຂະຫຍາຍຕົວເລກຄະນິດສາດແມ່ນດັ່ງຕໍ່ໄປນີ້:

$ ((expression))

ການສະແດງອອກດັ່ງກ່າວຖືກຖືວ່າເປັນການຄິດໄລ່ສອງຂໍ້, ຍົກເວັ້ນວ່າການສະແດງອອກສອງຕົວພາຍໃນການສະແດງອອກບໍ່ໄດ້ຮັບການປິ່ນປົວພິເສດ. ເປືອກຂະຫຍາຍ tokens ທັງຫມົດໃນການສະແດງອອກສໍາລັບການຂະຫຍາຍຕົວກໍານົດ, ປ່ຽນແທນຄໍາສັ່ງ, ແລະການໂຍກຍ້າຍ quote.

ຕໍ່ໄປ, ແກະໄດ້ປະຕິບັດການນີ້ເປັນການສະແດງອອກເລກຄະນິດສາດແລະແທນຄ່າຂອງການສະແດງອອກ.

ການແຍກພື້ນທີ່ສີຂາວ (ການແຍກພາກສະຫນາມ)

ຫຼັງຈາກການຂະຫຍາຍຕົວພາການ, ການປ່ຽນແທນຄໍາສັ່ງແລະການຂະຫຍາຍຕົວເລກຄະນິດສາດ, ແກະສະແກນຜົນຂອງການຂະຫຍາຍແລະການປ່ຽນແທນທີ່ບໍ່ໄດ້ເກີດຂື້ນໃນວົງຢືມ double-quote ສໍາລັບການກະແຈກກະຈາຍຂອງພາກສະຫນາມແລະສາມາດຜົນໄດ້.

Shell ປະຕິບັດແຕ່ລະລັກສະນະຂອງ IFS ເປັນ delimiter ແລະນໍາໃຊ້ delimiters ເພື່ອແບ່ງປັນຜົນຂອງການຂະຫຍາຍຕົວ parameter ແລະການປ່ຽນແທນຄໍາສັ່ງເຂົ້າໄປໃນທົ່ງນາ.

Pathname Expansion (File Generation Name)

ເວັ້ນເສຍແຕ່ວ່າທົງ - f ຖືກກໍານົດ, ການສ້າງຊື່ໄຟລ໌ຈະຖືກປະຕິບັດຫຼັງຈາກການແບ່ງປັນຄໍາແມ່ນສໍາເລັດ. ຄໍາສັບແຕ່ລະຄົນຖືກເບິ່ງວ່າເປັນຊຸດຂອງຮູບແບບ, ແຍກດ້ວຍ slashes. ຂະບວນການຂອງການຂະຫຍາຍຕົວແທນຄໍາສັບທີ່ມີຊື່ຂອງໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງຫມົດທີ່ມີຊື່ສາມາດຖືກສ້າງຂຶ້ນໂດຍການປ່ຽນຮູບແບບແຕ່ລະແບບດ້ວຍສາຍທີ່ກົງກັບຮູບແບບທີ່ລະບຸ. ມີສອງຂໍ້ຈໍາກັດກ່ຽວກັບການນີ້: ທໍາອິດ, ຮູບແບບບໍ່ສາມາດຊອກຫາສາຍສະຕິງທີ່ມີ slash, ແລະທີສອງ, ຮູບແບບທີ່ບໍ່ສາມາດຊອກຫາຊ່ອຍແນ່ເລີ່ມຕົ້ນດ້ວຍໄລຍະເວລາເວັ້ນເສຍແຕ່ລັກສະນະທໍາອິດຂອງຮູບແບບແມ່ນໄລຍະເວລາ. ພາກຕໍ່ໄປອະທິບາຍຮູບແບບທີ່ໃຊ້ສໍາລັບທັງສອງ Pathname ການຂະຫຍາຍແລະຄໍາສັ່ງ (1) ຄໍາສັ່ງ.

Shell Patterns

ຮູບແບບປະກອບດ້ວຍລັກສະນະປົກກະຕິ, ເຊິ່ງກົງກັບຕົວຂອງເຂົາເອງ, ແລະລັກສະນະ meta. ລັກສະນະ meta ແມ່ນ ``! '' `` `` `` `` ແລະ `` ['' ລັກສະນະເຫຼົ່ານີ້ຈະສູນເສຍຄວາມຫມາຍພິເສດຂອງພວກເຂົາຖ້າພວກເຂົາຖືກກ່າວເຖິງ. ໃນເວລາທີ່ການປ່ຽນແປງຄໍາສັ່ງຫຼືປ່ຽນແປງໄດ້ຖືກປະຕິບັດແລະສັນຍາເງິນໂດລາຫຼືວົງຢືມກັບຄືນບໍ່ໄດ້ຖືກກ່າວເຖິງສອງຄັ້ງ, ມູນຄ່າຂອງຕົວແປຫຼືຜົນຂອງຄໍາສັ່ງຈະຖືກສະແກນສໍາລັບລັກສະນະເຫຼົ່ານີ້ແລະພວກມັນຈະຖືກປ່ຽນເປັນລັກສະນະ meta.

ຕົວອັກສອນ (`` * '') ກົງກັບສາຍອັກຂະລະຕ່າງໆ. ເຄື່ອງຫມາຍຄໍາຖາມກົງກັບຕົວອັກສອນໃດຫນຶ່ງ. ວົງເລັບເບື້ອງຊ້າຍ (`` [''] ນໍາສະເຫນີປະເພດຂອງຕົວລະຄອນ. ຖ້າມີ `` `` '' '' ຫາຍໄປຫຼັງຈາກນັ້ນ, `` ['' ກົງກັບ `` ['' ແທນທີ່ຈະແນະນໍາໃຫ້ມີລັກສະນະເປັນຕົວອັກສອນ]. ຫ້ອງຮຽນລັກສະນະທີ່ກົງກັບລັກສະນະຂອງຕົວອັກສອນລະຫວ່າງວົງເລັບສີ່ຫລ່ຽມ. ລະດັບຂອງຕົວອັກສອນອາດຈະຖືກກໍານົດໂດຍໃຊ້ເຄື່ອງຫມາຍລົບ. ຫ້ອງຮຽນລັກສະນະອາດຈະໄດ້ຮັບການປະສົມປະສານໂດຍການເຮັດໃຫ້ເປັນຈຸດ exclamation ລັກສະນະທໍາອິດຂອງຫ້ອງຮຽນລັກສະນະ.

ເພື່ອປະກອບມີ ``] '' ໃນລະດັບລັກສະນະ, ໃຫ້ມັນເປັນລັກສະນະທໍາອິດທີ່ລະບຸໄວ້ (ຫຼັງຈາກ ``! '' ຖ້າມີ). ເພື່ອປະກອບມີເຄື່ອງຫມາຍລົບ, ເຮັດໃຫ້ມັນເປັນລັກສະນະທໍາອິດຫຼືສຸດທ້າຍທີ່ລະບຸໄວ້

Builtins

ພາກນີ້ລາຍຊື່ຄໍາສັ່ງຂອງ builtin ທີ່ຖືກສ້າງຂຶ້ນຍ້ອນວ່າພວກເຂົາຕ້ອງປະຕິບັດການປະຕິບັດງານທີ່ບໍ່ສາມາດປະຕິບັດໄດ້ໂດຍຂະບວນການແຍກຕ່າງຫາກ. ນອກຈາກນີ້, ມີຄໍາສັ່ງອື່ນອີກທີ່ອາດຈະຖືກສ້າງຂຶ້ນເພື່ອປະສິດທິພາບ ( echo 1).

:

ຄໍາສັ່ງ null ທີ່ສົ່ງກັບຄືນມູນຄ່າ 0 (ຈິງ).

ທີ່ຢູ່ file

ຄໍາສັ່ງໃນໄຟລ໌ທີ່ກໍານົດໄວ້ແມ່ນອ່ານແລະປະຕິບັດໂດຍແກະ.

alias [ name [ = string ... ]]

ຖ້າ ຊື່ = string ຖືກລະບຸ, shell ກໍານົດຊື່ alias ດ້ວຍ string value ຖ້າ ຊື່ ພຽງແຕ່ຖືກລະບຸ, ຄ່າຂອງຊື່ alias ຈະຖືກພິມ. ມີການໂຕ້ຖຽງບໍ່ມີ, alias builtin ພິມຊື່ແລະຄ່າຂອງນາມແຝງທີ່ກໍານົດທັງຫມົດ (ເບິ່ງ unalias)

bg [ job]

ສືບຕໍ່ວຽກທີ່ກໍານົດໄວ້ (ຫຼືວຽກງານໃນປະຈຸບັນຖ້າບໍ່ມີວຽກຢູ່).

command command arg

ປະຕິບັດຄໍາສັ່ງ builtin specified. (ນີ້ແມ່ນມີຜົນປະໂຫຍດເມື່ອທ່ານມີຫນ້າທີ່ແກະທີ່ມີຊື່ດຽວກັນກັບຄໍາສັ່ງ builtin.)

cd [ directory ]

ປ່ຽນໄປທີ່ໄດເລກະທໍລີທີ່ລະບຸ (ຄ່າເລີ່ມຕົ້ນ $ HOME) ຖ້າມີ CDPATH ສະ ແດງຢູ່ໃນສະພາບແວດລ້ອມຂອງຄໍາສັ່ງ cd ຫຼື CDPATH ຕົວແປ shell ກໍານົດໄວ້ແລະຊື່ ໂຟນເດີ ບໍ່ເລີ່ມຕົ້ນດ້ວຍ slash, ຫຼັງຈາກນັ້ນລາຍຊື່ໃນ CDPATH ຈະຖືກຄົ້ນຫາ ສໍາລັບລະບົບທີ່ກໍານົດໄວ້. ຮູບແບບຂອງ CDPATH ແມ່ນຄືກັບຂອງ PATH ໃນລະບົບປະຕິບັດການແບບໂຕ້ຕອບ, ຄໍາສັ່ງ cd ຈະພິມອອກຊື່ຂອງໄດເລກະທໍລີທີ່ມັນປ່ຽນໄປຖ້າວ່ານີ້ແຕກຕ່າງຈາກຊື່ທີ່ຜູ້ໃຊ້ໃຫ້. ເຫຼົ່ານີ້ອາດຈະແຕກຕ່າງກັນຍ້ອນວ່າກົນໄກ CDPATH ຖືກນໍາໃຊ້ຫຼືຍ້ອນວ່າການເຊື່ອມຕໍ່ສັນຍາລັກໄດ້ຖືກຂ້າມຜ່ານ.

eval string

ສົມທົບການໂຕ້ຖຽງທັງຫມົດທີ່ມີຊ່ອງຫວ່າງ. ຫຼັງຈາກນັ້ນ, ອີກເທື່ອຫນຶ່ງ, ການວິເຄາະແລະປະຕິບັດຄໍາສັ່ງ.

exec [ command arg ]

ເວັ້ນເສຍແຕ່ວ່າຄໍາສັ່ງຖືກຍົກເລີກ, ຂະບວນການແກະຖືກແທນທີ່ດ້ວຍໂປລແກລມທີ່ລະບຸໄວ້ (ເຊິ່ງຕ້ອງເປັນໂຄງການທີ່ແທ້ຈິງ, ບໍ່ແມ່ນ shell buildin ຫຼື function). ການປ່ຽນເສັ້ນທາງໃນຄໍາສັ່ງ exec ແມ່ນຫມາຍເປັນຖາວອນ, ດັ່ງນັ້ນ, ພວກເຂົາຈະບໍ່ຖືກລຶບເມື່ອຄໍາສັ່ງ exec ສໍາເລັດ.

ອອກຈາກ [ exitstatus ]

ຢຸດຂະບວນການແກະ. ຖ້າ exitstatus ຖືກໃຫ້ມັນຈະຖືກນໍາໃຊ້ເປັນສະຖານະການອອກຂອງ shell ຖ້າບໍ່ດັ່ງນັ້ນສະຖານະການການທ່ອງທ່ຽວຂອງຄໍາສັ່ງຂ້າງເທິງຈະຖືກນໍາໃຊ້.

ຊື່ ການສົ່ງອອກ ...

ສົ່ງອອກ -p

ຊື່ທີ່ລະບຸໄວ້ຖືກສົ່ງອອກດັ່ງນັ້ນພວກເຂົາຈະປາກົດຢູ່ໃນສະພາບແວດລ້ອມຂອງຄໍາສັ່ງຕໍ່ໆໄປ. ວິທີດຽວທີ່ຈະຍົກເວັ້ນການສົ່ງອອກຕົວແປແມ່ນການກໍານົດມັນ. ເປືອກອະນຸຍາດໃຫ້ຄ່າຂອງຕົວແປທີ່ຖືກກໍານົດໃນເວລາດຽວກັນມັນຖືກສົ່ງອອກໂດຍການຂຽນ

export name = value

ມີການໂຕ້ຖຽງບໍ່ມີຄໍາສັ່ງສົ່ງອອກລາຍຊື່ຂອງຕົວແປທີ່ສົ່ງອອກທັງຫມົດ. ມີຕົວເລືອກ - p ທີ່ກໍານົດວ່າຜົນຜະລິດຈະຖືກຈັດຮູບແບບເຫມາະສົມສໍາລັບການນໍາໃຊ້ທີ່ບໍ່ແມ່ນການໂຕ້ຕອບ.

fc [- ອີ Editor ] [ ທໍາອິດ [ ສຸດທ້າຍ ]]

fc -l [- nr ] [ ທໍາອິດ [ ສຸດທ້າຍ ]]

fc -s [ old = new ] [ first ]

ລາຍຊື່ fc builtin, ຫຼືການແກ້ໄຂແລະ re-executes, ຄໍາສັ່ງທີ່ຜ່ານມາເຂົ້າໄປໃນແກະໂຕ້ຕອບ.

-e editor

ໃຊ້ຕົວແກ້ໄຂທີ່ມີຊື່ໂດຍບັນນາທິການເພື່ອແກ້ຄໍາສັ່ງ. ລະບົບຕ່ອງໂສ້ການແກ້ໄຂແມ່ນຊື່ຄໍາສັ່ງ, ສາມາດຄົ້ນຫາຜ່ານຕົວແປ PATH . ມູນຄ່າໃນຕົວແປ FCEDIT ຖືກນໍາໃຊ້ເປັນຄ່າເລີ່ມຕົ້ນເມື່ອ - e ບໍ່ໄດ້ກໍານົດ. ຖ້າ FCEDIT ຖືກ null ຫຼື unset, ມູນຄ່າຂອງຕົວແປ EDITOR ຈະຖືກນໍາໃຊ້. ຖ້າ EDITOR ຖືກ null ຫຼື unset, ed (1) ຖືກນໍາໃຊ້ເປັນບັນນາທິການ.

-l (ell)

ບັນຊີລາຍຊື່ຄໍາສັ່ງແທນທີ່ຈະເອີ້ນບັນນາທິການກ່ຽວກັບພວກເຂົາ. ຄໍາສັ່ງທີ່ຖືກຂຽນໄວ້ໃນລໍາດັບທີ່ສະແດງໂດຍຕົວປະກົດທໍາອິດແລະສຸດທ້າຍ, ຍ້ອນວ່າມີຜົນກະທົບໂດຍ - r ກັບຄໍາສັ່ງທີ່ຢູ່ຂ້າງຫນຶ່ງໂດຍຄໍາສັ່ງ.

-n

ຍົກເລີກຫມາຍເລກຄໍາສັ່ງໃນເວລາທີ່ລາຍຊື່ດ້ວຍ -l.

-r

ປະຕິເສດຄໍາສັ່ງຂອງຄໍາສັ່ງທີ່ລະບຸໄວ້ (with -l or edited (with neither- l nor- s)

-s

Re -execute ຄໍາສັ່ງໂດຍບໍ່ຕ້ອງການເອົາບັນນາທິການ.

ຄັ້ງທໍາອິດ

ສຸດທ້າຍ

ເລືອກຄໍາສັ່ງທີ່ຈະບອກຫລືແກ້ໄຂ. ຈໍານວນຄໍາສັ່ງທີ່ຜ່ານມາທີ່ສາມາດເຂົ້າເຖິງໄດ້ຖືກກໍານົດໂດຍມູນຄ່າຂອງ ຕົວແປ HISTSIZE . ມູນຄ່າຂອງທໍາອິດຫຼືສຸດທ້າຍຫຼືທັງສອງແມ່ນຫນຶ່ງໃນດັ່ງຕໍ່ໄປນີ້:

[+] number

ຈໍານວນບວກທີ່ເປັນຕົວເລກຄໍາສັ່ງ; ຕົວເລກຄໍາສັ່ງສາມາດສະແດງດ້ວຍຕົວເລືອກ - l .

-number

ຫມາຍເລກທະສະນິຍົມເປັນຕົວແທນຄໍາສັ່ງທີ່ຖືກປະຕິບັດຈໍານວນຂອງຄໍາສັ່ງຜ່ານມາ. ຕົວຢ່າງ, -1 ແມ່ນຄໍາສັ່ງກ່ອນຫນ້ານີ້.

string

ສະຕິງສະແດງຄໍາສັ່ງທີ່ເຂົ້າມາຫຼ້າສຸດທີ່ເລີ່ມຕົ້ນດ້ວຍສາຍອັກສອນທີ່ວ່າ. ຖ້າເກົ່າ = ໃຫມ່ operand ຍັງບໍ່ໄດ້ກໍານົດໄວ້ດ້ວຍ - s ຮູບແບບຂອງສາຍອັກຂະລະທໍາອິດບໍ່ສາມາດມີສັນຍານທີ່ເທົ່າທຽມກັນທີ່ຖືກຝັງໄວ້.

ຕົວແປສະພາບແວດລ້ອມດັ່ງຕໍ່ໄປນີ້ຜົນກະທົບຕໍ່ການປະຕິບັດຂອງ fc:

FCEDIT

ຊື່ຂອງບັນນາທິການທີ່ຕ້ອງໃຊ້.

HISTSIZE

ຈໍານວນຄໍາສັ່ງທີ່ຜ່ານມາທີ່ສາມາດເຂົ້າເຖິງໄດ້.

fg [ job ]

ຍ້າຍວຽກງານທີ່ກໍານົດໄວ້ຫຼືວຽກງານໃນປະຈຸບັນ.

getopts optstring var

ຄໍາສັ່ງ POSIX getopts , ບໍ່ຄວນສັບສົນກັບ Bell Labs -derned getopt (1).

ການໂຕ້ຖຽງຄັ້ງທໍາອິດຄວນຈະເປັນຊຸດຂອງຕົວອັກສອນ, ເຊິ່ງແຕ່ລະຄົນອາດຈະໄດ້ຮັບການຕິດຕາມໂດຍຕົວຊີ້ບອກທີ່ວ່າຕົວເລືອກນີ້ຕ້ອງການການໂຕ້ຖຽງ. ຕົວແປທີ່ກໍານົດໄວ້ແມ່ນກໍານົດໃຫ້ຕົວເລືອກທີ່ແຍກຕົວ.

ຄໍາສັ່ງ getopts ບໍ່ໃຊ້ອຸປະກອນ getopt ເກົ່າ (1) ເນື່ອງຈາກການຈັດການຂອງການໂຕ້ຖຽງທີ່ມີຊ່ອງຫວ່າງ.

ການສ້າງ beopts ສາມາດຖືກນໍາໃຊ້ເພື່ອໃຫ້ໄດ້ທາງເລືອກແລະການໂຕ້ຖຽງຂອງເຂົາເຈົ້າຈາກບັນຊີລາຍຊື່ຂອງພາລາມິເຕີ. ໃນເວລາທີ່ເອີ້ນໃຊ້, getopts ຕັ້ງຄ່າຂອງຕົວເລືອກຕໍ່ໄປນີ້ຈາກຕົວເລືອກສະຕິງໃນບັນຊີໃນຕົວແປ shell ທີ່ລະບຸໄວ້ໂດຍ var ແລະດັດນີໃນຕົວແປ shell. OPTIND ເມື່ອ shell ຖືກເອີ້ນ, OPTIND ຖືກເລີ່ມຕົ້ນເປັນ 1. ສໍາລັບຕົວເລືອກທີ່ຕ້ອງການ ການໂຕ້ຖຽງໄດ້, getopts builtin ຈະຈັດວາງມັນຢູ່ໃນຕົວປ່ຽນແປງຂອງແກະ OPTARG ຖ້າຕົວເລືອກບໍ່ໄດ້ຮັບອະນຸຍາດໃນ optstring ຫຼັງຈາກນັ້ນ OPTARG ຈະບໍ່ຖືກກໍານົດ.

optstring ແມ່ນຕົວອັກສອນຕົວອັກສອນທີ່ຍອມຮັບ. ຖ້າຈົດຫມາຍຖືກຕິດຕາມໂດຍລໍາດັບ, ຕົວເລືອກທີ່ຄາດວ່າຈະມີການໂຕ້ຖຽງທີ່ອາດຈະຫຼືບໍ່ສາມາດແຍກອອກຈາກມັນໄດ້ໂດຍຊ່ອງສີຂາວ. ຖ້າຕົວອັກສອນຕົວເລືອກບໍ່ພົບບ່ອນທີ່ຄາດວ່າ, getopts ຈະກໍານົດຕົວປ່ຽນແປງກັບ ``? '' getopts ຫຼັງຈາກນັ້ນຈະກໍານົດ OPTARG ແລະຂຽນຂໍ້ມູນອອກໄປຫາຂໍ້ຜິດພາດມາດຕະຖານ. ໂດຍການກໍານົດລໍາດັບເປັນຕົວອັກສອນທໍາອິດຂອງການເຂົ້າ ໃຈ ຜິດທັງຫມົດຈະຖືກຍົກເລີກ.

ມູນຄ່າ nonzero ແມ່ນຖືກສົ່ງຄືນເມື່ອມີທາງເລືອກສຸດທ້າຍ. ຖ້າບໍ່ມີການໂຕ້ຖຽງທີ່ຍັງເຫຼືອ, getopts ຈະກໍານົດການປ່ຽນແປງທາງເລືອກພິເສດ, `` - '' ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນຈະກໍານົດ var ກັບ ``? ''

fragment ລະຫັດດັ່ງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວິທີການຫນຶ່ງສາມາດປຸງແຕ່ງການໂຕ້ຖຽງສໍາລັບຄໍາສັ່ງທີ່ສາມາດໃຊ້ທາງເລືອກ [a] ແລະ [b] ແລະທາງເລືອກ [c] ເຊິ່ງຕ້ອງການການໂຕ້ຖຽງ.

ໃນຂະນະທີ່ getopts abc: f
ເຮັດ
case $ f in
a | b) flag = $ f
c) carg = $ OPTARG;
\?) echo $ USAGE; ອອກຈາກ 1;
esac
ເຮັດແລ້ວ
shift `expr $ OPTIND-1`

ລະຫັດນີ້ຈະຍອມຮັບທຸກຢ່າງຕໍ່ໄປນີ້ເທົ່າທຽມກັນ:

cmd -carg file file
cmd-a-c arg file file
cmd -carg -a file file
cmd -a-carg - ໄຟລ໌ໄຟລ໌

hash -rv command

Shell maintains a table hing that remembers the locations of commands. ໂດຍບໍ່ມີຂໍ້ໂຕ້ແຍ້ງໃດໆ, ຄໍາສັ່ງ hash ພິມອອກເນື້ອໃນຂອງຕາຕະລາງນີ້. ສິ່ງທີ່ບໍ່ໄດ້ຖືກເບິ່ງຫຼັງຈາກຄໍາສັ່ງ cd ສຸດທ້າຍຖືກຫມາຍດ້ວຍເຄື່ອງຫມາຍດາວ; ມັນເປັນໄປໄດ້ສໍາລັບການຂຽນເຫຼົ່ານີ້ບໍ່ຖືກຕ້ອງ.

ມີການໂຕ້ຖຽງ, ຄໍາສັ່ງ hex ຖອນຄໍາສັ່ງທີ່ລະບຸໄວ້ຈາກຕາລາງ hash (ເວັ້ນເສຍແຕ່ວ່າພວກເຂົາມີຫນ້າທີ່) ແລະຫຼັງຈາກນັ້ນກໍານົດໃຫ້ເຂົາເຈົ້າ. ດ້ວຍຕົວເລືອກ -v , hash ພິມສະຖານທີ່ຂອງຄໍາສັ່ງດັ່ງທີ່ພວກເຂົາພົບ. ທາງເລືອກ The- r ເຮັດໃຫ້ຄໍາສັ່ງ hash ລົບລາຍການທັງຫມົດໃນຕາລາງຂື້ນນອກຈາກຟັງຊັນ.

jobid [ job ]

ພິມ id process ຂອງຂະບວນການໃນວຽກ. ຖ້າ ຕໍາແຫນ່ງວຽກ ຖືກຍົກເລີກແລ້ວ, ວຽກງານປະຈຸບັນຈະຖືກນໍາໃຊ້.

ວຽກ

ຄໍາສັ່ງນີ້ບອກທຸກຂະບວນການພື້ນຖານທີ່ເປັນເດັກນ້ອຍຂອງຂະບວນການແກະໃນປັດຈຸບັນ.

pwd

ພິມໄດເລກະທໍລີປັດຈຸບັນ ຄໍາສັ່ງຂອງ builtin ອາດຈະແຕກຕ່າງຈາກໂປລແກລມທີ່ມີຊື່ດຽວກັນເພາະວ່າຄໍາສັ່ງ builtin remembers what directory ປັດຈຸບັນແທນທີ່ຈະ recomputing ມັນແຕ່ລະຄັ້ງ. ນີ້ເຮັດໃຫ້ມັນໄວຂຶ້ນ. ຢ່າງໃດກໍຕາມ, ຖ້າຫາກວ່າໄດເລກະທໍລີປະຈຸບັນຖືກປ່ຽນຊື່, ໂປຼແກຼມທີ່ມີຢູ່ຂອງ ໂປຼແກຼມ ຈະສືບຕໍ່ພິມຊື່ເກົ່າສໍາລັບໄດເລກະທໍລີ.

ອ່ານ [- p prompt ] [- r ] variable ...

prompt ຈະຖືກພິມຖ້າຕົວເລືອກ - p ຖືກກໍານົດແລະ input ມາດຕະຖານເປັນ terminal. ຫຼັງຈາກນັ້ນ, ເສັ້ນແມ່ນໄດ້ອ່ານຈາກການປ້ອນຂໍ້ມູນມາດຕະຖານ. ເສັ້ນທາງຫລັງໃຫມ່ຈະຖືກລຶບອອກຈາກເສັ້ນແລະເສັ້ນແມ່ນແຍກຕາມທີ່ໄດ້ອະທິບາຍໃນສ່ວນທີ່ແຍກຂໍ້ແຕກຕ່າງຂ້າງເທິງ, ແລະຕ່ອນໄດ້ຖືກມອບຫມາຍໃຫ້ຕົວແປໃນລໍາດັບ. ຕ້ອງໄດ້ກໍານົດຢ່າງຫນ້ອຍຫນຶ່ງຕົວແປ. ຖ້າມີຕ່ອນຫຼາຍກ່ວາຕົວປ່ຽນແປງ, ຊິ້ນສ່ວນທີ່ຍັງເຫຼືອ (ພ້ອມກັບລັກສະນະຂອງ IFS ທີ່ແຍກກັນ) ຖືກມອບໃຫ້ກັບຕົວແປທີ່ສຸດ. ຖ້າມີຕົວປ່ຽນແປງຫຼາຍກ່ວາຕ່ອນ, ຕົວແປທີ່ຍັງເຫຼືອໄດ້ຖືກກໍານົດໃຫ້ເປັນຊ່ອຍແນ່. ການ ອ່ານແບບບູ ຮານຈະຊີ້ບອກເຖິງຜົນສໍາເລັດ, ເວັ້ນເສຍແຕ່ວ່າເອເອຟຖືກພົບໃນຂໍ້ມູນໃສ່, ໃນກໍລະນີທີ່ຄວາມລົ້ມເຫຼວຈະຖືກສົ່ງຄືນ.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ເວັ້ນເສຍແຕ່ວ່າຕົວເລືອກ - r ໄດ້ຖືກກໍານົດ, `` \ '' backslash ເຮັດຫນ້າທີ່ເປັນລັກສະນະຫນີ, ເຊິ່ງເຮັດໃຫ້ຕົວອັກສອນຕໍ່ໄປນີ້ຈະຖືກປະຕິບັດຕາມຕົວອັກສອນ. ຖ້າເສັ້ນຜ່າກາງຊ້າຍຕິດຕາມໂດຍເສັ້ນໃຫມ່, ຮອຍຍັບແລະເສັ້ນໃຫມ່ຈະຖືກລຶບ.

ອ່ານພຽງແຕ່ ຊື່ ...

readonly-p

ຊື່ທີ່ລະບຸໄວ້ຖືກຫມາຍເປັນອ່ານເທົ່ານັ້ນ, ດັ່ງນັ້ນພວກເຂົາຈຶ່ງບໍ່ສາມາດດັດແກ້ເທື່ອຫຼື unset. ແກະອະນຸຍາດໃຫ້ຄ່າຂອງຕົວແປທີ່ຖືກກໍານົດໄວ້ໃນເວລາດຽວກັນມັນຖືກຫມາຍ ເທົ່ານັ້ນ ໂດຍການຂຽນ

readonly name = value

ມີການໂຕ້ຖຽງບໍ່ມີຄໍາສັ່ງ readonly ລາຍຊື່ຂອງຕົວແປທັງຫມົດທີ່ອ່ານເທົ່ານັ້ນ. ມີຕົວເລືອກ - p ທີ່ກໍານົດວ່າຜົນຜະລິດຈະຖືກຈັດຮູບແບບເຫມາະສົມສໍາລັບການນໍາໃຊ້ທີ່ບໍ່ແມ່ນການໂຕ້ຕອບ.

set [{- options | + ທາງເລືອກ | - arg ]

ຄໍາສັ່ງທີ່ ກໍານົດໄວ້ ປະຕິບັດສາມຫນ້າທີ່ແຕກຕ່າງກັນ.

ມີການໂຕ້ຖຽງບໍ່ມີ, ມັນລາຍຊື່ຄ່າຂອງຕົວແປ shell ທັງຫມົດ.

ຖ້າມີການເລືອກເອົາຕົວເລືອກ, ມັນຈະກໍານົດເອົາຕົວເລືອກທີ່ຖືກຕ້ອງ, ຫຼືລຶບພວກມັນຕາມທີ່ອະທິບາຍຢູ່ໃນສ່ວນທີ່ເອີ້ນວ່າການປຸງແຕ່ງແບບການໂຕ້ຖຽງ Sx.

ການນໍາໃຊ້ທີສາມຂອງຄໍາສັ່ງທີ່ກໍານົດໄວ້ແມ່ນການກໍານົດມູນຄ່າຂອງຕົວກໍານົດຕໍາແຫນ່ງຂອງແກະໃນການອ້າງອິງທີ່ກໍານົດໄວ້. ການປ່ຽນແປງຕົວກໍານົດການຕໍາແຫນ່ງໂດຍບໍ່ມີການປ່ຽນແປງທາງເລືອກໃດໆ, ໃຫ້ໃຊ້ `` - '' ເປັນການໂຕ້ຖຽງທໍາອິດທີ່ຈະກໍານົດ. ຖ້າບໍ່ມີການໂຕ້ຖຽງ, ຄໍາສັ່ງທີ່ກໍານົດໄວ້ຈະລຶບຕົວກໍານົດຕໍາແຫນ່ງທັງຫມົດ (ທຽບເທົ່າກັບການປະຕິບັດ `` shift $ #. '')

value variable

Assigns value to variable (ໂດຍທົ່ວໄປມັນກໍ່ດີກວ່າການຂຽນ variable = value ແທນທີ່ຈະໃຊ້ setvar setvar ແມ່ນໃຊ້ໃນຫນ້າທີ່ກໍາຫນົດຄ່າໃຫ້ກັບຕົວແປທີ່ມີຊື່ເປັນພາລາມິເຕີ)

shift [ n ]

ປ່ຽນຕົວກໍານົດຕໍາແຫນ່ງ n ຄັ້ງ. ການ ປ່ຽນແປງ ກໍານົດມູນຄ່າຂອງ $ 1 ກັບມູນຄ່າຂອງ $ 2 ມູນຄ່າຂອງ $ 2 ກັບມູນຄ່າຂອງ $ 3 ແລະອື່ນໆ, ຫຼຸດລົງມູນຄ່າຂອງ $ # ຕໍ່ຫນຶ່ງ. ຖ້າ n ແມ່ນຫຼາຍກ່ວາຈໍານວນຕົວກໍານົດຕໍາແຫນ່ງ, ການ ປ່ຽນ ຈະອອກຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດແລະອອກຈາກສະຖານະກັບຄືນ 2.

ເວລາ

ພິມຜູ້ໃຊ້ສະສົມແລະເວລາລະບົບສໍາລັບແກະແລະສໍາລັບຂະບວນການທີ່ດໍາເນີນການຈາກແກະ. ສະຖານະການກັບຄືນແມ່ນ 0.

trap action signal

ເຮັດໃຫ້ແກະທີ່ຈະແຍກແລະປະຕິບັດການປະຕິບັດໃນເວລາທີ່ສັນຍານທີ່ລະບຸໄວ້ໄດ້ຮັບ. ສັນຍານທີ່ຖືກກໍານົດໂດຍຫມາຍເລກສັນຍານ. ຖ້າ ສັນຍານ 0 ແມ່ນການປະຕິບັດໃນເວລາທີ່ແກະອອກ. ການປະຕິບັດ ອາດຈະເປັນ null ຫຼື `` - '' ອະດີດເຮັດໃຫ້ສັນຍານທີ່ລະບຸໄວ້ທີ່ຈະຖືກລະເວັ້ນແລະເຫດຜົນທີ່ເຮັດໃຫ້ການດໍາເນີນການເລີ່ມຕົ້ນທີ່ຈະປະຕິບັດ. ໃນເວລາທີ່ຫອຍຫາງຫ່າງຈາກຫອຍ, ມັນຈະປັບຕົວສັນຍານທີ່ຖືກຈັບ (ແຕ່ບໍ່ຖືກລະເລີຍ) ໄປຫາການກະທໍາຕາມລໍາດັບ. ຄໍາສັ່ງ trap ບໍ່ມີຜົນຕໍ່ສັນຍານທີ່ຖືກປະຕິເສດເມື່ອເຂົ້າສູ່ shell.

ພິມ [ name ] ...

ຕີຄວາມຫມາຍຂອງແຕ່ລະຊື່ເປັນຄໍາສັ່ງແລະພິມຄວາມລະອຽດຂອງການຄົ້ນຫາຄໍາສັ່ງ. ການແກ້ໄຂທີ່ເປັນໄປໄດ້ແມ່ນ: ຄໍາສັບຂອງປ່ອງ, alias, shell buildin , ຄໍາສັ່ງ, alias ການຕິດຕາມແລະບໍ່ພົບ. ສໍາລັບ aliases ການຂະຫຍາຍຕົວ alias ແມ່ນພິມ; ສໍາລັບຄໍາສັ່ງແລະຊື່ alias ການຕິດຕາມເສັ້ນທາງຄົບຖ້ວນສົມບູນຂອງຄໍາສັ່ງຖືກພິມ.

ulimit [ -H -S ] [- a - tfdscmlpn [ value ]]

ສອບຖາມກ່ຽວກັບຫລືກໍານົດຂໍ້ຈໍາກັດທີ່ແຂງຫຼືອ່ອນໃນຂະບວນການຫຼືກໍານົດຂອບເຂດໃຫມ່. ການເລືອກລະຫວ່າງຂອບເຂດທີ່ຍາກ (ຊຶ່ງບໍ່ມີການອະນຸຍາດໃຫ້ລະເມີດຂໍ້ກໍານົດແລະອາດຈະບໍ່ໄດ້ຮັບການຍົກຂຶ້ນມາເມື່ອມັນໄດ້ຖືກຫຼຸດລົງ) ແລະຂອບເຂດທີ່ອ່ອນ (ເຊິ່ງເຮັດໃຫ້ຂະບວນການທີ່ຖືກສົ່ງສັນຍານແຕ່ບໍ່ຈໍາເປັນຕ້ອງຖືກຂ້າແລະອາດຈະຖືກຍົກຂຶ້ນມາ) ປ້າຍເຫຼົ່ານີ້:

-H

ກໍານົດຫຼືສອບຖາມກ່ຽວກັບຂໍ້ຈໍາກັດທີ່ຫນັກແຫນ້ນ

-S

ກໍານົດຫຼືສອບຖາມກ່ຽວກັບຂໍ້ຈໍາກັດຂອງປາ. ຖ້າບໍ່ແມ່ນ - H ແລະ - S ຖືກກໍານົດ, ຂອບເຂດຈໍາກັດຂອງປາແມ່ນສະແດງຫຼືທັງສອງຂໍ້ຈໍາກັດຖືກກໍານົດ. ຖ້າທັງສອງຖືກກໍານົດ, ຫນຶ່ງສຸດທ້າຍຈະຊະນະ.

ຂອບເຂດຈໍາກັດທີ່ຈະຖືກກວດສອບຫຼືກໍານົດ, ຫຼັງຈາກນັ້ນ, ຖືກເລືອກໂດຍກໍານົດໃດໆຂອງທຸງເຫຼົ່ານີ້:

-a

ສະແດງໃຫ້ເຫັນທັງຫມົດຈໍາກັດໃນປະຈຸບັນ

-t

ສະແດງຫຼືກໍານົດຂອບເຂດຈໍາກັດໃນ ເວລາ CPU (ໃນວິນາທີ)

-f

ສະແດງຫຼືກໍານົດຂໍ້ຈໍາກັດໃນໄຟລ໌ທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດສ້າງໄດ້ (ໃນ 512 byte blocks)

-d

ສະແດງຫຼືກໍານົດຂໍ້ຈໍາກັດໃນຂະຫນາດຂະຫນາດຂອງຂໍ້ມູນຂອງຂະບວນການ (ໃນກິໂລໄບ)

-s

ສະແດງຫລືກໍານົດຂອບເຂດຈໍາກັດໃນຂະຫນາດຂອງຊັ້ນຂອງຂະບວນການ (ໃນກິໂລໄບ)

-c

ສະແດງຫລືກໍານົດຂໍ້ຈໍາກັດໃນຂະຫນາດທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດຜະລິດໄດ້ (ໃນ 512 byte blocks)

-m

ສະແດງຫຼືກໍານົດຂອບເຂດຈໍາກັດກ່ຽວກັບຫນ່ວຍຄວາມຈໍາທາງດ້ານຮ່າງກາຍທັງຫມົດທີ່ສາມາດນໍາໃຊ້ໂດຍຂະບວນການ (ໃນກິໂລໄບ)

-l

ສະແດງຫລືກໍານົດຂໍ້ຈໍາກັດກ່ຽວກັບຈໍານວນຫນ່ວຍຄວາມຈໍາຂະບວນການທີ່ສາມາດລັອກດ້ວຍ mlock (2) (ໃນ ກິໂລໄບ )

-p

ສະແດງຫຼືກໍານົດຂໍ້ຈໍາກັດກ່ຽວກັບຈໍານວນຂະບວນການທີ່ຜູ້ໃຊ້ນີ້ສາມາດໃຊ້ໄດ້ໃນເວລາດຽວ

-n

ສະແດງຫຼືກໍານົດຂອບເຂດຈໍາກັດໃນໄຟລ໌ຈໍານວນຫນຶ່ງທີ່ຂະບວນການສາມາດເປີດໄດ້ໃນເວລາດຽວກັນ

ຖ້າບໍ່ມີຂໍ້ກໍານົດເຫຼົ່ານີ້ຖືກກໍານົດ, ມັນແມ່ນຂໍ້ຈໍາກັດໃນຂະຫນາດໄຟລ໌ທີ່ຖືກສະແດງຫຼືກໍານົດ. ຖ້າຄ່າແມ່ນຖືກກໍານົດ, ຂອບເຂດກໍານົດຈະຖືກກໍານົດໃຫ້ເລກນັ້ນ; ຖ້າບໍ່ດັ່ງນັ້ນຂອບເຂດກໍານົດໃນປະຈຸບັນແມ່ນສະແດງ.

ຂໍ້ຈໍາກັດຂອງຂະບວນການທີ່ມັກຈະສາມາດສະແດງຫລືກໍານົດໂດຍໃຊ້ເຄື່ອງມື sysctl (8).

umask [ mask ]

ຕັ້ງຄ່າ umask (ເບິ່ງ umask (2)) ກັບຄ່າ octal ທີ່ລະບຸ. ຖ້າການໂຕ້ຖຽງຖືກຍົກເລີກ, ຄ່າ umask ຈະຖືກພິມ.

unalias [- a ] [ name ]

ຖ້າ ຊື່ ຖືກລະບຸໄວ້, ແກະຈະລຶບນາມແຝງນັ້ນ. ຖ້າ - a ຖືກລະບຸ, alias ທັງຫມົດຈະຖືກລຶບອອກ.

unset name ...

ຕົວແປທີ່ກໍານົດໄວ້ແລະຫນ້າທີ່ຖືກກໍານົດແລະບໍ່ໄດ້ຖືກກວດສອບ. ຖ້າຊື່ທີ່ສອດຄ້ອງກັບທັງຕົວແປແລະຟັງຊັນ, ທັງຕົວແປແລະຟັງຊັນຈະຖືກກໍານົດໄວ້.

ລໍ [ ວຽກ ]

ລໍຖ້າວຽກທີ່ກໍານົດໄວ້ສໍາເລັດແລະສົ່ງຄືນສະຖານະການອອກຂອງຂັ້ນຕອນສຸດທ້າຍໃນວຽກ. ຖ້າການໂຕ້ຖຽງຖືກຍົກເລີກ, ຈົ່ງລໍໃຫ້ວຽກທັງຫມົດສໍາເລັດແລະສົ່ງຄືນສະຖານະການຂອງສູນ.

Command Line Editing

ໃນເວລາທີ່ sh ຖືກນໍາໃຊ້ຢ່າງມີປະສິດຕິພາບຈາກປາຍທາງ, ຄໍາສັ່ງປັດຈຸບັນແລະປະຫວັດຂອງຄໍາສັ່ງ (ເບິ່ງ fc ໃນ Sx Builtins) ສາມາດຖືກດັດແກ້ໂດຍການນໍາໃຊ້ການແກ້ໄຂບັນທັດຄໍາສັ່ງຂອງ vi-mode. ໂຫມດນີ້ໃຊ້ຄໍາສັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງລຸ່ມນີ້ຄ້າຍກັບຊຸດຂອງຜູ້ທີ່ຖືກອະທິບາຍຢູ່ໃນຫນ້າຜູ້ຊາຍ. ຄໍາສັ່ງ `set '-o vi ເຮັດໃຫ້ການແກ້ໄຂແບບຈຸລະພາກແລະສະຖານທີ່ sh ເຂົ້າໄປໃນຮູບແບບ inserting micro. ກັບການເປີດໃຊ້ໂຫມດມືຖື, sh ສາມາດປ່ຽນລະຫວ່າງໂຫມດ Insert ແລະໂຫມດຄໍາສັ່ງ. ບັນນາທິການບໍ່ໄດ້ອະທິບາຍຢ່າງເຕັມທີ່ຢູ່ທີ່ນີ້, ແຕ່ຈະຢູ່ໃນເອກະສານຕໍ່ມາ. ມັນຄ້າຍຄືກັບ vi: ການພິມ Aq ESC ຈະຖິ້ມທ່ານເຂົ້າສູ່ຄໍາສັ່ງຄໍາສັ່ງ VI mode. ການຕີ Aq ກັບຄືນໄປບ່ອນໃນຂະນະທີ່ຢູ່ໃນໂຫມດຄໍາສັ່ງຈະຜ່ານສາຍໄປຍັງຫອຍ.

ສິ່ງສໍາຄັນ: ໃຊ້ ຄໍາສັ່ງ man ( % man ) ເພື່ອເບິ່ງວິທີການໃຊ້ຄໍາສັ່ງໃນຄອມພິວເຕີຂອງທ່ານ.