Unix & Linux

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

1
การประเมินผลของการขยายตัวทางคณิตศาสตร์ในทุบตี
บรรทัดต่อไปนี้สร้างfile_c-6.txtแต่เอาต์พุต5: $ i=5; ls file_a-${i}.txt file_b-${i}.txt > file_c-$(( ++i )).txt; echo $i 5 $ cat file_c-6.txt file_a-5.txt file_b-5.txt หากลบออก>จะเป็นการแสดงรายการfile_c-6.txtและเอาท์พุท5: ฉันไม่สามารถเข้าใจได้ว่าทำไมมันไม่เก็บค่าของiในตัวอย่างแรก $ i=5; ls file_a-${i}.txt file_b-${i}.txt file_c-$(( ++i )).txt; echo $i file_a-5.txt file_b-5.txt file_c-6.txt 6
13 bash 

2
จะค้นหาไฟล์ที่ไม่ได้ติดตั้งในแพ็คเกจบน NixOS ได้อย่างไร?
ผมใช้แพคเกจผู้จัดการห้ามบนNixOS libgtk-x11-2.0.so.0สมมติว่าผมต้องการที่จะติดตั้งแพคเกจที่ให้แฟ้ม ฉันจะหาแพ็คเกจที่ให้ไฟล์นี้คล้ายกับการกระจาย GNU / Linux อื่น ๆ ได้อย่างไร ขณะนี้ฉันต้อง google ไฟล์และหาแพคเกจที่มันอาจเป็นและหาแพคเกจที่สอดคล้องกันบนที่เก็บห้าม แต่ฉันต้องการวิธีการสำนวนมากขึ้น

2
ทำไม“ bash -x” ถึงทำลายสคริปต์นี้?
ฉันมีสคริปต์ที่วัดระยะเวลาที่คำสั่งดำเนินการ มันต้องการtimeคำสั่ง"ของจริง" ความหมายไบนารีเป็นตัวอย่างใน/usr/bin/time(เนื่องจาก bash-built-in ไม่มี-fแฟล็ก) ด้านล่างสคริปต์แบบง่ายซึ่งสามารถดีบั๊กได้: #!/bin/bash TIMESEC=$(echo blah | ( /usr/bin/time -f %e grep blah >/dev/null ) 2>&1 | awk -F. '{print $1}') echo ABC--$TIMESEC--DEF if [ "$TIMESEC" -eq 0 ] ; then echo "we are here!" fi บันทึกเป็น "test.sh" และดำเนินการ: $ bash test.sh ABC--0--DEF we are here! ดังนั้นมันจึงทำงานได้ …

3
diff รายงานบรรทัดเดียวกันกับไฟล์ต่างกัน 2 ไฟล์
ฉันมี 2 ไฟล์ที่มีรายการเพลง hdsongs.txt และ sdsongs.txt ฉันเขียนสคริปต์ง่าย ๆ เพื่อแสดงรายการเพลงทั้งหมดและส่งออกไปยังไฟล์ข้อความเพื่อให้ทำงานต่างกัน มันใช้งานได้ดีสำหรับส่วนใหญ่ แต่คำสั่ง diff จริงในสคริปต์แสดงบรรทัดเดียวกันว่าแตกต่างกัน นี่คือสิ่งที่เกิดขึ้นจริงสำหรับหลายบรรทัด แต่ไม่ใช่ทั้งหมด นี่คือตัวอย่างของเพลงในไฟล์ทั้งสอง: $ grep Apologize \*songs\* hdsongs.txt:Timbaland/Apologize.mp3 sdsongs.txt:Timbaland/Apologize.mp3 ไม่มีตัวอักษรพิเศษต่อท้ายที่ฉันเห็นได้: $ cat -A hdsongs.txt sdsongs.txt | grep Apologize Timbaland/Apologize.mp3$ Timbaland/Apologize.mp3$ เมื่อฉันรัน diff มันจะแสดงบรรทัดเดียวกันในไฟล์แต่ละไฟล์ แต่เส้นไม่เหมือนกันหรือ $ diff hdsongs.txt sdsongs.txt | grep Apologize > Timbaland/Apologize.mp3 < Timbaland/Apologize.mp3 สิ่งนี้คล้ายกับเธรดที่นี่: diff …
13 diff 

3
เหตุใดจึงเป็น rm -rf และไม่ใช่ rmdir -rf
rm -rfฉันได้รับเสมออยากรู้อยากเห็นว่าทำไมคำสั่งสำหรับทุกสิ่งที่ลบในไดเรกทอรีคือ ทำไมไม่มีธงทำเช่นเดียวกันกับrmdir? มันจะไม่ใช้งานง่ายกว่าrmdirสำหรับการดำเนินการไดเรกทอรีหรือไม่
13 shell  files  directory 

