Unix & Linux

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

4
เปลี่ยนชื่อไดเรกทอรีย่อยซ้ำ ๆ ที่ตรงกับ regex
Seriesฉันมีเซิร์ฟเวอร์สื่อที่มีโฟลเดอร์ที่เรียกว่า ( /media/Expansion2/Series/) ในนั้นฉันมี (แปลกใจ!) ทีวีซีรีส์ เหล่านี้เป็นเพียงชื่อที่แสดงเช่น/media/Expansion2/Series/The Big Bang Theory/ ภายในโฟลเดอร์ของแต่ละรายการ (และนี่คือปัญหาที่เกิดขึ้น) ฉันมีโฟลเดอร์ซีซัน ขณะนี้ฉันมีการผสมผสานของ 2 อนุสัญญาต่อไปนี้ (รวมถึงอีกสองสามข้อ): /media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1 /media/Expansion2/Series/The Big Bang Theory/Season 2 Season #ในท้ายที่สุดผมต้องการที่จะเปลี่ยนชื่อโฟลเดอร์ทั้งหมดเพียง เป็น regex ฉันอาจจะพูดอะไรบางอย่างเช่น s/.*(Season \d)/$1 ใช้ได้กับโฟลเดอร์เท่านั้นไม่ใช่ไฟล์ ฉันควรจะพูดถึงว่านี่เป็นโฟลเดอร์ย่อยประมาณ 50+ รายการดังนั้นจึงต้องเริ่มที่/media/Expansion2/Series/ระดับและดูในแต่ละซีรีย์ :)

5
ทำไมต้องใช้รอบต่อนาทีหากมียำ
อย่างที่เรารู้ว่า yum เป็นระบบการจัดการบรรจุภัณฑ์ที่สร้างขึ้นบน rpm นอกจากนี้ยังเป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งซึ่งเป็นรุ่นที่หยาบคาย (พูดหยาบคาย) ของรอบต่อนาทีมันจะแก้ไขปัญหามากมาย (หลักคือการพึ่งพาที่เห็นได้ชัด) ซึ่งรอบต่อนาทีไม่สนใจ มีกรณีใดบ้างเมื่อใช้คำสั่ง rpm จะเหมาะสมกว่า yum หรือไม่?
11 yum  rpm 

2
ดาวน์โหลดรายการไฟล์หากยังไม่มีอยู่
หากฉันมีรายการ URL คั่นด้วย\nมีตัวเลือกใดบ้างที่ฉันสามารถส่งไปwgetเพื่อดาวน์โหลด URL ทั้งหมดและบันทึกลงในไดเรกทอรีปัจจุบัน แต่เฉพาะในกรณีที่ไฟล์ยังไม่มีอยู่หรือไม่
11 wget  download  options 

5
ใช้สถิติเพื่อจัดทำเวลาประทับสำหรับการสัมผัส
กำลังพยายาม OCR เอกสาร insitu บางส่วน (จากบรรทัดคำสั่ง linux บน windows share) กระบวนการของ OCRing คือการค้นหาและฉันได้สับสนโดยใช้คำสั่ง find เพื่อไพพ์ไฟล์ผ่านลูปอย่างถูกต้อง อย่างไรก็ตามฉันจำเป็นต้องเก็บบันทึกเวลาดั้งเดิมไว้เพื่อแก้ไข ฉันกำลังพยายามใช้สถิติและแตะดังต่อไปนี้: #!/bin/bash OLDIFS=$IFS IFS=$(echo -en "\n\b") for f in `find /mnt/library/Libra/Libra/Ashfords -name "*.pdf"` do ORIGTS=`stat -c "%Y" $f` sudo /opt/ABBYYOCR9/abbyyocr9 -rl English -pi -if $f -f PDFA -paemImageOnText -pafpr original -of $f touch -t …
11 bash  scripting  stat 

3
การเปลี่ยนเส้นทาง stderr ไม่ทำงานใน csh
ฉันเรียกใช้คำสั่งต่อไปนี้: pkg_add emacs-23.4,2.tbz 2> output.log เอาต์พุตยังคงแสดงในเทอร์มินัล เมื่อฉันกด↑ฉันได้รับ pkg_add emacs-23.4,2.tbz 2 > output.log 2ก่อนที่จะมีพื้นที่ที่ ฉันไม่ได้ใส่เดิม ฉันลอง pkg_add emacs-23.4,2.tbz > output.log 2>&1 อีกครั้งเมื่อกด↑, พื้นที่ได้รับการเพิ่ม ทำไมสิ่งนี้ถึงเกิดขึ้นกับฉัน ฉันใช้ csh กับ FreeBSD

