ลบไดเร็กทอรี / usr / local / bin โดยไม่ได้ตั้งใจ


2

ฉันเป็นมือใหม่กับยูนิกซ์ ฉันเพิ่งเริ่มการสอนทุบตีซึ่งฉันได้สร้างสคริปต์ทุบตีสวัสดีชาวโลกเช่นนี้

#!/bin/bash
echo 'Hello World!'

จากนั้นฉันย้ายมันไปที่ / usr / local / bin โดยใช้คำสั่งนี้:

sudo mv hello.sh /usr/local/bin

ตอนนี้ / bin ภายใต้ / usr / local ไม่ใช่ไดเรกทอรีอีกต่อไป แต่เป็นไฟล์และเมื่อใช้ ls -l กับมันฉันจะได้ผลลัพธ์นี้:

MacBook-Pro-de-Omar:local omarnavarro$ ls
bin
MacBook-Pro-de-Omar:local omarnavarro$ ls -l
total 8
-rwxr-xr-x  1 omarnavarro  staff  32 Apr 11 19:27 bin
MacBook-Pro-de-Omar:local omarnavarro$ cat bin
#!/bin/bash
echo 'Hello world!'

ฉันเข้าใจว่า / usr / local / bin เป็นส่วนหนึ่งของ $ PATH และฉันเชื่อว่าต้องมีคำสั่งมากมายในนั้น สิ่งนี้จะส่งผลกระทบต่อฉันมากแค่ไหน? ฉันจะเรียกคืนคำสั่งต่าง ๆ ที่เคยใช้ใน / usr / local / bin ได้อย่างไรเมื่อมันเป็นไดเรกทอรี ฉันไม่อยากจะเชื่อเลยว่าฉันเมาอย่างรุนแรง!

คำตอบ:


5

บัญญัติคำตอบของหลักสูตรคือการคืน / usr / local / bin จากการสำรองข้อมูลล่าสุดของคุณ ...

ข่าวดีก็คือว่าถ้าmvคำสั่งนั้นประสบความสำเร็จและสร้างไฟล์ชื่อbinนั้น/usr/local/binก็ไม่ได้มีอยู่ในไดเรกทอรีในระบบของคุณและคุณไม่ได้สูญเสียอะไรเลย มิฉะนั้นhello.shจะถูกย้ายไปยัง/usr/local/binไดเรกทอรี (ซึ่งน่าจะเป็นความตั้งใจของการกวดวิชา) มันจะไม่ได้แทนที่

สิ่งนี้ไม่ได้คาดไม่ถึงเนื่องจาก/usr/local/binโดยทั่วไปจะไม่มีอยู่ใน Mac จนกว่าคุณหรือแอปของบุคคลที่สามจะสร้างมันขึ้นมา แต่ตอนนี้คุณได้เรียนรู้พลังที่ยอดเยี่ยมของบรรทัดคำสั่งแล้วคุณรู้ว่าทำไมการสำรองข้อมูลที่ดีจึงเป็นสิ่งสำคัญ;)

หากคุณ mangled /usr/binคุณจะต้องติดตั้งระบบใหม่:

ข่าวดีก็คือการป้องกันความถูกต้องของระบบ (SIP) ทำให้การคลานไฟล์ระบบยากขึ้น sudo

PS: วิธีง่ายๆในการป้องกันไม่ให้ปัญหาเกิดขึ้นอยู่เสมอเพิ่มต่อท้าย/ถ้าย้ายไฟล์ไปยังไดเรกทอรีอื่น sudo mv hello.sh /usr/local/bin/(หรือพึ่งพาแท็บชเสร็จจะเป็นสิ่งเดียวกัน): วิธีนี้คุณจะได้รับข้อความแสดงข้อผิดพลาดหากไม่มีไดเรกทอรีเป้าหมาย


คุณเจ๋งมาก. ขอบคุณสำหรับคำตอบที่รวดเร็ว ฉันคาดหวังว่าจะมีบางสิ่งบางอย่างที่ล้มเหลวในบรรทัด แต่เนื่องจากคำสั่ง 'whereis' ทั้งหมดสั่งให้ฉัน 'usr / bin' ฉันคิดว่าฉันสบายดี
โอมาร์ N

@ fd0 ขอบคุณสำหรับการชี้แจง ฉันไม่ได้จำ / usr / ความเป็นอยู่ในท้องถิ่นที่นั่นเมื่อผมสะอาดเซียติดตั้งไม่กี่เดือนที่ผ่านมาและมันก็ไม่ได้อยู่ในรุ่นก่อนหน้าของ OS X แต่ดูเหมือนว่าคุณจะถูกต้อง Sierra ... จะอัปเดตคำตอบเพื่อชี้แจง
calum_b
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.