Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

15
เชลล์เชิงอ็อบเจ็กต์สำหรับ * ระวัง
คำนำ: ฉันรักการทุบตีและไม่มีความตั้งใจที่จะเริ่มโต้เถียงหรือสงครามศักดิ์สิทธิ์และหวังว่านี่จะไม่ใช่คำถามที่ไร้เดียงสาอย่างยิ่ง คำถามนี้ค่อนข้างเกี่ยวข้องกับโพสต์นี้ใน superuser แต่ฉันไม่คิดว่า OP รู้จริง ๆ ว่าเขาขออะไร ฉันใช้ bash บน FreeBSD, linux, OS X และ cygwin บน Windows ฉันเคยมีประสบการณ์มากมายกับ PowerShell บน Windows เมื่อเร็ว ๆ นี้ มีเชลล์สำหรับ * nix, มีอยู่แล้วหรือในงานที่เข้ากันได้กับ bash แต่เพิ่มเลเยอร์ของสคริปต์เชิงวัตถุลงในมิกซ์หรือไม่ สิ่งเดียวที่ฉันรู้ว่าใกล้เข้ามาคือคอนโซลหลาม แต่เท่าที่ฉันสามารถบอกได้ว่ามันไม่ได้ให้การเข้าถึงสภาพแวดล้อมเชลล์มาตรฐาน ตัวอย่างเช่นผมไม่สามารถเพียงcd ~และlsจากนั้นchmod +x fileภายในคอนโซลหลาม ฉันจะต้องใช้หลามเพื่อทำงานเหล่านั้นมากกว่าไบนารียูนิกซ์มาตรฐานหรือโทรไบนารีโดยใช้รหัสหลาม มีเชลล์อยู่จริงหรือไม่?


2
ความแตกต่างระหว่าง ! vs !! vs * in / etc / shadow
ฟิลด์ที่สองใน/etc/shadowไฟล์Linux แสดงรหัสผ่าน อย่างไรก็ตามสิ่งที่เราได้เห็นคือ: ฟิลด์รหัสผ่านบางส่วนอาจมีเครื่องหมายอัศเจรีย์ <account>:!:..... เขตข้อมูลรหัสผ่านบางส่วนอาจมีเครื่องหมายอัศเจรีย์สองครั้ง <account>:!!:..... ฟิลด์รหัสผ่านบางส่วนอาจมีเครื่องหมายดอกจัน <account>:*:..... จากการค้นคว้าทางอินเทอร์เน็ตและผ่านทางกระทู้นี้ฉันสามารถเข้าใจได้ว่า*หมายถึงรหัสผ่านที่ไม่เคยถูกสร้างขึ้น!หมายความว่าถูกล็อค บางคนสามารถอธิบายว่าอัศเจรีย์ ( !!) หมายถึงอะไร และมันแตกต่างจาก ( !) อย่างไร?
38 linux  passwd  shadow 

6
ข้อผิดพลาด pacman“ มีอยู่ในระบบแฟ้ม”
ฉันวิ่งsudo pacman -Syuและฉันพบข้อผิดพลาดที่น่าสนใจ: ข้อผิดพลาด: ล้มเหลวในการส่งทรานแซกชัน (ไฟล์ที่ขัดแย้ง) exists in filesystemและรายการยาวของไฟล์ที่ตามมาด้วย ผลลัพธ์เต็มรูปแบบอยู่ที่นี่: http://ix.io/lLw ปรากฏว่าไฟล์เหล่านี้จำนวนมากไม่เกี่ยวข้องกับแพ็คเกจเมื่อฉันตรวจสอบด้วยpacman -Qo <path-to-file>แต่ฉันไม่ได้ตรวจสอบทั้งหมด ฉันมีการเชื่อมต่อที่อ่อนแอเมื่อฉันวิ่งpacman -Syuแต่ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันอัปเดตในภายหลัง: http://ix.io/lLx ฉันควรทำอย่างไร? ฉันควรตรวจสอบไฟล์ทั้งหมดและลบไฟล์ที่ไม่มีแพ็คเกจที่เกี่ยวข้องหรือไม่ ฉันควรบังคับให้อัปเดต (ด้วยsudo pacman -S --force <package-name>) ปรับปรุง ฉันพยายามเรียกใช้sudo pacman -S --force <package-name>และได้รับสิ่งนี้: [my-pc]/home/average-joe$ pacman -Qo /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info error: No package owns /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info ดูเหมือนว่าpacman -S --force <packageจะไม่เขียนทับไดเรกทอรีที่มีไฟล์ จากคน: การใช้ - บังคับใช้จะไม่อนุญาตให้เขียนทับไดเรกทอรีด้วยไฟล์หรือติดตั้งแพ็คเกจด้วยไฟล์และไดเรกทอรีที่ขัดแย้งกัน ฉันควรลบไดเรกทอรีที่ขัดแย้งกันหรือไม่ (พวกเขาไม่มีแพ็คเกจที่เกี่ยวข้อง)

