Unix & Linux

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

3
ฉันจะสแกนโดยใช้ค้นหาไฟล์ทั้งหมดที่มีการเรียกใช้บิตเซ็ตได้อย่างไร
ฉันต้องการเขียนสคริปต์แก้ไขสิทธิ์ที่ใช้การค้นหาเพื่อแก้ไขสิทธิ์ในไฟล์ ส่วนใหญ่สิ่งที่ฉันต้องการคือคำสั่ง find ที่สามารถแสดงรายการไฟล์ทั้งหมดด้วยชุดบิตเรียกใช้โดยไม่คำนึงถึงสิทธิ์อื่น ๆ ของไฟล์ (นั่นคือเคล็ดลับ)
19 find 

6
ติดตั้งแพ็คเกจ Debian ทั้งหมดใหม่อีกครั้ง
ฉันฆ่าโดยไม่ได้ตั้งใจกระบวนการ dpkg ทำงานในพื้นหลังและฉันต้องการติดตั้งแพ็กเกจทั้งหมดใหม่เพื่อให้แน่ใจว่าทุกอย่างเรียบร้อยดี ก่อนอื่นฉันพยายามรับรายชื่อของแพ็คเกจทั้งหมดและติดตั้งใหม่ dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log apt-get install --reinstall $(cat list.log) แต่มีข้อความเช่น: E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle. ฉันพยายามapt-get -f installไม่ประสบความสำเร็จ เป็นทางเลือกสุดท้ายฉันติดตั้งโปรแกรมทั้งหมดที่ล้มเหลวในการตรวจสอบใหม่: dpkg -l | grep ^ii | awk '{ print $2 }' | xargs …

6
การค้นหาโฮสต์ที่เกี่ยวข้องกับ / etc / hosts
ยูทิลิตี้ชอบhostและdigช่วยให้คุณเห็นที่อยู่ IP ที่สอดคล้องกับชื่อโฮสต์ นอกจากนี้ยังมีgetentยูทิลิตี้ที่สามารถใช้ในการสืบค้น/etc/hostsหรือฐานข้อมูล NSS อื่น ๆ ฉันกำลังมองหายูทิลิตี้มาตรฐานที่ให้ความสะดวกสบาย (ซึ่งมีให้บริการใน Debian, พูด) ซึ่งแก้ไขชื่อโฮสต์โดยไม่คำนึงว่าจะมีการกำหนดไว้ที่ไหน มันควรจะมากหรือน้อยเทียบเท่า ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
19 dns  hosts 

3
rsync ไฟล์บางไฟล์ไม่รวมส่วนที่เหลือโดยไม่สนใจ. svn / directory ซ้ำ
ฉันใช้rsyncเพื่อคัดลอกไฟล์บางไฟล์จากการแชร์ไปยังไฟล์อื่น ฉันจำเป็นต้อง: ลบไฟล์ที่ปลายทางที่ถูกลบออกจากจุดกำเนิด ซิงค์.phpและ.jsไฟล์เท่านั้น ยกเว้นไฟล์ประเภทอื่นทุกประเภท อย่าลบ.svn/ไดเรกทอรีที่ปลายทาง ถ้าฉันใช้สิ่งนี้: rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \ /origin /destination จากนั้นrsyncจะไม่เรียกซ้ำเนื่องจากexclude="*"ไม่รวมไฟล์ทั้งหมด แต่ยังรวมถึงโฟลเดอร์ ถ้าฉันเพิ่ม--include="*/"แล้ว.svn/ไดเรกทอรีจะถูกลบ (รวมอยู่ด้วย) ฉันจะแก้ไขปัญหานี้ได้อย่างไร? uname -a: Linux tux 3.9.2-1-ARCH # 1 SMP PREEMPT Sat 11 พฤษภาคม 20:31:08 CEST 2013 x86_64 GNU / Linux rsync รุ่น: rsync 3.0.9-6