1
ปุ่มโฮมทำหน้าที่แปลก ๆ ใน bash (tty และ X) กับสตริงอินพุตแบบยาว
เมื่อฉันกดHomeถ้าอินพุทปัจจุบันของฉันสั้นพอ (พูด, <36 ตัวอักษร) มันใช้งานได้ดี อย่างไรก็ตามเมื่อฉันพิมพ์คำสั่งที่ยาวขึ้นและต้องการกลับไปที่จุดเริ่มต้นดูเหมือนว่ามันจะทำงานได้ แต่คำสั่งจะไม่ปรากฏอีกต่อไป ดูเหมือนว่าฉันไม่ได้อยู่ในจุดเริ่มต้น แต่ปิดประมาณ 10 ตัวอักษร แม้ว่าฉันจะพิมพ์ "สุ่มสี่สุ่มห้า" ก็ใช้งานได้ดี แต่ดูเหมือนว่าจะเป็นระเบียบทั้งหมดราวกับว่าอินพุตทั้งหมดถูกเลื่อนไปทางขวา แต่ไม่ใช่การวาดใหม่ ดังนั้นฉันจึงพิมพ์ทับมัน แต่ "ไม่จริง" เพราะสถานที่ที่ฉัน "ลบ" คือ "จริง ๆ " อักขระ 10 ตัวทางขวา ดังนั้นถ้าฉันพยายามที่จะลบคำสั่งตัวอักษร 10 ตัวแรกจะยังคงปรากฏ แต่ถ้าฉันกดEnterมันก็จะแสดงข้อความแจ้งอีกครั้งราวกับว่าอินพุตก่อนหน้านี้ว่างเปล่า ฉันรู้ว่ามันไม่ใช่คำอธิบายที่ดีที่สุดเท่าที่เคยมีมา แต่ประเด็นก็คือว่าการทุบตีจดจำและพยายามทำสิ่งที่ถูกต้อง แต่มักล้มเหลว ฉันทำซ้ำทั้งใน tty และใน terminal ในเซสชั่น X เมื่อฉันกดCtrl+ Vแล้วHomeฉันเห็นลำดับที่แตกต่างกัน ( ^[OHใน X, เป็น^[[1~tty) แต่ทั้งคู่ดูเหมือนจะอยู่ใน/etc/inputrc: # do …

3
เรียงลำดับที่งานตามลำดับเวลา
อาจเป็นทางออกที่ง่ายฉันหายไป ฉันจะได้รับผลลัพธ์ของการatqเรียงลำดับตามลำดับเวลาได้อย่างไรเพื่อให้ฉันสามารถดูได้ง่ายว่าใครจะทำงานต่อไป manหน้าsortไม่ได้มีอะไรในตัวที่จะรับรู้การประทับเวลาเช่นต่อไปนี้: atq 1264 Sat Mar 24 15:03:00 2012 a master 1445 Sat Mar 24 20:28:00 2012 a master 1548 Sun Mar 25 15:09:00 2012 a master 1193 Sat Mar 24 11:03:00 2012 a master 1359 Sat Mar 24 17:13:00 2012 a master 1726 Mon Mar 26 21:24:00 2012 …
11 date  sort  at 



4
ทางเลือก smbclient สำหรับไฟล์ขนาดใหญ่
ฉันใช้ smbclient เพื่อถ่ายโอนไฟล์ขนาดใหญ่ (80GB) ทุกคืนจากระบบ Linux ไปยัง Windows ที่ใช้ร่วมกัน เมื่อเร็ว ๆ นี้ด้วยเหตุผลใดก็ตามฉันได้รับ I / O หมดเวลา: cli_push returned NT_STATUS_IO_TIMEOUT ซึ่งทำให้การถ่ายโอนไฟล์ที่ใช้งานอยู่ถูกยกเลิกและลบจากการแชร์ Windows นี่อาจเป็นเพราะSamba bug 8498 ที่ยังไม่ได้แก้ไข(หรืออาจจะไม่ใช่) ระบบ Windows ไม่ได้อยู่ภายใต้การควบคุมของฉันดังนั้นฉันจึงไม่สามารถติดตั้งเซิร์ฟเวอร์ ssh (เพื่อใช้ scp หรือ sftp) และไม่ต้องการขึ้นอยู่กับการนำ NFS ของ Microsoft ไปใช้ มีอีกทางเลือกมาตรฐานธรรมดาที่จะให้ฉันย้ายข้อมูล 80GB อย่างเชื่อถือได้จาก Linux ไปยัง Windows ผ่านเครือข่ายเป็นประจำ (เครือข่ายคืออีเธอร์เน็ต GB ดังนั้นแบนด์วิดท์ไม่ใช่ปัญหา)

3
ตัวจัดการหน้าต่างใดที่มีการเชื่อมโยง Python
ฉันได้รับการเข้ารหัสบิตที่นี่และที่นั่นด้วย Python และฉันสนใจในสภาพแวดล้อมเดสก์ท็อปมากที่สุดซึ่งฉันมักจะมีความคิดที่อยากลอง ฉันพยายามเล่นกับ python-xlib แต่มีเอกสารน้อยเกินไปเกี่ยวกับวิธีใช้สิ่งนี้และเอกสาร ICCCM นั้นไม่ชัดเจนมาก ดังนั้นฉันไม่สามารถไปไกลได้ ยิ่งกว่านั้นฉันไม่สนใจสร้างตัวจัดการหน้าต่างมากเท่าที่ฉันสนใจในการสร้างแอปพลิเคชันสำหรับสภาพแวดล้อมเดสก์ท็อปที่โต้ตอบกับมัน เช่นแถบงาน การพูดคุยกับ X โดยตรงหมายถึงการข้าม WM ดังนั้นฉันอยากจะรู้ว่ามี WM สำคัญใด ๆ ที่นั่นที่มีการผูกหลามหรือไม่ดังนั้นฉันสามารถโต้ตอบกับพวกเขาได้ ฉันได้พบ python-metacity และ piz-compizsettings แล้ว แต่ฉันพบเอกสารว่าไม่มีวิธีใช้ ภาพรวมโดยรวมกำลังตกต่ำจากมุมมอง Python เล็กน้อย หากคุณมีข้อเสนอแนะโปรดแจ้งให้เราทราบ

4
การทำให้เสร็จสิ้นเส้นทาง Bash ทำงานกับ sudo อย่างไร
การทำให้แท็บเสร็จสมบูรณ์ไม่ทำงาน (อย่างน้อยใน Ubuntu และ AFAIK Arch) ด้วย sudo mount <whatever> แฟ้ม ISO /etc/fstabฉันพยายามที่จะติดตั้งไม่ได้อยู่ใน ถ้าฉันพิมพ์ mount <whatever> การทำงานให้เสร็จสมบูรณ์ (แต่แน่นอนว่าคำสั่งล้มเหลวเนื่องจากฉันไม่ใช่รูต) เห็นได้ชัดว่ามันเป็นsudoตัวแบ่งมัน การทำให้เสร็จสมบูรณ์ทำงานกับ sudo ได้อย่างไร มันเป็นเรื่องที่น่าแปลกใจด้วย sudo umount <whatever> งานเสร็จสมบูรณ์ มันประสบความสำเร็จได้อย่างไร? มันดูเป็น/etc/fstabอย่างไร การแก้ไข:ฉันแค่ใส่เชลล์สคริปต์ลงในการ/usr/local/binโทรนั้นsudo mount ...โดยมีการส่งผ่านอาร์กิวเมนต์ไป การดำเนินการให้เสร็จสมบูรณ์เมื่อเรียกสคริปต์นี้เนื่องจากไม่มีsudoในทาง

1
tcpdump: "จับแพ็คเก็ต" เทียบกับ "รับแพ็คเก็ตที่ได้รับจากตัวกรอง"
เรามีสคริปต์ที่เรียก tcpdump -v src host <IP address> and port <port number> >>out.txt 2>>err.txt -w capture.cap บนหลาย IP ในขณะที่ส่วนอื่น ๆ ของสคริปต์เริ่มต้นการรับส่งข้อมูลบางอย่างในพื้นหลัง เราต้องการตรวจสอบว่าแพ็คเก็ตกำลังกลับมาหาเราและตรวจสอบด้วยตนเองเฉพาะกรณีเหล่านั้นเมื่อเราได้รับแพ็คเกจ เอาต์พุตข้อผิดพลาดของ tcpdump ดูเหมือนดีสำหรับเรื่องนี้ในตอนแรก แต่ คำถามคือตามที่แนะนำเรื่องอะไรคือความแตกต่างระหว่าง "แพ็กเก็ตที่จับ" และ "แพ็กเก็ตที่ได้รับจากตัวกรอง" มีการจับซึ่งไม่ได้บันทึกแพ็กเก็ตใด ๆ แต่เอาท์พุท "จับแพ็คเก็ต 0, แพ็คเก็ตที่ได้รับจากตัวกรอง 2" ซึ่งฟังดูขัดแย้งกันเพราะถ้าไม่มีการจับแพ็คเก็ต ตอนแรกเรามองหา "0 แพ็กเก็ตที่ได้รับจากตัวกรอง" แต่นั่นไม่ใช่การเขียนไปยังเอาต์พุตข้อผิดพลาดเสมอเมื่อไม่มีแพ็กเก็ตที่ได้รับ ดังนั้นตัวเลขเหล่านี้แสดงอะไร ฉันจำเป็นต้องรู้ว่าจะค้นหาสิ่งใดถ้าเราต้องการกรองกรณีเหล่านั้นเมื่อไม่ได้รับแพ็กเก็ตตอบกลับ
11 ip  tcpdump 

4
ไวยากรณ์ของเงื่อนไขที่ซับซ้อนในเชลล์คืออะไร
หากต้องการแสดงการทดสอบต่อไปนี้ใน shell (sh): if ( a == 1 && ( b == 1 || b == 2 )) { ... } จนถึงตอนนี้สิ่งที่ดีที่สุดที่ฉันสามารถเขียนได้คือ: if [[ $a -eq 1 ]]; then if [[ $b -eq 1 || $b -eq 2 ]]; then ... fi fi ฉันไม่ทราบวิธีการรวม && และ || ด้วยลำดับความสำคัญที่ถูกต้อง Googling ไม่ได้ให้คำตอบใด …
11 shell 


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