คำถามติดแท็ก alias

นามแฝงนั้นไม่มีอะไรมากไปกว่าแป้นพิมพ์ลัดตัวย่อหมายถึงการหลีกเลี่ยงการพิมพ์ลำดับคำสั่งแบบยาว สิ่งนี้สามารถบันทึกการพิมพ์จำนวนมากได้ที่บรรทัดคำสั่งและหลีกเลี่ยงการจำชุดคำสั่งและตัวเลือกที่ซับซ้อน

5
การสร้างนามแฝงสำหรับสคริปต์ทุบตี
ดังนั้นผมจึงได้พยายามทดลองและสร้างในalias .bashrcอย่างไรก็ตามเมื่อฉันทดสอบคำสั่งที่ฉันได้รับ: [rkahil@netmon3 ~]$ menu -bash: menu: command not found นี่คือสิ่งที่ฉันมีใน.bashrcไฟล์: # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions alias menu='./menuScript.sh' alias vi='vim' สิ่งที่ตลกคือเมื่อฉันสร้างนามแฝงviมันทำงานได้ แต่เมนูไม่ได้ ฉันค้นหาโพสต์ก่อนหน้านี้ใน UnixStackExchange และพยายามติดตามโพสต์อื่น ๆ แต่ไม่มีประโยชน์ ใครบ้างที่มีข้อเสนอแนะใด ๆ ?
10 bash  alias 

1
คุณสามารถสร้าง "นามแฝง" ใน Bash ได้หลายวิธี
ฉันเพียงรู้ของสองวิธีและalias foo=barfunction foo() { bar } เหตุผลที่ฉันถามคือ - ทั้งหมดในเซสชัน bash ของฉัน - ฉันไม่สามารถเรียกใช้lnคำสั่งได้เนื่องจากbashมีข้อผิดพลาด-bash: /usr/local/.../ln: No such file or directory(ซึ่ง/usr/local/.../เป็นหนึ่งในรายการในPATHตัวแปรสภาพแวดล้อมของฉัน) มันไม่ใช่PATHปัญหาเพราะถ้าฉันเรียกใช้which lnมันจะเอาท์พุทไบนารีที่คาดหวังของ/usr/bin/ln(ซึ่งฉันสามารถทำงานได้ดีถ้าฉันระบุเส้นทางที่แน่นอน) ฉันยังตรวจสอบlnในของฉันaliasและfunctionประกาศและไม่มีอะไร: $ declare -f | grep ln $ alias | grep ln ปัญหากำลังเกิดขึ้นในเซสชัน bash เดียว ถ้าฉันเริ่มเชลล์ใหม่มันจะทำงานได้ดีอีกครั้ง แต่ฉันอยากรู้ว่าอะไรทำให้เกิดปัญหานี้ในทันทีในเซสชั่นของการทุบตีนี้ ความคิดใด ๆ เกี่ยวกับสิ่งที่อาจทำให้เกิดสิ่งนี้
10 bash  shell  alias 

1
bashrc ขี้เกียจทดแทน
เราจะได้รับ~/.bashrcชื่อแทนเพื่อประเมินการ$()ทดแทนในเวลาทำงานแทนที่จะเป็นช่วงเวลาที่ดำเนินการ ~ / .bashrc (เมื่อเปิดเทอร์มินัล)? ฉันรันคำสั่งนี้บ่อยพอที่ฉันต้องการเพิ่มนามแฝง: svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff อย่างไรก็ตามเมื่อฉันเพิ่มลง~/.bashrcในนามแฝงฉันเห็นว่าการประเมินผลนั้นได้รับการกำหนดค่าตายตัวในค่าที่พวกเขามีในขณะที่ฉันเปิดเทอร์มินัล: $ alias alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff' ถ้าฉันเปิดเทอร์มินัล~ฉันจะได้รับข้อผิดพลาด: svn: E155007: '/home/dotancohen' is not a working copy svn: …
10 bash  shell  quoting  alias  bashrc 

