ນີ້ແມ່ນຄໍາສັ່ງ makepp_builtins ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
makepp_builtins -- ຄຳສັ່ງ Builtin ໃນ makepp
ລາຍລະອຽດ
A: ງຸ່ມ, C: &ແມວ,
chgrp,
&chmod,
chown,
&cp,
cpp,
&ຕັດ, D: ວັນ, E: &ສຽງ,
&expr, F: ທີ່ບໍ່ຖືກຕ້ອງ,
fmt, G: &grep, H: ຫົວຫນ້າ, I: &ຕິດຕັ້ງ, L: &ln, M: m4,
&mkdir,
&mv, P: &perl,
ຂະບວນການກ່ອນ,
&printf, R: &rm,
ແມ່ນ rm, S: &sed,
&ຈັດຮຽງ, T: ຫາງ,
&ແມ່ແບບ,
ແຕະ,
tr, U: &ຖອນການຕິດຕັ້ງ,
&uniq, Y: &ແມ່ນ
ມີຄວາມເປັນໄປໄດ້ພິເສດຄ້າຍຄື Shell ທີ່ຈະໂທຫາຄໍາສັ່ງທີ່ສ້າງຂຶ້ນໃນກົດລະບຽບ. ເທົ່ານັ້ນ
metacharacters ຮັບຮູ້ແມ່ນເຄື່ອງຫມາຍຄໍາເຫັນ, backslashes, ວົງຢືມດຽວແລະຄູ່. ເທົ່ານັ້ນ
ຫນຶ່ງຄໍາສັ່ງອາດຈະໄດ້ຮັບຕໍ່ແຖວ, ແລະການປ່ຽນເສັ້ນທາງ I/O ບໍ່ສາມາດໃຊ້ໄດ້ (ເບິ່ງ "-i" ແລະ "-o"
ຂ້າງລຸ່ມນີ້ແທນ).
ຄໍາສັ່ງເຫຼົ່ານີ້ເລີ່ມຕົ້ນດ້ວຍ "&", ເຊິ່ງເປັນລັກສະນະຫນ້າທີ່ຢູ່ໃນ Perl ແລະບໍ່ຖືກຕ້ອງ
ລັກສະນະທໍາອິດໃນ Shell. ຖ້າບໍ່ມີຄໍາສັ່ງ builtin ຂອງຊື່ນັ້ນສາມາດພົບໄດ້, ນີ້ແມ່ນເຊັ່ນກັນ
syntax ສໍາລັບການເອີ້ນ script ພາຍນອກພາຍໃນ Perl instance ປະຕິບັດກົດລະບຽບ.
ເບິ່ງ "ແລ່ນ".
ຄໍາສັ່ງເຫຼົ່ານີ້, ເຊັ່ນດຽວກັນກັບຄໍາສັ່ງຂອງຕົນເອງທີ່ກໍານົດໄວ້ແລະ Perl scripts ສາມາດເອີ້ນວ່າເປັນ
ເຮັດຫນ້າທີ່, ສົ່ງຄືນຜົນຜະລິດມາດຕະຖານ. ນີ້ຮຽກຮ້ອງໃຫ້ມີການສ້າງ perl ສໍາລັບ PerlIO.
ເສັ້ນໃໝ່ຈະຖືກປ່ຽນເປັນຊ່ອງຫວ່າງ, ຍົກເວັ້ນເມື່ອມີການປະເມີນພາຍໃນຄຳຖະແຫຼງທີ່ "ກຳນົດ".
FIRST-WORDS ;= $(&cut -d' ' -f0 $(FILES))
ເມື່ອຄໍາສັ່ງເຫຼົ່ານີ້ບໍ່ຖືກຫຍໍ້ຫນ້າເປັນການປະຕິບັດກົດລະບຽບ, ພວກເຂົາເຈົ້າໄດ້ຮັບການປະຕິບັດໃນຂະນະທີ່ອ່ານ
makefile. ນອກນັ້ນທ່ານຍັງສາມາດເຂົ້າເຖິງຄໍາສັ່ງເຫຼົ່ານີ້ stand-alone, ເຊັ່ນ: ຖ້າທ່ານຕ້ອງການຄຸນສົມບັດບາງຢ່າງ
ບໍ່ມີຢູ່ໃນຄູ່ຮ່ວມ Unix, ຜ່ານຄໍາສັ່ງ makeppbuiltin.
ຄໍາສັ່ງເຫຼົ່ານີ້ແມ່ນສ່ວນໃຫຍ່ແມ່ນອີງໃສ່ຕົວແປ GNU. ແຕ່ທາງເລືອກຫຼາຍ (ເຊັ່ນ: --ສໍາຮອງຂໍ້ມູນ,
--interactive ຫຼື --recursive) ບໍ່ມີຄວາມຫມາຍແທ້ໆໃນ makefile. ດັ່ງນັ້ນ, ເຖິງແມ່ນວ່າ
ພວກເຂົາເຈົ້າຈະງ່າຍທີ່ຈະປະຕິບັດໃນ Perl, ພວກເຂົາເຈົ້າໄດ້ຖືກປະໄວ້. ຍັງມີຄໍາສັ່ງ Unix ຫຼາຍຢ່າງ
ສະເໜີໃຫ້ຫຼາຍທາງເລືອກທີ່ກວມເອົາກໍລະນີທີ່ສັບສົນພໍສົມຄວນ (ເຊັ່ນ: ການຈັດປະເພດ
ຂໍ້ມູນຈໍາເພາະ) ໃນຂະນະທີ່ຍັງຖືກຈໍາກັດໂດຍທໍາມະຊາດ. ອະນຸຍາດໃຫ້ເຂົ້າເຖິງ Perl, ເຊິ່ງແມ່ນ
ປະຈຸບັນ, ໃຫ້ພະລັງງານຫຼາຍຢູ່ທີ່ນີ້.
ບັນຊີລາຍຊື່ຂອງຊື່ໄຟລ໌ອາດຈະຫວ່າງເປົ່າ, ເຮັດໃຫ້ມັນປອດໄພທີ່ຈະໂທຫາຄໍາສັ່ງເຫຼົ່ານີ້ໂດຍບໍ່ມີການເລືອກ
ບັນຊີລາຍຊື່. ຕົວເລືອກໃນຮູບແບບສັ້ນຂອງພວກມັນອາດຈະຕິດກັນຄືກັບ "-ab" ແທນ "-a -b".
ໃນຮູບແບບຍາວການໂຕ້ຖຽງອາດຈະຖືກຕິດໃສ່ດ້ວຍເຄື່ອງຫມາຍ "=" ຫຼືແຍກຕ່າງຫາກ.
ໃນຮູບແບບສັ້ນພວກເຂົາອາດຈະໄດ້ຮັບການຕິດກາວໂດຍກົງຫຼືແຍກຕ່າງຫາກ.
ມາດຕະຖານ ທາງເລືອກໃນການ
ທາງເລືອກບໍ່ຫຼາຍປານໃດແມ່ນທົ່ວໄປກັບຫຼາຍ buildins, ເຖິງແມ່ນວ່າຮູບແບບສັ້ນບາງຄັ້ງຖືກເຊື່ອງໄວ້ໂດຍ
ທາງເລືອກຂອງຄໍາສັ່ງຂອງຕົນເອງ (ເຊັ່ນໃນ "&cut -f"):
-A ຊື່ເອກະສານ
--args-file=ຊື່ເອກະສານ
--arguments-file=ຊື່ເອກະສານ
ອ່ານໄຟລ໌ ແລະວິເຄາະມັນເປັນຊ່ອງຫວ່າງທີ່ອ້າງອີງ- ແລະ/ຫຼື ແຍກແຖວໃໝ່.
ຕົວເລືອກ
-f
--ກຳລັງ
ບັງຄັບການສ້າງໄຟລ໌ທີ່ຕັ້ງໄວ້ໂດຍພາລາມິເຕີ, ເຖິງແມ່ນວ່າເປັນປະເພດທີ່ແຕກຕ່າງກັນ
ຂອງໄຟລ໌ ຫຼືບັນຊີເປົ່າຂອງຊື່ນັ້ນມີຢູ່ແລ້ວ. ອັນນີ້ຕ້ອງນຳໜ້າ "-o,
--output=filename" ທາງເລືອກຖ້າຫາກວ່າມັນແມ່ນຈະມີຜົນກະທົບໃດໆກ່ຽວກັບການທີ່.
-i ຄຳສັ່ງ shell
--inpipe=ຄຳສັ່ງ shell
ເລີ່ມຕົ້ນຄໍາສັ່ງ Shell ແລະທໍ່ຜົນຜະລິດເຂົ້າໄປໃນ builtin. ອາດຈະມີທາງເລືອກ
ຕິດຕາມ "|" ລັກສະນະ, ເພື່ອຊີ້ບອກວ່ານີ້ແມ່ນທໍ່. ດ້ວຍຕົວເລືອກນີ້ບໍ່
ຕ້ອງການໃຫ້ຊື່ໄຟລ໌. ແຕ່ຖ້າຫາກວ່າທ່ານຕ້ອງການທີ່ຈະປະຕິບັດ buildin ໃນທັງສອງໄຟລ໌ແລະ
ຜົນຜະລິດທໍ່, ທ່ານຕ້ອງໃຊ້ "-" ເປັນຊື່ໄຟລ໌ສໍາລັບຜົນຜະລິດທໍ່. ທໍ່ແມ່ນ
ຫວ່າງເປົ່າ, ແຕ່, ເວັ້ນເສຍແຕ່ວ່າທ່ານຍັງໃຫ້ "--infail", ຄໍາສັ່ງບໍ່ໄດ້ລໍຖ້າ, ສະນັ້ນມັນ.
ສາມາດຢຸດເຊົາໃນຂະຫນານ. ທາງເລືອກນີ້ແມ່ນມີຄວາມຈໍາເປັນເພາະວ່າບໍ່ມີການປ່ຽນເສັ້ນທາງ
syntax
-I
--ບໍ່ສຳເລັດ
ຖ້າຄໍາສັ່ງ Shell "--inpipe" ລົ້ມເຫລວ, ນັ້ນກໍ່ເຮັດໃຫ້ buildin ໃນປັດຈຸບັນລົ້ມເຫລວ.
ນີ້ບໍ່ໄດ້ເຮັດວຽກຢູ່ໃນ Strawberry ແລະ Win ActiveState, ເນື່ອງຈາກວ່າ
ວິທີເຄິ່ງຫົວໃຈທີ່ພວກເຂົາເຮັດຕາມແບບ Unix fork/exec. Cygwin ໄດ້ຮັບມັນຖືກຕ້ອງ.
-o ຊື່ເອກະສານ
--output=ຊື່ເອກະສານ
ຂຽນຜົນໄດ້ຮັບໃສ່ໄຟລ໌ນີ້, ແທນທີ່ຈະ stdout. ຊື່ໄຟລ໌ອາດມີອັນໃດອັນໜຶ່ງເຫຼົ່ານີ້
ແບບຟອມ:
ຊື່ເອກະສານ
>ຊື່ເອກະສານ
ພຽງແຕ່ຂຽນໃສ່ເອກະສານ.
>>ຊື່ເອກະສານ
ຕື່ມໃສ່ກັບ (ບໍ່ຈໍາເປັນ) ໄຟລ໌ທີ່ມີຢູ່ແລ້ວ.
+<ຊື່ເອກະສານ
ເປີດໄຟລ໌ສໍາລັບການປ້ອນຂໍ້ມູນ, ອະນຸຍາດໃຫ້ແກ້ໄຂ inplace. ດ້ວຍຕົວເລືອກນີ້ variant
ບໍ່ຈໍາເປັນຕ້ອງໄດ້ຮັບການປ້ອນຊື່ໄຟລ໌. ແຕ່ຖ້າຫາກວ່າທ່ານຕ້ອງການທີ່ຈະດໍາເນີນການ buildin ສຸດ
ໄຟລ໌ເພີ່ມເຕີມ, ທ່ານຕ້ອງໃຊ້ "-" ເປັນຊື່ໄຟລ໌ປ້ອນຂໍ້ມູນສໍາລັບອັນນີ້. ໃນຄວາມເປັນຈິງ
ຜົນຜະລິດໄດ້ຮັບການຂຽນໃສ່ໄຟລ໌ຊົ່ວຄາວທີ່ໄດ້ຮັບການຍ້າຍໄປຊື່ໄຟລ໌ໃນຕອນທ້າຍ.
|ຄຳສັ່ງ shell
ທໍ່ຜົນຜະລິດຂອງ buildin ກັບຄໍາສັ່ງ Shell.
ທາງເລືອກນີ້ແມ່ນມີຄວາມຈໍາເປັນເພາະວ່າບໍ່ມີ syntax ການປ່ຽນເສັ້ນທາງ.
-O
-- ລົ້ມເຫລວ
ຖ້າຄໍາສັ່ງ Shell "--output" ລົ້ມເຫລວ, ນັ້ນກໍ່ເຮັດໃຫ້ buildin ໃນປັດຈຸບັນລົ້ມເຫລວ.
-r ຈໍານວນ
--record-size=ຈໍານວນ
ທ້ອງຖິ່ນກໍານົດ $/ ສໍາລັບ buildin ໃນປັດຈຸບັນ. ນີ້ແບ່ງການປ້ອນຂໍ້ມູນເຂົ້າໄປໃນບັນທຶກຂອງຄວາມຍາວ
ຈໍານວນ ແທນທີ່ຈະເປັນເສັ້ນ. ຖ້າ ຈໍານວນ ແມ່ນສູນ, ແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນທັງໝົດແມ່ນອັນດຽວ
ບັນທຶກ.
-s string
--separator=string
ທ້ອງຖິ່ນກໍານົດ $/ ສໍາລັບ buildin ໃນປັດຈຸບັນ. ນີ້ແຍກການປ້ອນຂໍ້ມູນໃສ່ string ແທນທີ່ຈະເປັນເສັ້ນ
ໂດຍສາຍ.
-S
--Synclines
ສ້າງ "#line""ບໍ່"""""ໄຟລ໌"""" ແລະ "#line""ບໍ່" ສາຍ, ເຂົ້າໃຈ C-like ຫຼາຍ
ພາສາ.
-v
-- verbose
ບັນທຶກການປ່ຽນແປງໃນລະບົບໄຟລ໌. ອັນນີ້ຕ້ອງນຳໜ້າທາງເລືອກອື່ນຖ້າມັນໄປ
ບັນທຶກຜົນກະທົບຂອງພວກເຂົາ. ຖ້າທ່ານຜ່ານທາງເລືອກນີ້ກັບ makepp ຕົວຂອງມັນເອງ, ມັນຄືກັບວ່າທ່ານມີ
ໃຫ້ມັນສໍາລັບທຸກຄໍາສັ່ງ builtin ດຽວ.
ບຶງທາດຫຼວງ ຄໍາສັ່ງ
ມີສອງແຮງຈູງໃຈສໍາລັບການມີຄໍາສັ່ງ builtin ໃນ makepp. ທໍາອິດແມ່ນການສະເຫນີ ກ
ຊຸດຂອງຜົນປະໂຫຍດ, ເຊິ່ງ, ບໍ່ເຫມືອນກັບຄໍາສັ່ງ Shell, ໄດ້ຮັບການຮັບປະກັນທີ່ຈະເຮັດວຽກດຽວກັນ
ຢູ່ທົ່ວທຸກແຫ່ງ, ເຊັ່ນ "&echo -n" ຫຼື "&mkdir -p", ແລະປະຫຍັດຄວາມຫຍຸ້ງຍາກໃນການຊອກຫາເສັ້ນທາງ.
ເພື່ອ & ຕິດຕັ້ງແລະການຄິດໄລ່ອອກທາງເລືອກທີ່ແຕກຕ່າງກັນຂອງຕົນ. ໃນສະພາບແວດລ້ອມການລວບລວມ,
ມັນເປັນປະໂຫຍດທີ່ຈະມີທາງເລືອກ "--synclines", ເຊິ່ງປົກກະຕິພຽງແຕ່ "m4" ສະຫນອງ, ທັງຫມົດ.
ຕົວກອງ
ອີກອັນຫນຶ່ງແມ່ນຄໍາຖາມຂອງປະສິດທິພາບ. ໂດຍທົ່ວໄປແລ້ວ fork/execs ທີ່ມີລາຄາແພງຄວນຫຼີກເວັ້ນ
ບ່ອນທີ່ເປັນໄປໄດ້ຢ່າງສົມເຫດສົມຜົນ. ໃນການຈໍາລອງ Unix ເຊັ່ນ Cygwin ຫຼື BS2000/Posix, ນີ້ຈະກາຍເປັນ
ໄຊຊະນະຢ່າງຈະແຈ້ງ. ແຕ່, ເຖິງແມ່ນວ່າຢູ່ໃນ Linux, ເມື່ອຊຸດທົດສອບ makepp ຖືກປ່ຽນຈາກ
ຄໍາສັ່ງພາຍນອກກັບ buildins, ມີການປະຫຍັດໂດຍລວມຂອງ 3% ຜູ້ໃຊ້ CPU ການນໍາໃຊ້ແລະ 15%
ການນຳໃຊ້ CPU ຂອງລະບົບ. (ການທົດສອບແມ່ນແນ່ນອນວ່າຢ່າງຮຸນແຮງກ່ຽວກັບການປະຕິບັດ primitive ແລະ hardly ໂທຫາ
compiler.)
ຄວາມສອດຄ່ອງຍັງເປັນບັນຫາ, ເຖິງແມ່ນວ່າພວກເຮົາຈະບໍ່ປະຕິຮູບ Unix. ຄໍາສັ່ງປົກກະຕິ
ມີ nuances ຕ່າງໆຂອງການສະແດງອອກເປັນປົກກະຕິ. ແລະຫຼາຍ invent ປະເພດຂອງພາສາ, ແຕ່ລະຄົນ
ທີ່ແຕກຕ່າງກັນແນ່ນອນ, ສໍາລັບການເຮັດບາງສິ່ງບາງຢ່າງ (ເຊັ່ນ: "expr", "sed" ...), ຫຼືທາງເລືອກທີ່ສະລັບສັບຊ້ອນສໍາລັບ
ການລະບຸທົ່ງນາ, ຕົວຂັ້ນ, ຖັນ (ເຊັ່ນ: "ຕັດ", "ຄັດ" ...).
ແທນທີ່ຈະ, ສິ່ງໃດທີ່ແປກປະຫຼາດພຽງແຕ່ຖືກຈັດການໂດຍ Perl, ໃຫ້ຄວາມສອດຄ່ອງທັງສອງດ້ານ
ຄໍາສັ່ງທັງຫມົດ, ແລະມີອໍານາດຫຼາຍກ່ວາຊໍ່ທັງຫມົດຂອງທາງເລືອກ. ດີກວ່າ, ໃດ Perlcode
ຄໍາສັ່ງເຫຼົ່ານີ້ດໍາເນີນການສໍາລັບທ່ານ, ໄດ້ຮັບການດໍາເນີນການຢູ່ໃນຊຸດຂອງ Makefile. ດັ່ງນັ້ນ, ແທນທີ່ຈະ
ລະຫັດ Perl ເຂົ້າໄປໃນການປະຕິບັດກົດລະບຽບ, ທ່ານສາມາດກໍານົດຫນ້າທີ່ແລະຕົວແປແລະນໍາໃຊ້ພວກມັນ
ພາຍໃນຄໍາສັ່ງ:
sub my_filter {
# ກັບຄືນຄວາມຈິງ iff $_ ແມ່ນຕ້ອງການ
}
%out: %.ໃນ Makeppfile
&grep &my_filter $(input) -o $(output)
ຖ້າທ່ານໃຊ້ຟັງຊັນ Perl ຫຼືຕົວແປໃນຄໍາສັ່ງຂອງທ່ານ, makepp ບໍ່ຮັບຮູ້ວ່າເປັນ
ການເພິ່ງພາອາໄສ. ໂດຍທົ່ວໄປມັນປອດໄພກວ່າທີ່ຈະບອກ makepp ທຸກສິ່ງທຸກຢ່າງ, ດັ່ງນັ້ນກົດລະບຽບທີ່ໃຊ້ Perl
ອົງປະກອບຄວນຂຶ້ນກັບ makefile ຫຼືໂມດູນທີ່ສະຫນອງອົງປະກອບເຫຼົ່ານັ້ນ, ດັ່ງທີ່ສະແດງຢູ່ໃນ
ຕົວຢ່າງຂ້າງເທິງ.
ໃນທາງກົງກັນຂ້າມ, ຄວາມໂງ່ຈ້າອາດຈະເປັນຄວາມປາຖະຫນາຖ້າທ່ານມີໂປຼແກຼມທີ່ປະສົມປະສານກັບໂປຼແກຼມ
ແລະລັກສະນະການຕັ້ງຄ່າໃນໄຟລ໌ດຽວ. ຕົວຢ່າງຈະເປັນໄຟລ໌ WSDL ທີ່ມີທັງ a
ຄໍານິຍາມການໂຕ້ຕອບການບໍລິການເວັບ ແລະທີ່ຢູ່ IP. ທ່ານສາມາດປຸງແຕ່ງໄຟລ໌ນີ້ລ່ວງຫນ້າກັບ
ຄໍາສັ່ງ & ແມ່ແບບເພື່ອແກ້ໄຂໃນການຕັ້ງຄ່າ, ແຕ່ບໍ່ໃຫ້ makepp ສັງເກດເຫັນ.
&ແມວ [ທາງເລືອກ ... ] ຊື່ເອກະສານ ...
ຮວມໄຟລ໌ທັງໝົດເຂົ້າໄປໃນອັນດຽວ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -S,
--synclines, -v, --verbose"
&chmod [ທາງເລືອກ ... ] ຮູບແບບການ ຊື່ເອກະສານ ...
ຊຸດ ຮູບແບບການ ສໍາລັບໄຟລ໌ທີ່ໃຫ້ທັງຫມົດ. ໂໝດຕ້ອງເປັນສະຕຣິງຖານແປດ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -v, --verbose"
&cp [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ destfile
&cp [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ
&cp [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ ... destdir
ສໍາເນົາ ໄຟລ໌ແຫຼ່ງ to destfile, ຫນຶ່ງ ໄຟລ໌ແຫຼ່ງ ໄປຫາໄດເລກະທໍລີປະຈຸບັນຫຼືຫຼາຍອັນ
ໄຟລ໌ແຫຼ່ງs ກັບ destdir ທີ່ມີຊື່ດຽວກັນ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--verbose"
-l
--link
ພະຍາຍາມເຊື່ອມຕໍ່ໄຟລ໌. ຖ້າມັນລົ້ມເຫລວ, ພະຍາຍາມເຊື່ອມຕໍ່ສັນຍາລັກ, ຖ້ານັ້ນແມ່ນຄືກັນ
ຮ້ອງຂໍ, ສໍາເນົາອື່ນ.
-s
--ສັນຍະລັກ
--symbolic-ເຫນີການເຊື່ອມຕໍ່
--symlink
ພະຍາຍາມເຊື່ອມຕໍ່ໄຟລ໌ທີ່ເປັນສັນຍາລັກ. ຖ້າມັນລົ້ມເຫລວ, ຄັດລອກ.
ເບິ່ງບັນທຶກພາຍໃຕ້ &ln.
&ຕັດ [ທາງເລືອກ ... ] ຊື່ເອກະສານ ...
ພິມສ່ວນທີ່ເລືອກຂອງເສັ້ນຈາກແຕ່ລະໄຟລ໌ ຫຼືເສັ້ນທີ່ເລືອກ, ນັບທົ່ວທັງໝົດ
ໄຟລ໌. ຜົນໄດ້ຮັບແມ່ນຖືກແຍກອອກໂດຍຕົວຂັ້ນທີ່ຕັ້ງໄວ້ໃນຕອນຕົ້ນຂອງ TAB ສໍາລັບຊ່ອງຂໍ້ມູນ ແລະ
ສະຕຣິງຫວ່າງເປົ່າສໍາລັບຕົວອັກສອນ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=number, --separator=string, -S, --synclines, -v, --verbose"
-c ບັນຊີລາຍຊື່
--ຕົວອັກສອນ=ບັນຊີລາຍຊື່
ພິມຕົວອັກສອນທັງຫມົດທີ່ລະບຸໂດຍ ບັນຊີລາຍຊື່. ບັນຊີລາຍຊື່ ອາດຈະເປັນການສະແດງອອກ Perl ໃດ
ສົ່ງຄືນລາຍຊື່ຈຳນວນເຕັມ. ຈຳນວນເຕັມສາມາດເປັນບວກ, ເລີ່ມຈາກ
ສູນທີ່ຈະນັບຈາກຈຸດເລີ່ມຕົ້ນ, ຫຼືລົບໃຫ້ນັບຈາກທ້າຍ. ແຕກຕ່າງຈາກ Unix
"ຕັດ", ຄໍາສັ່ງທີ່ທ່ານຮ້ອງຂໍແມ່ນເຄົາລົບ.
ບໍ່ຄືກັບຕົວປະຕິບັດການຂອງຊິ້ນສ່ວນຂອງ Perl ທີ່ໄລຍະ ".." ຈະຕ້ອງເປັນບວກ ຫຼື
ລົບ, &cut ອະນຸຍາດໃຫ້ເລີ່ມຕົ້ນດ້ວຍບວກ ແລະສິ້ນສຸດດ້ວຍລົບ. ແຕ່
ນີ້ສາມາດໃຊ້ໄດ້ພຽງແຕ່ຖ້າການສະແດງອອກຂອງທ່ານມີພຽງແຕ່ຕົວເລກ, ເຄື່ອງໝາຍຈຸດ ແລະ
"..". ຕົວຢ່າງ: "1..-2" ຫມາຍເຖິງທຸກສິ່ງທຸກຢ່າງແຕ່ທໍາອິດ (0) ແລະສຸດທ້າຍ (-1).
ການສະແດງລາຍຊື່ສາມາດເບິ່ງເສັ້ນທັງໝົດໃນ $_. ການປ່ຽນແປງທີ່ຈະເປັນ
ບໍ່ສົນໃຈ, ຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກວ່າໃນເວລາທີ່ການສະແດງອອກນີ້ຖືກປະເມີນເສັ້ນໄດ້ແລ້ວ
ຖືກແຍກເປັນຕົວແປອັດຕະໂນມັດຂອງ Perl @::F. ຕົວເລກທີ່ທ່ານກັບຄືນມາແມ່ນຄວາມຈິງ
ຕົວຊີ້ວັດໃນບັນຊີລາຍຊື່ນັ້ນ.
-d string
--delimiter=string
ກໍານົດຕົວຂັ້ນໃຫມ່ສໍາລັບຊ່ອງໃສ່ຂໍ້ມູນແລະຜົນຜະລິດ. ບໍ່ເຫມືອນກັບ Unix "ຕັດ", ນີ້ອາດຈະມີ
ຄວາມຍາວໃດໆ.
-E
--noscape
ປະຕິບັດ "\" ເປັນຕົວຫນັງສືປົກກະຕິສໍາລັບ "-p, --printf=format".
-f ບັນຊີລາຍຊື່
--fields=ບັນຊີລາຍຊື່
ພິມກຸ່ມທັງໝົດທີ່ລະບຸໂດຍ ບັນຊີລາຍຊື່. ບັນຊີລາຍຊື່ ດັ່ງທີ່ອະທິບາຍໄວ້ພາຍໃຕ້ "-c,
--characters=list" ໃຫ້ສັງເກດວ່າອັນນີ້ເຊື່ອງຕົວເລືອກມາດຕະຖານ "-f" ເຊິ່ງຈະຕ້ອງເປັນ
ໃຫ້ເປັນ "--force".
-l ບັນຊີລາຍຊື່
--lines=ບັນຊີລາຍຊື່
ພິມທຸກເສັ້ນທີ່ລະບຸໄວ້ໂດຍ ບັນຊີລາຍຊື່. ບັນຊີລາຍຊື່ ດັ່ງທີ່ອະທິບາຍໄວ້ພາຍໃຕ້ "-c,
--characters=list" ມີຄວາມແຕກຕ່າງທີ່ສໍາຄັນຫນຶ່ງ: ແຖວທໍາອິດມີຈໍານວນ 1, ມີ
ແມ່ນບໍ່ມີເສັ້ນ 0. ນີ້ແນ່ນອນບໍ່ມີປະສິດທິພາບສໍາລັບໄຟລ໌ຂະຫນາດໃຫຍ່, ຖ້າທ່ານມີຕົວປະສົມ
ບວກກັບລະດັບລົບໃນບັນຊີລາຍຊື່ຂອງເຈົ້າ, ຍ້ອນວ່າມັນອ່ານທຸກຢ່າງໄປສູ່ຄວາມຊົງຈໍາ.
ຖ້າບໍ່ດັ່ງນັ້ນ Perl ສາມາດເພີ່ມປະສິດທິພາບນີ້, ແຕ່ຂ້ອຍບໍ່ຮູ້ວ່າມັນເຮັດໄດ້ບໍ.
-m
--ການຈັບຄູ່
ພິມສະເພາະເສັ້ນທີ່ກົງກັນ, ເຊັ່ນວ່າອັນທີ່ມີຕົວອັກສອນ ຫຼືຊ່ອງຂໍ້ມູນພຽງພໍ. ນີ້
ຫມາຍຄວາມວ່າ "--only-delimited", ຊຶ່ງເປັນເຫດຜົນທີ່ວ່າທ່ານຈະພາດເສັ້ນພາກສະຫນາມດຽວກັບ
"--fields=0".
-p ຮູບແບບ
--printf=ຮູບແບບ
ນຳໃຊ້ຮູບແບບ (ດ້ວຍ \escapes) ກັບທຸກຊ່ອງຂໍ້ມູນ ຫຼືຕົວອັກສອນ.
-s
-- ພຽງແຕ່-delimited
ພິມສະເພາະເສັ້ນທີ່ມີຕົວຂັ້ນ.
&cut -c 10-20,-5,25- $(ປ້ອນຂໍ້ມູນ)
&cut -c 'grep $$_ %3, 0..99' $(input) # 1st 100 ຖັນບໍ່ຄູນ 3.
&cut -d: --fields 0,4 --printf='%10s ແມ່ນ %s\n' / etc / passwd
&ສຽງ [ທາງເລືອກ ... ] string ...
&printf [ທາງເລືອກ ... ] ຮູບແບບ ການໂຕ້ຖຽງ ...
&ແມ່ນ [ທາງເລືອກ ... ] string ...
ຂຽນສະຕຣິງທັງໝົດໃສ່ stdout ຫຼື outfile ທີ່ໃຫ້. ທັງ &echo ແລະ &yes ເພີ່ມແຖວໃໝ່
ໃນຕອນທ້າຍ. ສະຕຣິງ, ຫຼືສໍາລັບ &printf ຮູບແບບ, ອາດຈະມີ "\" ຫນີ, ຍ້ອນວ່າພວກມັນ
ເປັນທີ່ຮູ້ຈັກຈາກ C ຫຼື Unix ທີ່ທັນສະໄຫມຫຼື Shell "echo". ຢ່າງໃດກໍຕາມ, ພວກເຂົາເຈົ້າແມ່ນຄືກັນກັບໃນ Perl double-
ວົງຢືມ, ຊຶ່ງຫມາຍຄວາມວ່າຄວາມແຕກຕ່າງບາງຢ່າງ, ເຊັ່ນວ່າ "\" ແຖວດຽວແມ່ນບໍ່ອະນຸຍາດໃຫ້.
Perl ມີການຫລົບຫນີທີ່ຫນ້າສົນໃຈຫຼາຍ, ແຕ່ສິ່ງທີ່ເຈົ້າອາດຈະຄາດຫວັງວ່າຈະເຮັດບາງສິ່ງບາງຢ່າງ
ທີ່ແຕກຕ່າງກັນແມ່ນ:
\cA ເປັນຕົວຄວບຄຸມ ^A.
\u ປະກອບຈົດໝາຍຕໍ່ໄປນີ້.
\U ເພີ່ມສ່ວນທີ່ເຫຼືອ, ຫຼືເຖິງ "\E" ຫຼື "\L" ຖ້າພົບເຫັນ.
\xHH, \x{ຮຮ. ຮ}
ແມ່ນຄ່າຕົວອັກສອນຂອງລະຫັດ Hex ທີ່ໃຫ້. ໃຫ້ສັງເກດວ່າລະຫັດຕົວເລກບໍ່ແມ່ນ
Portable ກັບເວທີ EBCDIC!
ບໍ່ເຫມືອນກັບ Unix "ແມ່ນ", & yes ແມ່ນຄືກັນກັບ &echo, ຍົກເວັ້ນວ່າມັນເຮັດຊ້ໍາຜົນຜະລິດສໍາລັບ
ຕາບໃດທີ່ມັນສາມາດເຮັດໄດ້, ໂດຍປົກກະຕິຈົນກ່ວາ "--output '| ຄໍາສັ່ງ'" ຢຸດຕິ. ແລະ, ຖ້າ & ແມ່ນ
ບໍ່ມີການໂຕ້ຖຽງ, ມັນເລີ່ມຕົ້ນເປັນ "y".
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -o,
--output=ຊື່ໄຟລ໌, -O, --outfail, -v, --verbose"
-E
--noscape
ປະຕິບັດ "\" ເປັນຕົວຫນັງສືປົກກະຕິ.
-n
-- ແຖວໃໝ່
ຢ່າເພີ່ມແຖວໃໝ່ຫຼັງຈາກສາຍສຸດທ້າຍ. (ບໍ່ເຂົ້າໃຈໂດຍ &printf.)
&expr [ທາງເລືອກ ... ] perlcode ...
ພິມຄ່າ scalar ຂອງ perlcode, ເຊິ່ງອາດຈະຂຽນເປັນຫນຶ່ງຫຼືຫຼາຍ argument.
ໃຫ້ສັງເກດວ່າຄໍາສັ່ງ builtin ບໍ່ໄດ້ຖືກວິເຄາະໂດຍ Shell, ດັ່ງນັ້ນ "*", "(" ຫຼື ">" ບໍ່ແມ່ນ.
ພິເສດ. ແຕ່ວົງຢືມສະຕຣິງຖືກວິເຄາະໂດຍ makepp, ດັ່ງນັ້ນ Perl strings ຕ້ອງໄດ້ຮັບການອ້າງອີງ
ສອງຄັ້ງ, ເວັ້ນເສຍແຕ່ວ່າທ່ານຕ້ອງການໃຊ້ຄໍາເປົ່າ. ຖ້າຄ່າບໍ່ຖືກຕ້ອງ, ນີ້ຈະລົ້ມເຫລວ. ຫມາຍເຫດ
ທີ່ - ບໍ່ເຫມືອນກັບ Unix "expr" -- ຫນ້າທີ່ດັດສະນີຂອງ Perl ເລີ່ມຕົ້ນທີ່ 0 (false) ແລະກັບຄືນ.
-1 (ຄວາມຈິງ) ສໍາລັບຄວາມລົ້ມເຫຼວ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -o,
--output=ຊື່ໄຟລ໌, -O, --outfail, -v, --verbose"
-n
-- ແຖວໃໝ່
ຢ່າເພີ່ມແຖວໃໝ່ຫຼັງຈາກຜົນຜະລິດ.
&expr ($(VAR) - 3) * 2 < 1 && -1 || 1
&expr "$(VAR) - 3 * 2 < 1 ? 'joy' : 'sorrow'" -o $(output)
-&expr $(VAR) - 3 * 2 -o >>$(ອອກ)
&grep [ທາງເລືອກ ... ] perlcode ຊື່ເອກະສານ ...
&perl [ທາງເລືອກ ... ] perlcode ຊື່ເອກະສານ ...
&sed [ທາງເລືອກ ... ] perlcode ຊື່ເອກະສານ ...
ໄຟລ໌ທັງຫມົດໄດ້ຮັບການອ່ານເສັ້ນໂດຍແຖວ (ເວັ້ນເສຍແຕ່ວ່າທ່ານໃຫ້ເປັນ "--separator" ທາງເລືອກ), ແລະ
perlcode ໄດ້ຮັບການປະເມີນສໍາລັບແຕ່ລະແຖວ, ກ່ອນທີ່ຈະພິມອອກ. &sed ແມ່ນຄ້າຍຄືກັນກັບ
"perl -pe", ໃນຂະນະທີ່ & grep ພຽງແຕ່ສົ່ງຜົນໃຫ້ເສັ້ນເຫຼົ່ານັ້ນ perlcode ສົ່ງຄືນຄວາມຈິງ
ຄ່າ. &perl ແມ່ນຄ້າຍຄືກັນກັບ "perl -ne", ພຽງແຕ່ອອກອັນໃດກໍ່ຕາມທີ່ທ່ານພິມຢ່າງຈະແຈ້ງ
ໃນ perlcode. ເນື້ອໃນແຖວແມ່ນມີຢູ່ໃນ $_, ເຊິ່ງອາດຈະຖືກດັດແກ້.
ໃນສາມອັນນີ້, ມີພຽງແຕ່ &grep ທີ່ຈະລົ້ມເຫລວຖ້າມັນບໍ່ມີຜົນໄດ້ຮັບ. ໃຫ້ສັງເກດວ່າບໍ່ມີ
ທາງເລືອກທີ່ບໍ່ສົນໃຈກໍລະນີ, ເພາະວ່າເຈົ້າຈະເຮັດແນວນັ້ນດ້ວຍ "/regexp/i".
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=number, -s, --separator=string, -S, --synclines, --verbose"
ຕົວເລືອກ "--synclines" ພຽງແຕ່ເຮັດໃຫ້ຄວາມຮູ້ສຶກກັບ &perl ຖ້າທ່ານໃຊ້ &Mpp::Cmds::print to
ຜົນຜະລິດ $_. ມີພຽງແຕ່ &grep ທີ່ມີທາງເລືອກເພີ່ມເຕີມ:
-c
--ນັບ
ສະກັດກັ້ນຜົນຜະລິດປົກກະຕິ; ແທນທີ່ຈະພິມຈໍານວນເສັ້ນທີ່ກົງກັນ. ດ້ວຍ "-v,
--invert-match" ທາງເລືອກ (ເບິ່ງຂ້າງລຸ່ມນີ້), ນັບເສັ້ນທີ່ບໍ່ກົງກັນ.
-l
--ລາຍການ
--files-with-match
ສົ່ງອອກພຽງແຕ່ຊື່ຂອງໄຟລ໌ເຫຼົ່ານັ້ນທີ່ກົງກັນ. ເມື່ອອັນນີ້ຖືກລວມເຂົ້າກັບ "-v,
--invert-match", ສົ່ງອອກຊື່ຂອງໄຟລ໌ທີ່ມີເສັ້ນທີ່ບໍ່ກົງກັນ (ເລັກນ້ອຍ
ໂງ່ແຕ່ເຂົ້າກັນໄດ້ກັບ Unix -vl). ເມື່ອນີ້ຖືກລວມກັບສອງເທົ່າ
"-vv", ອອກຊື່ຂອງໄຟລ໌ທີ່ບໍ່ກົງກັນ.
-v
-- ໃນທາງກັບກັນ
--revert-match
--invert-match
ປ່ຽນຄວາມຮູ້ສຶກຂອງການຈັບຄູ່, ເພື່ອຄັດເລືອກເອົາເສັ້ນທີ່ບໍ່ກົງກັນ. ໃຫ້ສັງເກດວ່ານີ້ເຊື່ອງ
ຕົວເລືອກມາດຕະຖານ "-v" ເຊິ່ງຕ້ອງຖືກມອບໃຫ້ເປັນ "--verbose".
-w ຊື່ເອກະສານ
--waste-file=ຊື່ເອກະສານ
ກະຕ່າຂີ້ເຫຍື້ອທາງເລືອກສໍາລັບການລວບລວມສາຍທີ່ຖືກປະຕິເສດ. ນີ້ແມ່ນບໍ່ພຽງແຕ່ສໍາລັບ
debugging ລະຫັດການຄັດເລືອກຂອງທ່ານ, ແຕ່ຍັງສໍາລັບການແຍກຂໍ້ມູນຂອງທ່ານເປັນສອງ. ເຊັ່ນດຽວກັບ
ຜົນຜະລິດປົກກະຕິ, ທ່ານສາມາດແກ້ໄຂ $_ ກ່ອນທີ່ຈະກັບຄືນ false.
&sed s/foo/bar/ f1 f2 f3 -o outfile # ເຊັ່ນ: sed s/foo/bar/ f1 f2 f3 >outfile
&sed '$$_ = uc' f1 f2 f3 -o outfile # ເຊັ່ນ: tr '[:lower:]' '[:upper:]' f1 f2 f3
&grep '$$. %3' f1 f2 f3 -o outfile # ລົບລ້າງທຸກໆແຖວທີ 3
&grep -c /match/i f1 f2 f3 # ນັບແຖວທີ່ກົງກັບ 'match' ເປັນ STDOUT
ໂດຍບໍ່ມີການຊຸກຍູ້ໃຫ້ທ່ານສ້າງອຸປະກອນເສີມ, ນີ້ແມ່ນວິທີທີ່ທ່ານສາມາດເຮັດໄດ້ໂດຍງ່າຍດາຍ
ການໃສ່ຄໍາຄິດເຫັນຂອງ RO ຫຼື RW ລະຫວ່າງແຕ່ລະປະເພດແລະຊື່ຕົວແປທີ່ຕ້ອງການ, ທັງຫມົດໃນຫນຶ່ງ
ສາຍ. ວິທີການ getter ທີ່ສ້າງຂຶ້ນແລະທາງເລືອກໃນການກໍານົດວິທີການເຂົ້າໄປໃນການຄົ້ນພົບຕໍ່ໄປ
ພາກສ່ວນສາທາລະນະ ຫຼືການປົກປ້ອງ:
# ສ້າງ get ແລະອາດຈະກໍານົດວິທີການຈາກ "ປະເພດ /* R[OW] */ ສະມາຊິກ;".
sub cxx_accessors {
$acc ||=''; # ຜູ້ສະໝັກ 5.10.0 ລັດ
ຖ້າ(m!^\s*.+?)\s*/\*\s*R([OW])\s*\*/\s*.+?)\s*;!) {
$acc .= "#line $.\n"; # ບອກ C++ ວ່າມັນມາຈາກໃສ
$acc .= "void set\u$3( const $1 &__tmp ) { $3 = __tmp; }"
ຖ້າ $2 eq 'W';
$acc .= "const $1 &get\u$3() const { return $3; }\n";
} elsif( /^\s*(?:public|protected)\s*:/ ) {
$_ .= $acc;
$acc = '';
}
}
%.cc: %.cc.in # ໃຊ້ &sed ສໍາລັບການຈັດການ I/O
&sed --sync-lines &cxx_accessors $(input) -o $(output)
&ຕິດຕັ້ງ [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ destfile
&ຕິດຕັ້ງ [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ ... destdir
&ຕິດຕັ້ງ --directory [ທາງເລືອກ ... ] ລະບົບ ...
ຍ້າຍ ຫຼືປ່ຽນຊື່ ໄຟລ໌ແຫຼ່ງ to destfile, ຫຼືຫຼາຍ ໄຟລ໌ແຫຼ່ງs ກັບ destdir ກັບ
ຊື່ດຽວກັນ. ນີ້ແມ່ນວິທີທີ່ຕ້ອງການຂອງການໂອນຜົນໄດ້ຮັບການກໍ່ສ້າງທີ່ສຸດຂອງເຂົາເຈົ້າ
ສະຖານທີ່ຕິດຕັ້ງ.
ທຸກໆການດັດແກ້ລະບົບໄຟລ໌ທີ່ປະຕິບັດໂດຍ & ການຕິດຕັ້ງໄດ້ຮັບການບັນທຶກໄວ້ໃນຕອນທ້າຍຂອງການ
ໄຟລ໌ທີ່ຊີ້ໄປໂດຍຕົວແປສະພາບແວດລ້ອມ $INSTALL_LOG, ຫຼື, ຖ້າອັນນັ້ນບໍ່ໄດ້ຕັ້ງແຕ່
ພວກເຮົາຢູ່ພາຍໃຕ້ໄດເລກະທໍລີທີ່ມີ a RootMakeppfile.mk, ກັບໄຟລ໌ຂອງ .install_log ໃນນັ້ນ
ໄດເລກະທໍລີ, ຫຼືອື່ນໆໄປຫາໄຟລ໌ນັ້ນຢູ່ໃນໄດເລກະທໍລີປະຈຸບັນ. ທ່ານອາດຈະຕ້ອງການລຶບ
logfile ກ່ອນຊຸດຂອງ & ຕິດຕັ້ງ invocations.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -v, --verbose"
-c
-- ສຳເນົາ
ຄັດລອກໄຟລ໌ແທນທີ່ຈະຍ້າຍພວກມັນ. ນີ້ແມ່ນດີກວ່າ, ເພາະວ່າມັນບໍ່ບັງຄັບ
makepp ເພື່ອສ້າງໄຟລ໌ໃຫມ່ໃນຄັ້ງຕໍ່ໄປ. ແຕ່ມັນບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ, ສໍາລັບ
ຄວາມເຂົ້າກັນໄດ້ກັບໂຄງການຕິດຕັ້ງອື່ນໆ.
-d
-- ບັນຊີລາຍການ
ໃນຮູບແບບທີສາມຂອງຄໍາສັ່ງນີ້ສ້າງໄດເລກະທໍລີທີ່ໃຫ້ທັງຫມົດແລະໃດໆ
ໄດເລກະທໍລີພໍ່ແມ່ທີ່ຈໍາເປັນ.
-g ກຸ່ມ
--group=ກຸ່ມ
ປ່ຽນຄວາມເປັນເຈົ້າຂອງກຸ່ມຂອງໄຟລ໌ປາຍທາງ. ກຸ່ມອາດຈະໄດ້ຮັບໂດຍ
ຊື່ ຫຼືຕົວເລກ.
-l
--link
ພະຍາຍາມເຊື່ອມຕໍ່ໄຟລ໌. ຖ້າມັນລົ້ມເຫລວ, ຄັດລອກ.
--log=ຊື່ເອກະສານ
--logfile=ຊື່ເອກະສານ
ການນໍາໃຊ້ ຊື່ເອກະສານ ແທນທີ່ຈະເປັນ logfile ປົກກະຕິ.
-m ຮູບແບບການ
--mode=ຮູບແບບການ
ຊຸດ ຮູບແບບການ ສໍາລັບໄຟລ໌ປາຍທາງທັງໝົດ ຫຼືໄດເລກະທໍລີ. ໂໝດຕ້ອງເປັນສະຕຣິງຖານແປດ.
-o ເຈົ້າຂອງ
--ເຈົ້າຂອງ=ເຈົ້າຂອງ
ປ່ຽນຄວາມເປັນເຈົ້າຂອງຂອງໄຟລ໌ປາຍທາງ. ເຈົ້າ ຂອງ ອາດ ຈະ ໄດ້ ຮັບ ໂດຍ ຊື່ ຫຼື
ຕົວເລກ.
-r
-- ແກ້ໄຂ
--resolve-ສັນຍະລັກ
--resolve-symbolic-link
--resolve-symlink
-S
--ສັນຍະລັກ
--symbolic-ເຫນີການເຊື່ອມຕໍ່
--symlink
ສ້າງການເຊື່ອມຕໍ່ສັນຍາລັກແທນທີ່ຈະເຄື່ອນຍ້າຍ. ຕົວເລືອກເຫຼົ່ານີ້ຖືກສົ່ງຕໍ່ &ln ແລະແມ່ນ
ອະທິບາຍຢູ່ທີ່ນັ້ນ.
-s
--ເສັ້ນ
ໂທຫາຜົນປະໂຫຍດ "strip", ເຊິ່ງຈະຕ້ອງຢູ່ໃນ $PATH, ໃນໄຟລ໌ປາຍທາງ.
&ln [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ destfile
&ln [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ
&ln [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ ... destdir
ການເຊື່ອມຕໍ່ ໄຟລ໌ແຫຼ່ງ to destfile, ຫນຶ່ງ ໄຟລ໌ແຫຼ່ງ ໄປຫາໄດເລກະທໍລີປະຈຸບັນຫຼືຫຼາຍອັນ
ໄຟລ໌ແຫຼ່ງs ກັບ destdir ທີ່ມີຊື່ດຽວກັນ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--verbose"
-r
-- ແກ້ໄຂ
--resolve-ສັນຍະລັກ
--resolve-symbolic-link
--resolve-symlink
ນີ້ແມ່ນສິ່ງທີ່ທ່ານສະເຫມີຕ້ອງການ "ln -s" ເຮັດ. ສ້າງສັນຍາລັກແທນທີ່ຈະຍາກ
ການເຊື່ອມຕໍ່, ບໍ່ແມ່ນການສະຕຣິງທີ່ລະບຸ, ແຕ່ແທ້ໆກັບໄຟລ໌ທີ່ໃຫ້.
-s
--ສັນຍະລັກ
--symbolic-ເຫນີການເຊື່ອມຕໍ່
--symlink
ສ້າງສັນຍາລັກແທນທີ່ຈະເປັນການເຊື່ອມຕໍ່ຍາກ.
ຫມາຍເຫດ: ໃນໄຟລ໌ຕ່າງໆຫຼືລະບົບປະຕິບັດການ, ການດໍາເນີນງານນີ້ບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ. ຫຼືມັນ
ແມ່ນ, e.g. ໂດຍ Cygwin, ແຕ່ບໍ່ເຂົ້າໃຈໂດຍຜູ້ລວບລວມ Windows ພື້ນເມືອງ, ຖ້າທ່ານໃຊ້ຫນຶ່ງ.
ສໍາລັບ makefile ທີ່ທ່ານບໍ່ສາມາດປ່ຽນແປງໄດ້, ເພື່ອໃຫ້ໄດ້ຜົນໄດ້ຮັບຢ່າງຫນ້ອຍບາງປະເພດ, &ln ແລະ "&cp -l
-s" ສາມາດຄັດລອກໄຟລ໌ສໍາລັບທ່ານແທນ (ບໍ່ແມ່ນໄດເລກະທໍລີ).
ຈໍາເປັນຕ້ອງໄດ້ສົ່ງອອກຕົວແປຕໍ່ໄປນີ້ກ່ອນທີ່ຈະໂທຫາ makepp:
ສົ່ງອອກ MAKEPP_LN_CP=1
&ln --resolve ຫຼື --symbolic ຈະສຳເນົາໄຟລ໌ແທນການສ້າງສັນຍາລັກ
ການເຊື່ອມຕໍ່.
ສົ່ງອອກ MAKEPP_LN_CP=2
&ln ຈະສຳເນົາໄຟລ໌ແທນການສ້າງລິ້ງຍາກ.
ສົ່ງອອກ MAKEPP_LN_CP=3
ການຮຽກຮ້ອງທັງໝົດຂອງ &ln ຈະສຳເນົາໄຟລ໌ແທນການສ້າງປະເພດໃດນຶ່ງ
ການເຊື່ອມຕໍ່.
&mkdir [ທາງເລືອກ ... ] ລະບົບ ...
ສ້າງໄດເລກະທໍລີ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--verbose"
-m ຮູບແບບການ
--mode=ຮູບແບບການ
ຊຸດ ຮູບແບບການ ສໍາລັບໄດເລກະທໍລີທີ່ສ້າງທັງຫມົດ, ໂດຍບໍ່ຄໍານຶງເຖິງ umask. ໂໝດຕ້ອງເປັນ
ສາຍແປດ.
-p
--ພໍ່ແມ່
ສ້າງໄດເລກະທໍລີພໍ່ແມ່ທີ່ຈໍາເປັນ. ບໍ່ສົນໃຈການສ້າງໄດເລກະທໍລີລົ້ມເຫລວ
ເນື່ອງຈາກໄດເລກະທໍລີທີ່ມີຢູ່ແລ້ວ (ເຖິງແມ່ນວ່າມັນຖືກສ້າງຂື້ນພ້ອມກັນໂດຍ
ຂະບວນການອື່ນ).
&mv [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ destfile
&mv [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ
&mv [ທາງເລືອກ ... ] ໄຟລ໌ແຫຼ່ງ ... destdir
ຍ້າຍ ຫຼືປ່ຽນຊື່ ໄຟລ໌ແຫຼ່ງ to destfile, ຫນຶ່ງ ໄຟລ໌ແຫຼ່ງ ໄປຫາໄດເລກະທໍລີປະຈຸບັນຫຼືຫຼາຍອັນ
ໄຟລ໌ແຫຼ່ງs ກັບ destdir ທີ່ມີຊື່ດຽວກັນ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -v,
--verbose"
&ຂະບວນການກ່ອນ [ທາງເລືອກ ... ] variable=ນິຍາມ ... ຊື່ເອກະສານ ...
ນີ້ preprocesses ໄຟລ໌ແທ້ຄືກັນກັບ makepp ເຮັດສໍາລັບ makefiles. ນີ້ແມ່ນ
ມີອໍານາດຫຼາຍກວ່າ & ແມ່ແບບແຕ່ syntactically ບໍ່ເຫມາະສົມກັບໄຟລ໌ທີ່ມີຈໍານວນຫລາຍ
"$"-signs, ເຊັ່ນ Makefiles ຫຼື scripts.
ຖະແຫຼງການທີ່ມີເງື່ອນໄຂ, ເຊັ່ນດຽວກັນກັບຄໍາຖະແຫຼງທີ່ "ລວມ"/"_include" (ເຊິ່ງຢູ່ທີ່ນີ້
ທັງບໍ່ໄດ້ສ້າງໄຟລ໌ຫຼືຄົ້ນຫາຂຶ້ນໄປ), "perl"/"makeperl"/"perl_begin" ຫຼື
"sub"/"makesub", ຫຼືຄໍາຖະແຫຼງຕ່າງໆທີ່ທ່ານກໍານົດພາຍໃນໄຟລ໌, ໄດ້ຖືກປະມວນຜົນ. ຫວ່າງເປົ່າ
ແລະເສັ້ນຄວາມຄິດເຫັນໄດ້ຖືກລົບລ້າງ.
ແຕ່, ແທນທີ່ຈະຮຽນຮູ້ກົດລະບຽບການກໍ່ສ້າງ, ມັນຈະອອກສາຍທີ່ຍັງເຫຼືອທັງຫມົດຫຼັງຈາກນັ້ນ
"$(...)" ການຂະຫຍາຍການສະແດງອອກ. ເພື່ອປ້ອງກັນບໍ່ໃຫ້ຄຳເວົ້າດັ່ງກ່າວຖືກຮັບຮູ້,
ທ່ານສາມາດນໍາຫນ້າເຂົາເຈົ້າດ້ວຍການສະແດງອອກຫວ່າງເປົ່າ "$()". ດຽວກັນໃຊ້ກັບສາຍຂອງທ່ານ
ຕ້ອງການທີ່ຈະຢູ່ຫວ່າງເປົ່າຫຼືທີ່ຈະຮັກສາເຄື່ອງຫມາຍຄໍາເຫັນນໍາຫນ້າ. ເຊັ່ນດຽວກັນ, ຖ້າ ກ
trailing backslash ບໍ່ແມ່ນການເຂົ້າຮ່ວມແຖວທີ່ມີຕໍ່ໄປ, ໃສ່ "$()" ຫຼັງຈາກມັນ.
ເສັ້ນປົກກະຕິໄດ້ຮັບຜົນຜະລິດຄືກັບ.
ເສັ້ນທີ່ມີ $(MAKEEXPRESSIONS) ໄດ້ຮັບການຂະຫຍາຍ ແລະຜົນຜະລິດ.
ifdef WANTTHIS # ບໍ່ໄດ້ຮັບຜົນຜະລິດບໍ່ວ່າຈະຖືກກໍານົດຫຼືບໍ່
ອາດຈະບໍ່ໄດ້ຮັບຜົນຜະລິດ
ສິ້ນສຸດ
ລວມເອົາບາງໄຟລ໌
_include ບາງໄຟລ໌ທີ່ອາດຈະບໍ່ມີຢູ່ # ຫຼື -include
$()ລວມເຖິງການສະແດງອອກຫວ່າງເປົ່າປ້ອງກັນບໍ່ໃຫ້ຄໍາສໍາຄັນຖືກຮັບຮູ້.
# ສາຍຄໍາຄິດຄໍາເຫັນແລະເສັ້ນຫວ່າງຖືກກືນກິນ.
$()# ເວັ້ນເສຍແຕ່ວ່າເຂົາເຈົ້າຖືກໜ້າກາກດ້ວຍການສະແດງອອກທີ່ຫວ່າງເປົ່າ.
$()
ການສະແດງອອກຫວ່າງເປົ່າປ້ອງກັນ \$()
ການສືບຕໍ່ backslash ຈາກການຖືກຮັບຮູ້.
ອາດຈະໃຫ້:
ເສັ້ນປົກກະຕິໄດ້ຮັບຜົນຜະລິດຄືກັບ.
ເສັ້ນທີ່ມີອັນໃດກໍໄດ້ຂະຫຍາຍອອກ ແລະຜົນຜະລິດ.
ມີຫຼາຍ slurped ໃນເນື້ອໃນຢູ່ທີ່ນີ້ ...
ລວມເອົາການສະແດງອອກຫວ່າງເປົ່າປ້ອງກັນບໍ່ໃຫ້ຄໍາສໍາຄັນຖືກຮັບຮູ້.
# ເວັ້ນເສຍແຕ່ວ່າພວກເຂົາຖືກຫນ້າກາກດ້ວຍການສະແດງອອກທີ່ຫວ່າງເປົ່າ.
ການສະແດງອອກຫວ່າງເປົ່າປ້ອງກັນ \
ການສືບຕໍ່ backslash ຈາກການຖືກຮັບຮູ້.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -o,
--output=ຊື່ໄຟລ໌, -O, --outfail, -S, --synclines, -v, --verbose"
-a
--ການມອບໝາຍ
ນອກຈາກນີ້ຍັງປະຕິບັດການມອບຫມາຍພາຍໃນໄຟລ໌ເປັນ makepp ຈະ. ອະນິຈາ ສາຍດັ່ງກ່າວບໍ່ສາມາດເປັນໄດ້
ໃສ່ໜ້າກາກດ້ວຍ "$()", ເພາະວ່າມັນຖືກຕ້ອງຕາມກົດໝາຍທີ່ຈະສ້າງຊື່ຕົວແປດ້ວຍ
ການສະແດງອອກ. ນີ້ຍັງຮັບຮູ້ຄໍາຖະແຫຼງທີ່ "ກໍານົດ",
"ສົ່ງອອກ"/"unexport" ແລະ "override" (ສິ່ງເຫຼົ່ານີ້ສາມາດຖືກປິດບັງດ້ວຍ "$()").
-h \\%hash
--hashref=\\%hash
ອັນນີ້ອະນຸຍາດໃຫ້ຈັດສັນຄ່າຕົວແປໄດ້ລ່ວງໜ້າ, ລວມທັງຄ່າທີ່ຍາວບໍ່ງ່າຍ
ຜ່ານໃນຄໍາສັ່ງ. ການສະແດງອອກທີ່ຜ່ານອາດຈະເປັນລະຫັດ Perl ໃດໆທີ່ສົ່ງຄືນ a
ອ້າງອິງ hash. ນີ້ຖືກລວມເຂົ້າກັບຕົວແປອື່ນໆທີ່ສົ່ງກັບຄໍາສັ່ງ,
ລວມທັງຈາກທາງເລືອກ "--hashref" ອື່ນ.
&rm [ທາງເລືອກ ... ] ຊື່ເອກະສານ ...
ລຶບໄຟລ໌ຖ້າທ່ານມີສິດອະນຸຍາດຂຽນໄດເລກະທໍລີ. ນີ້ແມ່ນສິ່ງທີ່ Unix "rm -f" ຈະ
ລຶບ, ເນື່ອງຈາກວ່າມັນມີການປົກປ້ອງພິເສດສໍາລັບການນໍາໃຊ້ແບບໂຕ້ຕອບທີ່ບໍ່ຈໍາເປັນໃນ a
Makefile.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -v, --verbose"
-f
--ກຳລັງ
ນີ້ປ້ອງກັນການຈົ່ມກ່ຽວກັບໄຟລ໌ທີ່ບໍ່ມີຢູ່. ນັ້ນແມ່ນຜົນກະທົບຂ້າງຄຽງນີ້
ທາງເລືອກມີຢູ່ໃນ Unix, ແລະອັນດຽວທີ່ເຮັດໃຫ້ຄວາມຮູ້ສຶກຢູ່ທີ່ນີ້.
-m
--metainfo
ນອກເຫນືອໄປຈາກໄຟລ໌ທີ່ໃຫ້, ນີ້ຍັງລຶບຂໍ້ມູນ meta makepp
ເກັບຮັກສາກ່ຽວກັບພວກມັນຢູ່ໃນໄດເລກະທໍລີ .makepp. ດັ່ງນັ້ນ makepp ລືມທັງຫມົດທີ່ມັນເຄີຍຮູ້
ກ່ຽວກັບໄຟລ໌ທີ່ໃຫ້. ຖ້າໄດເຣັກທໍຣີ .makepp ກາຍເປັນຫວ່າງເປົ່າຫຼັງຈາກນັ້ນ, ມັນກໍ່ຄືກັນ
ຖືກລຶບອອກ.
ອັນນີ້ຍັງຈະລຶບໄດເລກະທໍລີທີ່ໃຫ້ໄວ້, ແຕ່ຖ້າພວກມັນຫວ່າງເປົ່າເທົ່ານັ້ນ. ເພື່ອອໍານວຍຄວາມສະດວກ
ນີ້, ມັນຈະລຶບໄດເລກະທໍລີສຸດທ້າຍ, ໃນລໍາດັບຂອງ descending ຄວາມເລິກ. ດັ່ງນັ້ນທ່ານສາມາດ
ໃຊ້ "**" ການສະແດງອອກເພື່ອລຶບລໍາດັບຊັ້ນທັງຫມົດ. ນີ້ແມ່ນຕົວຢ່າງທີ່ຈະພົບເຫັນຢູ່ໃນ
ລະດັບສູງສຸດຈໍານວນຫຼາຍເຮັດໃຫ້ໄຟລ໌. ໃຫ້ສັງເກດວ່າມີ "makeppclean" ຜົນປະໂຫຍດທີ່ສາມາດເຮັດໄດ້
ນີ້ປະສິດທິຜົນຫຼາຍຂຶ້ນ.
$(phony cleanold):
&rm -fm $(ເທົ່ານັ້ນ-stale **/*)
$(phony clean): cleanold
&rm -f $(wildcard **/*.[ao])
$(phony distclean): ສະອາດ
&rm -fm $(ເປົ້າໝາຍເທົ່ານັ້ນ**/*)
&ຈັດຮຽງ [ທາງເລືອກ ... ] ຊື່ເອກະສານ ...
ຈັດຮຽງໄຟລ໌ທັງໝົດເຂົ້າກັນໃນລຳດັບ lexicographic. ນີ້ແມ່ນບໍ່ມີປະສິດທິພາບສໍາລັບການໃຫຍ່ຫຼາຍ
ໄຟລ໌, ເນື່ອງຈາກວ່າມັນເກີດຂຶ້ນຢ່າງສົມບູນໃນຫນ່ວຍຄວາມຈໍາ. ມັນຈະລົ້ມເຫລວຖ້າຫາກວ່າຂະຫນາດລວມຂອງ
ໄຟລ໌ທັງໝົດເກີນຄວາມຈຳທີ່ເຈົ້າມີສິດໄດ້.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail,
--record-size=number, -s, --separator=string, -v, --verbose"
-c perlcode
--ປຽບທຽບ=perlcode
perlcode ເປັນຕົວແທນຂອງບລັອກການຈັດຮຽງ Perl, ໂດຍມີສອງຜູ້ສະໝັກຈັດຮຽງໃນ $a ແລະ
$b.
-n
-- ຕົວເລກ
--number-sort
ການຈັດລຽງນີ້ຈັດລຽງຕາມຕົວເລກກ່ຽວກັບການເລີ່ມຕົ້ນຂອງການບັນທຶກ. ຊ່ອງຫວ່າງຊັ້ນນໍາແມ່ນ
ຂ້າມ. ທ່ານສາມາດນໍາໃຊ້ "--transform" ແລະ "--detransform" ຖ້າຕົວເລກບໍ່ໄດ້ຢູ່ທີ່
ການເລີ່ມຕົ້ນ.
-r
-- ປີ້ນ
ສົ່ງຜົນໄດ້ຮັບໃນຄໍາສັ່ງປີ້ນກັບກັນ. ໃຫ້ສັງເກດວ່າອັນນີ້ເຊື່ອງຕົວເລືອກມາດຕະຖານ
"-r" ເຊິ່ງຕ້ອງໃຫ້ເປັນ "--record-size".
-t perlcode
--ການຫັນປ່ຽນ=perlcode
-d perlcode
--detransform=perlcode
ຖ້າທ່ານມີລະຫັດທີ່ຊັບຊ້ອນ, ການຈັດລຽງຈະໄດ້ຮັບລາຄາແພງກວ່າໃນອັດຕາສ່ວນ
ຈໍານວນຂອງການບັນທຶກການ n, ເພາະວ່າລະຫັດໄດ້ຮັບການເອີ້ນວ່າ O(n ບັນທຶກ(n)) ຄັ້ງ. ເພື່ອຫຼີກເວັ້ນການ
ວ່າ, ທ່ານສາມາດອະນຸຍາດໃຫ້ Perl ສຸມໃສ່ການຈັດລຽງ, ໂດຍທໍາອິດດັດແກ້
ສະຕຣິງ, ເຊັ່ນວ່າການສະກັດເອົາເງື່ອນໄຂການຊອກຫາທີ່ສັບສົນເກີດຂຶ້ນຫນຶ່ງຄັ້ງຕໍ່ບັນທຶກ,
ແລະປັບປຸງແກ້ໄຂໃຫ້ເຂົາເຈົ້າກັບຄືນໄປບ່ອນ, ເມື່ອພວກເຂົາຖືກຈັດຮຽງ.
ຖ້າທາງເລືອກເຫຼົ່ານີ້ຖືກມອບໃຫ້, "-- ການຫັນປ່ຽນ" perlcode ໄດ້ຮັບການສ້າງແຜນທີ່ການບັນທຶກການ
ໃນ $_ ຫນຶ່ງ ຫຼັງ ຈາກ ທີ່ ອື່ນ, ແລະ ສາ ມາດ ປັບ ປຸງ ແກ້ ໄຂ ໃຫ້ ເຂົາ ເຈົ້າ. ຫຼັງຈາກການຈັດຮຽງ, "--detransform"
perlcode ໄດ້ຮັບການສ້າງແຜນທີ່ກັບການບັນທຶກການດັດແກ້ໃນ $_ ຫນຶ່ງຫຼັງຈາກທີ່ອື່ນ, ແລະສາມາດເຮັດໄດ້
ປັບປຸງແກ້ໄຂໃຫ້ເຂົາເຈົ້າກັບຄືນໄປບ່ອນ. ປົກກະຕິແລ້ວທ່ານຈະບໍ່ໃຊ້ທັງສອງທາງເລືອກເຫຼົ່ານີ້, ເວັ້ນເສຍແຕ່
ທ່ານຕ້ອງການອອກສາຍດັດແກ້.
ການປ່ຽນສະຕຣິງເຂົ້າໃນໂຄງສ້າງຂອງມາດຖານການຈັດລຽງທີ່ສະກັດອອກມາ, ເຊິ່ງຂອງທ່ານ
"-- ປຽບທຽບ" perlcode ສາມາດເລືອກໄດ້ແມ່ນເອີ້ນວ່າ Schwartzian Transform (ST).
ການບັນຈຸທຸກສິ່ງທຸກຢ່າງເຂົ້າໄປໃນສາຍຕົວຂອງມັນເອງ, ດັ່ງນັ້ນບໍ່ມີ "-- ປຽບທຽບ" perlcode is
ຈໍາເປັນ, ອະນຸຍາດໃຫ້ການຈັດລຽງທັງຫມົດເກີດຂຶ້ນໂດຍບໍ່ມີການປະຕິບັດ Perl ລາຄາແພງ
ລະຫັດ, ເປັນທີ່ຮູ້ຈັກເປັນ Guttmann-Rosler Transform (GRT). ທ່ານສາມາດຊອກຫາຄໍາແນະນໍາໂດຍ
ຊອກຫາຊື່ເຫຼົ່ານັ້ນຢູ່ໃນເວັບ.
# ຈັດລຽງການສະແດງອອກຕົວເລກທີ່ແພງໂດຍມູນຄ່າ ($$ ປົກປ້ອງ $ ຈາກການຂະຫຍາຍ makepp)
&sort --ປຽບທຽບ 'eval($$a) <=> eval($$b)' $(input) -o >>$(output)
# ST ສໍາລັບການຈັດຮຽງກໍລະນີທີ່ບໍ່ລະອຽດອ່ອນ
&sort -t '[lc, $$_]' -c '$$a->[0] cmp $$b->[0]' -d '$$_->[1]' $(ປ້ອນຂໍ້ມູນ) - o >>$(ຜົນຜະລິດ)
# GRT ໂດຍໃຊ້ຟັງຊັນການດັດແກ້ທີ່ກໍານົດຢູ່ບ່ອນອື່ນໃນ Makeppfile
&sort -t &transform -d &detransform $(input) -o >>$(output)
-u
--uniq
--ເປັນເອກະລັກ
ຫຼັງຈາກຈັດຮຽງ, ລົບລ້າງການຊໍ້າກັນ. ເຫຼົ່ານີ້ແມ່ນເສັ້ນທີ່ຄືກັນ, ຫຼືຖ້າຫາກວ່າ
"-- ປຽບທຽບ" ທາງເລືອກແມ່ນໃຫ້, ທາງເລືອກທີ່ perlcode ລາຍງານທຽບເທົ່າ.
&ແມ່ແບບ [ທາງເລືອກ ... ] macro=ນິຍາມ ... ຊື່ເອກະສານ ...
ນີ້ແມ່ນຕົວປະມວນຜົນກ່ອນມະຫາພາກ, ບໍ່ມີປະສິດທິພາບຫຼາຍເທົ່າກັບ C preprocessor ຫຼື "m4".
ເບິ່ງ & ປະມວນຜົນກ່ອນສຳລັບທາງເລືອກທີ່ມີປະສິດທິພາບກວ່າ. ມັນໄດ້ຮັບການດົນໃຈຈາກມະຫາພາກຂອງ automake
ການທົດແທນໃນ Makefile.am ແລະ Makefile.in. ແຕ່ມັນໄປເກີນກວ່ານັ້ນ. ຂໍ້ຄວາມປົກກະຕິໃດໆ
ໄປໂດຍຜ່ານການບໍ່ປ່ຽນແປງ. ໂຄງສ້າງພິເສດແມ່ນກໍານົດໄວ້ໃນຕອນຕົ້ນດ້ວຍ "@". ເຂົາເຈົ້າ
ຕ້ອງພໍດີກັບແຖວໜຶ່ງ ເວັ້ນເສຍແຕ່ເຈົ້າຈະຜ່ານໜຶ່ງ "-r, --record-size" ຫຼື "--separator".
@# ຄວາມຄິດເຫັນ @
ໃຫ້ສັງເກດວ່າເຖິງວ່າຈະມີການກູ້ຢືມຈາກ script "#" line end syntax ຄໍາເຫັນ, ນີ້ແມ່ນຫນຶ່ງ
ຄຳເຫັນໃນແຖວ.
@ມາໂຄຣ@
ການກໍ່ສ້າງນີ້ຖືກແທນທີ່ດ້ວຍມູນຄ່າຂອງ ມາໂຄຣ. ຊື່ Macro ຕ້ອງເລີ່ມຕົ້ນດ້ວຍ
ຕົວອັກສອນ ຫຼື ຂີດກ້ອງ, ຕິດຕາມດ້ວຍຕົວເລກຂອງຕົວອັກສອນ, ຂີດກ້ອງ, ລົບ ຫຼື
ຈຸດໆ. ບໍ່ຄືກັບຊື່ makepp, underscore ແລະ minus ບໍ່ທຽບເທົ່າ.
@ມາໂຄຣ(arg1,arg2...)@
ເຊັ່ນດຽວກັນກັບອັນທໍາອິດ, ແຕ່ parameterized. args ແທນ $1 ຫາ $9 ຫຼື
"${ໝາຍເລກ}" ໃນມູນຄ່າ. ຫຼື, ຖ້າຄ່າແມ່ນຫນ້າທີ່ Perl, ພວກມັນຖືກສົ່ງຜ່ານເປັນ
ຕົວກໍານົດການປົກກະຕິ. ຜົນໄດ້ຮັບຫຼັງຈາກນັ້ນທົດແທນການກໍ່ສ້າງທັງຫມົດ. ລະດັບຫນຶ່ງ
ການສ້າງຮັງມະຫາພາກແມ່ນເປັນໄປໄດ້ທີ່ args ໃນວົງເລັບອາດປະກອບດ້ວຍທົ່ງພຽງ
"@MACRO@" invocations, ເຊັ່ນດຽວກັບ "@f(@x@)@", ບ່ອນທີ່ "@x@" ໄດ້ຮັບການຂະຫຍາຍກ່ອນທີ່ຈະເປັນ.
ທົດແທນເຂົ້າໄປໃນຮ່າງກາຍຂອງ "f".
@ລວມ(ຊື່ເອກະສານ)@
ນີ້ແມ່ນມະຫາພາກທີ່ກຳນົດໄວ້ລ່ວງໜ້າເທົ່ານັ້ນ. ມັນໄດ້ຖືກແທນທີ່ໂດຍ & ແມ່ແບບທີ່ປຸງແຕ່ງ
ເນື້ອໃນຂອງໄຟລ໌ທີ່ມີຊື່. ເຊັ່ນດຽວກັນກັບມະຫາພາກທັງຫມົດນີ້ສາມາດເກີດຂຶ້ນໃນກາງຂອງ a
ສາຍ. ອະນິຈາ, ເພາະວ່າ, "-S, --synclines" ບໍ່ສົນໃຈການລວມໄຟລ໌, ເຮັດໃຫ້
ທຸກຢ່າງເບິ່ງຄືວ່າມາຈາກເອກະສານລວມ.
@ມາໂຄຣ=ຄໍານິຍາມ@
@ມາໂຄຣ?=ຄໍານິຍາມ@
ນີ້ກໍານົດ macro ພາຍໃນໄຟລ໌. ອັນນີ້ຖືກແທນທີ່ໂດຍບໍ່ມີຫຍັງເລີຍ. ທີ່ສອງ
ແບບຟອມມີຜົນພຽງແຕ່ຖ້າ macro ບໍ່ໄດ້ຖືກກໍານົດ, ອາດຈະຢູ່ໃນຄໍາສັ່ງ
ເສັ້ນ.
@ມາໂຄຣ { Perlcode }@
ອັນນີ້ຍັງກຳນົດຄ່າມະຫາພາກ, ເນື້ອເລື່ອງທີ່ເປັນຍ່ອຍ Perl. ການໂຕ້ຖຽງ, ຖ້າ
ມີອັນໃດ, ໄດ້ຜ່ານເຂົ້າເປັນ @_.
@{ Perlcode }@
ນີ້ດໍາເນີນການ Perlcode ທັນທີແລະຖືກແທນທີ່ດ້ວຍມູນຄ່າກັບຄືນ.
ມາຮອດປະຈຸ, ພວກເຮົາເຫັນພຽງແຕ່ຫນຶ່ງ syntax ສໍາລັບການຝັງສິ່ງທີ່ພິເສດ. ຍັງມີອີກ
syntax ຫຼາຍເສັ້ນ, ແລະທັງສອງອະນຸຍາດໃຫ້ມີການປ່ຽນແປງເພື່ອສະກັດກັ້ນເສັ້ນໃຫມ່. ເຫຼົ່ານີ້ແມ່ນ
builtin syntaxes (ຊຶ່ງສາມາດ configured ໂດຍຕົວເລືອກຂ້າງລຸ່ມນີ້). ທີ່ນີ້ ພິເສດ ຫຍໍ້ມາຈາກ
ການກໍ່ສ້າງໃດໆທີ່ສະແດງຂ້າງເທິງ:
@ພິເສດ@
@ພິເສດ@\
ນີ້ສາມາດປະກົດຕົວຄູນຢູ່ບ່ອນໃດກໍໄດ້ໃນແຖວ. ການປ່ຽນແປງທັນທີປະຕິບັດຕາມໂດຍ
"\" ເຮັດວຽກຢູ່ທ້າຍແຖວເທົ່ານັ້ນ. ມັນຍັງທົດແທນການຢຸດແຖວຕໍ່ໄປນີ້.
@@ພິເສດ@@ ຕາມປົກກະຕິ ຂໍ້ຄວາມ @@
@@ພິເສດ@@ ຕາມປົກກະຕິ ຂໍ້ຄວາມ @@\
ອັນນີ້ຄືກັບອັນທີ່ຜ່ານມາ. ຢ່າງໃດກໍຕາມ, ຂໍ້ຄວາມປົກກະຕິ, ເຊິ່ງໄດ້ຖືກປ່ຽນແທນ,
ສາມາດຂະຫຍາຍຫຼາຍສາຍ. ເຈົ້າສາມາດເອົາສ່ວນພິເສດໃສ່ໃນແຖວຄຳເຫັນໄດ້
ລະຫັດແຫຼ່ງທີ່ຕ້ອງການພຽງແຕ່ຢູ່ໃນສະຄິບທີ່ບໍ່ໄດ້ຕິດຕັ້ງ, ເພື່ອກໍາຈັດຫຼື
ທົດແທນໃນລະຫວ່າງການຂະບວນການຕິດຕັ້ງ:
#@@# ອີກ2ເສັ້ນຈະຫາຍໄປ@@
echo ທ່ານກໍາລັງແລ່ນສະບັບທີ່ຖອນການຕິດຕັ້ງຂອງ script ນີ້
#@@
# @@REPLAMCENT@@
echo ບາງສິ່ງບາງຢ່າງອື່ນຈະຢູ່ທີ່ນີ້
#@@
ຕົວຢ່າງທີ່ບໍ່ມີຄວາມຫມາຍສະແດງໃຫ້ເຫັນເຖິງຄວາມເປັນໄປໄດ້ຕ່າງໆ:
@m1=ບາງຄຳນິຍາມ@\
@m2=foo $1 bar@\
@middle_of_arg=iddl@\
@m1@ @m2(m@middle_of_arg@e)@
@@m2(ຫຼາຍສາຍ)@@
...
@@ ຂໍ້ຄວາມທຳມະດາ 1+2 = @{ 1+2 }@
ກາຍເປັນ
ບາງຄໍານິຍາມ foo ແຖບກາງ
foo ຫຼາຍເສັ້ນແຖບຂໍ້ຄວາມທໍາມະດາ 1 + 2 = 3
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=number, --separator=string, -S, --synclines, -v, --verbose"
-d
-- ກໍານົດ
ແທນທີ່ພຽງແຕ່ຕົວຢ່າງຂອງມະຫາພາກທີ່ຖືກກໍານົດໄວ້ຕົວຈິງ. ໂດຍບໍ່ມີທາງເລືອກນີ້
ອັນທີ່ບໍ່ໄດ້ກຳນົດໄວ້ທັງໝົດຈະຖືກແທນທີ່ໂດຍບໍ່ມີຫຍັງເລີຍ.
-h \\%hash
--hashref=\\%hash
ອັນນີ້ອະນຸຍາດໃຫ້ຈັດແບ່ງຄ່າມະຫາພາກໄວ້ລ່ວງໜ້າ, ລວມທັງຄ່າທີ່ຍາວບໍ່ງ່າຍ
ຜ່ານໃນຄໍາສັ່ງ. ການສະແດງອອກທີ່ຜ່ານອາດຈະເປັນລະຫັດ Perl ໃດໆທີ່ສົ່ງຄືນ a
ອ້າງອິງ hash. ນີ້ຖືກລວມເຂົ້າກັບ macros ອື່ນໆທີ່ສົ່ງກັບຄໍາສັ່ງ,
ລວມທັງຈາກທາງເລືອກ "--hashref" ອື່ນ. ຄ່າ hash ອາດຈະເປັນລະຫັດ
ການອ້າງອິງ, ໃນກໍລະນີນັ້ນ, ຟັງຊັນຖືກເອີ້ນ, ເຊັ່ນດຽວກັບ "@macro { Perlcode }@"
ຄໍານິຍາມ.
-s /prefix/suffix/
--simple=/prefix/suffix/
ການນໍາໃຊ້ ຄຳ ນຳ ໜ້າ ແລະ បច្ច័យ ກ່ອນແລະຫຼັງ ພິເສດ ຕາມລໍາດັບແທນທີ່ຈະເປັນ "@". ໄດ້
ລັກສະນະທໍາອິດແມ່ນຕົວແຍກແລະບໍ່ຈໍາເປັນຕ້ອງເປັນ slash. ຄ່າເຫຼົ່ານີ້ແມ່ນ Perl
regexps. ເຈົ້າບໍ່ຄວນແນະນຳການຈັດກຸ່ມເຊັ່ນ "(...)", ແຕ່ "(?:...)" ແມ່ນດີ.
-m /prefix/suffix/afterprefix/[aftersuffix/]
--multiline=/prefix/suffix/afterprefix/[aftersuffix/]
ການນໍາໃຊ້ ຄຳ ນຳ ໜ້າ, បច្ច័យ ແລະ ຄຳນຳໜ້າ ກ່ອນແລະຫຼັງ ພິເສດ ແລະໃນຕອນທ້າຍຂອງ
block ຕາມລໍາດັບແທນທີ່ຈະເປັນ "@@". ຖ້າ ຄຳຕໍ່ທ້າຍ ແມ່ນໃຫ້, ຊື່ມະຫາພາກ
ຕ້ອງໄດ້ຮັບການຊ້ໍາກ່ອນທີ່ຈະມັນ. ລັກສະນະທໍາອິດແມ່ນຕົວແຍກແລະບໍ່ຈໍາເປັນຕ້ອງເປັນ
ທັບ. ຕົວຢ່າງເຊັ່ນ XML-ish, ທີ່ທ່ານຕ້ອງເພີ່ມ "--defined" ຖ້າທ່ານຕ້ອງການ
ຮັກສາແທັກອື່ນ, ບໍ່ໄດ້ກໍານົດໂດຍທ່ານ:
--defined --simple=|<|/>| --multiline=|<|>| |
ຫຼື, ດີກວ່າ, ໃຊ້ຄໍາແນະນໍາການປຸງແຕ່ງ " ", ມີຈຸດປະສົງດັ່ງກ່າວ:
--defined --simple='|<\?|\?>|'
ຫຼື, ຖ້າທ່ານຕ້ອງການສົມທົບອັນນີ້ກັບ "&entity;" syntax ສໍາລັບ macro ງ່າຍດາຍ
ການທົດແທນ (ຮັກສາຕົວເລກ "☺" ທີ່ບໍ່ແມ່ນຄໍາເຫັນ):
--defined --simple='_(?:&(?!#)|<\?)_(?:;|\?>)_'
&ແຕະ [ທາງເລືອກ ... ] ຊື່ເອກະສານ ...
ອັບເດດການດັດແກ້ ແລະເວລາເຂົ້າເຖິງຂອງແຕ່ລະໄຟລ໌ມາເຖິງຕອນນີ້. ຖ້າໄຟລ໌
ບໍ່ມີ, ມັນຖືກສ້າງຂຶ້ນ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -v, --verbose"
&ຖອນການຕິດຕັ້ງ [ທາງເລືອກ ... ] [ຊື່ເອກະສານ ... ]
ຖອນການຕິດຕັ້ງໄຟລ໌ທີ່ຕິດຕັ້ງໄວ້ກ່ອນຫນ້ານີ້ໂດຍ & ຕິດຕັ້ງ. ໄດ້ ຊື່ເອກະສານs ແມ່ນ logfiles ຂຽນ
ໂດຍ & ຕິດຕັ້ງ. ຖ້າບໍ່ມີອັນໃດຖືກໃຫ້, ຫຼືທາງເລືອກ "--inpipe", ອ່ານໄຟລ໌ບັນທຶກເລີ່ມຕົ້ນ
ຂອງ & ຕິດຕັ້ງ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -i,
--inpipe=shellcommand, -I, --infail, -v, --verbose"
&uniq [ທາງເລືອກ ... ] ຊື່ເອກະສານ ...
ຍົກເລີກທັງໝົດ ຍົກເວັ້ນໜຶ່ງສາຍສະເໝີກັນ.
"ຕົວເລືອກມາດຕະຖານ": "-A, --args-file, --arguments-file=filename, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=number, -s, --separator=string, -S, --synclines, -v, --verbose"
-c perlcode
--ປຽບທຽບ=perlcode
ນີ້ Perlcode ໄດ້ຮັບເສັ້ນກ່ອນໜ້າ ແລະປັດຈຸບັນໃນ $a ແລະ $b ແລະຈະກັບຄືນມາ
ຄວາມຈິງຖ້າມັນພິຈາລະນາສອງເສັ້ນເທົ່າທຽມກັນ.
&uniq --compare='lc( $$a ) eq lc $$b' $(inputs) -o $(output)
ສາມາດຈຳລອງໄດ້ ຄໍາສັ່ງ
ສິ່ງຕ່າງໆບໍ່ໄດ້ສ້າງຂຶ້ນໃນ, ແຕ່ສາມາດບັນລຸໄດ້ດ້ວຍຄໍາສັ່ງອື່ນໆ:
awk ໃຊ້ &sed.
chgrp
chown
ຄໍາສັ່ງເຫຼົ່ານີ້ສ່ວນຫຼາຍແມ່ນບໍ່ສາມາດເຄື່ອນທີ່! ເຂົາເຈົ້າຈະບໍ່ເຮັດຫຍັງຢ່າງງຽບໆ ຫຼືລົ້ມເຫລວ,
ຂຶ້ນກັບລະບົບ. ໂດຍທົ່ວໄປແລ້ວພຽງແຕ່ຮາກອາດຈະປະຕິບັດການດໍາເນີນງານເຫຼົ່ານີ້, ເຊິ່ງແມ່ນ
ເປັນຫຍັງພວກມັນຈຶ່ງສາມາດໃຊ້ໄດ້ຜ່ານຄຳສັ່ງ &ຕິດຕັ້ງເທົ່ານັ້ນ.
cpp ໃຊ້ &preprocess ຫຼື &ແມ່ແບບ.
ວັນ
ທັງສອງສ່ວນເຫຼົ່ານີ້ເຮັດສິ່ງດຽວກັນຄື:
&expr ເວລາທ້ອງຖິ່ນ
&expr gmtime
ທີ່ບໍ່ຖືກຕ້ອງ
ໃຊ້ &expr ໂດຍບໍ່ມີການໂຕ້ຖຽງ ຫຼື 0.
ຫົວຫນ້າ
ຫາງ
ທ່ານສາມາດບັນລຸຜົນໄດ້ຮັບດຽວກັນກັບ &grep ຫຼື "&cut --lines":
&grep 1..10 ໄຟລ໌ # ສິບແຖວທຳອິດ
&grep 10..eof ໄຟລ໌ # ທຸກແຖວຕັ້ງແຕ່ທີສິບເປັນຕົ້ນໄປ
&cut --lines -10..-1 ໄຟລ໌ # ສິບແຖວສຸດທ້າຍ
ໃຫ້ສັງເກດວ່າ 1..10 ໃນ & grep ແມ່ນຕົວເລກແຖວຂອງ Perl flip-flop, ເຊິ່ງເຮັດໃຫ້ຫນ້າລໍາຄານ.
ເລີ່ມຕົ້ນທີ່ 1. ຢ່າເລີ່ມຕົ້ນທີ່ 0, ຫຼື flip-flop ຈະບໍ່ກາຍເປັນຄວາມຈິງ.
fmt ນີ້ແມ່ນກ່າວເຖິງທີ່ນີ້ນັບຕັ້ງແຕ່ Perl ສະຫນອງຫນ້າທີ່ທີ່ກ່ຽວຂ້ອງ. ຢ່າງ ໃດ ກໍ ຕາມ ຂ້າ ພະ ເຈົ້າ ໄດ້
ບັນຫາການນໍາໃຊ້ການປະກາດ "ຮູບແບບ" ໃນ makefile. ສິ່ງທີ່ເຮັດວຽກແມ່ນ
ຟັງຊັນ "formline". ຕົວຢ່າງເຊັ່ນການຫັນປ່ຽນໄຟລ໌ csv ປະກອບດ້ວຍຊື່ແລະ
ລາຄາເປັນຮູບແບບຕາຕະລາງ:
ຍ່ອຍ csv2txt {
formline "\@<<<<<<<<<<<<<<< ^#############\n", ແຍກ ',';
$_ = $^A;
$^A = '';
}
%.txt: %.csv
&sed &csv2txt $(input) -o $(output)
m4 ໃຊ້ &preprocess ຫຼື &ແມ່ແບບ.
ແມ່ນ rm
ໃຊ້ &rm.
tr ໃຊ້ &sed.
ໃຊ້ makepp_builtins ອອນລາຍໂດຍໃຊ້ບໍລິການ onworks.net