3
ไพพ์คำสั่งหลังจาก xargs ไพพ์
HP-UX ***** B.11.23 U ia64 **** ใบอนุญาตผู้ใช้ไม่ จำกัด find . -type d -name *log* | xargs ls -la ให้ฉันชื่อไดเรกทอรี (คนที่มีlogอยู่ในชื่อไดเรกทอรี) ตามด้วยไฟล์ทั้งหมดในไดเรกทอรีนั้น ไดเรกทอรี /var/opt/SID/application_a/log/, /var/opt/SID/application_b/log/, /var/opt/SID/application_c/log/และอื่น ๆ ประกอบด้วยไฟล์บันทึก ฉันต้องการเพียงสอง logfiles ล่าสุดที่จะแสดงตามคำสั่งซึ่งผมมักจะพบการใช้lsls -latr | tail -2 ผลลัพธ์จะต้องมีลักษณะเช่นนี้ .. /var/opt/SID/application_a/log/ -rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1 -rw-rw-rw- 1 user1 user1 …
38 shell  find  pipe  xargs 

2
จะค้นหาและลบไฟล์ที่เก่ากว่าวันที่ระบุในยูนิกซ์ได้อย่างไร?
ฉันมีหนึ่งโฟลเดอร์สำหรับบันทึกด้วย 7 โฟลเดอร์ในนั้น โฟลเดอร์ทั้งเจ็ดนั้นก็มีโฟลเดอร์ย่อยอยู่ด้วยและโฟลเดอร์ย่อยเหล่านั้นก็มีโฟลเดอร์ย่อยด้วยเช่นกัน ฉันต้องการลบไฟล์ทั้งหมดที่เก่ากว่า 15 วันในโฟลเดอร์ทั้งหมดรวมถึงโฟลเดอร์ย่อยโดยไม่ต้องแตะโครงสร้างโฟลเดอร์นั่นหมายถึงเฉพาะไฟล์ mahesh@inl00720:/var/dtpdev/tmp/ > ls A1 A2 A3 A4 A5 A6 A7 mahesh@inl00720:/var/dtpdev/tmp/A1/ > ls B1 B2 B3 B4 file1.txt file2.csv
38 find 

8
เหตุใดฉันจึงไม่สามารถเรียกใช้แอป GUI จาก "รูท": "ไม่ได้ระบุโปรโตคอล"
ฉันติดตั้งเดเบียนลงบนเครื่องเมื่อคืนนี้ ตอนนี้ฉันไม่เข้าใจว่าทำไมฉันไม่สามารถเรียกใช้แอพ GUI จากเทอร์มินัลเมื่อทำงานเป็นรูท ตัวอย่างเช่น: sudo -i glxgears สร้างเอาต์พุตต่อไปนี้: No protocol specified Error: couldn't open display :0 แต่เมื่อฉันเปิดเทอร์มินัลครั้งแรกฉันสามารถเรียกใช้glxgearsจากบัญชีผู้ใช้ หลังจากที่ฉันทำอย่างsudo -iนั้นปัญหาก็จะหมดไป สิ่งนี้เกิดขึ้นสำหรับแอพ GUI ใด ๆ ที่ฉันพยายามเรียกใช้ ฉันคิดว่ามันอาจเกี่ยวข้องกับ X11 แต่ฉันไม่แน่ใจ
38 debian  x11  kde  gui 

4
grep จากจุดสิ้นสุดของไฟล์ไปยังจุดเริ่มต้น
ฉันมีไฟล์ที่มีเส้นประมาณ 30.000.000 บรรทัด (การบัญชี Radius) และฉันต้องการค้นหาคู่สุดท้ายของรูปแบบที่กำหนด คำสั่ง: tac accounting.log | grep $pattern ให้สิ่งที่ฉันต้องการ แต่ช้าเกินไปเพราะระบบปฏิบัติการจะต้องอ่านไฟล์ทั้งหมดก่อนแล้วจึงส่งไปที่ไพพ์ ดังนั้นฉันต้องการสิ่งที่รวดเร็วที่สามารถอ่านไฟล์จากบรรทัดสุดท้ายถึงบรรทัดแรก

