Unix & Linux

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

2
ทำไมไดเรกทอรีปัจจุบันไม่เปลี่ยนแปลงใน makefile
ฉันพยายามที่จะเรียกใช้cdสคริปต์ง่ายๆที่เก็บ git ลงในไดเรกทอรีหนึ่งแล้วไปที่ไดเรกทอรีนี้เพื่อดำเนินการสคริปต์การติดตั้ง สคริปต์นี้อยู่ใน Makefile แต่cdดูเหมือนว่าจะไม่ทำงาน ไม่พบสคริปต์การติดตั้งของฉัน ฉันเพิ่ม pwd หลังจากcdในสคริปต์และมันแสดงให้ฉันเห็นไดเรกทอรีจากที่ฉันกำลังรันสคริปต์ไม่ใช่ไดเรกทอรีที่ฉันcdเข้า มีปัญหาอะไร? git clone http://somerepo ~/some_dir cd ~/some_dir/ pwd python myscript.py install => pwd: /hereIsPathToDirectoryFromWhichIRunTheScript หลาม: ไม่สามารถเปิดไฟล์ 'setup.py': [Errno 2] ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ./setup.pyนอกจากนี้ยังไม่ได้ทำงานกับ หากฉันเข้าสู่เส้นทางที่แน่นอน~/some_dir/setup.pyสคริปต์จะล้มเหลวในภายหลังเนื่องจากพยายามเข้าถึงทรัพยากรในโฟลเดอร์เดียวกัน
14 make  cd-command 


5
เปลี่ยนชื่อไฟล์โดยการเพิ่มตัวเลขภายในชื่อไฟล์
ฉันมีไดเรกทอรีซึ่งมีไฟล์รูปภาพที่กำหนดหมายเลขไว้ดังนี้: 01.png 02.png 03.png 03.svg 04.png 05.png 06.jpg 07.png 08.png 09.png 09.svg 10.png บางครั้งอาจมีไฟล์หลายเวอร์ชันในรูปแบบที่แตกต่างกัน (เช่น a pngและsvgเวอร์ชันของ03และ09ไฟล์ด้านบน) แต่ตัวเลขจะเรียงกันเป็นอย่างอื่น โดยทั่วไปจะมีไฟล์ดังกล่าว 40-80 ไฟล์ในแต่ละไดเรกทอรี ตัวเลขสอดคล้องกับลำดับภาพเหล่านี้ปรากฏในต้นฉบับ (เอกสาร Word แต่นั่นไม่สำคัญ) ไม่มีวิธีอื่นในการกำหนดลำดับของภาพ ถ้าฉันเพิ่มรูปภาพใหม่ลงในต้นฉบับฉันต้องวางสำเนาของรูปภาพในไดเรกทอรีนี้ด้วยหมายเลขที่ถูกต้อง ดังนั้นหากภาพใหม่เป็นภาพที่ห้าในต้นฉบับฉันจำเป็นต้องเปลี่ยนชื่อไฟล์ในไดเรกทอรีเป็นสิ่งนี้เพื่อให้มีที่ว่างสำหรับมัน: 01.png 02.png 03.png 03.svg 04.png 06.png 07.jpg 08.png 09.png 10.png 10.svg 11.png อะไรคือวิธีที่ตรงไปตรงมาที่สุดจากบรรทัดคำสั่งหรือจากสคริปต์หรือแมโครเพื่อกำหนดหมายเลขไฟล์ใหม่ทั้งหมดที่เริ่มต้นด้วยจำนวนที่แน่นอน ฉันมีการติดตั้ง Fedora Linux แบบมาตรฐานโดยใช้ bash
14 linux  bash  rename 


