Unix & Linux

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

3
การแยกคำคืออะไร เหตุใดการเขียนโปรแกรมเชลล์จึงมีความสำคัญ
zshฉันได้รับสับสนเกี่ยวกับคำบทบาทแยกเล่นใน ฉันไม่ได้สัมผัสกับแนวคิดนี้เมื่อการเขียนโปรแกรมใน C, Python หรือ MATLAB และสิ่งนี้ได้กระตุ้นความสนใจของฉันว่าทำไมการแยกคำดูเหมือนจะเป็นสิ่งที่เฉพาะเจาะจงสำหรับการเขียนโปรแกรมเชลล์ ฉันได้อ่านเกี่ยวกับการแยกคำในเว็บไซต์นี้และเว็บไซต์อื่น ๆ มาก่อน แต่ไม่พบคำอธิบายที่ชัดเจนเกี่ยวกับแนวคิด Wikipedia มีคำจำกัดความของการแยกคำแต่ดูเหมือนจะไม่มีการอ้างอิงถึงวิธีการนำไปใช้กับ Unix shells นี่คือตัวอย่างของความสับสนของฉันในzsh: ในคำถามที่พบบ่อยของZ Shellฉันอ่านต่อไปนี้: 3.1: ทำไมไม่$varที่var="foo bar"ไม่ได้ทำในสิ่งที่ผมคาดหวัง? ในอนุพันธ์บอร์นเชลล์ส่วนใหญ่ตัวแปรหลายคำเช่น var="foo bar" แบ่งออกเป็นคำต่าง ๆ เมื่อส่งผ่านไปยังคำสั่งหรือใช้ในการfor foo in $varวนซ้ำ โดยค่าเริ่มต้น zsh ไม่ได้มีพฤติกรรมที่: ตัวแปรยังคงเหมือนเดิม (นี่ไม่ใช่ข้อผิดพลาด! ดูด้านล่าง) มีตัวเลือกSH_WORD_SPLITให้ใช้งานร่วมกันได้ อย่างไรก็ตามในคู่มือ Z Shellฉันอ่านต่อไปนี้: SH_WORD_SPLIT (-y) <K> <S> ทำให้การแยกฟิลด์ดำเนินการกับการขยายพารามิเตอร์ที่ไม่ได้ระบุไว้ โปรดทราบว่าตัวเลือกนี้ไม่มีส่วนเกี่ยวข้อง กับการแยกคำ (ดูการขยายพารามิเตอร์) ทำไมมันไม่บอกว่าSH_WORD_SPLITมีอะไรจะทำอย่างไรกับการแยกคำ? การแยกคำไม่ใช่สิ่งที่ถูกต้องหรือไม่
16 shell  zsh 

2
จะเกิดอะไรขึ้นเมื่อฉันปิด () file descriptor?
ฉันพยายามดึงภาพทั้งหมดด้วยตัวอธิบายไฟล์ ว่าฉันมี process1 ซึ่งเริ่มมีไฟล์อธิบายเหล่านี้: _process1_ | | | 0 stdin | | 1 stdout | | 2 stderr | |__________| จากนั้นฉันปิดไฟล์ descriptor 1: close(1); แฟ้มบ่ง 1 แปล (คะแนน) ที่ stdout โครงสร้างไฟล์ในเคอร์เนลที่เปิดไฟล์ตาราง ด้วยรหัสด้านบนตัวอธิบายไฟล์ 1 จะถูกลบออกจากตารางกระบวนการซึ่งกลายเป็น: _process1_ | | | 0 stdin | | 2 stderr | |__________| แต่จะเกิดอะไรขึ้นในเคอร์เนล? ที่ไม่stdoutโครงสร้างแฟ้มได้รับ deallocated? เป็นไปได้อย่างไรถ้า …

