นามแฝงคือคำสั่งอะไร


28

ใครสามารถบอกฉันว่านามแฝงคำสั่งเทอร์มินัลllมีไว้เพื่ออะไร? ฉันทั้งหมดสามารถค้นหาออนไลน์คือหลาย ๆ คนบอกว่ามันเป็นนามแฝงสำหรับls -lหรือหรือls -la ls -ltrแต่นั่นก็ผิด ผลลัพธ์มีลักษณะที่แตกต่างกัน มีวิธีการค้นหาllและดูไวยากรณ์ของมันหรือไม่

คำตอบ:


76

คุณสามารถใช้aliasหรือtypeคำสั่งเพื่อตรวจสอบว่านามแฝงเฉพาะหมายถึงอะไร:

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

โปรดทราบว่านามแฝงอาจใช้นามแฝงอื่นดังนั้นคุณอาจต้องตรวจสอบซ้ำเช่นในกรณีที่llคุณควรตรวจสอบlsคำสั่งที่เรียก:

$ alias ls
alias ls='ls --color=auto'

$ type ls
ls is aliased to `ls --color=auto'

ดังนั้นllจริงๆแล้วหมายถึง:

ls --color=auto -alF

10
โปรดทราบว่าในกรณีทั่วไปคำสั่งอาจมีหลายคำจำกัดความพร้อมกัน type -a commandnameจะเปิดเผยทั้งหมด - มันจะบอกคุณว่าคำสั่งเป็นหนึ่งในนามแฝง, ฟังก์ชั่น, builtin หรือไฟล์ปฏิบัติการหนึ่งไฟล์ขึ้นไปใน PATH ของคุณตามลำดับที่มาก่อน สิ่งนี้ช่วยในการทำความเข้าใจว่าทำไมยกตัวอย่างเช่นการยกเลิกคำสั่งไม่ได้ทำให้มันกลับไปสู่พฤติกรรมที่คาดหวัง
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

alias ll='ls -lh'ผมอยากแนะนำให้ คุณสามารถเรียกใช้ls -lหากคุณต้องการขนาดเป็นไบต์แทนที่จะเป็น B / kiB / MiB / GiB ที่เป็นมิตรกับมนุษย์
Peter Cordes

13

llเป็นนามแฝงที่กำหนดไว้ในของคุณ~/.bashrcหากคุณไม่ได้เปลี่ยนเป็นls -alF:

$ grep ll= <~/.bashrc
alias ll='ls -alF'

สามตัวเลือกเหล่านี้คือ:

  • -a, - ทั้งหมด - อย่าเพิกเฉยต่อรายการที่ขึ้นต้นด้วย
  • -l - ใช้รูปแบบรายการแบบยาว
  • -F, --classify - ผนวกตัวบ่งชี้ (หนึ่งใน * / => @ |) ไปยังรายการ

เช่น

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

แสดงว่าlsตัวเองเป็นอีกชื่อแทนสำหรับls --color=auto:

ด้วย--color=auto, lsปล่อยรหัสสีเฉพาะเมื่อเชื่อมต่อเอาท์พุทมาตรฐานกับเทอร์มินัล LS_COLORSตัวแปรสภาพแวดล้อมสามารถเปลี่ยนการตั้งค่า ใช้dircolors คำสั่งเพื่อตั้งค่า


ไม่จำเป็นต้อง. bashrc หากคุณใช้เชลล์อื่นมันจะถูกกำหนดไว้ในไฟล์. rc สำหรับเชลล์นั้น -, cshrc, .tchshc และอื่น ๆ
jamesqf

@jamesqf ผมคิดว่าคนที่ใช้เปลือกแตกต่างกันยังรู้ซึ่งนามแฝงกำหนดไว้ล่วงหน้าในนั้น - ฉันเอาคำถามจะเกี่ยวกับการติดตั้ง Ubuntu เริ่มต้นที่bashเป็นเปลือกเริ่มต้นสำหรับผู้ใช้และนามแฝงllที่กำหนดไว้ใน/etc/skel/.bashrcที่ถูกคัดลอกลงทุกใหม่ โฮมไดเรกทอรีของผู้ใช้ แน่นอนคุณสามารถใช้ไฟล์ใดก็ได้เพื่อจัดเก็บชื่อแทนของคุณเอง - สิ่งที่คุณต้องมีก็คือแหล่งที่มา
ของหวาน

2
ไม่จำเป็นต้องเปลี่ยนเส้นทางไฟล์ไปยังไฟล์grepนั้นจะใช้ชื่อไฟล์เป็นอาร์กิวเมนต์ ในขณะที่การ grepping ไฟล์เริ่มต้นจะช่วยให้คุณค้นหาตำแหน่งที่นามแฝง (อีกครั้ง) กำหนดไว้ (โปรดทราบว่ามันอาจจะอยู่ในไฟล์โดย/etcรู้ว่าจะช่วยให้คุณไม่ต้องเกาหัวถ้าคุณลบไฟล์นั้นออกจากไฟล์เริ่มต้นของผู้ใช้ การเปลี่ยนแปลงพฤติกรรมของมัน) ถ้าคุณเพียงแค่ต้องการได้อย่างรวดเร็วรู้ว่าสิ่งที่หมายคือนามแฝงคำสั่งตามที่ระบุไว้ในคำตอบที่ได้รับการยอมรับจะทำผลงานได้
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

@DennisWilliamson ไม่จำเป็นต้องปล่อยให้bashเปิดไฟล์ แต่มันดีกว่ามาก! ประโยคสุดท้ายในการโพสต์คำถามอ่านมีวิธีการค้นหาllและดูไวยากรณ์ของมัน? นั่นคือสิ่งที่คำตอบของฉันตอบ
ของหวาน

3

คุณสามารถดูใน ~ / .bashrc ของคุณ (หรือไฟล์บางไฟล์ที่ชื่อแทนของคุณ) หรือคุณสามารถเขียนคำสั่งเหล่านี้ในเชลล์ของคุณ:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

แต่ทำไมต้องใช้ find โดยไม่มี -name ". *" สาเหตุที่คุณสามารถใส่สิ่งนี้ใน. bashrc ของคุณ

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

เนื่องจาก "ll" เป็นนามแฝงจึงไม่ใช่สิ่งจำเป็นที่มีเพียงความหมายเดียว (ll = 'ls -alF --color') คุณจึงสามารถตั้งชื่อแทน "ll" เหมือนคำสั่งอื่นฉันไม่ทราบ "rm" . ฉันคิดว่ามันเป็นแบบแผนมากกว่า (ผลิตภัณฑ์ที่ใช้กันทั่วไป)

แต่ "ll" อาจเป็นโปรแกรมที่เก็บไว้ในโฟลเดอร์ใด ๆ ของ PATH ของคุณ ตัวอย่างเช่นหากคุณมีโฟลเดอร์ชื่อ "ถังขยะ" ในบ้านของคุณสร้างสคริปต์ "ll" ที่มีบางสิ่งบางอย่าง

#!/bin/bash
ls -lhar

แต่จะเกิดอะไรขึ้นถ้า PATH ของคุณถูกเปลี่ยนแปลงเพื่อเพิ่มโฟลเดอร์อื่นที่มีคำสั่ง "ll" ใหม่? สำหรับข้อมูลที่น่าสนใจเพิ่มเติมคุณสามารถดูลิงก์ต่อไปนี้เพื่อตอบคำถามที่เกี่ยวข้อง


0

ไม่จำเป็นต้องแยกวิเคราะห์ ~ / .bashrc หรือสคริปต์อื่น ๆ คุณสามารถตรวจสอบค่าปัจจุบันของaliasคำสั่งการพิมพ์ชื่อแทนทั้งหมดในเทอร์มินัล มันจะนำนามแฝงที่กำหนดไว้ทั้งหมดพร้อมคำจำกัดความของพวกเขาลงบนหน้าจอของคุณ


สวัสดีและยินดีต้อนรับสู่ Askubuntu คำตอบนี้เพิ่มบางสิ่งไปยังคำตอบที่ยอมรับได้อย่างไร
Bruni

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