Unix & Linux

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

7
ฉันจะจำวิธีใช้การเปลี่ยนเส้นทางได้อย่างไร
ฉันรู้ว่า program > /dev/null 2>&1 ทำ. มันเปลี่ยนเส้นทางการส่งออกไปยัง/dev/nullและ2>&1หมายถึงการเปลี่ยนเส้นทางการส่งออกข้อผิดพลาดในสถานที่เดียวกันที่ส่งออก ปัญหาของฉันคือฉันต้อง google เสมอเพราะฉันไม่เคยจำได้ ดังนั้นฉันพยายาม&2>1, 1>2&, 1>&2... ฉันพยายามทุกชุดจนกว่าฉัน google มัน ... เคล็ดลับในการจดจำได้ง่ายคืออะไร
40 shell 

5
วิธีการกำหนดเชลล์สคริปต์ที่จะต้องจัดหาแหล่งที่มาไม่ได้ทำงาน
ฉันกำลังกำหนดเชลล์สคริปต์ซึ่งผู้ใช้ควรsourceจะดำเนินการมากกว่า มีวิธีธรรมดาหรือชาญฉลาดในการบอกกล่าวผู้ใช้ว่าเป็นเช่นนี้ผ่านทางนามสกุลไฟล์หรือไม่? มีรหัสเชลล์ที่ฉันสามารถเขียนในไฟล์ของตัวเองซึ่งจะทำให้มันสะท้อนข้อความและออกจากถ้ามันถูกดำเนินการแทนแหล่งที่มาเพื่อให้ฉันสามารถช่วยให้ผู้ใช้หลีกเลี่ยงข้อผิดพลาดที่เห็นได้ชัดนี้?
40 bash  shell 

7
มีวิธีการส่งผ่านข้อมูลที่สำคัญใน bash โดยใช้พรอมต์สำหรับคำสั่งใด ๆ ?
สมมติว่าฉันกำลังใช้sha1passเพื่อสร้างแฮชของรหัสผ่านที่ละเอียดอ่อนบางตัวในบรรทัดคำสั่ง ฉันสามารถใช้sha1pass mysecretเพื่อสร้างแฮชของmysecretแต่นี่มีข้อเสียที่mysecretตอนนี้อยู่ในประวัติศาสตร์ทุบตี มีวิธีการที่จะบรรลุเป้าหมายสุดท้ายของคำสั่งนี้ในขณะที่หลีกเลี่ยงการเปิดเผยmysecretในข้อความธรรมดาpasswdหรือไม่โดยใช้คำสั่ง-style? ฉันสนใจวิธีการทั่วไปในการทำเช่นนี้เพื่อส่งผ่านข้อมูลที่ละเอียดอ่อนไปยังคำสั่งใด ๆ วิธีการจะเปลี่ยนเมื่อข้อมูลที่ละเอียดอ่อนถูกส่งผ่านเป็นอาร์กิวเมนต์ (เช่นในsha1pass) หรือใน STDIN ไปยังคำสั่งบางอย่าง มีวิธีการทำสิ่งนี้หรือไม่? แก้ไข : คำถามนี้ดึงดูดความสนใจจำนวนมากและมีคำตอบที่ดีหลายข้อเสนอด้านล่าง สรุปคือ: ตามคำตอบของ @ Kusalanandaเราจะไม่ต้องให้รหัสผ่านหรือความลับเป็นอาร์กิวเมนต์บรรทัดคำสั่งสำหรับยูทิลิตี้ สิ่งนี้มีความเสี่ยงในหลายวิธีตามที่อธิบายไว้โดยเขาและควรใช้ยูทิลิตี้ที่ออกแบบมาดีกว่าที่สามารถรับข้อมูลลับบน STDIN ได้ คำตอบของ @ vfbsilvaอธิบายถึงวิธีการป้องกันไม่ให้สิ่งต่าง ๆ ถูกเก็บไว้ในประวัติทุบตี @ คำตอบของโจนาธานอธิบายวิธีการที่ดีอย่างสมบูรณ์แบบสำหรับการทำสิ่งนี้ให้สำเร็จตราบใดที่โปรแกรมสามารถใช้ข้อมูลลับของมันใน STDIN ดังนั้นฉันตัดสินใจยอมรับคำตอบนี้ sha1passใน OP ของฉันเป็นเพียงตัวอย่าง แต่การสนทนาได้กำหนดว่ามีเครื่องมือที่ดีกว่าที่ใช้ข้อมูลบน STDIN เป็น@R ..บันทึกในคำตอบของเขาการใช้คำสั่งขยายบนตัวแปรไม่ปลอดภัย ดังนั้นโดยสรุปฉันยอมรับคำตอบของ @ Jonathanเนื่องจากเป็นทางออกที่ดีที่สุดเนื่องจากคุณมีโปรแกรมที่ออกแบบมาอย่างดีและมีความประพฤติดี แม้ว่าการส่งรหัสผ่านหรือความลับในฐานะที่เป็นอาร์กิวเมนต์บรรทัดคำสั่งจะไม่ปลอดภัยโดยพื้นฐาน


