ติดตั้งcoreutilsกับ Homebrew และนามแฝงllไปgls -Flh --group-directories-firstแทน
brew install coreutils ติดตั้ง GNU Coreutilsในกรณีที่ไม่ได้ติดตั้ง
- ใช้ใน
alias ll='gls -Flh --group-directories-first'
(หากคุณต้องการใช้ไฟล์เดียวกันในระบบปฏิบัติการทั้งสองดูด้านล่าง).bashrc
.bashrc
ใน Ubuntu lsให้บริการโดย GNU Coreutilsซึ่ง Ubuntu มีอยู่เสมอ นั่นเป็นเหตุผลที่lsรองรับ--group-directories-firstใน Ubuntu อาจเป็นไปได้ว่าคุณเคยใช้ GNU Coreutils เวอร์ชันของlsบน macOS มาก่อนเช่นกันซึ่ง Homebrew ติดตั้งเหมือนglsแต่สามารถใช้งานได้lsหลายวิธี
lsเป็นคำสั่งภายนอกไม่ใช่ Bash ในตัว การใช้เวอร์ชันอื่นหรือบิลด์ของ Bash ไม่ควรกระทบกับมัน ฉันไม่แน่ใจว่าเกิดอะไรขึ้นเมื่อคุณอัปเกรด Bash โดยใช้ Homebrew บางทีมากกว่า Bash ก็อัพเกรดเช่นกัน บางทีคุณอาจมีlsฟังก์ชั่นเชลล์หรือชื่อแทนที่กำหนดไว้ในไฟล์กำหนดค่าส่วนกลางที่ถูกแทนที่ บางทีคุณอาจมีลิงก์สัญลักษณ์lsที่ชี้ไปglsและเขียนทับ บางทีคุณอาจจะมีอะไรแบบนั้น แต่คุณ$PATHเปลี่ยนไป ไม่ว่าจะเกิดอะไรขึ้น GNU Coreutils lsสนับสนุน--group-directories-firstและเปลี่ยนไปใช้มัน (เพราะฉันเชื่อว่า bmike กำลังแนะนำ ) ควรแก้ไขปัญหาของคุณ
หากด้วยเหตุผลบางอย่างที่คุณต้องการใช้.bashrcไฟล์เดียวกันแน่นอนในทั้งสองระบบมีวิธีที่เป็นไปได้สองสามประการ คุณสามารถสร้าง symlink, wrapper script, shell function, หรือ (เพราะ Bash alias ส่วนขยายนั้นไม่ใช่แบบ nonrecursive) shell alias สำหรับglsระบบ Ubuntu ของคุณ แต่ผมขอแนะนำให้แทนการตรวจสอบที่ OS ที่ถูกนำมาใช้.bashrcในการ แม้ว่าคุณจะได้รับllนามแฝงที่แตกต่างกันที่กำหนดไว้ในแต่ละระบบวิธีนี้มีประโยชน์ในการเป็นเอกสารด้วยตนเอง คุณ.bashrcจะรู้สึกดีกับคุณในหนึ่งปีหรือหนึ่งเดือน
if [ "$OSTYPE" == linux-gnu ]; then # Is this the Ubuntu system?
alias ll='ls -Flh --group-directories-first'
else
alias ll='gls -Flh --group-directories-first'
fi
หรือหากคุณพบว่าคุณชอบที่จะเรียกใช้ Coreutils lsแม้ว่าคุณจะไม่ได้ใช้llนามแฝงคุณสามารถสร้างlsนามแฝงได้ที่gls:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(ขอบคุณไปที่soroushjpสำหรับการจับข้อผิดพลาดในสคริปต์รุ่นก่อนหน้านี้)
lsหรือ macOSlsหรือไม่? คุณเคยลองอีกไหม?