3
จะบล็อก IP address ที่ไม่เหมาะสมด้วย pf ใน OpenBSD ได้อย่างไร?
เราสามารถเห็นได้จากบันทึกของ nginx ว่ามีที่อยู่ IP ที่ทำสิ่งที่น่ารังเกียจ เราจะปิดกั้นมันด้วยpfคำสั่งและจากนั้นอย่างถาวรด้วย/etc/pf.log? เราจะบล็อก a x.x.x.x/24สำหรับ IP นั้นได้อย่างไร มันเป็นตัวอย่าง: 1.2.3.4 อัปเดต: ไม่ดูเหมือนว่า OpenBSD ไม่มีไฟล์อนุญาต / ปฏิเสธใน / etc และ AFAIK คำแนะนำที่ดีที่สุดสำหรับการปิดกั้นที่อยู่ IP ที่ไม่เหมาะสมกำลังใช้ pf # cd /etc # ls -la|egrep -i 'deny|allow' # uname -a OpenBSD foo.com 5.4 GENERIC.MP#0 amd64 #
13 openbsd  pf 

1
มีเครื่องมือ (!) ในการแสดงค่า subuid และ subgid สำหรับผู้ใช้หรือไม่?
usermod -v( --add-sub-uids) และusermod -w( --add-sub-gids) สามารถใช้เพื่อจัดการช่วง subuid และ subgid สำหรับบัญชีผู้ใช้ แต่ดูเหมือนจะไม่มีเครื่องมือที่สามารถแสดงรายการได้ มีไหม อย่างน้อยบน Ubuntu 14.04 กล่องของฉันgetentดูเหมือนจะไม่ได้เตรียมที่จะจัดการกับข้อมูลที่มาจากและ/etc/subuid/etc/subgid ขณะนี้ฉันกำลังใช้เชลล์สคริปต์เล็กน้อยใช้awkเพื่อวัตถุประสงค์ นี่คือข้อความที่ตัดตอนมาจากusermod(8): -v, --add-sub-uids FIRST-LAST Add a range of subordinate uids to the users account. [...] -V, --del-sub-uids FIRST-LAST Remove a range of subordinate uids from the users account. [...] -w, --add-sub-gids FIRST-LAST …
13 linux  ubuntu  users  userns 

1
ทำการแมปทั้ง Caps Lock และ Shift + Caps Lock ใน xkb
ฉันพยายามกำหนดค่า xkb เพื่อให้ Caps Lock ถูกจับคู่กับคีย์ Compose และฟังก์ชัน Shift + Caps Lock เป็น Caps Lock แบบดั้งเดิม ฉันใส่ต่อไปนี้ในไฟล์ใหม่ที่เรียกว่า/usr/share/X11/xkb/symbols/gdwatson: partial modifier keys xkb_symbols "compose" { key <CAPS> { type[Group1] = "TWO_LEVEL", symbols[Group1] = [ Multi_key, Caps_Lock ] }; }; จากนั้นฉันก็วิ่งsetxkbmap -symbols 'pc+us+gdwatson(compose)'ซึ่งทำสำเร็จ Caps Lock ทำงานเป็นเขียน แต่ Shift + Caps Lock ทำงานเป็นเขียนแทน Caps …

1
ตั้งค่าตารางเส้นทางแบบต่อเนื่องใน Debian
ฉันได้ปรับเปลี่ยนตารางเส้นทางของฉันโดยการลบกฎหนึ่งข้อและเพิ่มกฎใหม่สองกฎสำหรับอินเทอร์เฟซที่สองของฉัน eth1: route del -net 10.1.2.0 netmask 255.255.255.0 route add -host 10.1.2.51 eth1 route add -host 10.1.2.52 eth1 ฉันต้องการกฎเพื่อความอยู่รอดในการรีบูต ฉันสามารถเขียนสคริปต์ rc แบบง่าย ๆ เพื่อลบ 1 กฎและแทรก 2 กฎใหม่ได้ แต่ฉันสงสัยว่ามีวิธีการกำหนดค่า ifconfig ไม่ใช่เพื่อเพิ่มกฎเส้นทางสำหรับส่วนต่อประสาน (eth1) เมื่อมันเริ่มทำงานหรือดียิ่งขึ้น เพื่อระบุกฎที่ควรเพิ่ม อะไรจะเป็นวิธีที่สะอาดที่จะทำ? ไม่ifconfigอนุญาตให้ผมระบุกฎที่กำหนดเองสำหรับการกำหนดเส้นทาง?