4
ค่า min และ max ของรหัสการออกใน Linux คืออะไร?
ค่า min และ max ของรหัสทางออกต่อไปนี้ใน Linux คืออะไร: โค้ดทางออกที่ส่งคืนจากไบนารีที่เรียกใช้งานได้ (ตัวอย่างเช่น: โปรแกรม C) รหัสทางออกที่ส่งคืนจากสคริปต์ทุบตี (เมื่อโทรexit) รหัสทางออกที่ส่งคืนจากฟังก์ชัน (เมื่อโทรreturn) ผมคิดว่านี่เป็นเรื่องระหว่างและ0255

5
วิธีการลบการเรียกใช้งานจากไฟล์ซ้ำโดยไม่ต้องแตะโฟลเดอร์ซ้ำ ๆ
ฉันได้สำรองข้อมูลไปยังไดรฟ์ NTFS และการสำรองข้อมูลนี้ได้รับการพิสูจน์แล้วว่ามีความจำเป็นจริงๆ อย่างไรก็ตามไดรฟ์ NTFS messed up สิทธิ์ ฉันต้องการคืนค่าพวกเขาให้เป็นปกติโดยไม่ต้องแก้ไขด้วยตนเองทุกไฟล์ ปัญหาหนึ่งก็คือไฟล์ข้อความทั้งหมดของฉันได้รับสิทธิในการเรียกใช้งานซึ่งผิดปกติ ดังนั้นฉันจึงพยายาม: sudo chmod -R a-x folder\ with\ restored\ backup/ แต่มันผิดเพราะลบการxอนุญาตจากไดเรกทอรีเช่นกันซึ่งทำให้ไม่สามารถอ่านได้ คำสั่งที่ถูกต้องในกรณีนี้คืออะไร?

9
ใช้เคสสำหรับฮาร์ดลิงก์? [ปิด]
ในสถานการณ์ใดที่เราต้องการใช้ฮาร์ดลิงก์มากกว่าซอฟต์ลิงค์? ผมเองไม่เคยทำงานในสถานการณ์ที่ฉันต้องการที่จะใช้เชื่อมโยงยากกว่านุ่มการเชื่อมโยงและมีเพียงการใช้งานในกรณีที่ผมเคยเจอเมื่อค้นหาเว็บdeduplicating ไฟล์เหมือนกัน

5
จะสร้างฟัง TCP ได้อย่างไร?
เกริ่นนำ:ฉันได้สร้างฟังก์ชั่นทุบตีที่สามารถตรวจสอบได้ว่าพอร์ตนั้นสามารถใช้งานได้หรือไม่และเพิ่มขึ้นทีละ 1 ถ้าเป็นเท็จจนกว่าจะถึงหมายเลขพอร์ตสูงสุดที่แน่นอน เช่นถ้าพอร์ต 500 ใช้งานไม่ได้จะมีการตรวจสอบความพร้อมของ 501 จนถึง 550 จุดมุ่งหมาย:เพื่อทดสอบฟังก์ชั่นทุบตีนี้ฉันจำเป็นต้องสร้างช่วงของพอร์ตที่อยู่ในสถานะ LISTEN ความพยายาม:ใน Windows สามารถสร้างพอร์ต LISTEN โดยใช้คำสั่ง PowerShell เหล่านี้ : PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234 PS C:\Users\u> $listener.Start(); PS C:\Users\u> netstat -nat | grep 1234 TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost PS C:\Users\u> $listener.Stop(); PS …
40 shell  networking  tcp 

1
แปลงไฟล์ PDF เป็นขนาดหน้ากระดาษอื่น (US Letter -> A4)
ฉันกำลังพยายามพิมพ์เอกสาร US Letter อย่างง่าย แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถจัดการให้พอดีกับ A4 ได้อย่างถูกต้องเมื่อพิมพ์หลายหน้าต่อรายการ ฉันได้ลองแปลงไฟล์ PDF โดยใช้: gs -o print.pdf -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -pPDFFitPage -dCompatibilityLevel=1.4 input.pdf แต่สิ่งนี้ดูเหมือนจะไม่มีผลกระทบใด ๆ ต่อเอกสาร แต่ก็ยังคงแสดงเป็นตัวอักษรสหรัฐอเมริกา มีวิธีแปลง PDF เป็นฟอร์แมต A4 ไหม?

2
ไวยากรณ์ที่ถูกต้องในการเพิ่ม CFLAGS และ LDFLAGS เพื่อ“ กำหนดค่า” คืออะไร?
ฉันต้องการติดตั้ง OpenVPN บน OpenBSD 5.5 โดยใช้ tarVPN ของแหล่ง OpenVPN ตามคำแนะนำที่นี่ฉันต้องติดตั้ง lzo และ เพิ่ม CFLAGS = "- I / usr / local / include" LDFLAGS = "- คำสั่ง L / usr / local / lib" เพื่อ "กำหนดค่า" เนื่องจาก gcc จะหาไม่พบ ฉันมี googled อย่างกว้างขวางเพื่อเป็นแนวทางในการทำสิ่งต่าง ๆ บน OpenBSD แต่ไม่มี นี่คือสิ่งที่ฉันวางแผนจะทำ: untar แหล่ง tarball …