3
ค้นหาแบบไบนารีในไฟล์ข้อความที่เรียงลำดับ
ฉันมีไฟล์เรียงลำดับขนาดใหญ่ที่มีความยาวหลายพันล้านบรรทัด รับสายใหม่ฉันต้องการที่จะรู้ว่าจำนวนไบต์มันจะได้รับถ้ามันถูกรวมอยู่ในไฟล์ที่เรียง ตัวอย่าง a\n c\n d\n f\n g\n รับอินพุต 'foo' ฉันจะได้ผลลัพธ์ 9 สิ่งนี้ทำได้ง่ายเพียงแค่ทำการผ่านไฟล์ทั้งหมด แต่การที่มีความยาวของตัวแปรหลายพันล้านบรรทัดมันจะเร็วกว่าที่จะทำการค้นหาแบบไบนารี เครื่องมือการประมวลผลข้อความมีอยู่แล้วหรือไม่? แก้ไข: มันทำตอนนี้: https://gitlab.com/ole.tange/tangetools/blob/master/bsearch/bsearch

2
“ คำขอการส่งต่อ X11 ล้มเหลว” เมื่อเชื่อมต่อกับ github.com
ฉันได้รับข้อความแสดงข้อผิดพลาดที่แปลกประหลาดขณะใช้ git: $ git clone git@github.com:Itseez/opencv.git Cloning into 'opencv' Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts. X11 forwarding request failed on channel 0 (...) ฉันรู้สึกว่า X11 ไม่จำเป็นต้องใช้คอมไพล์ดังนั้นมันจึงดูแปลก โคลนนี้ทำงานได้สำเร็จดังนั้นนี่เป็นปัญหา "คำเตือน" มากกว่าปัญหา "ข้อผิดพลาด" แต่ดูเหมือนไม่มั่นคง ท้ายที่สุดแล้วคอมไพล์ไม่จำเป็นต้องมี X11 ข้อเสนอแนะใด ๆ
13 ssh  x11  git 

5
ฉันจะทำให้สคริปต์นี้มีข้อผิดพลาดในการออกจากผลของลูปได้อย่างไร
ฉันมีสคริปต์ทุบตีซึ่งใช้set -o errexitเพื่อให้เกิดข้อผิดพลาดสคริปต์ทั้งหมดออกจากที่จุดของความล้มเหลว สคริปต์รันcurlคำสั่งซึ่งบางครั้งล้มเหลวในการดึงไฟล์ที่ต้องการ - อย่างไรก็ตามเมื่อเกิดเหตุการณ์นี้สคริปต์จะไม่เกิดข้อผิดพลาดในการออก ฉันได้เพิ่มการforวนซ้ำไป หยุดชั่วครู่หนึ่งแล้วลองcurlคำสั่งอีกครั้ง ใช้falseที่ด้านล่างของ for for loop เพื่อกำหนดสถานะการออกไม่เป็นศูนย์เริ่มต้น - หากคำสั่ง curl สำเร็จ - การแบ่งลูปและสถานะการออกของคำสั่งสุดท้ายควรเป็นศูนย์ #! /bin/bash set -o errexit # ... for (( i=1; i<5; i++ )) do echo "attempt number: "$i curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim if [ -f ~/.vim/autoload/pathogen.vim ] then echo "file has …