6
แสดงฟิสิคัลดิสก์เท่านั้นเมื่อใช้ df และ mount
เมื่อฉันใช้dfหรือmountฉันส่วนใหญ่สนใจในฟิสิคัลพาร์ติชันดิสก์ ทุกวันนี้ผลลัพธ์ของคำสั่งเหล่านั้นถูกครอบงำด้วยระบบไฟล์ชั่วคราวและเสมือนกลุ่ม cg และสิ่งอื่น ๆ ที่ฉันไม่สนใจเป็นประจำ พาร์ติชันทางกายภาพของฉันในผลลัพธ์เริ่มต้นด้วย ' /' ดังนั้นฉันพยายามสร้างนามแฝงสำหรับdfและmount: alias df1="df | egrep '^/'" alias mount1="mount | egrep '^/'" ที่ทำงาน OK สำหรับmount1(แม้ว่ามันแสดงให้เห็นว่า ' /' สีแดง) แต่สำหรับdf1ผมจะบางครั้งเหมือนจะเพิ่ม-hตัวเลือกในการและไม่สามารถทำdf df1 -hฉันไม่ต้องการมีนามแฝงสำหรับชุดค่าผสมของตัวเลือกทั้งหมดที่ฉันอาจต้องการใช้ ฉันต้องดูการกำหนดฟังก์ชั่นใน bash (ฉันไม่ต้องการ) หรือไม่? มีวิธีแก้ปัญหาที่ดีกว่าdf1หรือไม่?

2
นามแฝงใหม่ไม่สามารถใช้ได้หลังจาก
ถึงตอนนี้ฉันคิดว่าเซมิโคลอนในเชลล์มีความหมายเดียวกับตัวแบ่งบรรทัด (อย่างใด) ดังนั้นฉันจึงแปลกใจที่สำหรับ alias <name>=<replacement text>; <name> <name>ไม่เป็นที่รู้จักในขณะที่มันเป็นที่รู้จักในบรรทัดถัดไป csh, tcsh, sh, kshและbashประพฤติเดียวกัน อย่างน้อยcshก็ไม่สำคัญว่าจะใช้นามแฝงโดยตรงหรือหากสคริปต์มีที่มาก่อนเซมิโคลอน - นามแฝงจะไม่รู้จัก;แต่จะรู้จักในบรรทัดคำสั่งถัดไป นี่เป็นข้อบกพร่องหรือพฤติกรรมนี้ตั้งใจหรือไม่
9 shell  alias 

2
เรียกใช้คำสั่งอื่นก่อนเรียกใช้คำสั่งที่ผู้ใช้ต้องการเรียกใช้
สมมติว่าฉันต้องการแก้ไขพฤติกรรมดั้งเดิมของlsเครื่องมือด้วยวิธีนี้: $ ls Hello World file1 file2 ... ฉันจะทำสิ่งนี้ได้อย่างไร เมื่อเรียกใช้ผมอยากจะเรียกใช้คำสั่งอื่นพูดให้ของlsecho "Hello World!" วิธีแก้ปัญหาอย่างรวดเร็วที่ฉันเห็นใช้นามแฝง: alias orig_ls="ls" alias ls='echo "Hello World!"' แต่นี้ไม่ได้เป็นทางออกที่แท้จริงตั้งแต่เมื่อฉันจะทำงานมันจะเอาท์พุทorig_ls"Hello World!"

