Unix & Linux

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

2
ลบบรรทัดใหม่ในชื่อไฟล์
ฉันมีรหัส PHP ที่สร้างชื่อไฟล์ที่ wget จะผนวกบันทึกของมัน ฉันสร้างไฟล์มากกว่า 2000 ไฟล์ แต่ปัญหาคือฉันมีปัญหาในการทำงานกับพวกเขาเพราะฉันมีข้อผิดพลาดในการใส่PHP_EOLเป็นส่วนหนึ่งของชื่อรหัสนั้นจะเพิ่ม LF/line feed/%0Aที่ชื่อของมัน ตัวอย่างชื่อไฟล์ดังกล่าว (เมื่อเข้าถึงผ่านเบราว์เซอร์เมื่อใส่ / var / www / html) http://xxxx/wget_01_a%0a.txtให้สังเกต%0aก่อนชื่อนามสกุล ฉันสับสนและฉันหวังว่าจะมีแบทช์การเปลี่ยนชื่อที่จะค้นหาไฟล์ทั้งหมดและหากพบว่าline feedมันจะเปลี่ยนชื่อโดยไม่มีฟีดบรรทัดดังนั้นจึงเป็นเพียงhttp://xxxx/wget_01_a.txt ฉันไม่แน่ใจว่าจะจัดการกับสิ่งนี้ได้อย่างไรเพราะดูเหมือนว่าเมื่อฉันlsสวมบทบาทพิเศษทุกอย่างไม่ จำกัด ว่าตัวละครที่ไม่พึงประสงค์จะกลายเป็น?สิ่งที่ฉันต้องการเพียงเป้าหมายคือตัวดึงข้อมูลบรรทัดนั้น

2
คำสั่งเชลล์ / สคริปต์เพื่อดูว่าโฮสต์ยังมีชีวิตอยู่หรือไม่?
ฉันกำลังพยายามหาวิธีเพิ่มเติมเพื่อดูว่าโฮสต์ที่กำหนดนั้นใช้งานได้หรือไม่โดยใช้คำสั่งเชลล์ เป็นการดีที่มันจะสามารถทำงานกับทั้งชื่อโฮสต์และที่อยู่ IP ตอนนี้วิธีเดียวที่ฉันรู้คือ ping อาจรวมเข้ากับสคริปต์ตามที่อธิบายไว้ที่นี่ ความคิดอื่น ๆ ?

5
sudo ในสคริปต์ที่ไม่โต้ตอบ
A && B && Cฉันมีสคริปต์ที่รันสามฟังก์ชั่น: ฟังก์ชั่นBจะต้องทำงานเป็นผู้ใช้ขั้นสูงในขณะที่AและCไม่ ฉันมีวิธีแก้ปัญหาต่าง ๆ แต่สิ่งเหล่านี้ไม่เป็นที่พอใจ sudo สคริปต์ทั้งหมด: sudo 'A && B && C' ดูเหมือนว่าเป็นความคิดที่ไม่ถูกต้องในการใช้งานAและCในฐานะผู้ใช้ระดับสูงหากไม่จำเป็น ทำให้สคริปต์โต้ตอบ: A && sudo B && C ฉันอาจต้องพิมพ์รหัสผ่านของฉัน แต่ฉันต้องการให้สคริปต์ของฉันไม่สามารถโต้ตอบได้เนื่องจากแต่ละฟังก์ชั่นอาจใช้เวลาสักครู่และฉันไม่ต้องการให้สคริปต์รอฉัน นั่นเป็นเหตุผลว่าทำไมมันถึงเป็นสคริปต์ในตอนแรกดังนั้นฉันจึงไม่ต้องดูมันเลย วิธีการแก้ปัญหาโง่: sudo : && A && sudo -n B && C ครั้งแรกมันดูเหมือนว่าโง่ที่จะใช้ไม่มี-op แรกและเราก็ต้องข้ามนิ้วมือของฉันที่ไม่ได้ไปใช้เวลามากกว่าsudo$sudo_timeout วิธีแก้ปัญหาสมมุติฐาน (ฉันหวังว่าคุณจะบอกฉันมันมีอยู่): sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B …