2
เหตุใด <หรือ> จำเป็นต้องใช้ / dev / tcp
เมื่อพยายามโทร/dev/tcp/www.google.com/80โดยพิมพ์ /dev/tcp/www.google.com/80 no such file or directoryทุบตีกล่าวว่า เมื่อดูที่รหัสของคนอื่นทางออนไลน์พวกเขาใช้ไวยากรณ์เช่น 3&lt;&gt;/dev/tcp/www.google.com/80 ฉันสังเกตเห็นว่ามันใช้งานได้ดีเช่นกัน: &lt;/dev/tcp/www.google.com/80 ทำไมสัญลักษณ์เหล่านี้จำเป็นต้องเรียกบางสิ่งในทุบตี?

6
วิธีการเปรียบเทียบสองไฟล์ที่แตกต่างกันทีละบรรทัดในยูนิกซ์?
file1: 123 234 345 456 file2: 123 234 343 758 ผลลัพธ์ที่คาดหวัง: File3: TRUE TRUE FALSE FALSE ดังนั้นรหัสควรเปรียบเทียบสองไฟล์และพิมพ์ 'TRUE' หากตรงกันมิฉะนั้นควรพิมพ์ 'FALSE' ในไฟล์ใหม่ ใครช่วยกรุณาแก้ปัญหาสำหรับเรื่องนี้?

6
พิมพ์เอาต์พุตเฉพาะหลังจากค้นหารูปแบบ
มีสคริปต์ (เรียกว่าechoer) ที่พิมพ์หน้าจอเพื่อรวบรวมข้อมูลจำนวนมาก ฉันต้องการเห็นลายเส้นหลังจากพบลวดลาย ฉันนึกภาพการใช้โซลูชันเพื่อให้ดูเหมือน echoer | solution_command &lt;pattern&gt; เป็นการดีที่patternจะเป็นการแสดงออกปกติ แต่สตริงค่ายากจะเพียงพอสำหรับฉัน
13 echo  printf 

4
จะเกิดอะไรขึ้นถ้าฉันเริ่มงานพื้นหลังมากเกินไป
ฉันต้องทำงานกับอุปกรณ์เครือข่าย 700 ชิ้นโดยใช้สคริปต์ที่คาดไว้ ฉันสามารถทำได้ตามลำดับ แต่จนถึงขณะนี้รันไทม์ประมาณ 24 ชั่วโมง นี่คือสาเหตุส่วนใหญ่เนื่องจากเวลาที่ใช้ในการสร้างการเชื่อมต่อและความล่าช้าในผลลัพธ์จากอุปกรณ์เหล่านี้ (เก่า) ฉันสามารถสร้างการเชื่อมต่อที่สองและให้พวกเขาทำงานแบบขนานได้ดี แต่ฉันจะผลักมันไปได้ไกลแค่ไหน? ฉันไม่คิดว่าฉันสามารถทำทั้งหมด 700 ครั้งได้แน่นอนมีข้อ จำกัด บางอย่าง ของการเชื่อมต่อ telnet VM ของฉันสามารถจัดการได้ ถ้าฉันพยายามเริ่ม 700 ของพวกเขาในการวนรอบบางอย่างเช่นนี้: for node in `ls ~/sagLogs/`; do foo &amp; done กับ CPU 12 CPUs x Intel (R) Xeon (R) CPU E5649 @ 2.53GHz หน่วยความจำ 47.94 GB คำถามของฉันคือ: อินสแตนซ์ทั้งหมด …