1
สร้างนามแฝงชั่วคราวหลายรายการ
ฉันไม่ใช่ผู้ใช้รูต & ฉันไม่สามารถเข้าถึงไฟล์นามแฝงส่วนกลางที่มีชื่อแทนทั้งหมดที่สร้างขึ้น แต่ฉันต้องการสร้างชื่อแทนบางส่วนที่ยังคงใช้งานได้เฉพาะสำหรับเซสชันที่ฉันเข้าสู่ระบบฉันใช้คำสั่งalias x='cd /parent/child'เพื่อสร้าง นามแฝงที่จะทำให้ฉันพิมพ์xบนคอนโซล & ฉันเปลี่ยน dir เป็น / Parent / Child อย่างไรก็ตามฉันต้องการสร้างชื่อแทนหลายรายการและฉันไม่ต้องการพิมพ์ชื่อแทนแต่ละรายการที่ฉันสร้างทุกครั้ง ฉันพยายามวางชื่อแทนทั้งหมด 'ทำสิ่งนี้' บรรทัดในไฟล์ (ให้สิทธิ์ 777) โดยหวังว่าเมื่อใช้งานไฟล์นามแฝงเหล่านี้ทั้งหมดจะถูกสร้างขึ้นทุกครั้งที่ฉันลงชื่อเข้าใช้ แต่นั่นไม่ได้เกิดขึ้น เช่น alias x='cd /parent/child' alias y='cd /a/b/c' alias z='tail -0f some.log' ฉันยังลองนี้ในไฟล์ แต่ไร้ประโยชน์: alias x='cd /parent/child';alias y='cd /a/b/c';alias z='tail -0f some.log' ไม่มีชื่อนามแฝงที่ฉันได้ลองแล้วมีอยู่ในชื่อแทนส่วนกลางแล้ว (ฉันพิมพ์นามแฝงและเห็นผลลัพธ์บนหน้าจอ)
9 alias 

1
rm สามารถลบไดเรกทอรีที่ว่างเปล่าซ้ำ ๆ ได้หรือไม่
ใน Unix เวอร์ชันเก่าrmคำสั่งจะลบไดเรกทอรีถ้าว่างเปล่า จากหน้าคู่มือการวิจัย Unix Eighth Edition สำหรับ rm : "ถ้ารายการเป็นไดเรกทอรีรายการนั้นจะถูกลบออกหากว่างเปล่า" ฉันชอบพฤติกรรมนี้ดังนั้นฉันจึงมีนามแฝงนี้ในของฉัน/etc/profile: alias rm='rm -d'ฉันใช้รุ่น GNU coreutils rmซึ่ง-dบอกrmให้ไปข้างหน้าและลบไดเรกทอรีหากไม่มี จนถึงตอนนี้ดีมาก นามแฝงนี้อนุญาตให้ฉันใช้rmเหมือนวันเก่า ๆ อย่างไรก็ตามฉันต้องการที่จะก้าวไปอีกขั้น ฉันต้องการrmเพื่อลบไดเรกทอรีแม้ว่าไดเรกทอรีนั้นจะมีไดเรกทอรีอื่นอยู่ตราบใดที่ไดเรกทอรีมีเพียงสิ่งเดียว ไม่สำคัญว่าโครงสร้างไดเรกทอรีจะลึกแค่ไหนหากไม่มีไฟล์อยู่ในนั้นเพียงแค่ว่างเปล่า (เมื่อคุณไปถึงด้านล่าง) ไดเรกทอรีฉันต้องการrmลบออกทั้งหมด สิ่งนี้สามารถเขียนเป็นนามแฝงซึ่งจะยังคงทำงานเหมือนปกติrmและลบไฟล์ใด ๆ ที่ส่งไปหรือไม่
9 directory  rm  alias 

2
Bash: ใช้นามแฝงในตัวแปร
ฉันกำลังเขียนสคริปต์ทุบตีที่เรียกใช้อาร์กิวเมนต์แต่ละตัวเป็นคำสั่ง สิ่งนี้ใช้ได้กับคำสั่งในของฉันPATHแต่ไม่ใช่สำหรับนามแฝง ฉันสามารถเรียกนามแฝงในสคริปต์โดยตรง แต่ฉันไม่สามารถเรียกนามแฝงที่ถูกส่งผ่านเป็นอาร์กิวเมนต์ได้ ปัญหา (ฉันถือว่า) เป็นนามแฝงที่จะขยายก่อนตัวแปร มีวิธีเรียกใช้นามแฝงจากตัวแปรหรือไม่? สคริปต์ตัวอย่าง: #!/bin/bash # File: runall shopt -s expand_aliases source ~/.aliases while (( "$#" )); do $1 shift done runall "echo test"ทำงานได้ แต่runall "myalias"ให้runall: line 8: myalias: command not found
9 bash  alias 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.