Bash-Linux Command-Unix Command

NAME

bash - GNU Bourne-Again SHell

SYNOPSIS

bash [options] [file]

DESCRIPTION

Bash ແມ່ນຕົວແປພາສາຄໍາສັ່ງທີ່ມີຄວາມເຂົ້າກັນໄດ້ກັບຄໍາວ່າຄໍາສັ່ງທີ່ຈະອ່ານຈາກຄໍາສັ່ງມາດຕະຖານຫຼືຈາກໄຟລ໌. Bash ຍັງລວມເອົາຄຸນສົມບັດທີ່ເປັນປະໂຫຍດຈາກ Korn ແລະ C Shells ( ksh ແລະ csh ).

Bash ແມ່ນມີຈຸດປະສົງເພື່ອເປັນການປະຕິບັດຕາມມາດຕະຖານ IEEE POSIX Shell ແລະເຄື່ອງມື (IEEE Working Group 10032).

OPTIONS

ນອກເຫນືອໄປຈາກຕົວເລືອກແກະແບບດຽວ, ຕົວເລກທີ່ບັນທຶກໄວ້ໃນຄໍາອະທິບາຍຂອງຄໍາສັ່ງ builtin, bash ແປຄວາມຫມາຍຕົວເລືອກຕໍ່ໄປນີ້ເມື່ອເອີ້ນວ່າ:

-c string

ຖ້າຕົວເລືອກ -c ມີຢູ່, ຫຼັງຈາກນັ້ນຄໍາສັ່ງຈະຖືກອ່ານອອກຈາກ ຊ່ອຍແນ່ . ຖ້າມີການໂຕ້ຖຽງຫຼັງຈາກສະ ຕິງ , ພວກເຂົາຖືກກໍາຫນົດໃຫ້ຕົວກໍານົດຕໍາແຫນ່ງ, ເລີ່ມຕົ້ນດ້ວຍ $ 0 .

-i

ຖ້າຕົວເລືອກ -i ມີຢູ່, ແກະແມ່ນ ໂຕ້ຕອບ .

-l

ເຮັດ bash ປະຕິບັດຕາມວ່າມັນໄດ້ຖືກເອີ້ນວ່າເປັນ shell ເຂົ້າສູ່ລະບົບ (ເບິ່ງ INVOCATION ຂ້າງລຸ່ມນີ້).

-r

ຖ້າຕົວເລືອກ -r ມີຢູ່, shell ຈະ ຖືກຈໍາກັດ (ເບິ່ງ SHELL RESTRICTED ຂ້າງລຸ່ມນີ້).

-s

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

-D

ບັນຊີລາຍຊື່ຂອງສາຍທັງສອງຄູ່ທີ່ນໍາຫນ້າໂດຍ $ ແມ່ນພິມອອກໃນມາດຕະຖານ ouput. ເຫຼົ່ານີ້ແມ່ນສາຍທີ່ຕ້ອງມີການແປພາສາໃນເວລາທີ່ທ້ອງຖິ່ນປະຈຸບັນບໍ່ແມ່ນ C ຫຼື POSIX . ນີ້ຫມາຍຄວາມວ່າທາງເລືອກ -n ; ຄໍາສັ່ງທີ່ບໍ່ມີຈະຖືກປະຕິບັດ.

[- +] O [ shopt_option ]

shopt_option ແມ່ນຫນຶ່ງໃນທາງເລືອກໃນການແກະທີ່ໄດ້ຮັບການຍອມຮັບໂດຍຮ້ານຄ້າບູດ (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້). ຖ້າມີ shopt_option , -O ກໍານົດຄ່າຂອງຕົວເລືອກນັ້ນ; + O ບໍ່ ວາງມັນ. ຖ້າບໍ່ໃຫ້ shopt_option , ຊື່ແລະຄ່າຂອງຄ່າຕົວເລືອກທີ່ໄດ້ຮັບການຍອມຮັບໂດຍ shopt ຈະຖືກພິມອອກຢູ່ໃນຜົນຜະລິດມາດຕະຖານ. ຖ້າຕົວເລືອກ invocation ແມ່ນ + O , ຜົນຜະລິດຈະຖືກສະແດງຢູ່ໃນຮູບແບບທີ່ສາມາດນໍາໃຊ້ໄດ້ອີກເທື່ອຫນຶ່ງ.

-

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

Bash ຍັງແປເປັນຈໍານວນຕົວເລືອກຫຼາຍຕົວອັກສອນ. ຕົວເລືອກເຫຼົ່ານີ້ຕ້ອງປາກົດຢູ່ໃນບັນທັດຄໍາສັ່ງກ່ອນທີ່ຈະເລືອກຕົວເລືອກຕົວອັກສອນດຽວ.

- ຊ່ອຍແນ່ປ້ອມ, po -strings

ທຽບເທົ່າກັບ -D , ແຕ່ຜົນຜະລິດແມ່ນຢູ່ໃນຮູບແບບໄຟລ໌ຂອງໂປ ແກຼມ GNU gettext po (ວັດຖຸທີ່ Portable).

- ຊ່ອຍແນ່

ທຽບເທົ່າກັບ -D .

--help

ສະແດງຂໍ້ຄວາມການນໍາໃຊ້ກ່ຽວກັບຜົນຜະລິດມາດຕະຖານແລະອອກຈາກປະສົບຜົນສໍາເລັດ.

- ໄຟລ ໌ອິນເຕີເນັດໄຟລ໌

- ໄຟລ໌ຂອງໄຟລ໌

ປະຕິບັດຄໍາສັ່ງຈາກ ໄຟລ໌ ແທນ ໄຟລ໌ ເລີ່ມຕົ້ນສ່ວນບຸກຄົນມາດຕະຖານ ~ / .bashrc ຖ້າ shell ແມ່ນ interactive (ເບິ່ງ INVOCATION ຂ້າງລຸ່ມນີ້).

--ເຂົ້າ​ສູ່​ລະ​ບົບ

ທຽບເທົ່າກັບ -l .

- ບໍ່ສົນໃຈ

ຢ່າໃຊ້ຫ້ອງສະຫມຸດ GNU readline ເພື່ອອ່ານຄໍາສັ່ງໃນເວລາທີ່ແກະແມ່ນໂຕ້ຕອບ.

--noprofile

ບໍ່ໄດ້ອ່ານໄຟລ໌ເລີ່ມຕົ້ນລະບົບ / etc / profile ຫຼືໃດໆຂອງແຟ້ມເລີ່ມຕົ້ນສ່ວນບຸກຄົນ ~ / .bash_profile , ~ / .bash_login , ຫຼື ~ / profile . ໂດຍຄ່າເລີ່ມຕົ້ນ, bash ອ່ານໄຟລ໌ເຫຼົ່ານີ້ເມື່ອມັນຖືກເອີ້ນເປັນ shell ເຂົ້າສູ່ລະບົບ (ເບິ່ງ INVOCATION ຂ້າງລຸ່ມນີ້).

--norc

ບໍ່ໄດ້ອ່ານແລະປະຕິບັດແຟ້ມການເລີ່ມຕົ້ນສ່ວນບຸກຄົນ ~ / .bashrc ຖ້າຫອຍແມ່ນໂຕ້ຕອບ. ຕົວເລືອກນີ້ແມ່ນໂດຍຄ່າເລີ່ມຕົ້ນຖ້າ shell ຖືກ invoked ເປັນ sh .

--posix

ປ່ຽນພຶດຕິກໍາຂອງ bash ບ່ອນທີ່ການດໍາເນີນງານເລີ່ມຕົ້ນແຕກຕ່າງຈາກມາດຕະຖານ POSIX 10032 ເພື່ອໃຫ້ສອດຄ້ອງກັບມາດຕະຖານ ( ໂຫມດ posix ).

- ຈໍາກັດ

ເປືອກກາຍເປັນຈໍາກັດ (ເບິ່ງ SHELL RESTRICTED ຂ້າງລຸ່ມນີ້).

--rpm-require

ຜະລິດບັນຊີລາຍຊື່ຂອງໄຟລ໌ທີ່ຈໍາເປັນສໍາລັບການສະແກນສໍາລັບການດໍາເນີນງານ. ນີ້ຫມາຍຄວາມວ່າ '-n' ແລະມີຂໍ້ຈໍາກັດເຊັ່ນດຽວກັນກັບການກວດສອບການກວດສອບຄວາມຜິດພາດເວລາ; Backticks, [] ການທົດສອບ, ແລະ evals ບໍ່ໄດ້ແຍກວິເຄາະດັ່ງນັ້ນຄວາມຂັດແຍ້ງບາງອາດຈະພາດ. --verbose ທຽບເທົ່າກັບ -v .

- ການປ່ຽນແປງ

ສະແດງຂໍ້ມູນສະບັບສໍາລັບຕົວຢ່າງຂອງ bash ນີ້ ໃນການອອກມາດຕະຖານແລະອອກຈາກປະສົບຜົນສໍາເລັດ.

ARGUMENTS

ຖ້າຫາກວ່າຂໍ້ໂຕ້ແຍ້ງຍັງຄົງຫຼັງຈາກການປະຕິບັດທາງເລືອກ, ແລະບໍ່ມີທາງເລືອກ -c ຫຼືທາງເລືອກ -s ໄດ້ຖືກສະຫນອງໃຫ້, ການໂຕ້ຖຽງຄັ້ງທໍາອິດຈະຖືກຖືວ່າເປັນຊື່ຂອງໄຟລ໌ທີ່ມີຄໍາສັ່ງຂອງ shell. ຖ້າ bash ຖືກເອີ້ນໃນແຟຊັ່ນນີ້, $ 0 ແມ່ນຕັ້ງຊື່ຂອງໄຟລ໌, ແລະຕົວກໍານົດຕໍາແຫນ່ງທີ່ຖືກກໍານົດໄວ້ໃນການໂຕ້ຖຽງທີ່ຍັງເຫຼືອ. Bash ອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກໄຟລ໌ນີ້, ຫຼັງຈາກນັ້ນອອກ. ສະຖານະການອອກຂອງ Bash ຄືສະຖານະການອອກຂອງຄໍາສັ່ງສຸດທ້າຍທີ່ເຮັດໃນສະຄິບ. ຖ້າບໍ່ມີຄໍາສັ່ງທີ່ຖືກປະຕິບັດ, ສະຖານະການການທ່ອງທ່ຽວແມ່ນ 0. ການທໍາງານຄັ້ງທໍາອິດແມ່ນການເປີດໄຟລ໌ໃນໄດເລກະທໍລີປັດຈຸບັນແລະຖ້າບໍ່ພົບໄຟລ໌, ຫຼັງຈາກນັ້ນ Shell ຈະຄົ້ນຫາໄດເລກະທໍລີໃນ PATH ສໍາລັບ script.

INVOCATION

ແກະເຂົ້າສູ່ລະບົບ ແມ່ນຫນຶ່ງທີ່ມີລັກສະນະທໍາອິດຂອງການໂຕ້ແຍ້ງສູນເປັນ - ຫຼືຫນຶ່ງເລີ່ມດ້ວຍທາງເລືອກ --login .

ເປືອກ ໂຕ້ຕອບ ແມ່ນຫນຶ່ງໂດຍບໍ່ມີການໂຕ້ຖຽງທີ່ບໍ່ແມ່ນຕົວເລືອກແລະບໍ່ມີຕົວເລືອກ -c ທີ່ມີມາດຕະຖານແລະຜົນຜະລິດທີ່ຖືກເຊື່ອມຕໍ່ກັບປາຍ (ຕາມທີ່ກໍານົດໂດຍ isatty (3)) ຫຼືຫນຶ່ງເລີ່ມດ້ວຍຕົວເລືອກ -i . PS1 ຖືກກໍານົດແລະ $ - ປະກອບມີ i ຖ້າ bash ແມ່ນໂຕ້ຕອບ, ໃຫ້ script ສາກຫຼືໄຟລ໌ເລີ່ມຕົ້ນທີ່ຈະທົດສອບລັດນີ້.

ຂໍ້ກໍານົດດັ່ງຕໍ່ໄປນີ້ອະທິບາຍວິທີການ bash ດໍາເນີນການໄຟລ໌ເລີ່ມຕົ້ນຂອງຕົນ. ຖ້າມີແຟ້ມແຕ່ບໍ່ສາມາດອ່ານໄດ້, bash ລາຍງານຂໍ້ຜິດພາດ. Tildes ໄດ້ຖືກຂະຫຍາຍຕົວໃນຊື່ໄຟລ໌ດັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງລຸ່ມນີ້ພາຍໃຕ້ການ ຂະຫຍາຍຕົວ Tilde ໃນສ່ວນ EXPANSION .

ໃນເວລາທີ່ bash ຖືກເອີ້ນວ່າເປັນ shell ເຂົ້າສູ່ລະບົບໂຕ້ຕອບຫຼືເປັນ shell ທີ່ບໍ່ມີການໂຕ້ຕອບກັບຕົວເລືອກ --login , ມັນທໍາອິດຈະອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກແຟ້ມ / etc / profile ຖ້າໄຟລ໌ນັ້ນຢູ່. ຫຼັງຈາກອ່ານໄຟລ໌ນັ້ນ, ມັນເບິ່ງຫາ ~ / .bash_profile , ~ / .bash_login , ແລະ ~ /. profile , ໃນຄໍາສັ່ງນັ້ນ, ແລະອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກທໍາອິດທີ່ມີຢູ່ແລະ readable. ຕົວເລືອກ --noprofile ອາດຈະຖືກນໍາໃຊ້ໃນເວລາທີ່ແກະໄດ້ຖືກເລີ່ມຕົ້ນທີ່ຈະສະກັດກັ້ນພຶດຕິກໍານີ້.

ເມື່ອ shell ອອກສູ່ລະບົບອອກ, bash ຈະອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກແຟ້ມ ~ / .bash_logout ຖ້າມັນຢູ່.

ໃນເວລາທີ່ເປືອກໂຕ້ຕອບທີ່ບໍ່ແມ່ນປ່ອງເຂົ້າສູ່ລະບົບຖືກເລີ່ມຕົ້ນ, bash ຈະອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກ ~ / .bashrc , ຖ້າໄຟລ໌ທີ່ຢູ່. ນີ້ອາດຈະຖືກຍັບຍັ້ງໂດຍການໃຊ້ຕົວເລືອກ --norc . ທາງເລືອກຂອງ ໄຟລ໌ --rcfile ຈະບັງຄັບ bash ເພື່ອອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກ ແຟ້ມ ແທນທີ່ ~ / bashrc .

ໃນເວລາທີ່ bash ຖືກເລີ່ມຕົ້ນບໍ່ແມ່ນໂຕ້ຕອບ, ການດໍາເນີນງານ script shell, ຕົວຢ່າງ, ມັນເບິ່ງຕົວ BASH_ENV ໃນສະພາບແວດລ້ອມ, ຂະຫຍາຍມູນຄ່າຂອງມັນຖ້າມັນປາກົດຢູ່ນັ້ນແລະໃຊ້ຄ່າທີ່ຂະຫຍາຍເປັນຊື່ຂອງໄຟລ໌ທີ່ຈະອ່ານແລະປະຕິບັດ ທີ່ຢູ່ Bash ປະຕິບັດຕາມຄໍາສັ່ງຕໍ່ໄປນີ້:

ຖ້າ [-n "$ BASH_ENV"]; ຫຼັງຈາກນັ້ນ, "$ BASH_ENV" fi

ແຕ່ຄ່າຂອງ ແປ້ນ PATH ບໍ່ໄດ້ໃຊ້ເພື່ອຄົ້ນຫາຊື່ໄຟລ໌.