2
วิธีแสดงอักขระควบคุม (^ C, ^ D, ^ [, …) ในเชลล์แตกต่างกัน
เมื่อคุณพิมพ์อักขระควบคุมในเชลล์พวกมันจะปรากฏขึ้นโดยใช้สิ่งที่เรียกว่า "เครื่องหมายรูปสัณฐานวิทยา" หลบหนีเช่นได้รับการเขียน^[ในรูปสัญกรณ์ ฉันชอบปรับแต่ง bash shell ของฉันเพื่อทำให้มันดูเท่ห์ ตัวอย่างเช่นฉันเปลี่ยนของฉันPS1และPS2กลายเป็นสี ตอนนี้ฉันต้องการให้ตัวควบคุมมีลักษณะที่ไม่เหมือนใครและทำให้พวกมันแตกต่างจากตัวละครปกติมากขึ้น $ # Here I type CTRL-C to abort the command. $ blahblah^C ^^ I want these two characters to be displayed differently มีวิธีที่ทำให้ตัวควบคุมไฮไลท์เปลือกของฉันแตกต่างไปจากนี้หรือไม่ เป็นไปได้หรือไม่ที่จะทำให้มันแสดงเป็นตัวหนาหรืออาจทำให้มันปรากฏเป็นสีต่าง ๆ จากข้อความปกติ? ฉันกำลังใช้bash shell ที่นี่ แต่ฉันไม่ได้ติดแท็กคำถามด้วยbashเพราะอาจมีวิธีแก้ปัญหาที่ใช้กับเชลล์ที่แตกต่างกันจำนวนมาก โปรดทราบว่าฉันไม่ทราบว่าจะเน้นการควบคุมอักขระที่ระดับใด ฉันแรกคิดว่ามันอยู่ในเปลือกตัวเอง ตอนนี้ผมเคยได้ยินว่ามันเป็นที่ ReadLineว่าการควบคุมวิธีการควบคุมตัวอักษรที่อยู่ในเปลือกหอยเช่นทุบตี ดังนั้นตอนนี้คำถามจะถูกแท็กด้วยreadlineและฉันยังคงมองหาคำตอบ

1
Arch Linux cfdisk ขอประเภทของดิสก์ฉลาก
ฉันพยายามที่จะแบ่งพาร์ติชันฮาร์ดดิสก์ของฉันฉันเพิ่งเช็ดด้วย dban เพื่อให้ฉันสามารถติดตั้ง arch linux แต่เมื่อฉันเรียกใช้ cfdisk /dev/sda มันบอกว่า: Select table type gpt dos sgi sun ฉันไม่รู้ว่าจะเลือกแบบไหน มันยังบอกว่า: Device does not contain a recognized partition table.

7
วิธีจัดรูปแบบวันที่ออกพร้อมช่องว่างเป็นตัวแปรในสคริปต์ได้อย่างไร
ฉันต้องการที่จะทำให้dateคำสั่งด้วยการจัดรูปแบบที่ดีเช่นนี้: $ date +"%Y-%m-%d %H:%M:%S" 2015-09-17 16:51:58 แต่ฉันต้องการบันทึกในตัวแปรดังนั้นฉันสามารถโทรจากสคริปต์เช่นนี้ echo "$(nice_date) [WARNING] etc etc" อย่างไรก็ตามมันไม่ทำงาน $ nice_date="date +%Y-%m-%d %H:%M:%S" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S’ Try 'date --help' for more information. $ nice_date="date +\"%Y-%m-%d %H:%M:%S\"" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S"’ Try 'date --help' for more information. $ nice_date='date …
13 bash  date 

5
จะทราบได้อย่างไรว่าการเข้าสู่ระบบคอนโซลเป็นของแท้หรือไม่
ใน Windows หนึ่งสามารถบังคับใช้การกดCtrl+ Alt+ Delเพื่อเริ่มการขัดจังหวะที่จะเปิดหน้าต่างการเข้าสู่ระบบ เมื่อเข้าสู่คอนโซลของคอมพิวเตอร์ Linux: ฉันจะบอกได้อย่างไรว่าการเข้าสู่ระบบนี้เป็นของจริงหรือเป็นการล้อเลียนเพื่อขโมยข้อมูลประจำตัวของฉัน
13 linux  security  login 

2
วิธีการเพิ่มตัวแปรท้องถิ่นใน Bash
ข้อมูล 1 \begin{document} 3 รหัส #!/bin/bash function getStart { local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)" echo $START } START2=$(getStart) echo $START2 ซึ่งผลตอบแทนแต่ฉันต้องการ2 3ฉันเปลี่ยนปลายไม่สำเร็จโดยคำตอบนี้เกี่ยวกับฉันจะเพิ่มตัวเลขในสคริปต์ทุบตี : START2=$((getStart+1)) คุณจะเพิ่มตัวแปรโลคอลในสคริปต์ Bash ได้อย่างไร?

3
วิธีเพิ่มส่วนหัวและ / หรือท้ายกระดาษไปยังสตรีม sed หรือ awk
ฉันมีกลุ่มของผลลัพธ์ที่จะผ่าน sed และ awk ฉันจะนำหน้าผลลัพธ์ด้วย START และต่อท้ายคำตอบด้วย END ได้อย่างไร ตัวอย่างเช่นถ้าฉันมี All this code on all these lines and all these ฉันจะได้รับ: START All this code on all these lines and all these END ? ความพยายามของฉันคือ: awk '{print "START";print;print "END"}' แต่ฉันได้ ... START All this code END START on all these …

6
ฉันจะตรวจสอบเวอร์ชั่นเคอร์เนลที่ใช้งานอยู่ได้อย่างไร?
ในขณะที่แก้ไขปัญหาเกี่ยวกับการ์ดอีเธอร์เน็ตของฉันฉันพบว่าไดรเวอร์ที่ฉันใช้อยู่ในปัจจุบันอาจมีปัญหาบางอย่างกับเคอร์เนลเวอร์ชันเก่า ฉันสามารถใช้คำสั่งใดเพื่อตรวจสอบรุ่นเคอร์เนลที่ฉันกำลังใช้งานอยู่

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