2
กราฟิกที่เร็วขึ้นในแขกของ KVM
มีวิธีใดบ้างในการปรับปรุงประสิทธิภาพกราฟิกของแขก KVM หรือไม่? ฉันสงสัยว่าคำถามนี้กว้างเกินไปดังนั้นฉันจะให้การตั้งค่าและข้อกำหนดของฉัน เป้าหมายสูงสุดของฉันคือการใช้แขก Ubuntu เป็นระบบปฏิบัติการหลักของฉัน สิ่งที่เน้นกราฟิกอย่างเดียวที่ฉันทำคือดูวิดีโอและเล่นเกม state-of-the-the-1990 การตั้งค่าปัจจุบัน: โฮสต์ Debian (X + Fluxbox), แขก KVM พร้อมกราฟิก SDL, (จำลอง) การ์ดกราฟิก vmware (อีกอันหนึ่งมี> 0.5 วินาทีเวลาวาดใหม่) และการติดตั้ง Ubuntu มาตรฐาน ฉันสามารถดูวิดีโอได้ แต่เกมมันเปลี่ยนแปลงเร็ว สิ่งที่ดูเหมือนจะไม่ทำงาน: กราฟิกที่ไม่ใช่ SDL (ทั้งการส่งต่อ VNC และ X นั้นขาด ๆ หาย ๆ ), VGA passthrough (ไม่ได้ใช้งานใน KVM; Xen ต้องการ IOMMU ซึ่งคอมพิวเตอร์ของฉันไม่สนับสนุน) …
16 kvm 