ຖ້າ bash ຖືກເອີ້ນວ່າ sh ຊື່, ມັນພະຍາຍາມທີ່ຈະປະຕິບັດຕາມພຶດຕິກໍາການເລີ່ມຕົ້ນຂອງສະບັບປະຫວັດສາດຂອງ sh ເທົ່າທີ່ເປັນໄປໄດ້, ໃນຂະນະທີ່ສອດຄ່ອງກັບມາດຕະຖານ POSIX. ເມື່ອຖືກເອີ້ນເປັນແກະເຂົ້າສູ່ລະບົບການໂຕ້ຕອບແບບ interactive ຫຼື shell ທີ່ບໍ່ແມ່ນໂຕ້ຕອບກັບຕົວເລືອກ --login , ມັນທໍາອິດທີ່ພະຍາຍາມອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກ / etc / profile ແລະ ~ / profile ໃນຄໍາສັ່ງນັ້ນ. ທາງເລືອກ --noprofile ອາດຈະຖືກນໍາໃຊ້ເພື່ອປ້ອງກັນພຶດຕິກໍານີ້. ໃນເວລາທີ່ຖືກເອີ້ນວ່າເປັນແກະໂຕ້ຕອບກັບຊື່ sh , bash ເບິ່ງຕົວແປ ENV , ຂະຫຍາຍຄ່າຂອງມັນຖ້າມັນຖືກກໍານົດແລະໃຊ້ຄ່າທີ່ຂະຫຍາຍເປັນຊື່ຂອງໄຟລ໌ທີ່ຈະອ່ານແລະປະຕິບັດ. ນັບຕັ້ງແຕ່ແກະຖືກເອີ້ນວ່າເປັນ sh ບໍ່ໄດ້ພະຍາຍາມອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກໄຟລ໌ເລີ່ມຕົ້ນອື່ນໆ, ຕົວເລືອກ --rcfile ບໍ່ມີຜົນກະທົບ. ແກະທີ່ບໍ່ແມ່ນໂຕ້ຕອບທີ່ເອີ້ນວ່າຊື່ sh ບໍ່ໄດ້ພະຍາຍາມອ່ານໄຟລ໌ເລີ່ມຕົ້ນອື່ນໃດໆ. ເມື່ອຖືກເອີ້ນວ່າ sh , bash ເຂົ້າໂຫມດ posix ຫຼັງຈາກໄຟລ໌ເລີ່ມຕົ້ນຖືກອ່ານ.

ໃນເວລາທີ່ bash ຖືກເລີ່ມຕົ້ນໃນໂຫມດ posix , ເຊັ່ນດຽວກັບຕົວເລືອກ line-line ຄໍາສັ່ງ, ມັນປະຕິບັດຕາມມາດຕະຖານ POSIX ສໍາລັບໄຟລ໌ເລີ່ມຕົ້ນ. ໃນໂຫມດນີ້, Shell ການໂຕ້ຕອບຂະຫຍາຍຕົວແປ ENV ແລະຄໍາສັ່ງຖືກອ່ານແລະປະຕິບັດຈາກໄຟລ໌ຊື່ທີ່ມີມູນຄ່າທີ່ຂະຫຍາຍຕົວ. ບໍ່ມີແຟ້ມເລີ່ມຕົ້ນອື່ນໃດທີ່ອ່ານ.

Bash ຄວາມພະຍາຍາມທີ່ຈະກໍານົດໃນເວລາທີ່ມັນຖືກດໍາເນີນການໂດຍ daemon ຫ່າງໄກສອກຫຼີກຫ່າງໄກ, ປົກກະຕິແລ້ວ rshd . ຖ້າ bash ກໍານົດວ່າມັນກໍາລັງຖືກ run ໂດຍ rshd , ມັນ reads ແລະ executes ຄໍາສັ່ງຈາກ ~ / bashrc , ຖ້າໄຟລ໌ທີ່ມີຢູ່ແລະ readable. ມັນຈະບໍ່ເຮັດແນວນີ້ຖ້າຖືກເອີ້ນວ່າ sh . ຕົວເລືອກ --norc ອາດຖືກນໍາໃຊ້ເພື່ອສະກັດກັ້ນພຶດຕິກໍາດັ່ງກ່າວນີ້ແລະທາງເລືອກ --rcfile ອາດຈະຖືກໃຊ້ເພື່ອບັງຄັບໃຫ້ໄຟລ໌ອື່ນອ່ານ, ແຕ່ rshd ບໍ່ໄດ້ເອີ້ນເອົາ shell ໂດຍມີຕົວເລືອກຕ່າງໆຫຼືອະນຸຍາດໃຫ້ພວກເຂົາຖືກລະບຸ.

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

DEFINITIONS

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

ເປົ່າ

ຊ່ອງຫຼືແຖບ.

word

ລໍາດັບຂອງລັກສະນະພິຈາລະນາເປັນຫນ່ວຍດຽວໂດຍຫອຍ. ເປັນທີ່ຮູ້ຈັກຍັງເປັນ ສັນຍາລັກ .

ຊື່

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

metacharacter

ລັກສະນະທີ່, ເມື່ອ unquoted, ແຍກຄໍາ. ຫນຶ່ງໃນດັ່ງຕໍ່ໄປນີ້:

| & () <> space tab

operator control

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

|| & && 0 () |

RESERVED WORDS

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

! ກໍລະນີທີ່ເຮັດແລ້ວກໍ່ຕ້ອງການເຮັດວຽກຖ້າເລືອກໃນຂະນະນັ້ນຈົນກວ່າ {} ເວລາ [[]]

SHELL GRAMMAR

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

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

ມູນຄ່າຜົນຕອບແທນຂອງ ຄໍາສັ່ງງ່າຍໆ ແມ່ນສະຖານະການການທ່ອງທ່ຽວຂອງມັນ, ຫຼື 128+ n ຖ້າຄໍາສັ່ງຖືກຢຸດການໂດຍສັນຍານ n .

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

ທໍ່ ເປັນລໍາດັບຂອງຄໍາສັ່ງຫນຶ່ງຫລືຫຼາຍທີ່ແຍກດ້ວຍຕົວ | | ທີ່ຢູ່ ຮູບແບບສໍາລັບທໍ່ສົ່ງແມ່ນ:

[ ເວະລາ [ -p ]] [! ] command [ | command2 ]

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

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

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

ແຕ່ລະຄໍາສັ່ງໃນທໍ່ແມ່ນຖືກປະຕິບັດເປັນຂະບວນການແຍກຕ່າງຫາກ (ເຊົ່ນ, ໃນ subshell).

ບັນຊີລາຍຊື່

ບັນຊີລາຍຊື່ ແມ່ນລໍາດັບຂອງທໍ່ຫນຶ່ງຫຼືຫຼາຍກວ່າແຍກໂດຍຫນຶ່ງຂອງຜູ້ປະຕິບັດງານ ; , & , && , or || , ແລະທາງເລືອກທີ່ສິ້ນສຸດໂດຍຫນຶ່ງຂອງ ; , & , or

ຂອງຜູ້ປະກອບການບັນຊີລາຍການເຫຼົ່ານີ້, && ແລະ || ມີຄວາມສໍາຄັນເທົ່າທຽມກັນ, ຕາມດ້ວຍ ; ແລະ ,, ເຊິ່ງມີຫນ້າທີ່ເທົ່າທຽມກັນ.

ລໍາດັບຫນຶ່ງຫຼືຫຼາຍກວ່າໃຫມ່ອາດຈະປາກົດຢູ່ໃນ ລາຍຊື່ ແທນ semicolon ເພື່ອກໍານົດຄໍາສັ່ງ.

ຖ້າຄໍາສັ່ງຖືກຍົກເລີກໂດຍຜູ້ປະຕິບັດການຄວບຄຸມ, ແລະ shell ຈະດໍາເນີນການຄໍາສັ່ງໃນ background ພາຍໃນ subshell. ຫອຍບໍ່ໄດ້ລໍຖ້າຄໍາສັ່ງສໍາເລັດຮູບ, ແລະສະຖານະພາບກັບຄືນໄປບ່ອນແມ່ນ 0 ຄໍາສັ່ງທີ່ແຍກກັນໂດຍ ; ຖືກປະຕິບັດຕາມລໍາດັບ; Shell ລໍຖ້າຄໍາສັ່ງຂອງແຕ່ລະຄົນທີ່ຈະສິ້ນສຸດລົງ. ສະຖານະການກັບຄືນແມ່ນສະຖານະການອອກຂອງຄໍາສັ່ງສຸດທ້າຍທີ່ຖືກປະຕິບັດ.

ຕົວຄວບຄຸມການຄວບຄຸມ && ແລະ || denote AND list ແລະ OR list, ຕາມລໍາດັບ. ບັນຊີລາຍຊື່ AND ມີແບບຟອມ

command1 && command2

command2 ແມ່ນຖືກປະຕິບັດຖ້າຫາກວ່າ, ແລະພຽງແຕ່ຖ້າວ່າ, command1 ກັບຄືນສະຖານະການອອກຈາກສູນ.

ບັນຊີລາຍຊື່ OR ມີແບບຟອມ

command1 || command2

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

ຄໍາສັ່ງປະສົມ

ຄໍາສັ່ງປະສົມ ແມ່ນຫນຶ່ງໃນດັ່ງຕໍ່ໄປນີ້:

( ລາຍຊື່ )

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

{ list }

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

(( ການສະແດງອອກ ))

ການ ສະແດງອອກ ແມ່ນການປະເມີນຕາມກົດລະບຽບທີ່ໄດ້ກໍານົດໄວ້ຂ້າງລຸ່ມພາຍໃຕ້ການປະ ເມີນ ARITHMETIC . ຖ້າຄ່າຂອງການສະແດງອອກແມ່ນບໍ່ສູນ, ສະຖານະການກັບຄືນແມ່ນ 0; ຖ້າບໍ່ດັ່ງນັ້ນສະຖານະການກັບຄືນໄປບ່ອນແມ່ນ 1. ນີ້ແມ່ນເທົ່າທຽມກັນທີ່ຈະ ໃຫ້ " ການສະແດງອອກ ".

[[ expression ]]

ສະແດງສະຖານະຂອງ 0 ຫຼື 1 ອີງຕາມການປະເມີນຜົນການສະແດງອອກແບບເງື່ອນໄຂ. ການສະແດງອອກແມ່ນປະກອບດ້ວຍການປະຖົມທີ່ໄດ້ອະທິບາຍໄວ້ຂ້າງລຸ່ມນີ້ພາຍໃຕ້ການສະແດງ ເງື່ອນໄຂ . ການຂະຫຍາຍຂໍ້ຄວາມແລະການຂະຫຍາຍຕົວຂອງຕົວອັກສອນບໍ່ໄດ້ປະຕິບັດຕາມຄໍາສັບລະຫວ່າງ [[ ແລະ ]] ; ການຂະຫຍາຍຕົວ tilde, ຕົວກໍານົດການແລະການຂະຫຍາຍຕົວທີ່ແຕກຕ່າງ, ການຂະຫຍາຍຕົວເລກ, ການປ່ຽນແທນຄໍາສັ່ງ, ການທົດແທນການປຸງແຕ່ງແລະການໂຍກຍ້າຍ quote ແມ່ນປະຕິບັດ.

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

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

( ການສະແດງອອກ )

ສົ່ງຄືນມູນຄ່າຂອງ ການສະແດງອອກ . ນີ້ອາດຈະຖືກນໍາໃຊ້ເພື່ອ override ການປະຕິບັດຕາມປົກກະຕິຂອງຜູ້ປະຕິບັດງານ.

! ການສະແດງອອກ

ຄວາມຈິງຖ້າ ການສະແດງອອກ ບໍ່ຖືກຕ້ອງ.

expression1 && expression2

ຄວາມຈິງຖ້າທັງ expression1 ແລະ expression2 ແມ່ນຄວາມຈິງ.

expression1 || expression2 True ຖ້າ expression1 ຫະລື expression2 ເປັນຄວາມຈິງ

The && and || operators ບໍ່ໄດ້ປະເມີນ expression2 ຖ້າຄ່າຂອງ expression1 ແມ່ນພຽງພໍໃນການກໍານົດມູນຄ່າຜົນຕອບແທນຂອງການສະແດງເງື່ອນໄຂທັງຫມົດ.

ສໍາລັບ ຊື່ [ ໃນ ຄໍາສັບ ]; ເຮັດ ລາຍ ເຮັດແລ້ວ

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

ສໍາລັບ (( expr1 expr2 expr3 )) ເຮັດ ລາຍ ເຮັດແລ້ວ

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

ເລືອກ ຊື່ [ ໃນ ຄໍາສັບ ]; ເຮັດ ລາຍ ເຮັດແລ້ວ

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