2
การจดจำตารางพาร์ติชัน GPT ที่สร้างขึ้นด้วยขนาดเซกเตอร์ตรรกะที่แตกต่างกัน
ฉันมีไดรฟ์ 3TB ซึ่งฉันได้แบ่งพาร์ติชันโดยใช้ GPT: $ sudo sgdisk -p /dev/sdg Disk /dev/sdg: 5860533168 sectors, 2.7 TiB Logical sector size: 512 bytes Disk identifier (GUID): 2BC92531-AFE3-407F-AC81-ACB0CDF41295 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 5860533134 Partitions will be aligned on 2048-sector boundaries Total free …
9 kernel  partition  disk  gpt 

4
เลือกแทนการค้นหาและแทนที่บรรทัดที่ยาวมาก
ฉันมีไฟล์ที่สร้างขึ้นโดยโปรแกรมที่ไม่ได้ขึ้นบรรทัดใหม่เมื่อสิ้นสุดการบันทึก ฉันต้องการขึ้นบรรทัดใหม่ระหว่างระเบียนและฉันสามารถทำได้ด้วยสคริปต์แบบง่าย: sed -e 's/}{/}\n{/g' ปัญหาคือไฟล์อินพุตมีขนาดหลายกิกะไบต์และดังนั้นบรรทัดอินพุตเป็น sed มีความยาวหลาย GB sed พยายามเก็บสายไว้ในหน่วยความจำซึ่งไม่สามารถใช้งานได้ในกรณีนี้ ฉันลองใช้--unbufferedตัวเลือก แต่ดูเหมือนว่าจะทำให้ช้าลงและไม่อนุญาตให้ทำอย่างถูกต้อง
9 sed 

3
ความแตกต่างระหว่างคำสั่ง pbrun และ sudo คืออะไร?
ความแตกต่างระหว่างคำสั่งpbrunและsudoคืออะไร? ฉันเคยเห็นคนที่ดำเนินการ pbrun sudo su - สิ่งนี้หมายความว่าอย่างไร ฉันรู้ว่า su - มันจะพยายามเปลี่ยนไปใช้ผู้ใช้รูท pbrun พิเศษอะไรที่มอบให้กับ sudo เมื่อมันถูกใช้พร้อมกับคำสั่ง sudo?

1
'setcap' เขียนทับความสามารถล่าสุด ฉันจะตั้งค่าความสามารถหลายอย่างได้อย่างไร
ฉันต้องการให้ node.js ความสามารถในการฟังบนพอร์ต 80 และปิดเครื่องคอมพิวเตอร์ ตอนแรกฉันลองทั้งสองคำสั่งตามลำดับ: setcap cap_net_bind_service=+ep /usr/bin/nodejs setcap cap_sys_boot=+ep /usr/bin/nodejs จากนั้นแอพของฉันไม่สามารถเชื่อมกับพอร์ต 80 ได้ฉันตรวจสอบด้วย getcap: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep ถ้าฉันรัน setcap อีกครั้งสำหรับ cap_net_bind_service: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_net_bind_service+ep ฉันไม่เห็นอะไรเลยในหน้า man http://linux.die.net/man/8/setcapเกี่ยวกับการตั้งค่าความสามารถหลายอย่างและลองทำบางสิ่งด้วยความสิ้นหวัง: # setcap cap_net_bind_service=+ep /usr/bin/nodejs cap_sys_boot=+ep /usr/bin/nodejs # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep # setcap cap_net_bind_service=+ep …

