ชื่อเรียกแทน (คำสั่ง)
| ชื่อเล่น | |
|---|---|
ตัวอย่าง aliasคำสั่ง | |
| ผู้เขียนต้นฉบับ | บิล จอย |
| นักพัฒนา | นักพัฒนาซอฟต์แวร์โอเพนซอร์สและเชิงพาณิชย์หลายราย |
| ระบบปฏิบัติการ | Unix , Unix-like , AmigaDOS , FreeDOS , Microsoft Windows , ReactOS , AROS , KolibriOS , IBM i |
| แพลตฟอร์ม | ข้ามแพลตฟอร์ม |
| พิมพ์ | สั่งการ |
aliasเป็นคำสั่งเชลล์ ที่กำหนดคำที่เชลล์จะแทนที่ด้วยข้อความที่เกี่ยวข้องก่อนที่จะตีความบรรทัดคำสั่ง[ 1 ] มักใช้เพื่อเพิ่มประสิทธิภาพการทำงานโดยการย่อคำสั่งหรือเพื่อรวมอาร์กิวเมนต์ที่ใช้บ่อยกับคำสั่ง คำสั่งนี้มีอยู่ในเชลล์ Unix , AmigaDOS , 4DOS / 4NT , FreeDOS , KolibriOS , PowerShell , ReactOS , EFI shell [ 2 ]และIBM i [ 3 ] คำสั่งนี้มีฟังก์ชันการสร้างนามแฝงในMS-DOSและCommand PromptDOSKEY
เนื่องจากนามแฝงจะถูกกำหนดไว้เฉพาะสำหรับการใช้งานเชลล์ในแต่ละครั้งเท่านั้น นามแฝงที่ใช้บ่อยจึงมักถูกกำหนดไว้ในสคริปต์เชลล์ เริ่มต้นเซสชัน เช่น.bashrc` aliasconfig.js` คำสั่งต่างๆ อาจเขียนไว้ในสคริปต์การกำหนดค่าโดยตรง หรือดึงมาจากไฟล์แยกต่างหากก็ได้
ชื่อย่อ (Aliases) ถูกนำมาใช้ในเชลล์ภาษาซี (C shell)เพื่อให้คงอยู่ต่อไปในเชลล์รุ่นหลัง เช่นtcshและbashเนื่องจากชื่อย่อเหล่านี้จำกัดอยู่เพียงบรรทัดเดียว จึงมีประโยชน์สำหรับการสร้างคำสั่งลัดที่ค่อนข้างง่าย แต่ไม่เหมาะสำหรับโครงสร้างที่ซับซ้อนกว่าเชลล์ Bourne เวอร์ชันเก่า ไม่มีชื่อย่อ แต่มีฟังก์ชัน ซึ่งมีประสิทธิภาพมากกว่าชื่อย่อ csh ในที่สุด ชื่อย่อ csh ก็ถูกนำมาใช้ใน เชลล์ bashและkshสำหรับเชลล์ที่รองรับทั้งฟังก์ชันและชื่อย่อ แต่ไม่มีสคริปต์เชลล์แบบอินไลน์ที่มีพารามิเตอร์ การใช้ฟังก์ชันทุกครั้งที่เป็นไปได้จึงเป็นสิ่งที่แนะนำ อย่างไรก็ตาม ชื่อย่อก็จำเป็นในกรณีที่ต้องการใช้ชื่อย่อแบบต่อเนื่องกัน
คุณสมบัติ
กำหนด
ต่อไปนี้เป็นตัวอย่างที่กำหนดgcให้คำสั่งนั้นทำหน้าที่ดำเนินการบางgit commitอย่าง
alias gc = 'git commit'ใน C shell และ tcsh ไม่มีเครื่องหมายเท่ากับ:
alias gc "git commit"ในการกำหนดชื่อเรียกแทน (alias) ใน PowerShell new-aliasจะใช้คำสั่ง cmdlet ดังนี้:
new-alias ci copy-itemใน PowerShell ไม่สามารถใช้ชื่อย่อ (alias) เพื่อระบุค่าเริ่มต้นของคำสั่งได้ แต่ต้องทำโดยการเพิ่มรายการลงในคอลเลกชัน ซึ่ง$PSDefaultParameterValuesเป็นหนึ่งในตัวแปรการตั้งค่าของ PowerShell แทน
ใน PowerShell setคำกริยา `undefined` ใช้สำหรับเปลี่ยนชื่อเล่นที่มีอยู่แล้ว ตัวอย่างต่อไปนี้จะเปลี่ยนชื่อเล่นciเพื่อเรียกใช้clsคำสั่ง
set-alias ci clsในเชลล์ของ 4DOS/4NT esetคำสั่งนี้จะช่วยให้สามารถแก้ไขนามแฝงที่มีอยู่ได้โดยใช้บรรทัดคำสั่งแบบโต้ตอบ ตัวอย่างเช่น:
eset /a cpรายการ
เพื่อดูชื่อเรียกแทนที่กำหนดไว้:
ชื่อเล่นวิธีการแสดงรายการนามแฝงในลักษณะที่อนุญาตให้สร้างนามแฝงเหล่านั้นขึ้นใหม่ได้โดยการเรียกใช้เอาต์พุต (ไม่สามารถใช้งานได้ใน 4DOS/4NT หรือ PowerShell):
ชื่อเล่น -p เพื่อรายงานความหมายของชื่อนามแฝงเฉพาะเจาะจง:
ชื่อเล่น myAlias ลบ
ในเชลล์ Unix และ 4DOS/4NT สามารถลบนามแฝงได้โดยใช้คำสั่งunalias`delete` วิธีการลบcopyนามแฝง:
สำเนา อูนาเลีย สเพื่อลบชื่อแทนทั้งหมด (ไม่สามารถใช้งานได้ใน 4DOS/4NT):
unalias -a วิธีลบชื่อแทนทั้งหมดใน 4DOS/4NT:
unalias * ใน PowerShell สามารถลบชื่อเรียกแทน (alias) ออกจากalias:\ไดรฟ์ได้โดยใช้คำสั่งremove-item:
ลบรายการชื่อแทน: ciไม่สนใจ
ในเชลล์ Unix คำที่ถูกตั้งชื่อย่อสามารถใช้งานได้โดยไม่ต้องแทนที่ด้วยการใช้เครื่องหมายอัญประกาศ ตัวอย่างเช่น พิจารณาคำสั่งต่อไปนี้ที่กำหนดชื่อย่อlsซึ่งเรียกใช้คำสั่งดั้งเดิมlsพร้อมตัวเลือก-laหากต้องการเรียกใช้lsคำสั่งดั้งเดิม (โดยไม่มีตัวเลือก) จะใช้ไวยากรณ์ต่อไปนี้: 'ls'หรือ\ls
ชื่อเรียกอีกอย่างls = 'ls -la'ในเชลล์ 4DOS/4NT จะใช้เครื่องหมายดอกจัน ตัวอย่างเช่น คำสั่งต่อไปนี้เรียกdirใช้ฟังก์ชันดั้งเดิมdir(ต้องมีเครื่องหมายดอกจันในคำสั่ง) พร้อมตัวเลือกต่างๆ/2/pหากต้องการเรียกใช้ฟังก์ชันดั้งเดิมในภายหลังdirไวยากรณ์จะเป็น*dirดังนี้
ชื่อแทนไดเร็กทอรี = *dir /2/pการเชื่อมโยง
โดยทั่วไปแล้ว ชื่อย่อจะใช้เพื่อแทนที่คำแรกของบรรทัดคำสั่ง แต่เชลล์บางตัว เช่นbashและkshยังรองรับการเชื่อมต่อด้วย–คือการแทนที่คำถัดไป
ตัวอย่างเช่น คำสั่งต่อไปนี้กำหนดlistให้เรียกใช้lsและlongเป็นชุดของlsตัวเลือก ชื่อย่อคำสั่งต้องลงท้ายด้วยช่องว่างเพื่อเปิดใช้งานการเชื่อมโยงคำสั่ง
alias list = 'ls ' alias long = '-Flas'จากนั้น บรรทัดคำสั่งlist long myfileจะขยายเป็นls -Flas myfile.
ลักษณะการทำงานที่ได้จากการใช้คำสั่ง chaining นั้น ไม่สามารถทำได้ผ่านฟังก์ชัน shell
อาร์กิวเมนต์คำสั่ง
ในC Shellสามารถ ใส่ พารามิเตอร์ไว้ในคำสั่งได้โดยใช้สตริง `<array>` \!*ตัวอย่างเช่น ด้วยชื่อย่อนี้:
alias ls-more 'ls \!* | more'ls-more /etc /usrขยายเพื่อls /etc /usr | moreแสดงรายการเนื้อหาของไดเร็กทอรี /etc และ /usr โดยหยุดชั่วคราวหลังจากแสดงผลครบแต่ละหน้าจอ หากไม่มีเครื่องหมายจุลภาค ( \!*,)
ชื่อเรียกอีกอย่าง ls-more 'ls | more'จะขยายออกไปls | more /etc /usrซึ่งพยายามเปิดไดเร็กทอรีอย่างไม่ถูกต้องมากขึ้น[ 4 ]
เชลล์บางตัว เช่น bash และ ksh ไม่รองรับไวยากรณ์นี้ แต่มีฟังก์ชันการทำงานที่คล้ายกันให้ใช้งานผ่านฟังก์ชันเชลล์ — ดูหัวข้อ § ทางเลือกอื่นด้านล่าง
ทางเลือกอื่นๆ
แนวทางปฏิบัติที่ดีที่สุดคือการกำหนดชื่อเรียกแทน (alias) เฉพาะสำหรับคำสั่งที่ค่อนข้างง่ายเท่านั้น สำหรับตรรกะที่ซับซ้อนกว่านั้น อาจใช้ชื่อเรียกแทนแบบอื่นได้ เช่น:
- สคริปต์เชลล์ซึ่งให้ความสามารถที่หลากหลายในการใช้งานคำสั่ง
- ลิงก์เชิงสัญลักษณ์ในไฟล์ของผู้ใช้
PATH(เช่น/bin) ซึ่งในบางกรณีอาจอนุญาตให้เข้าถึงฟังก์ชันคำสั่งที่ซ่อนอยู่สำหรับคำสั่งจำนวนน้อยที่ใช้ชื่อเรียกใช้เพื่อเลือกโหมดการทำงาน - ฟังก์ชันเชลล์ โดยเฉพาะอย่างยิ่งหากคำสั่งที่กำลังสร้างจำเป็นต้องแก้ไขสภาพแวดล้อมการทำงาน ภายใน ของเชลล์ (เช่นตัวแปรสภาพแวดล้อม ) จำเป็นต้องเปลี่ยน ไดเร็กทอรีการทำงานของเชลล์หรือต้องถูกนำไปใช้ในลักษณะที่รับประกันว่าจะปรากฏในเส้นทางการค้นหาคำสั่งสำหรับทุกอย่างยกเว้นเชลล์แบบโต้ตอบ (โดยเฉพาะอย่างยิ่งเวอร์ชัน "ที่ปลอดภัยกว่า" ของ
rm,cp,mvและอื่นๆ)
ชื่อเรียกแทน (alias) ที่ค่อนข้างง่าย ซึ่งประกอบด้วยอาร์กิวเมนต์ไม่กี่ตัวและรองรับอาร์กิวเมนต์เพิ่มเติม สามารถแปลงเป็นฟังก์ชันเชลล์ได้ด้วยกระบวนการที่ไม่ซับซ้อนนัก ตัวอย่างเช่น ชื่อเรียกแทนalias ll='ls -Flas'สามารถเขียนเป็นฟังก์ชันได้เพื่อป้องกันไม่ให้ฟังก์ชันเรียกตัวเองให้ใช้: ในเชลล์ Bourne รุ่นเก่า ให้ใช้แทนll () { ls -Flas "$@" ;commandls () { command ls --color=auto "$@" ; }/bin/lscommand ls
อ่านเพิ่มเติม
- McElhearn, Kirk (2006). บรรทัดคำสั่ง Mac OS X: Unix Under the Hood . John Wiley & Sons . ISBN 978-0470113851.
ลิงก์ภายนอก
- : กำหนดหรือแสดงนามแฝง– เอกสารอ้างอิงเชลล์และยูทิลิตี้, ข้อกำหนดยูนิกซ์ฉบับเดียว, เวอร์ชัน 5 จากThe Open Group
- หน้าคู่มือการใช้งาน Bash สำหรับคำว่า alias
- ชื่อเรียกแทน Commandโดย The Linux Information Project (LINFO)