1
การแจกแจงอุปกรณ์ Linux ที่สอดคล้องกัน
ในกล่องลินุกซ์เรามี USB -&gt; /dev/ttyACM0อุปกรณ์แบบอนุกรมซึ่งถูกระบุว่าเคยเป็น ดังนั้นฉันจึงเขียนใบสมัครและจนถึงเมื่อวานทุกอย่างทำงานได้ดี แต่ทันใดนั้น (ใช่ในระหว่างการนำเสนอระยะไกล ... ) อุปกรณ์หยุดทำงาน /dev/ttyACM1หลังจากการวิจัยอย่างรวดเร็วผมพบว่าการเชื่อมต่อเปลี่ยนไป มันไม่เหมาะเล็กน้อย แต่ตอนนี้ฉันมีปัญหา - จะระบุอุปกรณ์ของฉันได้อย่างไร? ตัวอย่างเช่นไดรฟ์จัดเก็บข้อมูลสามารถเริ่มต้นได้โดยใช้ UUID แม้ว่าจะ/dev/sd**มีการเปลี่ยนแปลง มีวิธีการทำเช่นนั้นสำหรับอุปกรณ์แบบอนุกรมหรือไม่? ตอนนี้ฉันใช้วิธีแก้ปัญหาโง่: for(int i = 0; i &lt; 10; i ++) { m_port = std::string("/dev/ttyACM") + (char)('0' + i); m_fd = open(m_port.c_str(), O_RDWR | O_NOCTTY | O_NDELAY); } การเชื่อมโยงกับการใช้อุปกรณ์ที่เรา
13 linux  usb-device 

1
ไฟล์ปฏิบัติการที่ชื่อ 'ทดสอบ' อยู่ใน $ PATH แต่จะไม่ทำงาน
ฉันมีไฟล์ใน $ HOME / bin (ก่อนที่คุณจะถามใช่มันอยู่ในเส้นทางของฉัน) เรียกว่าtestฉันยืนยันว่าสามารถดำเนินการได้ดีเมื่อฉันรันด้วยพา ธ เต็มไปยังไฟล์ อย่างไรก็ตามฉันได้รับปัญหาแปลก ๆ จริง ๆ เมื่อฉันไม่เรียกใช้วิธีนี้ เมื่อฉันเพิ่งรันtestในเทอร์มินัลมันไม่ทำอะไรเลยและส่งคืนทันที ฉันรู้ว่านี่ไม่ใช่ปัญหาในการค้นหาไฟล์ด้วยเหตุผลหลายประการ: ไม่มีข้อความแสดงข้อผิดพลาด โดยปกติหากไม่พบไฟล์หรือไม่สามารถดำเนินการข้อความจะถูกพิมพ์ออกมาโดยบอกว่า การรันwhich testยังคงส่งคืนพา ธ ไฟล์ที่ถูกต้อง น่าจะเป็นที่แปลกประหลาดของทั้งหมด - straceสคริปต์ที่ทำงานได้ดีเมื่อวิ่งผ่าน ฉันพยายามใช้straceเพื่อดูว่าฉันสามารถทราบได้ว่าเกิดอะไรขึ้น แต่เมื่อฉันใช้งานด้วยstraceมันทำงานได้อย่างที่คาดไว้กับปัญหา 0 ข้อ

1
นี่เป็นข้อบกพร่องการเข้ารหัส zip หรือไม่
ฉันเพิ่งค้นพบช่องโหว่ที่ฉัน (หรือสมมติว่าทุกคน) สามารถเข้ารหัสไฟล์ zip ที่เข้ารหัสของฉันได้โดยไม่ต้องรู้รหัสผ่าน: #zip --encrypt encrypted.zip -r dir1/ ด้านบนจะแจ้งให้ผู้ใช้ป้อนรหัสผ่านใหม่ มีบางอย่างที่ฉันขาดหายไปหรือเป็นปัญหาที่ทราบกันหรือไม่
13 encryption  zip 

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