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 . ມັນຮັກສາມູນຄ່າຕົວເລກຂອງຕົວອັກສອນຕໍ່ໄປຕໍ່ໄປ, ຍົກເວັ້ນ
ການປິດຕົວອັກສອນໃນວົງຈອນດຽວຮັກສາມູນຄ່າຕົວເລກຂອງແຕ່ລະຕົວອັກສອນພາຍໃນວົງຢືມ. ຕົວເລກດຽວອາດຈະບໍ່ເກີດຂື້ນລະຫວ່າງຄໍາເວົ້າດຽວ, ເຖິງແມ່ນວ່າກ່ອນຫນ້ານັ້ນໂດຍການກັບຄືນໄປບ່ອນ.
ຕົວອັກສອນທີ່ຢູ່ໃນວົງຢືມຄູ່ຮັກສາໄວ້ຄ່າຕົວອັກສອນຂອງອັກສອນທັງຫມົດພາຍໃນວົງຢືມ, ຍົກເວັ້ນ $ , ` ແລະ \ . ຕົວອັກສອນ $ ແລະ ` ຮັກສາຄວາມຫມາຍພິເສດຂອງພວກເຂົາພາຍໃນວົງຢືມຄູ່. ຕົວຊີ້ບອກສອງຕົວອາດຈະຖືກຕີພິມຢູ່ໃນວົງຢືມສອງເທົ່າໂດຍນໍາຫນ້າກັບສັນຍາລັກຂອງມັນ.
ຕົວກໍານົດການພິເສດ * ແລະ @ ມີຄວາມຫມາຍພິເສດໃນເວລາໃນວົງຢືມຄູ່ (ເບິ່ງ 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.
ຖ້າພາລາມິເຕີນີ້ຖືກຕັ້ງຊື່ຊື່ແຟ້ມແລະຕົວແປ 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 ບໍ່ຖືກກໍານົດຫລືມູນຄ່າຂອງມັນແມ່ນ
ຂໍ້ໂຕ້ແຍ້ງທີ່ບໍ່ຖືກຕ້ອງ ( "" ຫຼື '' ) ຖືກເກັບໄວ້. ການໂຕ້ຖຽງ 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.