8
ไฟล์ tar เท่านั้นไม่มีไดเร็กทอรี
ฉันอาจจะเขียนเชลล์สคริปต์เพื่อค้นหาไฟล์เท่านั้นจากนั้นส่งรายการไปยัง tar แต่ฉันสงสัยว่ามีคุณลักษณะในตัวใน tar ที่อนุญาตให้ทำเช่นนั้นในบรรทัดคำสั่งเดียวหรือไม่ ตัวอย่างเช่นฉันพบ--no-recursionสวิตช์ แต่เมื่อฉัน: tar --no-recursion -cvf mydir.tar mydir มันเก็บเฉพาะชื่อของรายการในไดเรกทอรี (รวมถึงไดเรกทอรีย่อย!) แต่มันไม่ได้เก็บไฟล์ใด ๆ ฉันก็ลอง: tar --no-recursion -cvf mydir.tar mydir/* แต่ในขณะที่มันเก็บไฟล์เท่านั้นมันยังเก็บชื่อของไดเรกทอรีย่อย มีวิธีบอกไฟล์ tar เท่านั้นไม่มีไดเรกทอรีหรือไม่
16 tar 

2
“ rm” ในระบบไฟล์ NTFS แตกต่างจากการใช้งานของ Windows เองอย่างไร
ฉันมีดิสก์ USB ภายนอกที่มีระบบไฟล์ NTFS อยู่ ถ้าฉันลบไฟล์ออกจาก Windows และฉันเรียกใช้หนึ่งในหลาย ๆ ยูทิลิตี้ "ยกเลิกการลบ" (เช่น TestDisk) ฉันสามารถกู้คืนไฟล์ได้อย่างง่ายดาย (เพราะ "มันยังอยู่ที่นั่น แต่ถูกทำเครื่องหมายว่าถูกลบ") หากฉันลบไฟล์ออกจาก Linux ไม่มียูทิลิตี้ (ยกเว้นว่าฉันใช้การค้นหาแบบอิงฐานข้อมูลแบบลึก) สามารถกู้คืนไฟล์ได้ ทำไม? unlink ถูกนำไปใช้ในระบบไฟล์ NTFS ของ Linux อย่างไร? ดูเหมือนว่ามันจะไม่เพียง "ทำเครื่องหมายว่าถูกลบ" แต่มันลบล้างโครงสร้างบนดิสก์บางส่วนนี่เป็นกรณีหรือไม่

9
มี Linux Distro ใดบ้างที่มี Tiling Window Manager เป็น WM หลักหรือไม่?
ฉันเป็นแฟนตัวยงของ Tiling Window Managers แต่มันแปลกที่ฉันไม่พบ Linux Distro ใด ๆ ที่มีคุณสมบัติเป็น WM หลัก ตัวอย่างเช่น Crunchbang มี OpenBox และ Bodhi มี E17 ดังนั้น ... หนึ่งคุณลักษณะใดที่มี Xmonad / Awesome / I3 / DWM ...

9
วิธีรับข้อมูล dmidecode ที่ไม่มีสิทธิ์รูท
ฉันกำลังเขียนโปรแกรมที่แสดงข้อมูลระบบต่าง ๆ (บนระบบ CentOS) ตัวอย่างเช่นประเภทโปรเซสเซอร์และความเร็ว (จาก/proc/cpuinfo), เวลาบูตล่าสุด (คำนวณจาก/proc/uptime), ที่อยู่ IP (จากifconfigเอาต์พุต) และรายการเครื่องพิมพ์ที่ติดตั้ง (จากlpstatเอาต์พุต) ปัจจุบันได้รับข้อมูลหลายส่วนจากdmidecodeโปรแกรม: ประเภทแพลตฟอร์ม ( dmidecode -s system-product-name) รุ่น BIOS ( dmidecode -s bios-version) จำนวนหน่วยความจำกายภาพ ( dmidecode -t17 | grep Size) เหล่านี้จะใช้ได้เฉพาะในกรณีที่โปรแกรมของฉันคือการทำงานเป็นราก (เพราะมิฉะนั้นdmidecodeกระบวนการย่อยล้มเหลวด้วย/dev/mem: Permission deniedข้อผิดพลาด) มีวิธีอื่นในการรับข้อมูลนี้หรือไม่ที่ผู้ใช้ทั่วไปสามารถเข้าถึงได้

6
วิธีเพิ่มนาฬิกาเขตเวลาที่กำหนดเองไปยังพาเนล XFCE
เวลาท้องถิ่นของฉันคือ CET (ปรากสหภาพยุโรป) ฉันต้องดู UTC และบางครั้งก็เป็นเวลา MSK ฉันสามารถเพิ่มนาฬิกาหลายเรือนที่มีโซนต่าง ๆ ในแผงควบคุมใน XFCE ได้หรือไม่? ฉันรู้วิธีเพิ่มนาฬิกาหลายเรือนจริง ๆ แล้ว แต่จะกำหนดโซนเวลาของแต่ละนาฬิกาได้อย่างไร
16 xfce  timezone 

4
เส้นทางอาคารแข็งแรง
ว่าฉันมีตัวแปรหลายตัวในเชลล์สคริปต์ (เช่นใน zsh): FOLDER_1, FOLDER_2, etc. /ตัวแปรเหล่านี้หมายถึงโฟลเดอร์ลงมาจาก ตัวอย่างเช่นถ้าฉันมีเส้นทาง/home/me/stuff/items ตัวแปรจะเป็น: FOLDER_1='home' FOLDER_2='me' FOLDER_3='stuff' ตอนนี้พูดว่าฉันต้องการที่จะสร้างเส้นทางที่สอดคล้องกันกลับมาโดยการเชื่อมโยงตัวแปร วิธีหนึ่งที่เป็นไปได้คือการสร้างเส้นทางดังนี้: PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/ อย่างไรก็ตามบอกว่าตัวแปรบางตัวFOLDER_iมาพร้อมกับเครื่องหมายสแลชข้างหน้าในขณะที่คนอื่นไม่ทราบ (และเราไม่รู้ว่า) FOLDER_1='home' FOLDER_2='stuff/' FOLDER_3='items' คำถามของฉันคือ: ฉันจะสร้างเส้นทางที่แข็งแกร่งได้อย่างไร (เช่นหลีกเลี่ยงการทับสองครั้งและเพิ่มในที่ที่จำเป็น) ฉันคิดว่าวิธีหนึ่งในการทำเช่นนี้คือการเพิ่ม/ตัวแปรระหว่างคู่เสมอจากนั้นลบรายการที่ซ้ำกันด้วยsedแต่ฉันไม่สามารถทำงานได้ (ฉันไม่แน่ใจว่าฉันจัดการ/อย่างถูกต้องหรือไม่sed) นอกจากนี้ฉันจะสร้างล้อใหม่ได้หรือไม่ (เช่นมีในตัวที่ทำเช่นนี้แล้ว?) ในที่สุดถ้าตัวแปรอยู่ในอาร์เรย์เช่นFOLDERSมันเป็นไปได้ไหมที่จะทำโดยไม่ต้องวนซ้ำ? (หรืออีกวิธีหนึ่งโดยการวนซ้ำ แต่ไม่ทราบว่าFOLDERSมีจำนวนเท่าใดในอาเรย์)


2
จะใช้ regex เป็นตัวคั่นฟิลด์ใน awk ได้อย่างไร
ฉันพยายามที่จะใช้ regex เป็น seperator awkในสนาม จากการอ่านของฉันนี้เป็นไปได้ แต่ฉันไม่สามารถรับไวยากรณ์ที่ถูกต้อง rpm -qa | awk '{ 'FS == [0-9]' ; print $1 }' awk: cmd. line:1: { FS awk: cmd. line:1: ^ unexpected newline or end of string คิด? เป้าหมายหากไม่ได้รับการยกเว้นคือการได้รับรายชื่อซอฟต์แวร์ที่ไม่มีหมายเลขเวอร์ชั่น

4
ที่เก็บคีย์ / ค่ามาตรฐานสำหรับยูนิกซ์
ฉันรู้เกี่ยวกับไลบรารีคีย์ / ค่าสำหรับ unix ( berkeleydb , gdbm , redis ... ) แต่ก่อนที่ฉันจะเริ่มเขียนโค้ดฉันสงสัยว่ามีเครื่องมือมาตรฐานสำหรับ unix ที่จะให้ฉันทำงานต่อไปนี้หรือไม่: $ tool -f datastore.db put "KEY" "VALUE" $ tool -f datastore.db put -f file_key_values.txt $ tool -f datastore.db get "KEY" $ tool -f datastore.db get -f file_keys.txt $ tool -f datastore.db remove "KEY" $ etc... …
16 database 

4
แพ็คเกจทุบตีหายไปจาก Yum ใน CentOS
ฉันกำลังพยายามทำให้แท็บเสร็จสมบูรณ์ทำงานใน Yum ใน CentOS 6 (ดังนั้นฉันสามารถทำสิ่งที่ชอบyum install firefo<TAB>และกลับfirefox) และฉันได้พบบทเรียนมากมายที่พูดง่ายyum install bash-completionๆ แต่เมื่อฉันทำสิ่งนี้ฉันได้รับสิ่งนี้: Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile * base: mirror.anl.gov * extras: yum.singlehop.com * updates: mirror.ubiquityservers.com Setting up Install Process No package bash-completion available. Error: Nothing to do มีพื้นที่เก็บข้อมูลที่ฉันควรเพิ่ม?
16 centos  yum  dnf 

1
จะได้รับโทนสี Kate ที่ไหน?
ไม่มีใครรู้ว่าที่ไหนที่สามารถหารูปแบบสี Kate ที่ดีสำหรับการเน้นไวยากรณ์ได้บ้าง คนเดียวที่ฉันพบว่าทำงานได้ดีมีzenburnและmdark นอกเหนือจากสองสิ่งนี้ฉันไม่สามารถหาสิ่งอื่นได้ มีรูปแบบอื่น ๆ อยู่เล็กน้อยในkde-Lookแต่ฉันไม่สามารถทำให้มันทำงานได้ .. (ไม่สามารถนำเข้าได้) ไม่มีใครรู้รูปแบบสีเคทอื่น ๆ ที่ทำงานได้หรือไม่ ขอขอบคุณ.

4
พิมพ์จดหมายสวย ๆ จาก mutt ไหม?
ฉันรู้ว่าฉันสามารถกำหนดค่าคำสั่งการพิมพ์ใน Mutt ผ่าน.muttrcเช่น: set print=ask-yes set print_command="..." แต่ฉันควรใช้คำสั่ง print สำหรับการพิมพ์ที่สวย ดีa2psเอาท์พุทดูเหมือนว่าสปาร์ตันนิด ๆ หน่อย ๆ แม้จะมี-=mailทางลัด มันไม่สนับสนุน UTF8 มีpapsซึ่งจะอธิบายว่า ' UTF-8 เพื่อแปลง PostScript ใช้ Pangoและขณะนี้ไม่รวมถึงการสนับสนุนสำหรับอัตรากำไรขั้นต้นหรือรูปแบบอีเมล์หรือสิ่งที่ต้องการ mp: ส่วนหัวเริ่มต้นที่ดี ไม่มีการรองรับ UTF8 อีกครั้ง ระยะขอบเริ่มต้นมีขนาดเล็กขัน - หากคุณระบุระยะขอบที่กว้างขึ้นข้อความร่างกายจะถูกพิมพ์ด้านหลังส่วนท้าย enscript: -Gสำหรับส่วนหัวของหน้าแฟนซีเป็นแฟนซีแน่นอน ไม่มี UTF8 สนับสนุน คุณใช้อะไรในศตวรรษที่ 21 เพื่อพิมพ์จดหมายจาก Mutt (ควรสนับสนุน UTF8, DIN A4 เอาต์พุตเป็น PS และ / หรือ …
16 printing  mutt 

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