ฉันจะข้ามนามแฝงชั่วคราวใน tcsh ได้อย่างไร


17

ฉันกำลังใช้ tcsh ทุบตีและ zsh และข้อเสนอแนะอื่น ๆ จะไม่ช่วยที่นี่

ฉันมีนามแฝงหลายชื่อที่มีชื่อเดียวกันกับคำสั่งอื่นดังนั้นถ้าฉันทำ unalias ให้พิมพ์สิ่งเดียวกันตอนนี้จะทำสิ่งที่แตกต่าง

ส่วนใหญ่เวลาที่ฉันต้องการคำสั่ง aliased ซึ่งเป็นสาเหตุที่ฉันมีพวกเขา อย่างไรก็ตามบางครั้งฉันต้องการคำสั่ง unaliased

หากไม่มีการยกเลิกการกำหนดและการกำหนดคำสั่งใหม่จริง ๆ มีวิธีง่าย ๆ ในการบอก tcsh ให้ใช้คำสั่ง unaliased แทนหรือไม่

ตัวอย่างเช่น vi มีนามแฝงเป็นกลุ่ม แต่บางครั้งฉันต้องการใช้ vi cd เป็นชื่อแทนการเปลี่ยนชื่อหน้าต่างของฉัน แต่บางครั้งฉันต้องการทิ้งไว้คนเดียว

เห็นได้ชัดว่าฉันสามารถพิมพ์ / usr / bin / vi แต่เนื่องจาก cd เป็นคำสั่งในตัวเชลล์จึงไม่เทียบเท่า มีวิธีแก้ปัญหาทั่วไปหรือไม่?

คำตอบ:


29

คุณสามารถใช้แบ็กสแลช:

% alias ls ls -a
% ls
# ls -a output here
% \ls
# plain ls output here

สำหรับเชลล์บิวด์อินจะกลายเป็น gotcha: แบ็กสแลชนำหน้าป้องกันทั้งนามแฝงและบิวด์อินจากการใช้ แต่แบ็กสแลชภายในจะยับยั้งการสร้างสมนามเท่านั้น

% alias cd pushd
% cd /tmp
/tmp /tmp 
% c\d
% dirs
~ /tmp

(ฉันอยากจะเรียกอีกอย่างว่าการโต้เถียงกับการใช้cshตระกูลของเปลือกหอย)


ฉันได้รับ "คำสั่ง: ไม่พบคำสั่ง" สำหรับคำสั่งและ "cd: ไม่พบคำสั่ง" สำหรับ \ cd 'คำสั่ง' เป็น tcsh ในตัวหรือไม่
piCookie

ถอนหายใจความแปลกประหลาด POSIX ... มีของปลอม/usr/binอยู่ที่นี่ แต่คู่มือยืนยันว่าแบ็กสแลชควรใช้งานได้ ... และกลับกลายเป็นเช่นนั้น แต่คุณต้องอ้างอิงอักขระภายในเพื่อป้องกันนามแฝงในขณะที่ยังรองรับบิวด์อิน BTW ถ้าคุณกำลังพยายามที่จะทำอะไรบางอย่างหลังจากที่cdใช้เวลาดูที่alias cwdcmdในtcsh(1); นอกจากนี้ยังช่วยให้คุณมีการจัดการกับpushd/ popdฯลฯ
geekosaur

commandมักจะอยู่ในตัวในเปลือกหอย POSIX command -[Vv]และความต้องการที่จะให้ การใช้แบ็กสแลชเพื่อข้ามนามแฝงใช้งานได้กับคำสั่งปกติเท่านั้นไม่ใช่สำหรับบิวอิน
Gilles 'หยุดความชั่วร้าย' ใน

ดูเหมือนว่าคำสั่งจะไม่สามารถใช้ได้ในระบบของฉัน (นอกเหนือจาก: คุณจัดรูปแบบที่โดดเด่นอย่างไร) แต่แบ็กสแลชภายในใช้งานได้สำหรับฉัน ขอบคุณ!
piCookie

ไชโย @geekosaur - ฉันไม่รู้เกี่ยวกับพฤติกรรมนี้และฉันคิดว่ามันจะมีประโยชน์มากเมื่อฉันเริ่มใช้นามแฝงบ่อยขึ้น :)
boehj

1

คำนำหน้าคำสั่งของคุณด้วยคำว่า 'คำสั่ง' อดีต

command ls

1
ใช้งานได้ใน tcsh ตามที่คำถามต้องการหรือไม่ มันใช้งานได้กับคำสั่งในตัวหรือไม่?
dhag

0

อย่าสร้างนามแฝงที่เปลือกหอยในตัว ชีวิตของคุณจะง่ายขึ้นมาก มีการรวมคีย์มากมายเหลือไว้ให้ลองcwเปลี่ยนชื่อแทนหน้าต่างหน้าต่างของคุณ :)

แก้ไข:โซลูชันสองขั้นตอนสำหรับแก้ไขนามแฝงที่ไม่ใช่ของคุณ:

  1. ค้นหาลิงที่ใช้นามแฝงcdเป็นอย่างอื่นนอกเหนือจากคำสั่งเปลี่ยนไดเรกทอรีและขอให้โอนย้ายไปยังคอลัมน์ oped ของกระดาษท้องถิ่น เขาไม่ควรถืองานที่เขาสามารถบังคับความคิดเช่นนั้นให้กับเปลือกหอยของคนอื่นได้!
  2. echo unalias cd >> ~/.bashrc

นามแฝงบางตัวที่ฉันทำไม่ใช่ของตัวเอง ฉันซาบซึ้งในคำแนะนำของคุณและจะพยายามอย่างดีที่สุดเพื่อเอาใจใส่มันหากเป็นไปได้ ตอนนี้ที่มีอยู่นามแฝงผมอยากจะบายพาสอย่างไรฉัน?
piCookie

แน่ใจ unalias cd.
Caleb

เห็นได้ชัดว่าฉันไม่ชัดเจนเลยแม็กเคเล็บและฉันขอโทษ ลองเรียกตัวพิมพ์ 'cd' ผมพยายามที่จะหาวิธีที่จะทำเช่นนี้สำหรับนามแฝงอื่น ๆโดยไม่ต้อง unaliasing ฉันขอโทษที่ฉันไม่เข้าใจ ดูเหมือนว่าแบ็กสแลชภายในเป็นสิ่งที่ฉันกำลังมองหา
piCookie

cdนามแฝงอาจจะมีการตั้งชื่อและเปลี่ยนไดเรกทอรี นั่นคือการปฏิบัติทั่วไปสวยจากวันก่อนและprecmd PROMPT_COMMAND
Mikel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.