3
เครื่องสกัดอเนกประสงค์
ด้วยจำนวนที่เพิ่มขึ้นของรูปแบบไฟล์เก็บถาวร / ไฟล์บีบอัดมีเครื่องมือบรรทัดคำสั่งฟรี / โอเพนซอร์สเดียวที่ใช้ควบคุมกฎทั้งหมดหรือไม่ บางทีสิ่งที่มีชุดของธงที่สอดคล้องกัน / รวมกัน? (บันทึกการอ้างอิงโดยนัยของฉันที่เป็นมิตรกับ tar ) ฉันเคยพบเจอในนามแฝงชุดหนึ่งซึ่งหมายถึงการลดความซับซ้อนของงานการบีบอัด / ยกเลิกการบีบอัดไฟล์ด้วยการเชื่อมโยงtarและอุปกรณ์อื่น ๆ แต่ฉันไม่สามารถหามันได้อีกต่อไป อัปเดต: ฉันจะกำหนดค่าบางอย่างatoolที่ไม่ต้องการใช้unzipเพื่อแยกไฟล์ zip (ซึ่งเห็นได้ชัดว่าไม่สามารถจัดการไฟล์ที่มีขนาดใหญ่กว่า 4GB) และใช้gunzipแทนได้อย่างไร $ aunpack large_file.zip error: Zip file too big (greater than 4294959102 bytes) Archive: large_file.zip warning [large_file.zip]: 1491344848 extra bytes at beginning or within zipfile (attempting to process anyway) …

8
หลีกเลี่ยงการรอไม่ว่างในการทุบตีโดยไม่มีคำสั่ง sleep
ฉันรู้ว่าฉันสามารถรอเงื่อนไขที่จะกลายเป็นจริงในการทุบตีโดยทำ: while true; do test_condition && break sleep 1 done แต่จะสร้างกระบวนการย่อย 1 กระบวนการในการทำซ้ำแต่ละครั้ง (sleep) ฉันสามารถหลีกเลี่ยงพวกเขาโดยทำ: while true; do test_condition && break done แต่มันใช้ CPU เป็นจำนวนมาก (กำลังรอไม่ว่าง) เพื่อหลีกเลี่ยงกระบวนการย่อยและการรอคอยไม่ว่างฉันจึงตัดสินใจแก้ปัญหาดังกล่าว แต่ฉันพบว่ามันน่าเกลียด my_tmp_dir=$(mktemp -d --tmpdir=/tmp) # Create a unique tmp dir for the fifo. mkfifo $my_tmp_dir/fifo # Create an empty fifo for sleep by …


4
bash -e ออกเมื่อให้หรือ expr ประเมินเป็น 0
ฉันมี bash script ที่ตั้งค่า -e ดังนั้นสคริปต์จะออกจากสถานะการออกใด ๆ ! = 0 ฉันพยายามทำเลขคณิตพื้นฐานของเชลล์ที่กำหนดให้กับตัวแปรและบางครั้งนิพจน์มีค่าเท่ากับ 0 ซึ่งทำให้สถานะการออกของคำสั่ง let หรือ expr เป็น "1" นี่คือตัวอย่าง: #!/bin/bash -ex echo "Test 1" Z=`expr 1 - 1` || true echo "Z will print" let "A=4 - 4" echo "A WILL NEVER PRINT $A" Y=`expr 1 - 1` echo "Y …

2
ฉันจะทำให้ daemon / init นี้ทำงานเป็นผู้ใช้ที่ไม่ใช่รูทได้อย่างไร
ฉันมีสคริปต์ init เพื่อเริ่มดีมอน ปัญหาคือมันทำงานเป็นราก ฉันต้องการให้มันทำงานในฐานะผู้ใช้ที่เรียกว่า "ปรับใช้" Ubuntu 12.04 #! /bin/sh # File: /etc/init.d/unicorn ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the unicorn web server …

5
วิธีการเลื่อนดาต้าไฟล์ขนาดใหญ่ในขณะที่รักษาส่วนหัว
สมมติว่าฉันมีดาต้าไฟล์ขนาดใหญ่ซึ่งล้นหน้าจอทั้งในแนวตั้งและแนวนอน ฉันจะเรียกดูไฟล์นี้ในขณะที่บรรทัดส่วนหัวอยู่บนหน้าจอได้อย่างไร ในตอนนี้ฉันกำลังใช้less -Sงานอยู่เพื่อให้ฉันสามารถเลื่อนไฟล์ของฉันได้ทั้งแนวนอนและแนวตั้ง อย่างไรก็ตามเมื่อเลื่อนลงบรรทัดส่วนหัวจะหายไปอย่างเห็นได้ชัด มีวิธีที่จะทำให้สิ่งเหล่านี้ใช้น้อยลงหรือไม่? ทางเลือกที่จะใช้ในโหมดแยกหน้าจอด้วยvim :set nowrapอย่างไรก็ตามตอนนี้ถ้าฉันเลื่อนในแนวนอนหน้าต่างด้านบนจะไม่เลื่อนในลักษณะเดียวกัน ( :windo set scrollbindใช้ได้กับการเลื่อนแนวตั้งเท่าที่ฉันรู้)
19 vim  less  scrolling  pager 