2
สลับอุปกรณ์เสียงออกโดยอัตโนมัติไปยังชุดหูฟังบลูทู ธ และบังคับให้เชื่อมต่อกับโปรไฟล์ A2DP
ใช้มิ้นต์ 17 + MATE ที่นี่ ชุดหูฟังบลูทู ธ ของฉัน (Plantronics Backbeat Go2) เชื่อมต่อได้ดีกับระบบของฉัน แต่มีขั้นตอนแบบแมนนวลหลายขั้นตอนที่ฉันต้องทำเพื่อให้งานนี้เป็นไปได้โดยอัตโนมัติ: หลังจากรีบูตทุกครั้งฉันต้องเรียกใช้ pactl load-module module-bluetooth-discover ในเทอร์มินัลเพื่อให้อุปกรณ์เชื่อมต่อได้เลย ฉันพยายามใส่ในเชลล์สคริปต์เพื่อเริ่มทำงาน แต่ไม่มีลูกเต๋า :( ชุดหูฟังของฉันเชื่อมต่อโดยอัตโนมัติโดยไม่มีปัญหา แต่จะใช้ค่าเริ่มต้นเป็น Telephony Duplex หรือแม้กระทั่งปิดแทน A2DP ฉันพยายามและล้มเหลวด้วยกลยุทธ์ที่แตกต่างกันในการบังคับ A2DP :( บังคับให้ชุดหูฟัง BT เป็นอุปกรณ์ส่งออกเริ่มต้น ลองใช้กลยุทธ์หลายอย่างที่นี่เช่นกัน ... โชคไม่ดีที่ทุกครั้งที่ฉันเชื่อมต่อหูฟังดัชนีจาก pacmd ดูเหมือนจะเปลี่ยนแปลงดังนั้นฉันจึงไม่สามารถบังคับค่าเริ่มต้นในไฟล์ PA conf set-default-sink ได้ และการใช้ชื่อที่ระบุไว้ก็ไม่ได้ผลเช่นกัน - หากไม่มีชุดหูฟังก็จะเปลี่ยนเป็นลำโพงและไม่สลับกลับหากชุดหูฟังเชื่อมต่อ :( ขอบคุณสำหรับคำแนะนำใด ๆ ที่คุณอาจมีในการแก้ไขปัญหาเหล่านี้!

1
อ้างอิงทั้งดิสก์ (/ dev / sda) โดยใช้ UUID
ในระบบของฉัน (Debian) ผมสามารถมองเห็นUUIDตัวระบุทั้งหมดของพาร์ทิชันดิสก์ของฉัน (เช่น/dev/sda1, dev/sda2, .. ) ls /dev/disk/by-uuid/ อย่างไรก็ตามฉันไม่เห็นUUIDตัวระบุสำหรับ/dev/sdaตัวเอง เป็นไปได้UUIDหรือไม่ที่จะอ้างอิงทั้งดิสก์ด้วย? ฉันต้องการสิ่งนี้เพราะฉันต้องการอ้างอิงดิสก์เฉพาะและฉันไม่สามารถ/dev/sdaเชื่อถือได้จะถูกเรียก แก้ไข วิธีการแก้ปัญหาที่แนะนำโดย @don_crissti นั้นยอดเยี่ยม อย่างไรก็ตามฉันต้องการให้ UUID เหมือนกันสำหรับฮาร์ดดิสก์ทั้งหมดในรุ่น / ผู้ผลิตเดียวกันไม่ใช่หมายเลขเฉพาะ ใช้udevadmฉันสามารถดูคุณสมบัติของดิสก์: udevadm info -n /dev/sda -a ATTRS{model}=="Samsung SSD 840 " ATTRS{vendor}=="0x8086" ATTRS{class}=="0x010700" ATTRS{device}=="0x1d6b" .... ฉันจะสร้าง a UUIDจากแอ็ตทริบิวต์เหล่านี้ดังนั้นดิสก์รุ่น / ผู้ผลิตเดียวกันจะมีเหมือนกันได้UUIDอย่างไร
9 udev  disk  fdisk  uuid 

3
เหตุใดคำสั่งนี้จึงไม่ทำงาน:“ ps aux | grep xscreensaver”
ฉันไม่เห็นเพลงฮิตใด ๆ เกี่ยวกับสิ่งนี้ใน google ดังนั้นฉันจึงขอให้คุณ: ฉันพยายามเรียกใช้คำสั่งนี้ในเซสชัน ssh, Local คือ Debian Wheezy KDE, remote คือ Fedora 21 Gnome: ps aux | grep xscreensaver และนี่คือผลลัพธ์: bash: grep: command not found... ฉันไม่เคยเห็นสิ่งนี้มาก่อนสาเหตุคืออะไร ฉันเพิ่งจะอัปเดตระบบไม่กี่ชั่วโมงก่อนหน้านี้ แต่ไม่เห็นแพ็คเกจที่ทำเครื่องหมายไว้เพื่อนำออก มีผู้ใช้สองคนในระบบและฉันเท่านั้นที่ติดตั้งหรือลบซอฟต์แวร์ในนั้น แก้ไข # 1 นี่คือคำสั่งและผลลัพธ์ที่คัดลอกสังเกตว่าช่องว่างไม่มีในครั้งที่สอง: [root@Hostname ~]# ps aux | grep xscreensaver bash: : command not found... [root@Hostname ~]# …

1
ด้วงพร้อมจอเรตินา (ความละเอียดสูง)
ปัจจุบันฉันใช้ Ubuntu บน macbook pro ด้วยด้วง macbook ของฉันมีจอแสดงผลเรตินาที่มีความละเอียด 2560x1600 แบบอักษรบนหน้าจอเริ่มต้นของด้วงนั้นเล็กมากจนแทบอ่านไม่ออก ฉันจะทำให้ด้วงปรากฏอย่างเป็นมิตรด้วยการตั้งค่านี้ได้อย่างไร? เพียงแค่ผ่านโหมด gfx อย่างที่GRUB_GFXMODE=640x480ไม่มีผลกระทบใด ๆ ขอบคุณสำหรับการแก้ปัญหา
9 grub2 

4
สัญญาณจะถูกละเว้น (หายไป)?
ฉันมีแอปพลิเคชันที่สื่อสารกับคนงานผ่านสัญญาณ (โดยเฉพาะ SIGUSR1 / SIGUSR2 / SIGSTOP) ฉันสามารถวางใจได้หรือไม่ว่าสิ่งที่เกิดขึ้นทุกสัญญาณจะถูกส่งและประมวลผลโดยตัวจัดการ? จะเกิดอะไรขึ้นหากมีการส่งสัญญาณเร็วกว่าที่เป็นไปไม่ได้สำหรับแอปพลิเคชันในการจัดการสัญญาณเหล่านั้น (เช่นเนื่องจากโหลดโฮสต์สูงในขณะนี้)
9 linux  signals 

2
เรียกใช้คำสั่งอื่นก่อนเรียกใช้คำสั่งที่ผู้ใช้ต้องการเรียกใช้
สมมติว่าฉันต้องการแก้ไขพฤติกรรมดั้งเดิมของlsเครื่องมือด้วยวิธีนี้: $ ls Hello World file1 file2 ... ฉันจะทำสิ่งนี้ได้อย่างไร เมื่อเรียกใช้ผมอยากจะเรียกใช้คำสั่งอื่นพูดให้ของlsecho "Hello World!" วิธีแก้ปัญหาอย่างรวดเร็วที่ฉันเห็นใช้นามแฝง: alias orig_ls="ls" alias ls='echo "Hello World!"' แต่นี้ไม่ได้เป็นทางออกที่แท้จริงตั้งแต่เมื่อฉันจะทำงานมันจะเอาท์พุทorig_ls"Hello World!"

2
sed: อ่านไฟล์ทั้งหมดในพื้นที่รูปแบบโดยไม่ล้มเหลวในอินพุตบรรทัดเดียว
การอ่านไฟล์ทั้งหมดในพื้นที่รูปแบบมีประโยชน์สำหรับการแทนที่บรรทัดใหม่ & c และมีหลายกรณีที่ให้คำแนะนำต่อไปนี้: sed ':a;N;$!ba; [commands...]' อย่างไรก็ตามมันจะล้มเหลวหากอินพุตมีเพียงหนึ่งบรรทัด ตัวอย่างเช่นด้วยอินพุตสองบรรทัดทุกบรรทัดจะต้องอยู่ภายใต้คำสั่งการแทนที่: $ echo $'abc\ncat' | sed ':a;N;$!ba; s/a/xxx/g' xxxbc cxxxt แต่ด้วยอินพุตบรรทัดเดียวจะไม่มีการทดแทน: $ echo 'abc' | sed ':a;N;$!ba; s/a/xxx/g' abc เราจะเขียนsedคำสั่งเพื่ออ่านอินพุตทั้งหมดในครั้งเดียวและไม่มีปัญหานี้ได้อย่างไร?
9 sed  newlines 

9
เราสามารถพิมพ์คำสุดท้ายของแต่ละบรรทัดใน linux โดยใช้คำสั่ง sed ได้หรือไม่?
สมมติว่าหากมีไฟล์ประกอบด้วยบรรทัดต่อไปนี้ถ้าเป็น 12345 567 7878 66 er3 t45t y6y46y 4y6 y656y y5y 46y6 65 ปี 7 y66uyuy yy46y6y ผลลัพธ์ต้องมีลักษณะดังนี้: 66 y6y46y y5y y66uyuyy y46y6y ฉันได้ลองใช้sed 's/.* //g'ชื่อไฟล์คำสั่งและsedคำสั่งอื่น ๆแล้ว แต่มันไม่ทำงาน ฉันจะรู้ได้อย่างไรว่าsedคำสั่งที่แน่นอนคืออะไร?

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