9
ฉันจะฆ่ากระบวนการได้อย่างไรและตรวจสอบว่า PID ไม่ได้ถูกนำมาใช้ซ้ำ
ตัวอย่างเช่นสมมติว่าคุณมีเชลล์สคริปต์คล้ายกับ: longrunningthing & p=$! echo Killing longrunningthing on PID $p in 24 hours sleep 86400 echo Time up! kill $p ควรทำเคล็ดลับไม่ได้หรือไม่ ยกเว้นว่ากระบวนการนี้อาจสิ้นสุดก่อนกำหนดและ PID ของมันอาจถูกนำกลับมาใช้ใหม่หมายถึงงานที่ไร้เดียงสาบางอย่างได้รับระเบิดในคิวสัญญาณแทน ในทางปฏิบัติสิ่งนี้อาจมีความสำคัญ แต่มันทำให้ฉันกังวล การแฮ็กข้อมูลนาน ๆ เพื่อที่จะตายด้วยตัวเองหรือเก็บ / ลบ PID ของมันบน FS จะทำ แต่ฉันคิดถึงสถานการณ์ทั่วไปที่นี่
40 process  kill 

1
การโหลดไลบรารีที่แบ่งใช้และการใช้ RAM
ฉันสงสัยเกี่ยวกับวิธีที่ Linux จัดการไลบรารีที่แชร์ (อันที่จริงฉันกำลังพูดถึง Maemo Fremantle, ดิสทริบิวเตอร์เดเบียนที่เปิดตัวในปี 2009 ทำงานบน RAM ขนาด 256MB) สมมติว่าเรามีไฟล์ประมวลผลสองไฟล์เชื่อมโยงไปยัง libQtCore.so.4 และใช้สัญลักษณ์ (โดยใช้คลาสและฟังก์ชัน) เพื่อประโยชน์ของความเรียบง่ายขอเรียกพวกเขาและa bเราสันนิษฐานว่าลิงก์ประมวลผลทั้งสองเชื่อมโยงไปยังไลบรารีเดียวกัน aการเปิดตัวครั้งแรกที่เรา ต้องโหลดห้องสมุด มีการโหลดทั้งหมดหรือโหลดไปยังหน่วยความจำเฉพาะในส่วนที่ต้องการ (เนื่องจากเราไม่ใช้แต่ละคลาสจะมีเฉพาะรหัสที่เกี่ยวกับคลาสที่ใช้แล้วเท่านั้นที่กำลังโหลด) bจากนั้นเราก็เปิด เราคิดว่าaยังคงทำงานอยู่ bเชื่อมโยงไปยัง libQtCore.so.4 เกินไปและใช้บางส่วนของการเรียนที่aใช้ aแต่ยังมีบางส่วนที่ไม่ได้ใช้งานโดย ห้องสมุดจะถูกโหลดสองครั้ง (แยกกันaและแยกต่างหากb) หรือพวกเขาจะใช้วัตถุเดียวกันอยู่แล้วใน RAM หากbไม่มีสัญลักษณ์ใหม่และaกำลังใช้งาน RAM ที่ใช้งานโดยไลบรารีที่แชร์เพิ่มขึ้นหรือไม่ (หรือความแตกต่างจะไม่มีนัยสำคัญ)

4
ฉันจะสร้างฟังก์ชั่นท้องถิ่นใน bashrc ของฉันได้อย่างไร
. bashrc ของฉันมีรหัสบางส่วนที่ซ้ำซ้อนดังนั้นฉันจึงใช้ฟังก์ชั่นเพื่อทำให้มันง่ายขึ้น do_stuff() { local version=$1 export FOO_${version}_X="17" export FOO_${version}_Y="42" } do_stuff '5.1' do_stuff '5.2' อย่างไรก็ตามตอนนี้เมื่อฉันใช้เชลล์ชื่อ "do_stuff" อยู่ในขอบเขตดังนั้นฉันจึงสามารถแท็บเติมและเรียกใช้ฟังก์ชันนั้น (อาจทำให้ตัวแปรสภาพแวดล้อมของฉันสับสน) มีวิธีทำให้ "do_stuff" มองเห็นได้เฉพาะภายใน. bashrc หรือไม่
40 bash  bashrc 

2
ขุด vs nslookup
ทำไมบางครั้งคำสั่งdigและnslookup จึงพิมพ์ผลลัพธ์ต่างกัน ~$ dig facebook.com ; <<>> DiG 9.9.2-P1 <<>> facebook.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6625 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; …
40 dns  dig  nslookup 

4
เรียกใช้กระบวนการพื้นหลังและตรวจสอบเมื่อมันสิ้นสุด
ฉันจะเริ่มกระบวนการในพื้นหลังและตรวจสอบเมื่อมันสิ้นสุดภายในสคริปต์ทุบตีได้อย่างไร ความคิดของฉันคือสคริปต์เช่นนี้: launch backgroundprocess & while [ Process is running ];do echo "PROCESS IS RUNNING\r" done; echo "PROCESS TERMINATED"
40 bash 

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