2
เอกสารเกี่ยวกับตัวแปร LESS_TERMCAP_ *?
ฉันเห็นสีสวย ๆเหล่านี้ใน manpages ที่ดูน้อยลงเมื่อตั้งกลุ่มตัวแปรเหล่านี้ พวกเขาหมายถึงอะไรเอกสารอยู่ที่ไหน นี่แปลว่าน้อยหรือ termcap? ภาพหน้าจอ
38 terminal  colors  man  less  termcap 

2
เหตุใดไดเรกทอรีใหม่จึงมีฮาร์ดลิงก์นับ 2 ก่อนที่จะเพิ่มสิ่งใดเข้าไปในนั้น
สมมติว่าฉันเพิ่งสร้างไดเรกทอรีใหม่ไดเรกทอรีแล้วฉันทำคำสั่ง ls -ld ฉันเห็นว่าจำนวนฮาร์ดลิงก์คือ 2 อะไรทำให้ฮาร์ดลิงก์ 2 ตั้งแต่เริ่มต้น? นอกจากนี้ยังมีจำนวนไดเรกทอรีย่อยในไดเรกทอรีปัจจุบันเท่ากับจำนวนฮาร์ดลิงก์ - 2?
38 directory  ls 

6
ทำไมเราต้องใช้คำสั่ง“ at” ใน Linux?
ฉันกำลังศึกษาโค้ดที่ใช้atคำสั่ง ฉันมองไปรอบ ๆ และพบว่ามันถูกใช้เพื่อเรียกใช้งานแบ็ตช์ มันถูกใช้เพื่อกำหนดเวลางาน มันถูกกำหนดให้เป็นอินพุตคำสั่งและเวลาสัมพันธ์หรือสัมบูรณ์ ดังนั้นคำถามแรกของฉันคือ: ทำไมatคำสั่งใช้? ภายใต้สถานการณ์ใดที่เราต้องใช้at? ฉันพบมันเมื่อมีรหัสสคริปต์ทุบตีพยายามถอนการติดตั้งซอฟต์แวร์และเมื่อมีการเริ่มบริการพื้นหลังบางอย่าง คำถามที่สองของฉัน: อะไรคือความแตกต่างระหว่างการมีคำสั่งที่ดำเนินการเป็นงานแบทช์และมีคำสั่งดำเนินการในการเรียกคำสั่งโดยตรง (หรือใน subshell)?
38 bash  at 

9
วิธีง่ายๆในการวางเอาต์พุตบรรทัดคำสั่งเพื่อวางบริการ bin หรือไม่
มีเครื่องมือบรรทัดคำสั่งบน Linux ที่อนุญาตให้คุณโพสต์เอาต์พุตจากคำสั่งหรือไฟล์ข้อความโดยตรงไปยังบริการแชร์เช่น pastebin.com หรือไม่

3
การส่งออกตัวแปรที่มีจุด (.) อยู่ในนั้น
วิธีการส่งออกตัวแปรที่มีจุดอยู่ในนั้น ฉันได้รับ 'ชื่อตัวแปรที่ไม่ถูกต้อง' เมื่อพยายาม: export my.home=/tmp/someDir -ksh: my.home=/tmp/someDir: invalid variable name แม้แต่การหลบหนี metacharacter dot (.) ก็ไม่ได้ช่วยเช่นกัน $ export my\.home=/tmp/someDir export: my.home=/tmp/someDir: is not an identifier

3
วิธีทำให้ zsh เสร็จแล้วแสดงการคาดเดาครั้งแรกในบรรทัดเดียวกัน (เหมือนของปลา)?
ใน Fish เมื่อคุณเริ่มพิมพ์การเติมข้อความอัตโนมัติจะแสดงการเติมข้อความอัตโนมัติครั้งแรกในบรรทัดนั้นโดยอัตโนมัติ ใน zsh คุณต้องกดที่แท็บและมันจะแสดงการเติมข้อความอัตโนมัติด้านล่าง อย่างไรก็ตามมีการทำให้ zsh ทำตัวเหมือนปลามากขึ้นในเรื่องนี้หรือไม่? (ฉันใช้Oh My Zsh ... )
38 zsh  autocomplete  fish 

5
จะทดสอบว่าไบนารีลินุกซ์ได้รับการรวบรวมเป็นรหัสอิสระหรือไม่?
เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ว่า (อย่างน้อยใน Fedora และ Red Hat Enterprise Linux) โปรแกรมปฏิบัติการที่คอมไพล์เป็น Position Independent Executables (PIE) ได้รับการปกป้องพื้นที่แอดเดรสแบบสุ่ม (ASLR) ที่แข็งแกร่งยิ่งขึ้น ดังนั้น: ฉันจะทดสอบได้อย่างไรว่ามีการประมวลผลไฟล์ใดไฟล์หนึ่งที่เรียกว่า Position Independent Executable บน Linux หรือไม่?

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