1
ทำไมเวลา "ของจริง" ถึงสูงกว่าเวลาที่“ ผู้ใช้” และ“ sys” รวมกันมาก?
ฉันดำเนินการและtimeมีคำสั่งมากมาย (เช่นnslookup) ผ่านSSHและฉันรวบรวมเวลาทั้งหมดที่จำเป็นสำหรับการให้บริการโดยนัยเพื่อให้สมบูรณ์ (เช่นDNS ) ดังนั้นฉันจึงรวบรวมuserและsysเวลาตามrealเวลานับเวลาที่กระบวนการของฉันปิดกั้นซึ่งฉันไม่ต้องการ ... ฉันเดา แต่การทดสอบบางอย่างของฉันมีผลลัพธ์เช่น: real 3m22.033s user 0m0.009s sys 0m0.014s ฉันทำการทดสอบเหล่านี้ในกล่อง linux ที่มีทรัพยากร จำกัด แต่ถึงกระนั้นrealเวลาก็ยังสูง นี่จะบ่งบอกว่ากล่องนั้นยุ่งมากที่ใช้กระบวนการต่าง ๆ หรือไม่? มันยังคงถูกต้องหรือไม่ที่จะเพิ่มขึ้นuserและsysเวลาที่จะรู้ว่าบริการใช้เวลาเท่าไหร่?

6
เหตุใดจึงไม่แนะนำให้ใช้นามแฝงเหนือคำสั่งมาตรฐาน
ตัวอย่างเช่นนามแฝงทั่วไปที่ฉันเคยเห็นใน~/.bashrcไฟล์ (หรือเทียบเท่า) คือ alias rm='rm -i' อย่างไรก็ตามฉันเคยเห็นคนแนะนำเรื่องนี้เพราะ นามแฝงอาจไม่มีอยู่ในระบบอื่นและเนื่องจากคุณไม่ประมาทrmคุณจะลบสิ่งที่สำคัญโดยไม่ได้ตั้งใจ [1] โดยการใช้นามแฝงนี้คุณจะฝึกตัวเองให้พิมพ์yหรือyesตามrmคำสั่งทุกคำสั่งซึ่งเอาชนะวัตถุประสงค์ทั้งหมด มีเหตุผลอื่นอีกไหมที่แนะนำเรื่องนี้? อาจมีบางโปรแกรมที่โทรไปหาrmแทนที่จะใช้ชื่อแทน\rmอาจทำให้เกิดปัญหาได้ ฉันใช้rmเป็นเพียงตัวอย่าง แต่ฉันเห็นคำสั่งอื่น ๆ เช่นcpหรือmvครอบคลุมโดยนามแฝงเช่นกัน โดยส่วนตัวฉันค่อย ๆ ฝึกฝนตัวเองให้ใช้นามแฝงแบบนี้แทนrm -i: alias trash=`mv -v -t $HOME/.Trash`

7
วิธีใช้ patch และ diff เพื่อรวมสองไฟล์และแก้ไขข้อขัดแย้งโดยอัตโนมัติ
ฉันได้อ่านเกี่ยวกับ diff และ patch แต่ฉันไม่สามารถหาวิธีใช้สิ่งที่ฉันต้องการ ฉันเดาว่ามันค่อนข้างง่ายดังนั้นเพื่อแสดงปัญหาของฉันให้ใช้สองไฟล์นี้: a.xml <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#AAAAAA</color> <color name="not_in_b_too">#AAAAAA</color> </resources> b.xml <resources> <color name="same_in_b">#AAABBB</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_a">#AAAAAA</color> </resources> ฉันต้องการมีเอาต์พุตซึ่งมีลักษณะเช่นนี้ (ลำดับไม่สำคัญ): <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_b_too">#AAAAAA</color> <color name="not_in_a">#AAAAAA</color> </resources> การผสานควรมีบรรทัดทั้งหมดตามกฎง่าย ๆ นี้: บรรทัดใด ๆ ที่อยู่ในไฟล์เดียวเท่านั้น หากบรรทัดมีแท็กชื่อเดียวกัน แต่มีค่าต่างกันให้นำค่าจากวินาที ฉันต้องการใช้งานนี้ในสคริปต์ทุบตีดังนั้นจึงไม่จำเป็นต้องทำโดยใช้ diff …