case word in [[(] pattern [ | pattern ]

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

if list ຫຼັງຈາກນັ້ນ ລາຍຊື່; [ elif list ຫຼັງຈາກນັ້ນ ລາຍຊື່ ; ] ... [ ລາຍຊື່ ອື່ນ ; ] fi

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

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

ຈົນເຖິງ ບັນຊີລາຍຊື່ ; ເຮັດ ລາຍ ເຮັດແລ້ວ

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

[ function ] name () { list }

ນີ້ກໍານົດຫນ້າທີ່ຊື່ ຊື່ . ຮ່າງກາຍ ຂອງຟັງຊັນແມ່ນ ບັນຊີລາຍຊື່ ຂອງຄໍາສັ່ງລະຫວ່າງ {ແລະ}. ບັນຊີລາຍຊື່ນີ້ຖືກປະຕິບັດເມື່ອ ຊື່ ຖືກລະບຸເປັນຊື່ຂອງຄໍາສັ່ງງ່າຍດາຍ. ສະຖານະການອອກຂອງຟັງຊັນແມ່ນສະຖານະການອອກຂອງຄໍາສັ່ງສຸດທ້າຍທີ່ຖືກດໍາເນີນໃນຮ່າງກາຍ. (ເບິ່ງ FUNCTIONS ຂ້າງລຸ່ມນີ້)

COMMENTS

ໃນຫອຍທີ່ບໍ່ແມ່ນໂຕ້ຕອບຫຼືເປືອກໂຕ້ຕອບເຊິ່ງຕົວເລືອກ interactive_comments ກັບ storet builtin ຖືກເປີດໃຊ້ (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້), ຄໍາທີ່ເລີ່ມຕົ້ນດ້ວຍ # ເຮັດໃຫ້ຄໍານັ້ນແລະຕົວອັກສອນທີ່ຍັງເຫຼືອທັງຫມົດທີ່ຢູ່ໃນເສັ້ນນັ້ນຖືກຍົກເລີກ. ເປືອກໂຕ້ຕອບໂດຍບໍ່ມີຕົວເລືອກ interactive_comments ຖືກ ເປີດໃຊ້ງານບໍ່ອະນຸຍາດໃຫ້ຄໍາເຫັນ. ທາງເລືອກ interactive_comments ແມ່ນຢູ່ໃນຄ່າເລີ່ມຕົ້ນໃນ Shell ການໂຕ້ຕອບ.

QUOTING

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

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

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

ມີສາມກົນໄກການອ້າງອິງ: ຕົວອັກສອນ escape , ວົງຢືມດຽວແລະວົງຢືມຄູ່.

ສະຫຼຸບທີ່ບໍ່ມີການຕີລາຄາ ( \ ) ແມ່ນ ຕົວອັກສອນ escape . ມັນຮັກສາມູນຄ່າຕົວເລກຂອງຕົວອັກສອນຕໍ່ໄປຕໍ່ໄປ, ຍົກເວັ້ນ . \\\\\\\\\\\\\\ 'newline \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

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

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

ຕົວກໍານົດການພິເສດ * ແລະ @ ມີຄວາມຫມາຍພິເສດໃນເວລາໃນວົງຢືມຄູ່ (ເບິ່ງ PARAMETERS ຂ້າງລຸ່ມນີ້).

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

\ a

ເຕືອນ (ລະຄັງ)

\ b

backspace

\ e

ລັກສະນະ escape

\ f

form feed

\ n

ເສັ້ນໃຫມ່

\ r

carriage return

\ t

ແຖບນອນ

\ v

ແຖບຕັ້ງ

\\

backslash

\ '

single quote

\ nnn

ຕົວອັກສອນແປດທີ່ມີມູນຄ່າແມ່ນມູນຄ່າ octal nnn (ຫນຶ່ງຫາສາມຕົວເລກ)

\ x HH

ຕົວອັກສອນແປດທີ່ມີມູນຄ່າເປັນຄ່າ hexadecimal HH (ຫນຶ່ງຫຼືສອງເລກ hex)

\ c x

ຕົວອັກສອນຄວບຄຸມ -x

ຜົນໄດ້ຮັບການຂະຫຍາຍຕົວແມ່ນຄໍາດຽວ, ແຕ່ຖ້າວ່າສັນຍາເງິນໂດລາບໍ່ໄດ້ນໍາສະເຫນີ.

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

PARAMETERS

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

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

ຕົວແປ ສາມາດຖືກມອບໃຫ້ໂດຍຄໍາສັ່ງຂອງແບບຟອມ

name = [ value ]

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

Positional Parameters

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

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

Special Parameters

ແກະປະຕິບັດຕົວກໍານົດການຫຼາຍຢ່າງໂດຍສະເພາະ. ຕົວກໍານົດເຫຼົ່ານີ້ອາດຈະຖືກອ້າງອີງເທົ່ານັ້ນ; ການແຕ່ງຕັ້ງໃຫ້ພວກເຂົາບໍ່ຖືກອະນຸຍາດ.

*

ຂະຫຍາຍຕົວໄປຫາຕົວກໍານົດຕໍາແຫນ່ງ, ເລີ່ມຕົ້ນຈາກຫນຶ່ງ. ເມື່ອການຂະຫຍາຍຕົວເກີດຂຶ້ນພາຍໃນວົງຢືມຄູ່, ມັນຂະຫຍາຍໄປເປັນຄໍາດຽວກັບຄ່າຂອງແຕ່ລະພາລາທີ່ແຍກອອກໂດຍຕົວອັກສອນທໍາອິດຂອງຕົວແປ IFS . ດັ່ງນັ້ນ, " $ * " ແມ່ນເທົ່າກັບ " $ 1 c $ 2 c ... ", ບ່ອນທີ່ c ແມ່ນລັກສະນະທໍາອິດຂອງມູນຄ່າຂອງແປ IFS . ຖ້າ IFS ບໍ່ໄດ້ກໍານົດ, ຕົວກໍານົດການຈະຖືກແຍກອອກໂດຍຊ່ອງຫວ່າງ. ຖ້າ IFS ແມ່ນ null, ຕົວກໍານົດການຈະໄດ້ເຂົ້າຮ່ວມໂດຍບໍ່ມີການແບ່ງແຍກ.

@

ຂະຫຍາຍຕົວໄປຫາຕົວກໍານົດຕໍາແຫນ່ງ, ເລີ່ມຕົ້ນຈາກຫນຶ່ງ. ໃນເວລາທີ່ການຂະຫຍາຍຕົວເກີດຂຶ້ນພາຍໃນວົງຢືມຄູ່, ແຕ່ລະພາລາມິເຕີຂະຫຍາຍອອກໄປເປັນຄໍາແຍກຕ່າງຫາກ. ດັ່ງນັ້ນ, " $ @ " ທຽບເທົ່າກັບ " $ 1 " " $ 2 " ... ເມື່ອບໍ່ມີຕົວກໍານົດຕໍາແຫນ່ງ, " $ @ " ແລະ $ @ ຈະຂະຫຍາຍໄປຫມົດ (ເຊົ່ນພວກເຂົາຖືກລຶບອອກ).

#

ຂະຫຍາຍຕົວໄປຫາຈໍານວນຕົວກໍານົດຕໍາແຫນ່ງໃນທະສະນິຍົມ.

?

ຂະຫຍາຍໄປສູ່ສະຖານະຂອງເສັ້ນທາງຫນ້າຈໍທີ່ປະຕິບັດໄດ້ບໍ່ດົນມານີ້.

-

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

$

ຂະຫຍາຍຂະບວນການ ID ຂອງຫອຍ. ໃນ (subshell), ມັນຂະຫຍາຍໄປຫາ ID ຂອງຂະບວນການຂອງແກະໃນປະຈຸບັນ, ບໍ່ແມ່ນ subshell ໄດ້.

!

ຂະຫຍາຍໄປສູ່ ID ຂອງຂະບວນການຂອງຄໍາສັ່ງພື້ນຫລັງ (asynchronous) ທີ່ປະຕິບັດໄດ້ບໍ່ດົນມານີ້.

0

ຂະຫຍາຍໄປຍັງຊື່ຂອງ shell ຫຼື shell script. ນີ້ແມ່ນຕັ້ງຢູ່ໃນການເລີ່ມຕົ້ນແກະ. ຖ້າ bash ຖືກເອີ້ນດ້ວຍໄຟລ໌ຂອງຄໍາສັ່ງ, $ 0 ແມ່ນຕັ້ງຊື່ຂອງໄຟລ໌ນັ້ນ. ຖ້າ bash ຖືກເລີ່ມຕົ້ນດ້ວຍທາງເລືອກ -c , ຫຼັງຈາກນັ້ນ $ 0 ຈະຖືກກໍານົດໃຫ້ເປັນການໂຕ້ຖຽງຄັ້ງທໍາອິດຫຼັງຈາກທີ່ສະຕິງຈະຖືກປະຕິບັດ, ຖ້າມີຢູ່. ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນຖືກຕັ້ງຊື່ຊື່ໄຟລ໌ທີ່ໃຊ້ໃນການເອີ້ນໃຊ້ bash , ຕາມການໂຕ້ແຍ້ງ zero.

_

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

Shell Variables

ຕົວແປຕໍ່ໄປນີ້ຖືກກໍານົດໂດຍ shell:

BASH

ຂະຫຍາຍໄປຫາຊື່ໄຟລ໌ທີ່ໃຊ້ໃນການເອີ້ນຕົວຢ່າງນີ້ຂອງ bash .

BASH_VERSINFO

A variable readonly array ຊຶ່ງສະມາຊິກຖືຂໍ້ມູນສະບັບສໍາລັບຕົວຢ່າງຂອງ bash ນີ້. ສະກຸນເງິນທີ່ຖືກມອບຫມາຍໃຫ້ສະມາຊິກອາເລມີດັ່ງນີ້:

BASH_VERSINFO [ 0]

ຫມາຍເລກຮຸ່ນທີ່ສໍາຄັນ ( ປ່ອຍ ).

BASH_VERSINFO [ 1]

ຫມາຍເລກຮຸ່ນນ້ອຍ ( ຮຸ່ນ ).

BASH_VERSINFO [ 2]

ລະດັບເພີ້ມ.

BASH_VERSINFO [ 3]

ສະບັບການກໍ່ສ້າງ.

BASH_VERSINFO [ 4]

ສະຖານະພາບການປ່ອຍ (ຕົວຢ່າງ, beta1 ).

BASH_VERSINFO [ 5]

ມູນຄ່າຂອງ MACHTYPE .

BASH_VERSION

ຂະຫຍາຍຕົວໄປສະຕິງທີ່ອະທິບາຍສະບັບຂອງຕົວຢ່າງຂອງ bash ນີ້.

COMP_CWORD

COMP_LINE

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

COMP_POINT

COMP_WORDS

ຕົວແປອາເລ (ເບິ່ງຕາຕະລາງຂ້າງລຸ່ມນີ້) ປະກອບດ້ວຍຄໍາສັບຕ່າງໆໃນບັນທັດຄໍາສັ່ງປັດຈຸບັນ. ຕົວແປນີ້ມີເສພາະໃນຫນ້າທີ່ຂອງ shell ທີ່ເອີ້ນໂດຍສະຖານທີ່ສໍາເລັດຮູບທີ່ສາມາດກໍາຫນົດໄດ້ (ເບິ່ງ Programming Completion below).

DIRSTACK

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

EUID

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

FUNCNAME

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

GROUPS

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

HISTCMD

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

HOSTNAME

ຕັ້ງຄ່າໂດຍອັດຕະໂນມັດກັບຊື່ຂອງໂຮດໃນປະຈຸບັນ.

HOSTTYPE

ຕັ້ງຄ່າອັດຕະໂນມັດໃຫ້ເປັນຊ່ຽວຊານທີ່ອະທິບາຍເຖິງປະເພດຂອງເຄື່ອງຈັກທີ່ໃຊ້ bash . ຄ່າເລີ່ມຕົ້ນແມ່ນລະບົບທີ່ຂຶ້ນກັບ.

LINENO

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

MACHTYPE

ການຕັ້ງຄ່າອັດຕະໂນມັດກັບສະຕິງທີ່ອະທິບາຍຢ່າງເຕັມທີ່ກ່ຽວກັບປະເພດຂອງລະບົບທີ່ bash ຖືກປະຕິບັດໃນຮູບແບບ ລະບົບ GNU cpu-company-system ມາດຕະຖານ. ຄ່າເລີ່ມຕົ້ນແມ່ນລະບົບທີ່ຂຶ້ນກັບ.

OLDPWD

ໄດເລກະທໍລີການເຮັດວຽກທີ່ຜ່ານມາດັ່ງທີ່ກໍານົດໂດຍຄໍາສັ່ງ cd .

OPTARG

ຄ່າຂອງການໂຕ້ຕອບທາງເລືອກສຸດທ້າຍທີ່ໄດ້ຮັບໂດຍຄໍາສັ່ງ getopts builtin (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້).

OPTIND

ດັດຊະນີຂອງການໂຕ້ຖຽງຕໍ່ໄປຈະຖືກປະຕິບັດໂດຍຄໍາສັ່ງ getopts builtin (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້).

OSTYPE

ຕັ້ງຄ່າອັດຕະໂນມັດກັບສາຍທີ່ອະທິບາຍລະບົບປະຕິບັດການທີ່ bash ຖືກປະຕິບັດ. ຄ່າເລີ່ມຕົ້ນແມ່ນລະບົບທີ່ຂຶ້ນກັບ.

PIPESTATUS

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

PPID

ID ຂອງຂະບວນການຂອງພໍ່ແມ່ຂອງແກະ. ຕົວແປນີ້ແມ່ນອ່ານເທົ່ານັ້ນ.

PWD

ໄດເລກະທໍລີການເຮັດວຽກທີ່ກໍານົດໄວ້ໂດຍຄໍາສັ່ງ cd .

RANDOM

ແຕ່ລະຄັ້ງທີ່ພາລາມິເຕີນີ້ຖືກອ້າງອີງ, ຈໍານວນເຕັມທີ່ລະຫວ່າງ 0 ແລະ 32767 ຖືກສ້າງຂຶ້ນ. ລໍາດັບຂອງຈໍານວນ Random ອາດຈະຖືກເລີ່ມຕົ້ນໂດຍການມອບຫມາຍມູນຄ່າກັບ RANDOM . ຖ້າ RANDOM ຖືກກໍານົດ, ມັນຈະສູນເສຍຄຸນສົມບັດພິເສດຂອງມັນ, ເຖິງແມ່ນວ່າມັນຈະຖືກປັບ.

REPLY

ກໍານົດໃຫ້ເສັ້ນຂອງຂໍ້ມູນເຂົ້າອ່ານໂດຍຄໍາສັ່ງ ອ່ານ ຄໍາສັ່ງທີ່ມີຢູ່ໃນເວລາທີ່ບໍ່ມີການໂຕ້ຖຽງ.

SECONDS

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

SHELLOPTS

ບັນຊີລາຍຊື່ທີ່ແຕກຕ່າງກັນຂອງແກ່ນຂອງຕົວເລືອກແກະທີ່ຖືກເປີດໃຊ້. ແຕ່ລະຄໍາໃນບັນຊີລາຍຊື່ແມ່ນເປັນການໂຕ້ຖຽງທີ່ຖືກຕ້ອງສໍາລັບທາງເລືອກ -o ກັບຄໍາສັ່ງ builtin command (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້). ຕົວເລືອກທີ່ປາກົດຢູ່ໃນ SHELLOPTS ແມ່ນລາຍງານຕາມ ທີ່ ກໍານົດໄວ້ ໂດຍ ຊຸດ -o . ຖ້າຕົວແປນີ້ຢູ່ໃນສະພາບແວດລ້ອມໃນເວລາທີ່ bash ເລີ້ມຕົ້ນ, ຕົວເລືອກ shell ໃນບັນຊີຈະເປີດໃຊ້ກ່ອນທີ່ຈະອ່ານໄຟລ໌ເລີ່ມຕົ້ນໃດໆ. ຕົວແປນີ້ແມ່ນອ່ານເທົ່ານັ້ນ.

SHLVL

ເພີ່ມຂຶ້ນໂດຍຫນຶ່ງໃນແຕ່ລະຄັ້ງທີ່ຕົວຢ່າງຂອງ bash ຖືກເລີ່ມຕົ້ນ.

UID

ຂະຫຍາຍຕົວຂອງ ID ຜູ້ໃຊ້ຂອງຜູ້ໃຊ້ປັດຈຸບັນ, ເລີ່ມຕົ້ນໃນການເລີ່ມຕົ້ນຂອງແກະ. ຕົວແປນີ້ແມ່ນອ່ານເທົ່ານັ້ນ.

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

BASH_ENV

ຖ້າພາລາມິເຕີນີ້ຖືກກໍານົດເມື່ອ bash ກໍາລັງປະຕິບັດສະແກນ shell, ຄ່າຂອງມັນຈະຖືກແປເປັນຊື່ໄຟລ໌ທີ່ມີຄໍາສັ່ງເພື່ອເລີ່ມຕົ້ນ shell, ໃນ ~ / bashrc . ມູນຄ່າຂອງ BASH_ENV ແມ່ນຕ້ອງມີການຂະຫຍາຍຕົວພາການ, ປ່ຽນແທນຄໍາສັ່ງແລະການຂະຫຍາຍຕົວເລກຄະນິດສາດກ່ອນທີ່ຈະຖືກຕີຄວາມເປັນຊື່ແຟ້ມ. PATH ບໍ່ໄດ້ໃຊ້ໃນການຊອກຫາຊື່ໄຟລ໌ທີ່ຜົນໄດ້ຮັບ.

CDPATH

ເສັ້ນທາງຄົ້ນຫາສໍາລັບຄໍາສັ່ງ cd . ນີ້ແມ່ນບັນຊີລາຍຊື່ຂອງຈໍທີ່ແຍກຕ່າງຫາກທີ່ Shell ຊອກຫາໄດເລກະທໍລີປາຍທາງທີ່ລະບຸໂດຍຄໍາສັ່ງ cd . ຄ່າຕົວຢ່າງແມ່ນ ".: ~: / usr".

COLUMNS

ຖືກນໍາໃຊ້ໂດຍຄໍາສັ່ງ builtin ເລືອກ ເພື່ອກໍານົດ width ຂອງ terminal ໃນເວລາທີ່ພິມລາຍການເລືອກ. ຕັ້ງຄ່າໂດຍອັດຕະໂນມັດເມື່ອໄດ້ຮັບ SIGWINCH.

COMPREPLY

ຕົວແປອາເລທີ່ bash ອ່ານຄວາມສໍາເລັດທີ່ເປັນໄປໄດ້ທີ່ເກີດຂື້ນໂດຍຫນ້າທີ່ຂອງ shell ທີ່ຖືກເອີ້ນໂດຍສະຖານທີ່ສໍາເລັດໂຄງການ (ເບິ່ງ Programming Completion ຂ້າງລຸ່ມນີ້).

FCEDIT

ບັນນາທິການເລີ່ມຕົ້ນສໍາລັບຄໍາສັ່ງ fc builtin.

FIGNORE

ບັນຊີລາຍຊື່ຂອງ ຍ່ອຍ ທີ່ຖືກແຍກອອກຈາກຈໍ້າສອງເມັດທີ່ຈະບໍ່ສາມາດປະຕິເສດເມື່ອປະຕິບັດການສໍາເລັດຮູບຂອງໄຟລ໌ (ເບິ່ງ READLINE ຂ້າງລຸ່ມນີ້). ຊື່ແຟ້ມທີ່ມີນາມສະກຸນກົງກັນກັບຫນຶ່ງໃນລາຍການໃນ FIGNORE ແມ່ນຖືກຍົກເວັ້ນຈາກບັນຊີລາຍຊື່ຂອງຊື່ທີ່ຖືກຕ້ອງ. ຄ່າຕົວຢ່າງແມ່ນ ".o: ~".

GLOBIGNORE

ບັນຊີລາຍຊື່ຂອງຮູບແບບທີ່ແຕກຕ່າງກັນໂດຍແຍກລໍາດັບທີ່ກໍານົດຊຸດຂອງຊື່ໄຟລ໌ຈະຖືກລະເວັ້ນໂດຍການຂະຫຍາຍຕົວຂອງເສັ້ນທາງ. ຖ້າໄຟລ໌ທີ່ກົງກັນໂດຍຮູບແບບການຂະຫຍາຍຕົວຂອງເສັ້ນທາງຍັງກົງກັບຮູບແບບຫນຶ່ງຂອງ GLOBIGNORE , ມັນຖືກລຶບອອກຈາກບັນຊີລາຍຊື່ຂອງການແຂ່ງຂັນ.

HISTCONTROL

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

HISTFILE

ຊື່ຂອງໄຟລ໌ທີ່ປະຫວັດສາດຄໍາສັ່ງຖືກບັນທຶກໄວ້ (ເບິ່ງ ປະຫວັດສາດ ດ້ານລຸ່ມ). ຄ່າເລີ່ມຕົ້ນແມ່ນ ~ / bash_history . ຖ້າບໍ່ກໍານົດ, ປະຫວັດຂອງຄໍາສັ່ງຈະບໍ່ຖືກບັນທຶກໄວ້ໃນເວລາທີ່ໂຕ້ຕອບໂຕ້ຕອບອອກ.

HISTFILESIZE

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

HISTIGNORE

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

HISTSIZE

ຈໍານວນຄໍາສັ່ງທີ່ຕ້ອງຈໍາໄວ້ໃນປະຫວັດຂອງຄໍາສັ່ງ (ເບິ່ງ ປະຫວັດສາດ ຂ້າງລຸ່ມນີ້). ຄ່າເລີ່ມຕົ້ນແມ່ນ 500.

ຫນ້າທໍາອິດ

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

HOSTFILE

ມີຊື່ຂອງໄຟລ໌ໃນຮູບແບບດຽວກັນກັບ / etc / hosts ທີ່ຄວນອ່ານເມື່ອ Shell ຕ້ອງການສໍາເລັດຊື່ໂຮດ. ບັນຊີລາຍຊື່ຂອງການສໍາເລັດ hostname ອາດຈະມີການປ່ຽນແປງໃນຂະນະທີ່ແກະແມ່ນແລ່ນ; ການຖອນຊື່ hostname ຕໍ່ໄປຫຼັງຈາກຖືກປ່ຽນແປງ, bash ເພີ່ມເນື້ອຫາຂອງໄຟລ໌ໃຫມ່ໃນບັນຊີທີ່ມີຢູ່ແລ້ວ. ຖ້າ HOSTFILE ຖືກກໍານົດ, ແຕ່ບໍ່ມີມູນຄ່າ, bash ຄວາມພະຍາຍາມທີ່ຈະອ່ານ / etc / hosts ເພື່ອໃຫ້ໄດ້ຮັບບັນຊີລາຍຊື່ຂອງການເຮັດສໍາເລັດ hostname. ເມື່ອ HOSTFILE ຖືກກໍານົດ, ລາຍຊື່ hostname ຖືກລຶບອອກ.

IFS

ຕົວ ແຍກພາກສະຫນາມພາຍໃນ ທີ່ໃຊ້ສໍາລັບການແບ່ງປັນຄໍາຫຼັງຈາກການຂະຫຍາຍແລະການແຍກສາຍເຂົ້າໄປໃນຄໍາທີ່ມີຄໍາສັ່ງ ອ່ານ ຄໍາສັ່ງ builtin. ຄ່າເລີ່ມຕົ້ນແມ່ນ `` ''.

IGNOREEOF

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

INPUTRC

ຊື່ໄຟລ໌ສໍາລັບໄຟລ໌ເລີ່ມຕົ້ນຂອງ readline , overriding ຄ່າເລີ່ມຕົ້ນຂອງ ~ / .inputrc (ເບິ່ງ READLINE ຂ້າງລຸ່ມນີ້).

LANG

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

LC_ALL

ຕົວແປນີ້ overrides ຄ່າຂອງ LANG ແລະຕົວແປ LC_ ອື່ນທີ່ກໍານົດປະເພດທ້ອງຖິ່ນ.

LC_COLLATE

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

LC_CTYPE

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

LC_MESSAGES

ຕົວແປນີ້ກໍານົດພື້ນຖານທີ່ໃຊ້ໃນການແປພາສາທີ່ມີຄູ່ຜົວເມຍທີ່ຖືກກ່າວເຖິງສອງຄັ້ງກ່ອນຫນ້ານີ້ໂດຍ $ .

LC_NUMERIC

ຕົວແປນີ້ກໍານົດປະເພດທ້ອງຖິ່ນທີ່ໃຊ້ສໍາລັບການຈັດຮູບແບບຈໍານວນ.

LINES

ໃຊ້ໂດຍຄໍາສັ່ງ builtin ເລືອກ ເພື່ອກໍານົດຄວາມຍາວຄໍລໍາສໍາລັບການພິມລາຍການຄັດເລືອກ. ຕັ້ງຄ່າໂດຍອັດຕະໂນມັດເມື່ອໄດ້ຮັບ SIGWINCH.

MAIL

ຖ້າພາລາມິເຕີນີ້ຖືກຕັ້ງຊື່ຊື່ແຟ້ມແລະຕົວແປ MAILPATH ບໍ່ຖືກກໍານົດ, bash ແຈ້ງໃຫ້ຜູ້ໃຊ້ມາຮອດຂອງອີເມວໃນໄຟລ໌ທີ່ກໍານົດໄວ້.

MAILCHECK

ກໍານົດວິທີການເລື້ອຍໆ (ໃນວິນາທີ) ການກວດສອບ ຂີ້ເຫຍື້ອ ສໍາລັບອີເມວ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 60 ວິນາທີ. ເມື່ອມັນແມ່ນເວລາທີ່ຈະກວດສອບອີເມວ, ແກະສະແດງດັ່ງນັ້ນກ່ອນທີ່ຈະສະແດງຂໍ້ໂຕ້ຕອບຫລັກ. ຖ້າຕົວແປນີ້ບໍ່ຖືກກໍານົດຫຼືຕັ້ງຄ່າທີ່ບໍ່ແມ່ນຈໍານວນຫລາຍກວ່າຫລືເທົ່າກັບ 0, shell ຈະປິດການກວດສອບອີເມວ.

MAILPATH

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

MAILPATH = '/ var / mail / bfox? ທ່ານມີອີເມວ: ~ / shell-mail? $ _ ມີອີເມວ!' '

Bash ໃຫ້ເປັນຄ່າເລີ່ມຕົ້ນສໍາລັບຕົວແປນີ້, ແຕ່ວ່າສະຖານທີ່ຂອງໄຟລ໌ອີເມວຂອງຜູ້ໃຊ້ທີ່ໃຊ້ນັ້ນແມ່ນລະບົບ (ຕົວຢ່າງ, / var / mail / $ USER ).

OPTERR

ຖ້າຕັ້ງຄ່າ 1, bash ສະແດງຂໍ້ຄວາມຜິດພາດທີ່ເກີດຈາກຄໍາສັ່ງ getopts builtin (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້). OPTERR ຖືກເລີ່ມຕົ້ນເປັນ 1 ໃນເວລາທີ່ shell ຖືກເອີ້ນຫຼືສະແກນ script ຖືກປະຕິບັດ.

PATH

ເສັ້ນທາງຄົ້ນຫາສໍາລັບຄໍາສັ່ງ. ມັນເປັນບັນຊີລາຍຊື່ທີ່ແຍກຈາກຈໍ້າສອງເມັດທີ່ Shell ເບິ່ງຄໍາສັ່ງ (ເບິ່ງ ຄໍາສັ່ງ COMMAND ພາຍໃນລຸ່ມນີ້). ເສັ້ນທາງເລີ່ມຕົ້ນແມ່ນລະບົບທີ່ຂຶ້ນກັບ, ແລະຖືກກໍານົດໂດຍຜູ້ບໍລິຫານຜູ້ທີ່ຕິດຕັ້ງ bash . ມູນຄ່າທົ່ວໄປແມ່ນ `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin: ''.

POSIXLY_CORRECT

ຖ້າຕົວແປນີ້ຢູ່ໃນສະພາບແວດລ້ອມໃນເວລາທີ່ bash ເລີ້ມ, shell ຈະເຂົ້າສູ່ ໂຫມດ posix ກ່ອນທີ່ຈະອ່ານໄຟລ໌ເລີ່ມຕົ້ນ, ເຊັ່ນວ່າຕົວເລືອກ - ໂປແກມ invocation ໄດ້ຖືກສະຫນອງໃຫ້. ຖ້າມັນຖືກຕັ້ງໄວ້ໃນຂະນະທີ່ແກະແລ່ນ, bash ຊ່ວຍ ໂຫມດ posix , ຄືກັບວ່າຄໍາສັ່ງ set -o posix ໄດ້ຖືກປະຕິບັດ.

PROMPT_COMMAND

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

PS1

ມູນຄ່າຂອງພາລາມິເຕີນີ້ແມ່ນຂະຫຍາຍຕົວ (ເບິ່ງ PROMPTING ຂ້າງລຸ່ມນີ້) ແລະຖືກນໍາໃຊ້ເປັນສາຍເຕືອນຕົ້ນຕໍ. ຄ່າເລີ່ມຕົ້ນແມ່ນ `` \ s- \ v \ $ ''.

PS2

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

PS3

ຄ່າຂອງພາລາມິເຕີນີ້ຖືກນໍາໃຊ້ເປັນຄໍາສັ່ງສໍາລັບຄໍາສັ່ງ ເລືອກ (ເບິ່ງ SHELL GRAMMAR ຂ້າງເທິງ).

PS4

ຄ່າຂອງພາລາມິເຕີນີ້ຈະຂະຫຍາຍໄປດ້ວຍ PS1 ແລະຄ່າພິມຈະຖືກພິມກ່ອນທີ່ຈະສະແດງການສະແດງຜົນໃນລະຫວ່າງການສະແດງຜົນໃນການດໍາເນີນການ. ລັກສະນະທໍາອິດຂອງ PS4 ແມ່ນຖືກຈໍາລອງຫຼາຍຄັ້ງ, ຕາມຄວາມຈໍາເປັນ, ເພື່ອຊີ້ບອກລະດັບຂອງການຫຼອກລວງຫຼາຍ. ຄ່າເລີ່ມຕົ້ນແມ່ນ `` + ''.

TIMEFORMAT

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

%%

A literal % .

% [ p ] [l] R

ໄລຍະເວລາທີ່ລ້າວໃນວິນາທີ.

% [ p ] [l] U

ຈໍານວນ CPU ທີສອງໃຊ້ໃນໂຫມດຜູ້ໃຊ້.

% [ p ] [l] S

ຈໍານວນ CPU ທີສອງໃຊ້ໃນໂຫມດລະບົບ.

% P

ອັດຕາສ່ວນ CPU, ຄິດໄລ່ເປັນ (% U +% S) /% R.

p ເປັນທາງເລືອກແມ່ນເລກທີ່ກໍານົດ ຄວາມຖືກຕ້ອງ , ຈໍານວນຂອງຕົວເລກທີ່ບໍ່ໄດ້ຫມາຍເລກຫຼັງຈາກຈຸດຕ່ໍາ. ຄ່າຂອງ 0 ເຮັດໃຫ້ບໍ່ມີຈຸດ decimal ຫຼືສ່ວນຫນຶ່ງທີ່ຈະອອກ. ຢູ່ທີ່ສາມບ່ອນທີ່ສຸດຫຼັງຈາກຈຸດສໍາລັບຈຸດເດັ່ນອາດຈະຖືກກໍານົດໄວ້; ຄ່າ p ສູງກວ່າ 3 ຈະຖືກປ່ຽນເປັນ 3 ຖ້າ p ບໍ່ໄດ້ລະບຸ, ຄ່າ 3 ຈະຖືກນໍາໃຊ້.

ທາງເລືອກ l ກໍານົດຮູບແບບທີ່ຍາວກວ່າ, ລວມທັງນາທີ, ໃນແບບຟອມ MM m SS . FF s ຄ່າຂອງ p ກໍານົດວ່າມີສ່ວນປະກອບຫຼືບໍ່.

ຖ້າຕົວແປນີ້ບໍ່ຖືກກໍານົດ, bash ເຮັດຄືກັບວ່າມັນມີຄ່າ $ '\ n ຈິງ \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . ຖ້າຄ່າແມ່ນ null, ບໍ່ມີຂໍ້ມູນກ່ຽວກັບເວລາສະແດງ. ເສັ້ນໃຫມ່ທີ່ຕິດຕາມຈະຖືກເພີ່ມເມື່ອຮູບແບບສະແດງຖືກສະແດງ.

TMOUT

ຖ້າກໍານົດຄ່າທີ່ສູງກວ່າສູນ, TMOUT ຈະຖືກຈັດການເປັນເວລາທໍາອິດສໍາລັບ readin builtin. ຄໍາສັ່ງ ເລືອກ ຈະສິ້ນສຸດຖ້າວ່າ input ບໍ່ມາຮອດຫຼັງຈາກເວລາຂອງ TMOUT ເມື່ອເຂົ້າມາຈາກ terminal. ໃນ Shell ການໂຕ້ຕອບ, ມູນຄ່າແມ່ນແປເປັນຈໍານວນຂອງວິນາທີທີ່ຈະລໍຖ້າສໍາລັບຂໍ້ມູນຫຼັງຈາກອອກໃບຄໍາສັ່ງຕົ້ນຕໍ. Bash ສິ້ນສຸດລົງຫລັງຈາກລໍຖ້າຈໍານວນວິນາທີຖ້າບໍ່ເຂົ້າມາ.

auto_resume

ຕົວແປນີ້ຈະຄວບຄຸມວິທີການແກະໂຕ້ຕອບກັບຜູ້ໃຊ້ແລະການຄວບຄຸມວຽກ. ຖ້າຕົວແປນີ້ຖືກກໍານົດ, ຄໍາດຽວຄໍາງ່າຍໆໂດຍບໍ່ມີການປ່ຽນແປງແມ່ນຖືກປະຕິບັດເປັນຜູ້ສະຫມັກສໍາລັບການຍົກເລີກການເຮັດວຽກທີ່ມີຢູ່ແລ້ວ. ບໍ່ມີຄວາມບໍ່ສະຫງົບອະນຸຍາດໃຫ້; ຖ້າມີຫຼາຍກວ່າຫນຶ່ງວຽກທີ່ເລີ່ມຕົ້ນດ້ວຍສາຍອັກສອນທີ່ພິມ, ວຽກທີ່ຜ່ານມາໄດ້ຮັບການຄັດເລືອກມາແລ້ວ. ຊື່ ຂອງວຽກທີ່ຢຸດຢູ່ໃນສະພາບການນີ້ແມ່ນເສັ້ນຄໍາສັ່ງທີ່ໃຊ້ເພື່ອເລີ່ມຕົ້ນມັນ. ຖ້າກໍານົດໄວ້ໃນມູນຄ່າ ທີ່ແນ່ນອນ , ສະຕິງທີ່ຕ້ອງການຈະຕ້ອງກົງກັບຊື່ຂອງວຽກທີ່ຖືກເຊົາຢ່າງແນ່ນອນ; ຖ້າກໍານົດໃຫ້ substring , ສະຕິງທີ່ຕ້ອງການໃຫ້ສອດຄ່ອງກັບ substring ຂອງຊື່ຂອງວຽກທີ່ຖືກຢຸດ. ຄ່າ substring ໃຫ້ການເຮັດວຽກຄ້າຍກັບ %? ຕົວຊີ້ວັດການເຮັດວຽກ (ເບິ່ງ JOB CONTROL ຂ້າງລຸ່ມນີ້). ຖ້າຖືກກໍານົດໃຫ້ມີມູນຄ່າອື່ນໆ, ສາຍທີ່ສະຫນອງໃຫ້ຕ້ອງເປັນຄໍານໍາຫນ້າຂອງຊື່ວຽກທີ່ຖືກຢຸດເຊົາ; ນີ້ສະຫນອງການເຮັດວຽກທີ່ຄ້າຍຄືກັນກັບ % identifier ວຽກ.

histchars

ສອງຫຼືສາມລັກສະນະທີ່ຄວບຄຸມການຂະຫຍາຍຕົວປະຫວັດສາດແລະ tokenization (ເບິ່ງການຂະຫຍາຍຕົວດ້ານລຸ່ມນີ້). ຕົວອັກສອນທໍາອິດແມ່ນລັກສະນະການ ຂະຫຍາຍຕົວຂອງປະຫວັດສາດ , ລັກສະນະທີ່ສະແດງເຖິງການເລີ່ມຕົ້ນຂອງການຂະຫຍາຍຕົວຂອງປະຫວັດສາດ, ຕາມປົກກະຕິ ! '. ຕົວອັກສອນທີສອງແມ່ນ ຕົວແທນການປ່ຽນແທນທີ່ໄວ ທີ່ຖືກນໍາໃຊ້ເປັນນາມສະກຸນສໍາລັບ re-running ຄໍາສັ່ງທີ່ຜ່ານມາທີ່ເຂົ້າ, ແທນ string ຫນຶ່ງສໍາລັບ command ອື່ນ. ຄ່າເລີ່ມຕົ້ນແມ່ນ ` ^ '. ຕົວອັກສອນທີສາມທາງເລືອກແມ່ນລັກສະນະທີ່ຊີ້ໃຫ້ເຫັນວ່າສ່ວນທີ່ເຫຼືອຂອງເສັ້ນເປັນຄວາມຄິດເຫັນເມື່ອພົບວ່າເປັນລັກສະນະທໍາອິດຂອງຄໍາ, ຕາມປົກກະຕິ ` # '. ລັກສະນະຄວາມຄິດເຫັນຂອງປະວັດສາດເຮັດໃຫ້ການປ່ຽນແທນປະວັດສາດຈະຖືກຂ້າມໄປສໍາລັບຄໍາທີ່ຍັງເຫຼືອຢູ່ໃນເສັ້ນ. ມັນບໍ່ຈໍາເປັນຕ້ອງເຮັດໃຫ້ຜູ້ວິເຄາະແກະໃນການປິ່ນປົວສ່ວນທີ່ເຫຼືອຂອງເສັ້ນເປັນຄໍາເຫັນ.

ອາເລ

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

ອາເລຈະຖືກສ້າງຂື້ນໂດຍອັດຕະໂນມັດຖ້າວ່າມີຕົວແປໃດຖືກກໍາຫນົດໃຫ້ໃຊ້ ຊື່ຂອງ syntax [ subscript ] = =. subscript ໄດ້ຮັບການປະຕິບັດເປັນການສະແດງອອກເລກຄະນິດສາດທີ່ຕ້ອງປະເມີນເຖິງຈໍານວນຫຼາຍກວ່າຫຼືເທົ່າກັບສູນ. ການປະກາດອາເລຢ່າງຊັດເຈນ, ໃຊ້ declare- name (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້). declare-a name [ subscript ] is also accepted ລະຫັດຍ່ອຍຖືກລະເວັ້ນ. ຄຸນລັກສະນະອາດຈະຖືກກໍານົດໄວ້ສໍາລັບຕົວປ່ຽນແປງອາເລໂດຍໃຊ້ຕົວອັກສອນ ປະກາດ ແລະ readonly . ແຕ່ລະ attribute ໃຊ້ກັບສະມາຊິກທັງຫມົດຂອງ array.

ອາເລໄດ້ຖືກມອບຫມາຍໃຫ້ໃຊ້ການປະສົມປະສານຂອງແບບຟອມ ຊື່ = ( ມູນຄ່າ 1 ມູນຄ່າ n ) , ບ່ອນທີ່ແຕ່ລະ ຄ່າ ແມ່ນຂອງແບບ [ subscript ] = string . ຕ້ອງມີລະຫັດເທົ່ານັ້ນ. ຖ້າວົງເລັບຕົວເລືອກແລະຕົວຫນັງສືສະແດງຂໍ້ມູນຖືກສະຫນອງ, ດັດຊະນີດັ່ງກ່າວໄດ້ຖືກມອບໃຫ້; ຖ້າບໍ່ດັ່ງນັ້ນດັດຊະນີຂອງອົງປະກອບທີ່ໄດ້ຮັບມອບຫມາຍແມ່ນດັດຊະນີສຸດທ້າຍທີ່ໄດ້ຮັບມອບຫມາຍໂດຍຄໍາສັ່ງບວກຫນຶ່ງ. ດັດຊະນີເລີ່ມຕົ້ນຢູ່ທີ່ສູນ. syntax ນີ້ຍັງໄດ້ຮັບການຍອມຮັບໂດຍການ ປະກາດ builtin. ອົງປະກອບອາເລສ່ວນບຸກຄົນສາມາດໄດ້ຮັບການມອບຫມາຍໃຫ້ໃຊ້ ຊື່ [ subscript ] = syntax ມູນຄ່າທີ່ ນໍາສະເຫນີຂ້າງເທິງ.

ການກໍ່ສ້າງບໍ່ໄດ້ຖືກນໍາໃຊ້ເພື່ອທໍາລາຍອາເລ. unset ຊື່ [ subscript ] destroys ອົງປະກອບອາເລທີ່ຢູ່ໃນສະຫຼຸບດັດຊະນີ. unset ຊື່ , ບ່ອນທີ່ ຊື່ ແມ່ນ array, ຫຼື unset ຊື່ [ subscript ], ບ່ອນທີ່ subscript ແມ່ນ * ຫຼື @ , ເອົາອາເລທັງຫມົດ.

ການ ປະກາດ , ທ້ອງຖິ່ນ ແລະ ອ່ານ readonly ແຕ່ລະຍອມຮັບທາງເລືອກ -a ເພື່ອກໍານົດອາເລ. Readin builtin ຍອມຮັບຕົວເລືອກ -a ເພື່ອກໍາຫນົດລາຍະການຂອງຄໍາທີ່ອ່ານຈາກ input ມາດຕະຖານໃນ array. ການ ກໍານົດ ແລະ ປະກາດ constructins ສະແດງຄ່າ array ໃນວິທີການທີ່ອະນຸຍາດໃຫ້ພວກເຂົາສາມາດຖືກນໍາໃຊ້ເປັນວຽກໃຫມ່.

EXPANSION

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

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

ໃນລະບົບທີ່ສາມາດສະຫນັບສະຫນູນມັນ, ມີການຂະຫຍາຍຕົວເພີ່ມເຕີມທີ່ມີ: ການທົດແທນການປຸງແຕ່ງ .

Brace expansion

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

ການຂະຫຍາຍຖົງຢາງອາດຈະຖືກຮັງ. ຜົນໄດ້ຮັບຂອງແຕ່ລະແຖວຂະຫຍາຍໄດ້ບໍ່ຖືກຈັດຮຽງ; ການປະຕິບັດຕາມຄໍາສັ່ງທີ່ຖືກຕ້ອງແມ່ນຖືກເກັບໄວ້. ຕົວຢ່າງ, { d, c, b } e ຂະຫຍາຍອອກໄປໃນ 'ade ace abe'.

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

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

mkdir / usr / local / src / bash / {old, new, dist, bugs}

ຫຼື

chown root /usr/{ucb/{exeded},lib/{ex??,,how_ex}}

ການຂະຫຍາຍຕົວທີ່ມີຂອບເຂດນໍາໃຊ້ຄວາມບໍ່ເຂົ້າກັນເລັກນ້ອຍກັບສະບັບປະຫວັດສາດຂອງ sh . sh ບໍ່ໄດ້ປະຕິບັດຕາມການເປີດຫຼືປິດຜ້າຍັນສະເພາະເມື່ອພວກມັນປາກົດເປັນສ່ວນຫນຶ່ງຂອງຄໍາ, ແລະຮັກສາມັນໄວ້ໃນຜົນຜະລິດ. Bash ເອົາລອກເອົາໄວ້ຈາກຄໍາທີ່ເປັນຜົນມາຈາກການຂະຫຍາຍຕົວທີ່ມີຮວງ. ສໍາລັບຕົວຢ່າງ, ຄໍາທີ່ເຂົ້າໄປໃນ sh ເປັນ ແຟ້ມ {1,2} ປາກົດຢູ່ໃນລະຫັດທີ່ຢູ່ໃນຜົນຜະລິດ. ຄໍາດຽວກັນແມ່ນອອກເປັນ ໄຟລ໌ file1 ຫຼັງຈາກການຂະຫຍາຍໂດຍ bash . ຖ້າຕ້ອງການທີ່ເຫມາະສົມກັບ sh , ເລີ່ມຕົ້ນ bash ກັບຕົວເລືອກ + B ຫຼືປິດການຂະຫຍາຍວົງຢືມດ້ວຍຕົວເລືອກ + B ກັບຄໍາສັ່ງທີ່ ກໍານົດໄວ້ (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້).

Tilde Expansion

ຖ້າຄໍາເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນທີ່ບໍ່ໄດ້ລະບຸ (` ~ '), ຕົວອັກສອນທັງຫມົດທີ່ຢູ່ຂ້າງຫນ້າແຖວທີ່ບໍ່ໄດ້ລະບຸທໍາອິດ (ຫຼືຕົວອັກສອນທັງຫມົດ, ຖ້າບໍ່ມີຂໍ້ມູນທີ່ບໍ່ໄດ້ລະບຸ) ຈະຖືກພິຈາລະນາເປັນ ຄໍານໍາຫນ້າ . ຖ້າບໍ່ມີລັກສະນະໃດໆໃນຄໍາສັບທີ່ຖືກນໍາມາປຽບທຽບ, ລັກສະນະທີ່ຢູ່ໃນ tilde-prefix ດັ່ງຕໍ່ໄປນີ້ tilde ຈະຖືກຈັດການເປັນ ຊື່ເຂົ້າສູ່ລະບົບ . ຖ້າຊື່ເຂົ້ານີ້ເປັນລະຫັດ null, tilde ຈະຖືກແທນທີ່ດ້ວຍຄ່າຂອງຄ່າພາລາຖະບານ HOME . ຖ້າ HOME ບໍ່ຖືກກໍາຫນົດ, ໄດເລກະທໍລີບ້ານຂອງຜູ້ໃຊ້ປະຕິບັດການແກະສະແດງແທນ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຫນ້າປະທັບໃຈທີ່ຖືກປ່ຽນແທນດ້ວຍປື້ມທີ່ຢູ່ເຮືອນທີ່ກ່ຽວຂ້ອງກັບຊື່ເຂົ້າລະບຸ.

ຖ້າ tilde-prefix ແມ່ນເປັນ `~ + ', ມູນຄ່າຂອງ PWD ຕົວແປ shell ແທນແທນຄໍາ prefix tilde. ຖ້າ tilde-prefix ແມ່ນ `~ - ', ຄ່າຂອງຕົວແປ shell OLDPWD , ຖ້າມັນຖືກກໍານົດ, ຖືກແທນ. ຖ້າຕົວອັກສອນທີ່ປະຕິບັດຕາມ tilde ໃນ tilde-prefix ປະກອບດ້ວຍເລກ N , prefixed prefixed by `+ 'ຫຼື` -', tilde-prefix ຖືກແທນທີ່ດ້ວຍອົງປະກອບທີ່ສອດຄ້ອງກັນຈາກ stack directory, ມັນຈະຖືກສະແດງ ໂດຍ dirs builtin invoked ດ້ວຍ tilde-prefix ເປັນການໂຕ້ຖຽງ. ຖ້າຕົວອັກສອນທີ່ປະຕິບັດຕາມ tilde ໃນ tilde-prefix ປະກອບດ້ວຍຈໍານວນທີ່ບໍ່ມີຫົວຂໍ້ `+ 'ຫຼື` -', `+ 'ຖືກຄາດ.

ຖ້າຊື່ເຂົ້າລະຫັດບໍ່ຖືກຕ້ອງຫຼືການຂະຫຍາຍຕົວຂອງ tilde ລົ້ມເຫລວ, ຄໍາຈະບໍ່ປ່ຽນແປງ.

ການມອບຫມາຍຂອງແຕ່ລະຕົວຖືກກວດເບິ່ງສໍາລັບຄໍາສັບທີ່ບໍ່ໄດ້ລະບຸກ່ອນຫນ້ານີ້ໂດຍ : or = . ໃນກໍລະນີດັ່ງກ່າວ, ການຂະຫຍາຍຕົວຂອງກະແຈກກະຈາຍໄດ້ຖືກປະຕິບັດ. ດັ່ງນັ້ນ, ຫນຶ່ງອາດຈະນໍາໃຊ້ຊື່ໄຟລ໌ທີ່ມີ tildes ໃນການມອບຫມາຍໃຫ້ PATH , MAILPATH , ແລະ CDPATH , ແລະ shell ໃຫ້ຄ່າທີ່ເພີ່ມຂຶ້ນ.

Parameter Expansion

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

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

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

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

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

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

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

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

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

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

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

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

ຮູບແບບ ດັ່ງກ່າວໄດ້ຖືກຂະຫຍາຍອອກເພື່ອຜະລິດຮູບແບບຄືກັນກັບການຂະຫຍາຍຕົວຂອງເສັ້ນທາງ. ຕົວກໍານົດການ ແມ່ນຂະຫຍາຍຕົວແລະການແຂ່ງຂັນທີ່ຍາວທີ່ສຸດຂອງ ຮູບແບບ ຕໍ່ກັບມູນຄ່າຂອງມັນຖືກແທນທີ່ດ້ວຍຕົວ ອັກສອນ . ໃນຮູບແບບທໍາອິດ, ມີພຽງແຕ່ການແຂ່ງຂັນຄັ້ງທໍາອິດເທົ່ານັ້ນ. ແບບຟອມທີສອງເຮັດໃຫ້ການກົງກັນທັງຫມົດຂອງ ຮູບແບບ ທີ່ຖືກແທນທີ່ດ້ວຍ ສາຍ . ຖ້າ ຮູບແບບ ເລີ່ມຕົ້ນດ້ວຍ # , ມັນຕ້ອງກົງກັບຈຸດເລີ່ມຕົ້ນຂອງຄ່າທີ່ ກໍານົດ ໄວ້ຂອງ ພາລາມິເຕີ . ຖ້າ ຮູບແບບ ເລີ່ມຕົ້ນດ້ວຍ % , ມັນຕ້ອງກົງກັນໃນຕອນທ້າຍຂອງຄ່າທີ່ ກໍານົດ ໄວ້ຂອງ ພາລາມິເຕີ . ຖ້າ ສາຍ ແມ່ນ null, ກົງກັນຂ້າມຂອງ ຮູບແບບ ຈະຖືກລຶບແລະ ຮູບແບບ / ຮູບແບບ ຕໍ່ໄປນີ້ອາດຖືກຍົກເລີກ. ຖ້າ ພາລາມິເຕີ ແມ່ນ @ ຫຼື * , ການປະຕິບັດການທົດແທນຈະຖືກນໍາໃຊ້ໃນແຕ່ລະພາລາມິເຕີໃນຕໍາແຫນ່ງ, ແລະການຂະຫຍາຍແມ່ນບັນຊີລາຍການຜົນໄດ້ຮັບ. ຖ້າ ພາລາມິເຕີ ເປັນຕົວແປທີ່ມີ subscripted ດ້ວຍ @ or * , ການປະຕິບັດການທົດແທນຈະຖືກນໍາໃຊ້ກັບແຕ່ລະສະມາຊິກຂອງ array ແລະການຂະຫຍາຍແມ່ນບັນຊີລາຍການຜົນໄດ້ຮັບ.

Command Substitution

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

$ ( ຄໍາສັ່ງ )

ຫຼື

` command`

Bash ປະຕິບັດການຂະຫຍາຍໂດຍການປະຕິບັດ ຄໍາສັ່ງ ແລະແທນການປ່ຽນແທນຄໍາສັ່ງທີ່ມີຜົນຜະລິດມາດຕະຖານຂອງຄໍາສັ່ງ, ໂດຍມີເສັ້ນທາງຫລັງໃດ ໆ ທີ່ຖືກລຶບ. ເສັ້ນທາງທີ່ຖືກຝັງບໍ່ໄດ້ຖືກລຶບ, ແຕ່ພວກເຂົາອາດຈະຖືກລຶບອອກໃນລະຫວ່າງການແບ່ງປັນຄໍາ. ປ່ຽນແທນຄໍາສັ່ງ $ ( ໄຟລ໌ cat ) ສາມາດຖືກແທນທີ່ໂດຍທຽບເທົ່າແຕ່ໄວ $ (< ໄຟລ໌ ).

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

ການປ່ຽນແທນຄໍາສັ່ງອາດຈະຖືກລວບລວມ. ເພື່ອຮັງໃນເວລາທີ່ນໍາໃຊ້ຮູບແບບ backquoted, ຫນີ backquotes ໃນກັບ backslashes.

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

Arithmetic expansion

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

$ (( expression ))

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

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

ການທົດແທນການປຸງແຕ່ງ

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

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

Word Splitting

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

Shell ປະຕິບັດແຕ່ລະລັກສະນະຂອງ IFS ເປັນ delimiter, ແລະແບ່ງປັນຜົນໄດ້ຮັບຂອງການຂະຫຍາຍອື່ນໆເຂົ້າໄປໃນຄໍາສັບກ່ຽວກັບລັກສະນະເຫຼົ່ານີ້. ຖ້າ IFS ບໍ່ຖືກກໍານົດຫລືມູນຄ່າຂອງມັນແມ່ນ , ຄ່າເລີ່ມຕົ້ນ, ຫຼັງຈາກນັ້ນລໍາດັບຂອງຕົວອັກສອນ IFS ຈະຖືກກໍານົດໄວ້ໃນຄໍາສັບຕ່າງໆ. ຖ້າ IFS ມີມູນຄ່ານອກເຫນືອຈາກຄ່າເລີ່ມຕົ້ນ, ຫຼັງຈາກນັ້ນ, sequences ຂອງ space spaces ແລະ tab ຈະຖືກລະເວັ້ນໃນຕອນເລີ່ມຕົ້ນແລະສິ້ນສຸດຂອງຄໍາ, ເປັນລັກສະນະຂອງຊ່ອງຫວ່າງຢູ່ໃນມູນຄ່າຂອງ IFS (ເປັນອັກຂະລະຊ່ອງ IFS ). ຕົວອັກສອນໃດໃນ IFS ທີ່ບໍ່ແມ່ນ IFS whitespace, ພ້ອມກັບລັກສະນະຂອງ whitespace IFS ຢູ່ໃກ້ຄຽງ, delimits ພາກສະຫນາມ. ລໍາດັບຂອງຕົວອັກສອນຂອງ IFS whitespace ແມ່ນຖືກຖືວ່າເປັນຕົວກໍານົດ. ຖ້າມູນຄ່າຂອງ IFS ແມ່ນບໍ່ຖືກຕ້ອງ, ບໍ່ມີຄໍາແຕກຕ່າງກັນເກີດຂື້ນ.

ຂໍ້ໂຕ້ແຍ້ງທີ່ບໍ່ຖືກຕ້ອງ ( "" ຫຼື '' ) ຖືກເກັບໄວ້. ການໂຕ້ຖຽງ null implicit null unquoted, ຜົນອອກມາຈາກການຂະຫຍາຍຕົວຂອງຕົວກໍານົດທີ່ບໍ່ມີຄ່າ, ຖືກລຶບ. ຖ້າພາລາມິເຕີທີ່ບໍ່ມີມູນຄ່າຖືກຂະຫຍາຍອອກພາຍໃນວົງຢືມສອງ, ຜົນລັບການໂຕ້ແຍ້ງທີ່ບໍ່ຖືກຕ້ອງແລະຖືກເກັບໄວ້.

ໃຫ້ສັງເກດວ່າຖ້າບໍ່ມີການຂະຫຍາຍຕົວເກີດຂື້ນ, ບໍ່ມີການແບ່ງປັນ.

Pathname Expansion

ຫຼັງຈາກການແຍກຄໍາ, ເວັ້ນເສຍແຕ່ວ່າທາງເລືອກ -f ໄດ້ຖືກກໍານົດ, bash ຈະ ສະແກນຄໍາແຕ່ລະຕົວສໍາລັບຕົວອັກສອນ * ,? , ແລະ [ . ຖ້າຕົວອັກສອນເຫຼົ່ານີ້ປາກົດ, ຫຼັງຈາກນັ້ນຄໍາສັບຈະຖືກຖືວ່າເປັນ ຮູບແບບ ແລະຖືກປ່ຽນແທນດ້ວຍຊື່ຮຽງຊື່ຂອງໄຟລ໌ທີ່ກົງກັບຮູບແບບ. ຖ້າບໍ່ພົບຊື່ໄຟລ໌ທີ່ຖືກຕ້ອງແລະຕົວເລືອກ shell nullglob ຖືກປິດໃຊ້, ຄໍາບໍ່ຖືກປ່ຽນແປງ. ຖ້າຕົວເລືອກ nullglob ຖືກກໍານົດແລະບໍ່ມີຄໍາວ່າພົບ, ຄໍາຖືກລຶບ. ຖ້າຫາກວ່າທາງເລືອກ nocaseglob ສາມາດເປີດໃຊ້ໄດ້, ການແຂ່ງຂັນແມ່ນປະຕິບັດໂດຍບໍ່ກ່ຽວກັບກໍລະນີຂອງອັກຂະລະອັກສອນ. ເມື່ອຮູບແບບຖືກນໍາໃຊ້ສໍາລັບການຂະຫຍາຍຕົວຂອງຕົວອັກສອນ, ລັກສະນະ ``. '' ຢູ່ໃນຕອນເລີ່ມຕົ້ນຂອງຊື່ຫຼືທັນທີຫຼັງຈາກ slash ຕ້ອງຖືກກົງກັນຢ່າງຊັດເຈນ, ເວັ້ນເສຍແຕ່ວ່າ dotglob options option shell is set. ໃນເວລາທີ່ກົງກັບຊື່ເສັ້ນ, ຕົວອັກສອນຫຍໍ້ຈະຕ້ອງກົງກັນຢ່າງຊັດເຈນ. ໃນກໍລະນີອື່ນໆ, ລັກສະນະ ``. '' ບໍ່ໄດ້ຮັບການປິ່ນປົວພິເສດ. ເບິ່ງລາຍລະອຽດຂອງ shopt ຂ້າງລຸ່ມນີ້ພາຍໃຕ້ ຄໍາສັ່ງ SHELL BUILTIN ສໍາລັບການລາຍລະອຽດຂອງ nocaseglob , nullglob , ແລະ dotglob ຫອຍທາງເລືອກ.

ຕົວແປ GLOBIGNORE shell ສາມາດຖືກນໍາໃຊ້ເພື່ອຈໍາກັດຊຸດຂອງໄຟລ໌ທີ່ກົງກັນກັບ ຮູບແບບ . ຖ້າ GLOBIGNORE ຖືກກໍານົດ, ຊື່ໄຟລ໌ທີ່ເຫມາະສົມທີ່ກົງກັບຮູບແບບຫນຶ່ງຂອງ GLOBIGNORE ແມ່ນຖືກລຶບອອກຈາກບັນຊີລາຍຊື່ຂອງການແຂ່ງຂັນ. ຊື່ໄຟລ໌ ``. '' ແລະ `` .. '' ແມ່ນຖືກລະເວັ້ນສະເຫມີ, ເຖິງແມ່ນວ່າ GLOBIGNORE ຖືກກໍານົດ. ຢ່າງໃດກໍຕາມ, ການຕັ້ງຄ່າ GLOBIGNORE ມີຜົນກະທົບຂອງການເຮັດໃຫ້ຕົວເລືອກ dotglob shell, ດັ່ງນັ້ນທຸກຊື່ອື່ນໆທີ່ເລີ່ມຕົ້ນດ້ວຍ ``. '' ຈະກົງກັນ. ເພື່ອໃຫ້ມີພຶດຕິກໍາເກົ່າຂອງການບໍ່ສົນໃຈຊື່ໄຟລ໌ທີ່ເລີ່ມຕົ້ນດ້ວຍ ``. '' , ໃຫ້ ``. * '' ຫນຶ່ງໃນຮູບແບບໃນ GLOBIGNORE . ຕົວເລືອກ dotglob ຖືກປິດການໃຊ້ງານເມື່ອ GLOBIGNORE ຖືກກໍານົດໄວ້.

Pattern Matching

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

ລັກສະນະຮູບແບບພິເສດມີຄວາມຫມາຍຕໍ່ໄປນີ້:

*

ກົງກັບສາຍໃດກໍ່ຕາມ, ລວມທັງຊ່ອຍແນ່.

?

ກົງກັບຕົວອັກສອນໃດຫນຶ່ງ.

[... ]

ກົງກັບຕົວອັກສອນໃດຫນຶ່ງທີ່ຖືກປິດໄວ້. ຕົວອັກສອນຄູ່ທີ່ແຍກດ້ວຍສັນຍາລັກສະແດງອອກເປັນ ລະດັບ ; ລັກສະນະໃດໆທີ່ຈັດຮຽງລະຫວ່າງສອງຕົວອັກສອນ, ລວມ, ການນໍາໃຊ້ລໍາດັບການຈັບຄູ່ຂອງທ້ອງຖິ່ນໃນປະຈຸບັນແລະກໍານົດລັກສະນະ, ແມ່ນສົມທຽບ. ຖ້າຕົວອັກສອນທໍາອິດຕໍ່ໄປນີ້ [ ແມ່ນ ! ຫຼືຫຼັງຈາກນັ້ນ, ລັກສະນະໃດໆທີ່ບໍ່ໄດ້ປິດແມ່ນຖືກຈັບຄູ່ກັນ. ລໍາດັບການຄັດລອກອັກຂະລະໃນການສະແດງຜົນໃນຂອບເຂດແມ່ນຖືກກໍານົດໂດຍທ້ອງຖິ່ນປະຈຸບັນແລະມູນຄ່າຂອງຕົວແປແກະ LC_COLLATE , ຖ້າຖືກກໍານົດ. A - ອາດຈະຖືກຈັບຄູ່ໂດຍການລວມເອົາມັນເປັນລັກສະນະທໍາອິດຫຼືສຸດທ້າຍໃນຊຸດ. A ] ອາດຈະຖືກຈັບຄູ່ໂດຍການລວມເອົາມັນເປັນລັກສະນະທໍາອິດໃນຊຸດ.

ພາຍໃນ [ ແລະ ] , ອັກສອນຕົວອັກສອນ ສາມາດລະບຸໂດຍໃຊ້ syntax [: class :] , ບ່ອນທີ່ ຊັ້ນ ເປັນຫນຶ່ງໃນຫມວດຕໍ່ໄປນີ້ທີ່ໄດ້ກໍານົດໄວ້ໃນມາດຕະຖານ POSIX.2:

alnum alpha ascii blank cntrl ຕົວເລກຕ່ໍາຕ່ໍາ print punct space upper word xdigit
ຫ້ອງຮຽນລັກສະນະໃດຫນຶ່ງກົງກັບລັກສະນະໃດໆຂອງຊັ້ນຮຽນນັ້ນ. ຫ້ອງຮຽນອັກສອນຄໍາທີ່ກົງກັບຈົດຫມາຍ, ຕົວເລກແລະຕົວອັກສອນ _.

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

ພາຍໃນ [ ແລະ ] , syntax [. ສັນຍາລັກ ] ກົງກັບສັນຍາລັກຂອງສັນຍາລັກທີ່ລວບລວມ.

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

? ( ຮູບແບບບັນຊີ )

ກົງກັນຊ້ໍາຫນຶ່ງຫຼືຫນຶ່ງຄັ້ງຂອງຮູບແບບທີ່ໄດ້ຮັບ

* ( pattern-list )

ການແຂ່ງຂັນທີ່ເກີດຂື້ນຫຼືບໍ່ມີຫຼາຍຂຶ້ນຂອງຮູບແບບທີ່ໄດ້ຮັບ

+ ( ຮູບແບບບັນຊີ )

ກົງກັບຮູບແບບທີ່ໄດ້ຮັບຫນຶ່ງຫຼືຫຼາຍຄັ້ງ

@ ( pattern-list )

ກົງກັນຢ່າງແທ້ຈິງຫນຶ່ງຂອງຮູບແບບທີ່ໄດ້ຮັບ

! ( ຮູບແບບບັນຊີ )

ກົງກັບສິ່ງໃດນອກເຫນືອຈາກຮູບແບບທີ່ໄດ້ຮັບ

Quote Removal

ຫຼັງຈາກການຂະຫຍາຍຕົວກ່ອນຫນ້ານີ້, ທຸກໆເຫດການທີ່ບໍ່ໄດ້ລະບຸຂອງຕົວອັກສອນ \ ' , ແລະ " ທີ່ບໍ່ໄດ້ຜົນຈາກການຂະຫຍາຍຕົວຂ້າງເທິງນີ້ຖືກລຶບອອກ.

REDIRECTION

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

ໃນຄໍາອະທິບາຍດັ່ງຕໍ່ໄປນີ້, ຖ້າຈໍານວນຕົວລະບຸຂອງແຟ້ມຈະຖືກຍົກເລີກແລະຕົວອັກສອນທໍາອິດຂອງຜູ້ປະສານງານ redirection ແມ່ນ < , ການປ່ຽນເສັ້ນທາງແມ່ນຫມາຍເຖິງການນໍາໃຊ້ມາດຕະຖານ (ລາຍລະອຽດຂອງໄຟລ໌ 0). ຖ້າຕົວອັກສອນທໍາອິດຂອງຜູ້ປະສານງານ redirection ແມ່ນ > , ການສົ່ງຕໍ່ແມ່ນຫມາຍເຖິງຜົນຜະລິດມາດຕະຖານ (descriptor file 1).

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

ໃຫ້ສັງເກດວ່າຄໍາສັ່ງຂອງການໂອນຍ້າຍແມ່ນມີຄວາມສໍາຄັນ. ຕົວຢ່າງ, ຄໍາສັ່ງ

ls > dirlist 2 > & 1

directs ທັງ output ມາດຕະຖານແລະຂໍ້ຜິດພາດມາດຕະຖານໃນ file dirlist , ໃນຂະນະທີ່ຄໍາສັ່ງ

ls 2 > & 1 > dirlist

directs ພຽງແຕ່ຜະລິດຕະພັນມາດຕະຖານທີ່ຈະບັນທຶກ dirlist , ເນື່ອງຈາກວ່າຂໍ້ຜິດພາດມາດຕະຖານຖືກ duplicated ເປັນຜົນຜະລິດມາດຕະຖານກ່ອນທີ່ຜົນຜະລິດມາດຕະຖານຖືກສົ່ງກັບ dirlist .

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

/ dev / fd / fd

ຖ້າ fd ເປັນ integer ທີ່ຖືກຕ້ອງ, fd descriptor descriptor ແມ່ນ duplicated.

/ dev / stdin

ລາຍລະອຽດຂອງເອກະສານ 0 ແມ່ນ duplicated.

/ dev / stdout

ລາຍລະອຽດຂອງໄຟລ໌ 1 ແມ່ນຊ້ໍາກັນ.

/ dev / stderr

ລາຍລະອຽດຂອງໄຟລ໌ 2 ແມ່ນຊ້ໍາກັນ.

/ dev / tcp / host / port

ຖ້າ host ເປັນ hostname ທີ່ຖືກຕ້ອງຫຼືທີ່ຢູ່ອິນເຕີເນັດແລະ port ແມ່ນຫມາຍເລກ port integer ຫຼືຊື່ບໍລິການ, bash ພະຍາຍາມເປີດການເຊື່ອມຕໍ່ TCP ກັບເຕົ້າທີ່ສອດຄ້ອງກັນ.

/ dev / udp / host / port

ຖ້າ host ເປັນ hostname ທີ່ຖືກຕ້ອງຫຼືທີ່ຢູ່ອິນເຕີເນັດ, ແລະ port ແມ່ນຫມາຍເລກ port number ຫະລື service name, bash ພະຍາຍາມເປີດການເຊື່ອມຕໍ່ UDP ກັບ socket ທີ່ສອດຄ້ອງກັນ.

ຄວາມລົ້ມເຫຼວທີ່ຈະເປີດຫຼືສ້າງໄຟລ໌ເຮັດໃຫ້ການປ່ຽນເສັ້ນທາງລົ້ມເຫລວ.

ການປ່ຽນເສັ້ນທາງເຂົ້າ

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

ຮູບແບບທົ່ວໄປສໍາລັບການໂອນເຂົ້າແມ່ນ:

[ n ] < ຄໍາ

Redirecting Output

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

ຮູບແບບທົ່ວໄປສໍາລັບການສົ່ງອອກຜົນຜະລິດແມ່ນ:

[ n ] > ຄໍາ

ຖ້າຜູ້ປະສານງານການໂອນຍ້າຍແມ່ນ > , ແລະທາງເລືອກ noclobber ກັບ ຊຸດທີ່ຖືກກໍານົດໄວ້ , ການປ່ຽນເສັ້ນທາງຈະລົ້ມເຫລວຖ້າໄຟລ໌ທີ່ມີຊື່ມາຈາກການຂະຫຍາຍຕົວຂອງ ຄໍາ ມີຢູ່ແລະເປັນໄຟລ໌ປົກກະຕິ. ຖ້າຜູ້ປະສານງານ redirection ແມ່ນ > | , ຫຼືຜູ້ປະຕິບັດການ redirection ແມ່ນ > ແລະທາງເລືອກ noclobber ກັບຄໍາສັ່ງ builtin ຄໍາສັ່ງບໍ່ໄດ້ຖືກເປີດໃຊ້, redirection ຈະພະຍາຍາມເຖິງແມ່ນວ່າໄຟລ໌ທີ່ມີຊື່ໂດຍ ຄໍາ ຢູ່.

ກໍາລັງສົ່ງຜົນຕໍ່ການສົ່ງອອກ

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

ຮູບແບບທົ່ວໄປສໍາລັບຜົນຜະລິດເພີ່ມເຕີມແມ່ນ:

[ n ] >> word

ການປ່ຽນເສັ້ນທາງມາດຕະຖານແລະຂໍ້ຜິດພາດມາດຕະຖານ

Bash ອະນຸຍາດໃຫ້ທັງ output output ມາດຕະຖານ (file descriptor 1) ແລະ output error (file descriptor 2) ຈະຖືກສົ່ງກັບແຟ້ມທີ່ມີຊື່ວ່າການຂະຫຍາຍ ຄໍາ ທີ່ມີການສ້າງນີ້.

ມີສອງຮູບແບບສໍາລັບການປ່ຽນເສັ້ນທາງອອກມາດຕະຖານແລະຂໍ້ຜິດພາດມາດຕະຖານ:

&> word

ແລະ

> & word

ໃນສອງຮູບແບບ, ຄັ້ງທໍາອິດແມ່ນຕ້ອງການ. ນີ້ແມ່ນເທົ່າທຽມກັນກ່ຽວກັບ

> ຄໍາ 2 > & 1

ນີ້ເອກະສານ

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

ຮູບແບບຂອງເອກະສານນີ້ແມ່ນ:

<< [ - ] ຄໍາສັບ ນີ້ຢູ່ໃນເອກະສານ delimiter

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

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

Here Strings

ເອກະສານທີ່ແຕກຕ່າງກັນຂອງເອກະສານນີ້, ຮູບແບບແມ່ນ:

<<< word

ຄໍາສັບ ໄດ້ຖືກຂະຫຍາຍແລະສະຫນອງໃຫ້ກັບຄໍາສັ່ງກ່ຽວກັບຂໍ້ກໍານົດມາດຕະຖານຂອງມັນ.

Duplicating File Descriptors

ຕົວແທນການໂອນຍ້າຍ

[ n ] <ແລະ ຄໍາ

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

ຜູ້ປະຕິບັດງານ

[ n ] > & ຄໍາ

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

Moving File Descriptors

ຕົວແທນການໂອນຍ້າຍ

[ n ] <& digit -

ຍ້າຍຕົວເລກຄໍາບັນຍາຍຂອງໄຟລ໌ທີ່ຈະບັນທຶກ descriptor n , ຫຼືການປ້ອນຂໍ້ມູນແບບມາດຕະຖານ (file descriptor 0) ຖ້າ n ບໍ່ໄດ້ກໍານົດ. ຕົວເລກ ຖືກປິດຫລັງຈາກທີ່ຖືກຊ້ໍາກັບ n .

ເຊັ່ນດຽວກັນ, ຜູ້ປະສານງານ redirection

[ n ] > & digit -

ຍ້າຍຕົວເລກຄໍາບັນ ຍາຍ ໄຟລ໌ທີ່ຈະບັນທຶກ descriptor n , ຫຼື output ມາດຕະຖານ (file descriptor 1) ຖ້າ n ບໍ່ໄດ້ກໍານົດ.

ເປີດບັນນາທິການໄຟລ໌ສໍາລັບການອ່ານແລະຂຽນ

ຕົວແທນການໂອນຍ້າຍ

[ n ] <> ຄໍາ

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

ALIASES

Aliases ໃຫ້ string ທີ່ຖືກແທນທີ່ສໍາລັບຄໍາໃນເວລາທີ່ມັນຖືກນໍາໃຊ້ເປັນຄໍາທໍາອິດຂອງຄໍາສັ່ງງ່າຍດາຍ. Shell ເກັບບັນຊີລາຍຊື່ຂອງ aliases ທີ່ອາດຈະຖືກກໍານົດແລະ unset ກັບ alias ແລະຄໍາສັ່ງ unalias builtin (ເບິ່ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້). ຄໍາທໍາອິດຂອງແຕ່ລະຄໍາສັ່ງ, ຖ້າ unquoted, ຖືກກວດເບິ່ງວ່າມັນມີນາມແຝງໃດ. ຖ້າເປັນດັ່ງນັ້ນ, ຄໍານັ້ນຖືກແທນທີ່ດ້ວຍຂໍ້ຄວາມຂອງນາມແຝງ. ຊື່ນາມແຝງແລະຂໍ້ຄວາມທົດແທນອາດມີຂໍ້ມູນໃດໆທີ່ຖືກຕ້ອງ, ລວມທັງ metacharacters ທີ່ໄດ້ ລະບຸໄວ້ຂ້າງເທິງ, ເວັ້ນເສຍວ່າຊື່ alias ອາດບໍ່ມີ = . ຄໍາທໍາອິດຂອງຂໍ້ຄວາມທີ່ທົດແທນຖືກທົດສອບສໍາລັບນາມແຝງ, ແຕ່ວ່າຄໍາທີ່ຄ້າຍກັບນາມສະກຸນທີ່ຖືກຂະຫຍາຍບໍ່ໄດ້ຖືກຂະຫຍາຍເປັນຄັ້ງທີສອງ. ນີ້ຫມາຍຄວາມວ່າຫນຶ່ງອາດຈະເປັນ alias ls ກັບ ls -F , ສໍາລັບການຍົກຕົວຢ່າງ, ແລະ bash ບໍ່ໄດ້ພະຍາຍາມທີ່ຈະ recursively ຂະຫຍາຍຕົວແທນຂໍ້ຄວາມ. ຖ້າຕົວອັກສອນສຸດທ້າຍຂອງຄ່າ alias ແມ່ນ ຫວ່າງ , ຫຼັງຈາກນັ້ນຄໍາສັ່ງຄໍາຕໍ່ໄປຕໍ່ alias ກໍ່ຖືກກວດເບິ່ງການຂະຫຍາຍຕົວ alias.

Aliases ຖືກສ້າງຂື້ນແລະລະບຸໄວ້ດ້ວຍຄໍາສັ່ງ alias , ແລະລຶບອອກດ້ວຍຄໍາສັ່ງ unalias .

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

Aliases ບໍ່ໄດ້ຂະຫຍາຍອອກໄປເມື່ອ shell ບໍ່ໄດ້ໂຕ້ຕອບ, ເວັ້ນເສຍແຕ່ວ່າຕົວເລືອກ ext_aliases shell ຖືກຕັ້ງຄ່າໂດຍໃຊ້ shopt (ເບິ່ງລາຍລະອຽດຂອງ shopt ພາຍໃຕ້ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້).

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

ສໍາລັບຈຸດປະສົງເກືອບທັງຫມົດ, aliases ແມ່ນແທນໂດຍຫນ້າທີ່ແກະ.

FUNCTIONS

ການເຮັດວຽກຂອງແກະ, ທີ່ຖືກກໍານົດໄວ້ຂ້າງເທິງນີ້ພາຍໃຕ້ SHELL GRAMMAR , ເກັບຮັກສາຊຸດຄໍາສັ່ງສໍາລັບການປະຕິບັດຫຼັງຈາກນັ້ນ. ເມື່ອຊື່ຂອງຟັງຊັນແກະຖືກນໍາໃຊ້ເປັນຊື່ຄໍາສັ່ງງ່າຍໆ, ບັນຊີລາຍຊື່ຂອງຄໍາສັ່ງທີ່ກ່ຽວຂ້ອງກັບຊື່ຟັງຊັນທີ່ຖືກປະຕິບັດ. ການປະຕິບັດງານແມ່ນປະຕິບັດໃນສະພາບການຂອງແກະປັດຈຸບັນ; ບໍ່ມີຂະບວນການໃຫມ່ທີ່ຖືກສ້າງຂື້ນເພື່ອຕີຄວາມຫມາຍຂອງພວກມັນ (ກົງກັນຂ້າມກັບການປະຕິບັດຂອງ script shell). ໃນເວລາທີ່ຫນ້າທີ່ຖືກປະຕິບັດ, ການໂຕ້ຖຽງກັບຫນ້າທີ່ກາຍເປັນຕົວກໍານົດຕໍາແຫນ່ງໃນລະຫວ່າງການປະຕິບັດງານຂອງມັນ. ພາລາມິເຕີພິເສດ # ແມ່ນຖືກປັບປຸງເພື່ອສະທ້ອນເຖິງການປ່ຽນແປງ. ພາລາມິເຕີ 0 ຕໍາແຫນ່ງບໍ່ປ່ຽນແປງ. ຕົວແປ FUNCNAME ແມ່ນຕັ້ງຊື່ຂອງຟັງຊັນໃນຂະນະທີ່ຫນ້າທີ່ຖືກປະຕິບັດ. ທຸກໆດ້ານຂອງສະພາບແວດລ້ອມການປະຕິບັດງານຂອງແກະແມ່ນມີຄວາມແຕກຕ່າງກັນລະຫວ່າງການເຮັດວຽກກັບຜູ້ໂທຂອງຕົນທີ່ມີຂໍ້ຍົກເວັ້ນວ່າການຂັດ ແຍ້ງ DEBUG (ເບິ່ງຄໍາອະທິບາຍຂອງການ ຕິດ ຕາມການຕິດຕັ້ງ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້) ເບິ່ງຄໍາອະທິບາຍຂອງການສ້າງ ປະກາດ ຢູ່ຂ້າງລຸ່ມນີ້).

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

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

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

ຟັງຊັນອາດຈະຖືກເອີ້ນຄືນ. ບໍ່ມີຂໍ້ຈໍາກັດໃດໆກ່ຽວກັບຈໍານວນການໂທລິງເອີ້ນໃຊ້.

ARITHMETIC EVALUATION

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

id ++ id-

ການປ່ຽນແປງພາຍຫຼັງການປ່ຽນແປງແລະການຫຼຸດລົງ

++ id - id

ຕົວແປທີ່ເພີ່ມຂຶ້ນກ່ອນແລະເພີ່ມຂື້ນ

- +

unary ລົບແລະບວກ

! ~

ສົມເຫດສົມເຫດສົມຜົນແລະບິດ negation

**

exponentiation

* /%

multiplication, division, remainder

+ -

addition, subtraction

<< >>

ຊ້າຍແລະຊ້າຍຂວາ

<=> = <>

ການປຽບທຽບ

==! =

ຄວາມສະເຫມີພາບແລະຄວາມບໍ່ສະເຫມີພາບ

&

bitwise AND

"

bit exclusive OR

|

bitwise OR

&&

logical AND

||

logical OR

expr ? expr : expr

ການປະເມີນຜົນດ້ານເງື່ອນໄຂ

= * = / =% = + = - = << = >> = & = = = |

ການມອບຫມາຍ

expr1 , expr2

comma

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

ຈໍານວນຄົງທີ່ທີ່ນໍາ 0 ແມ່ນຖືກແປເປັນເລກຖານແປດ. 0x ຫະລື 0X ຫະມາຍເຖິງ hexadecimal ຖ້າບໍ່ດັ່ງນັ້ນຈໍານວນຈະໃຊ້ຮູບແບບ [ base # ] n, ບ່ອນທີ່ ຖານ ເປັນຫມາຍເລກທະສະນິຍົມລະຫວ່າງ 2 ແລະ 64 ເຊິ່ງສະແດງໃຫ້ເຫັນຖານພື້ນຖານ, ແລະ n ແມ່ນຫມາຍເລກໃນຖານນັ້ນ. ຖ້າ base # ຖືກຍົກເລີກ, ຫຼັງຈາກນັ້ນ base 10 ຈະຖືກນໍາໃຊ້. ຕົວເລກຫຼາຍກວ່າ 9 ແມ່ນຕົວອັກສອນຕົວນ້ອຍ, ຕົວອັກສອນຫຍໍ້, @, ແລະ _, ໃນຄໍາສັ່ງນັ້ນ. ຖ້າ ພື້ນຖານ ນ້ອຍກວ່າຫລືເທົ່າກັບ 36, ຕົວອັກສອນຕົວນ້ອຍແລະຕົວອັກສອນສາມາດຖືກນໍາໃຊ້ເພື່ອປ່ຽນເປັນຕົວເລກລະຫວ່າງ 10 ຫາ 35.

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

CONDITIONAL EXPRESSIONS

ການສະແດງເງື່ອນໄຂແມ່ນຖືກນໍາໃຊ້ໂດຍຄໍາສັ່ງ [[ ຄໍາປະສົມແລະການ ທົດສອບ ແລະ [ ຄໍາສັ່ງ builtin ເພື່ອທົດສອບຄຸນລັກສະນະຂອງໄຟລ໌ແລະປະຕິບັດການປຽບທຽບລະຫັດແລະເລກໄນສໍາຄັນ. ການສະແດງອອກແມ່ນເກີດມາຈາກການປະຖົມພະຍາບານ unary ຫຼືສອງລັກສະນະດັ່ງຕໍ່ໄປນີ້. ຖ້າມີການໂຕ້ຖຽງ ໄຟລ໌ ໃດຫນຶ່ງຢູ່ໃນຮູບແບບທໍາອິດຂອງຮູບແບບ / dev / fd / n , ຫຼັງຈາກນັ້ນ, file descriptor n ຖືກກວດເບິ່ງ. ຖ້າການໂຕ້ຖຽງຂອງ ແຟ້ມ ຫນຶ່ງຂອງ primaries ແມ່ນຫນຶ່ງໃນ / dev / stdin , / dev / stdout , ຫຼື / dev / stderr , ຄໍາອະທິບາຍໄຟລ໌ 0, 1, ຫຼື 2, ຕາມລໍາດັບ, ແມ່ນການກວດສອບ.

-a file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່.

-b file

ຄວາມຈິງຖ້າ ໄຟລ໌ ມີຢູ່ແລະເປັນໄຟລ໌ພິເສດຂອງຕັນ.

-c file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະເປັນແຟ້ມພິເສດຂອງຕົວອັກສອນ.

-d file

ຖ້າວ່າ ແຟ້ມ ມີຢູ່ແລ້ວແລະເປັນໄດເລກະທໍລີ.

-e file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່.

-f file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະເປັນໄຟປົກກະຕິ.

-g file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລ້ວແລະຖືກກໍານົດກຸ່ມ id.

-h file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະເປັນການເຊື່ອມໂຍງສັນຍາລັກ.

-k file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລ້ວແລະ "bit sticky" ຂອງມັນຖືກກໍານົດ.

-p file

ຄວາມຈິງຖ້າມີ ໄຟລ໌ ແລະເປັນທໍ່ທີ່ມີຊື່ (FIFO).

-r file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະສາມາດອ່ານໄດ້.

-s file

ຄວາມຈິງຖ້າ ໄຟລ໌ ມີແລະມີຂະຫນາດໃຫຍ່ກວ່າສູນ.

-t fd

ຄວາມຈິງຖ້າແຟ້ມ descriptor fd ເປີດແລະກ່າວເຖິງ terminal.

-u file

ຄວາມຈິງຖ້າມີ ໄຟລ໌ ແລະຕົວກໍານົດການຜູ້ໃຊ້ id ຂອງມັນຖືກກໍານົດ.

-w file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະສາມາດຂຽນໄດ້.

-x file

ຄວາມຈິງຖ້າມີ ໄຟລ໌ ແລະປະຕິບັດໄດ້.

-O file

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະເປັນເຈົ້າຂອງໂດຍຜູ້ໃຊ້ທີ່ມີປະສິດທິພາບ.

-G file

ຄວາມຈິງຖ້າ ໄຟລ໌ທີ່ ມີຢູ່ແລະເປັນເຈົ້າຂອງໂດຍກຸ່ມ id ທີ່ມີປະສິດຕິພາບ.

-L ໄຟລ໌

ຄວາມຈິງຖ້າ ແຟ້ມ ມີຢູ່ແລະເປັນການເຊື່ອມໂຍງສັນຍາລັກ.

-S file

ຄວາມຈິງຖ້າ ໄຟລ໌ ມີຢູ່ແລະເປັນເຕົ້າຮັບ.

-N file

ຄວາມຈິງຖ້າ ໄຟລ໌ ມີຢູ່ແລ້ວແລະໄດ້ຖືກດັດແກ້ຍ້ອນວ່າມັນຖືກອ່ານແລ້ວ.

file1 - nt file2

ຄວາມຈິງຖ້າ ແຟ້ມ 1 ໃຫມ່ກວ່າ (ອີງຕາມວັນດັດແກ້) ກວ່າໄຟ 2, ຫຼືຖ້າ ໄຟລ໌ 1 ແລະ file2 ບໍ່ໄດ້.

file1 - ot file2

ຄວາມຈິງຖ້າ ແຟ້ມ 1 ມີອາຍຸຫລາຍກວ່າ ແຟ້ມ 2 ຫຼືຖ້າ ໄຟລ໌ ມີ 2 ແລະ file1 ບໍ່ໄດ້.

file1 -ef file2

ຄວາມຈິງຖ້າ ແຟ້ມ 1 ແລະ file2 ອ້າງເຖິງອຸປະກອນດຽວກັນແລະຫມາຍເລກ inode.

-o optname

ຄວາມຈິງຖ້າຕົວເລືອກ optname optical option is enabled ເບິ່ງບັນຊີລາຍຊື່ຂອງທາງເລືອກພາຍໃຕ້ການລາຍລະອຽດຂອງຕົວເລືອກ -o ກັບການ ກໍ່ສ້າງທີ່ ຢູ່ຂ້າງລຸ່ມນີ້.

-z string

ຄວາມຈິງຖ້າຄວາມຍາວຂອງ ຊ່ອຍແນ່ ແມ່ນສູນ.

-n string

string

ຄວາມຈິງຖ້າຄວາມຍາວຂອງ ຊ່ອຍແນ່ ບໍ່ແມ່ນສູນ.

string1 == string2

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

string1 ! = string2

ຄວາມຈິງຖ້າສາຍບໍ່ແມ່ນຄວາມເທົ່າທຽມກັນ.

string1 < string2

ຄວາມຈິງຖ້າ string1 sorting ກ່ອນ string2 ຢູ່ໃນທ້ອງຖິ່ນປະຈຸບັນ.

string1 > string2

ຄວາມຈິງຖ້າ string1 sorts ຫຼັງຈາກ string2 lexicographically ໃນທ້ອງຖິ່ນປະຈຸບັນ.

arg1 OP arg2

OP ແມ່ນຫນຶ່ງໃນ -eq , -ne , -lt , -le , -gt , ຫຼື -ge . ຕົວແປໄບປະສາດເຫຼົ່ານີ້ກັບຄືນມາເປັນຄວາມຈິງຖ້າ arg1 ເທົ່າກັບ, ບໍ່ເທົ່າທຽມກັນ, ຫນ້ອຍກວ່າ, ຫນ້ອຍກວ່າຫຼືເທົ່າກັບ, ຫຼາຍກວ່າ, ຫຼືໃຫຍ່ກວ່າຫລືເທົ່າກັບ arg2 , ຕາມລໍາດັບ. Arg1 ແລະ arg2 ອາດຈະເປັນຈໍານວນເຕັມບວກຫຼືລົບ.

SIMPLE COMMAND EXPANSION

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

1. ຄໍາສັບຕ່າງໆທີ່ນັກວິເຄາະໄດ້ຖືກຫມາຍເປັນການມອບຫມາຍການປ່ຽນແປງ (ຊື່ກ່ອນຫນ້າຊື່ຄໍາສັ່ງ) ແລະການປ່ຽນເສັ້ນທາງຖືກເກັບໄວ້ສໍາລັບການປຸງແຕ່ງຕໍ່ມາ.

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

3. ການສືບສວນແມ່ນໄດ້ຖືກດໍາເນີນການດັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງເທິງຢູ່ພາຍໃຕ້ REDIRECTION .

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

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

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

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

COMMAND EXECUTION

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

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

ຖ້າຊື່ບໍ່ແມ່ນຫນ້າທີ່ຂອງແກະຫຼືລໍາໂພງ, ແລະບໍ່ມີຂໍ້ສະຫວ່າງ, bash ຄົ້ນຫາແຕ່ລະອົງປະກອບຂອງ PATH ສໍາລັບລະບົບທີ່ມີໄຟລ໌ executable ໂດຍຊື່ນັ້ນ. Bash ໃຊ້ແຖບຮາດທີ່ຈະຈື່ຈໍາເສັ້ນທາງເຕັມຂອງໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້ (ເບິ່ງ ຮັດ ພາຍໃຕ້ SHELL BUILTIN COMMANDS ຂ້າງລຸ່ມນີ້). ການຄົ້ນຫາຢ່າງເຕັມທີ່ຂອງໄດເລກະທໍລີໃນ PATH ແມ່ນດໍາເນີນການເທົ່ານັ້ນຖ້າຄໍາສັ່ງບໍ່ພົບໃນຕາລາງ. ຖ້າການຄົ້ນຫາບໍ່ສໍາເລັດ, ແກະຈະພິມຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດແລະສົ່ງຄືນສະຖານະການອອກຂອງ 127.

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

ຖ້າການປະຕິບັດດັ່ງກ່າວລົ້ມເຫລວຍ້ອນວ່າໄຟລ໌ບໍ່ຢູ່ໃນຮູບແບບທີ່ປະຕິບັດແລະໄຟລ໌ບໍ່ແມ່ນໄດເລກະທໍລີ, ມັນຖືກລຶບວ່າເປັນ script shell , ໄຟລ໌ທີ່ມີຄໍາສັ່ງ shell. subhell ແມ່ນເກີດຂື້ນໃນການປະຕິບັດມັນ. subhell ນີ້ reinitializes ຕົວຂອງມັນເອງ, ດັ່ງນັ້ນຜົນກະທົບແມ່ນຄ້າຍຄືວ່າ shell ໃຫມ່ໄດ້ຖືກເອີ້ນວ່າການຈັດການສະຄິບ, ເວັ້ນເສຍແຕ່ວ່າສະຖານທີ່ຂອງຄໍາສັ່ງທີ່ຈື່ໄວ້ໂດຍພໍ່ແມ່ (ເບິ່ງ ຮັດ ພາຍໃຕ້ SHELL BUILTIN COMMANDS ) ຖືກເກັບຮັກສາໄວ້ໂດຍເດັກ.

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

COMMAND EXECUTION ENVIRONMENT

Shell ມີສະ ພາບແວດລ້ອມການປະຕິບັດງານ ເຊິ່ງປະກອບດ້ວຍດັ່ງຕໍ່ໄປນີ້:

* ໄຟລ໌ເປີດທີ່ inherited ໂດຍ shell ໃນ invocation, ດັ່ງທີ່ຖືກດັດແປງໂດຍ redirections ໃຫ້ກັບ exec builtin

* ໄດເລກະທໍລີການເຮັດວຽກໃນປະຈຸບັນກໍານົດໂດຍ cd , pushd , ຫຼື popd , ຫຼື inherited ໂດຍ shell ໃນ invocation

* ຫນ້າຈໍຮູບແບບການສ້າງໄຟລ໌ທີ່ກໍານົດໂດຍ umask ຫຼື inherited ຈາກພໍ່ແມ່ຂອງແກະ

* ດັກທີ່ຖືກກໍານົດໄວ້ໂດຍ ຈັ່ນຈັບ

* ກໍານົດພາລາມັງກອນທີ່ຖືກກໍານົດໂດຍການກໍານົດການປ່ຽນແປງຫຼືມີ ກໍານົດ ຫຼື inherited ຈາກພໍ່ແມ່ຂອງແກະໃນສະພາບແວດລ້ອມ

* ຟັງຊັນແກະທີ່ກໍານົດໃນລະຫວ່າງການປະຕິບັດຫຼື inherited ຈາກພໍ່ແມ່ຂອງແກະໃນສະພາບແວດລ້ອມ

* ຕົວເລືອກທີ່ຖືກເປີດໃຊ້ໃນການເອີ້ນ (ທັງໂດຍຄ່າເລີ່ມຕົ້ນຫຼືການໂຕ້ຖຽງບັນທັດຄໍາສັ່ງ) ຫຼືໂດຍການ ຕັ້ງຄ່າ

* ທາງເລືອກທີ່ເປີດໃຊ້ໂດຍ shopt

* aliases shell ທີ່ຖືກກໍານົດດ້ວຍ ນາມແຝງ

* ລະຫັດຂະບວນການຕ່າງໆ, ລວມທັງການເຮັດວຽກພື້ນຫລັງ, ມູນຄ່າຂອງ $$ , ແລະມູນຄ່າຂອງ $ PPID

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

* ໄຟລ໌ທີ່ເປີດຂອງແກະ, ລວມທັງການດັດແປງແລະການເພີ່ມເຕີມທີ່ລະບຸໄວ້ໂດຍການສົ່ງຕໍ່ກັບຄໍາສັ່ງ

* ໄດເລກະທໍລີການເຮັດວຽກປັດຈຸບັນ

* ຫນ້າຈໍຮູບແບບການສ້າງໄຟລ໌

* ຕົວແປທີ່ຫມາຍສໍາລັບການສົ່ງອອກ, ພ້ອມກັບຕົວແປທີ່ສົ່ງອອກສໍາລັບຄໍາສັ່ງ, ຖືກສົ່ງຜ່ານໃນສະພາບແວດລ້ອມ

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

ຄໍາສັ່ງທີ່ເອີ້ນວ່າໃນສະພາບແວດລ້ອມນີ້ບໍ່ສາມາດສົ່ງຜົນກະທົບຕໍ່ສະພາບແວດລ້ອມການປະຕິບັດຂອງແກະ.

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

ຖ້າຄໍາສັ່ງຖືກຕິດຕາມໂດຍການຄວບຄຸມການເຮັດວຽກແລະບໍ່ເຮັດວຽກ, ຄ່າສໍາເລັດມາດຕະຖານສໍາລັບຄໍາສັ່ງແມ່ນໄຟລ໌ຫວ່າງ / dev / null . ຖ້າບໍ່ດັ່ງນັ້ນ, ຄໍາສັ່ງທີ່ເອີ້ນໄດ້ຮັບມໍລະດົກລາຍລະອຽດຂອງໄຟລ໌ທີ່ເອີ້ນວ່າ shell ທີ່ຖືກດັດແປງໂດຍ redirections.