2
จะรับชื่อไฟล์บัฟเฟอร์ปัจจุบันเป็น emacs ได้อย่างไร
หนึ่งในคุณสมบัติหลักที่ฉันพลาดเกี่ยวกับ Vim คือมันมักจะบันทึกชื่อไฟล์ของไฟล์ปัจจุบันใน%บัฟเฟอร์ ( ข้อมูลเพิ่มเติม ) ที่อนุญาตให้เรียกใช้คำสั่งได้อย่างง่ายดายเช่น: ;; compile current file :! gcc % ;; source current file (useful when I'm editing .vimrc :source % ;; get the size of current file :! du -sh % ;; etc, etc... ฉันต้องการที่จะมีฟังก์ชั่นที่คล้ายกันภายใต้emacs(รุ่น 24 หากที่สร้างความแตกต่างใด ๆ ) คือมีวิธีที่ง่ายในการแทรกชื่อของไฟล์ที่เปิดในบัฟเฟอร์ปัจจุบัน ตัวอย่างของสิ่งที่ฉันต้องการจะทำ ที่นี่ฉันอธิบายกรณีการใช้งานพื้นฐานบางอย่างเพื่ออธิบายได้ดีขึ้นเมื่อฉันรู้สึกว่าจำเป็นต้องใช้ทางลัด รวบรวม: เมื่อฉันป้อนM-x compileemacs …
19 emacs  function 

3
การติดตั้งจากแหล่งที่มา วิธีแก้ไขการอ้างอิงโดยไม่ทำลายตัวจัดการแพ็กเกจ
การคอมไพล์และติดตั้งซอฟต์แวร์เป็นความเจ็บปวดและปัญหาที่ฉันไม่สามารถเอาชนะได้ ฉันแค่อยากจะทำความเข้าใจกับกระบวนการนี้กับใครสักคนที่มีความรู้มากขึ้นเพื่อล้างใจของฉันเพื่อไปสู่ระดับต่อไป ซอฟต์แวร์ทางวิทยาศาสตร์มากมายที่ฉันต้องการไม่ได้จัดจำหน่ายเป็นแพ็คเกจ ฉันเข้าใจ "./configure" ตั้งค่าตัวแปรการรวบรวมและการตรวจสอบการอ้างอิง "ทำ" การรวบรวม "sudo make install" ทำให้ไลบรารีและถังขยะทั้งหมดอยู่ในตำแหน่งของพวกเขา อย่างไรก็ตามมันไม่ทำงาน ฉันไม่ค่อยออกจากเวที) "./configure" โดยไม่ต้องพึ่งนรกและถ้าฉันทำข) "sudo make install" อาจจะเป็นช่องของฉัน a) นรกพึ่งพานั้นน่าผิดหวังมาก บางครั้งฉันมีห้องสมุด แต่ก็ไม่ชอบ หรือไลบรารีไม่ต้องการติดตั้ง หรือ "กำหนดค่า" หาไม่พบ หรือ distro ของฉันวางไว้ที่ไหนสักแห่งที่มันไม่ควรจะเป็น หรือมีสองรุ่นในระบบของฉัน ปัญหาคือฉันไม่เข้าใจวิธีการวินิจฉัยและแก้ไขปัญหาเหล่านี้ มีการอ้างอิงที่ดีอะไรบ้างที่จะเรียนรู้สำหรับคนที่ไม่จำเป็นต้องเป็นโปรแกรมเมอร์ b) ความเข้าใจของฉันคือ "ทำการติดตั้ง" จะแทนที่บางไลบรารีและเปลี่ยนการตั้งค่าโดยที่ผู้จัดการแพคเกจของฉันรู้เรื่องนี้ ดังนั้นบางโปรแกรมจะไม่ทำงาน แต่ไม่สามารถอัปเดตโปรแกรมอื่นได้ ดังนั้นหากฉันไม่ได้ใช้ "make install" และเพียงแค่เก็บไบนารีที่รวบรวมไว้ในไดเรกทอรีผู้ใช้ของฉันด้วยการเชื่อมโยงสัญลักษณ์ที่เพิ่มเข้าไปใน PATH ฉันจะชัดเจนไหม กล่องของฉันเป็นผู้ใช้คนเดียวมี HD ฟรีมากมายดังนั้นฉันไม่สนใจว่าจะมีสำเนาห้องสมุดหลายสิบชุดถ้ามันจะช่วยแก้ปัญหาของฉันได้ พื้นที่มีราคาถูก

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