Unix & Linux

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

2
fork () อยู่ที่ fork fork ที่ไหน: () {: |: &};:?
คำเตือน: การเรียกใช้คำสั่งนี้ในเชลล์ส่วนใหญ่จะส่งผลให้ระบบแตกหักซึ่งจะต้องบังคับให้ปิดระบบเพื่อแก้ไข ฉันเข้าใจฟังก์ชั่นวนซ้ำ:(){ :|: & };:และสิ่งที่ทำ แต่ฉันไม่รู้ว่าระบบสายส้อมอยู่ที่ไหน ผมไม่แน่ใจ |แต่ผมสงสัยว่าในท่อ

3
shellcheck ไม่แนะนำให้ใช้ basename: ทำไม
ฉันกำลังพยายามออกshellcheck ฉันมีบางอย่างเช่นนั้น basename "${OPENSSL}" และฉันได้รับคำแนะนำต่อไปนี้ Use parameter expansion instead, such as ${var##*/}. จากมุมมองจริงฉันไม่เห็นความแตกต่าง $ export OPENSSL=/opt/local/bin/openssl $ basename ${OPENSSL} openssl $ echo ${OPENSSL##*/} openssl เนื่องจากbasenameเป็นข้อมูลจำเพาะของ POSIXฉันจึงไม่มีเหตุผลว่าทำไมจึงควรเป็นวิธีปฏิบัติที่ดีที่สุด คำใบ้ใด ๆ

5
ชื่อสีขั้ว "เป็นมิตร" ในเชลล์สคริปต์?
ฉันรับรู้ถึงห้องสมุดในภาษาต่างๆเช่น Ruby และ Javascript เพื่อทำให้ colorizing script terminal ของคุณง่ายขึ้นโดยใช้ชื่อสีเช่น "red" แต่มีบางอย่างเช่นนี้สำหรับเชลล์สคริปต์ใน Bash หรือ Ksh หรืออะไรก็ตาม?

2
Bash scripting - loop จนกว่าค่าที่ส่งคืนจะเป็น 0
ฉันจำเป็นต้องติดตั้งบางสิ่งบางอย่างในสคริปต์ของฉัน แต่บางครั้งก็ยกเลิกการต่อเชื่อมก่อนที่ข้อมูลทั้งหมดจะถูกคัดลอกและทำให้การติดตั้งล้มเหลว ฉันมองหาวิธีที่จะทำการติดตั้ง "บล็อก" แต่ฉันไม่พบอะไรเลย ดังนั้นฉันพยายามเขียนสคริปต์เพื่อวนซ้ำจนกว่าจะสามารถ unmount ได้ แต่ไม่ได้ผล while [ `sudo umount mount` ] do sleep 0.1 done rmdir mount เมื่อรันเอาต์พุต: umount: /home/evantandersen/mount: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) rmdir: failed to remove `mount': Device …

5
การรับข้อความ Syslog ด้วย systemd Arch Linux
ฉันรู้สึกว่าฉันมองข้ามสิ่งที่เห็นได้ชัดเจน แต่ฉันไม่สามารถเข้าใจวิธีการรับเซิร์ฟเวอร์ Arch Linux ของฉันซึ่งใช้systemdเพื่อรับและบันทึกsyslogข้อความจากระบบระยะไกล ฉันมีโมเด็ม Cisco 678 DSL และ WAP DD-WRT และทั้งสองสามารถกำหนดค่าให้ส่งข้อความรูปแบบ syslog ไปยังเครื่องอื่นได้ ฉันต้องการให้เครื่องนั้นเป็นเซิร์ฟเวอร์ Arch Linux ของฉัน ฉันไปรอบ ๆ และสิ่งที่ฉันพบคือ "systemd แทนที่ syslog" หรือว่าฉันไม่จำเป็นต้องทำงานอีกต่อไปsyslogหรือสิ่งที่ไม่เกี่ยวข้องกับคำถามของฉัน UPDATE ฉันถามฟอรัม Archแล้วและไม่มีคำตอบที่เกี่ยวข้อง ฉันติดตั้ง syslog-ng เพื่อฟังบนพอร์ต UDP 514 syslog-ng เขียนข้อความจาก Cisco 678 ของฉันและ WAP DD-WRT ที่ฉันมี น่าเสียดายที่ข้อความไม่ได้จบลงในสมุดรายวันของ systemd แต่เป็นไฟล์แบบแฟลต ดังนั้นไม่มีวิธีแก้ปัญหาที่แน่นอน แต่มีวิธีแก้ปัญหา ฉันควรมีข้อความ syslog ในวารสารไม่ใช่ไฟล์ …

2
ฉันจะทำให้โครงร่างสีที่ใช้พลังงานแสงอาทิตย์ทำงานร่วมกับ gnome-terminal, tmux และ vim ได้อย่างไร?
มีคำถามมากมายเกี่ยวกับเรื่องนี้ แต่เป็นเพราะมีตัวแปรมากมาย ฉันต้องรวบรวมคำแนะนำจากหลาย ๆ ไซต์ก่อนที่ฉันจะใช้งานได้ ก่อนอื่นฉันไม่สามารถตั้งค่าสีที่ใช้พลังงานแสงอาทิตย์ 16 คำนิยามใน gnome-terminal ได้อย่างง่ายดาย (ฉันทำได้ด้วยมือ / คลิกเท่านั้นเพื่อรับรู้ว่าฉันไม่ได้รับคำสั่ง / การทำแผนที่ที่ถูกต้อง) เมื่อฉันแก้ไขที่ฉันย้าย ... จากนั้นฉันก็ใช้สีโซลาร์เซลล์ที่ทำงานเป็นกลุ่ม OK-ish แต่มีพื้นหลังสีดำแปลก ๆ ปรากฏขึ้นในการเน้นบางอย่าง เมื่อฉันแก้ไขแล้วฉันก็ย้ายไป ... จากนั้นฉันก็รู้ว่าเสียงฟอร์ดนั้น v. wonky เมื่อทำงานภายใน tmux นี้เป็นที่ถกเถียงกันอย่างหนาแน่น แต่น้อยมากของคำตอบ (ซึ่งส่วนใหญ่จะพูดเกี่ยวกับการตั้งค่าTERMไปxterm-256colors) ทำงานให้ฉัน ในที่สุดฉันก็แก้ไขได้เช่นกัน Solarizedเป็นจานสีที่ดีมาก (ถึงแม้ว่าฉันจะทำให้สีฐานที่มืดที่สุดและทำให้สีจางลงเพราะฉันต้องการความคมชัดที่สูงกว่าและพบว่า 'สีขาว' สีเหลืองไกลเกินไปบนหน้าจอสอบเทียบของ tmux - prob ปรับหน้าจอแล็ปท็อป ปกติจะเป็นสีฟ้าเกินไป!) ดังนั้นฉันจึงโพสต์คำถามนี้พร้อมคำตอบเพื่อแบ่งปันผลการเรียนรู้ของฉัน

2
อะไรคือสิ่งที่เทียบเท่ากับ 'www-data' สำหรับ CentOs?
CentOs ไม่รู้จักข้อมูล www แต่ต้องการเปลี่ยนความเป็นเจ้าของในโฟลเดอร์ไฟล์ของฉัน โฟลเดอร์ทั้งหมดของฉันเป็นของ root ในขณะนี้ สับสนกับสิ่งที่ควรเป็นของ Apache และสิ่งที่เธอเป็นเจ้าของโดยฉันผู้ใช้รูต? นอกจากนี้เมื่อมันบอกว่ารูทรูทนั่นหมายความว่าผู้ใช้รูทฉันและรูทของกลุ่มอาปาเช่
25 chown 

10
วิธีลบบรรทัดใหม่หลายรายการที่ EOF
ฉันมีไฟล์ที่ลงท้ายด้วยการขึ้นบรรทัดใหม่อย่างน้อยหนึ่งบรรทัดและควรลงท้ายด้วยการขึ้นบรรทัดใหม่เพียงครั้งเดียว ฉันจะทำสิ่งนั้นด้วยเครื่องมือ Bash / Unix / GNU ได้อย่างไร ตัวอย่างไฟล์ที่ไม่ดี: 1\n \n 2\n \n \n 3\n \n \n \n ตัวอย่างไฟล์ที่แก้ไข: 1\n \n 2\n \n \n 3\n กล่าวอีกนัยหนึ่ง: ควรมีการขึ้นบรรทัดใหม่หนึ่งบรรทัดระหว่าง EOF และอักขระที่ไม่ใช่บรรทัดใหม่ล่าสุดของไฟล์ การดำเนินการอ้างอิง อ่านเนื้อหาไฟล์ตัดบรรทัดใหม่หนึ่งบรรทัดจนไม่มีบรรทัดใหม่อีกสองบรรทัดในตอนท้ายเขียนมันกลับมา: #! /bin/python import sys with open(sys.argv[1]) as infile: lines = infile.read() while lines.endswith("\n\n"): lines = lines[:-1] with open(sys.argv[2], 'w') …
25 bash  sed  awk  ed 

8
สามารถลบอักขระขึ้นบรรทัดใหม่ 'สองเท่า' ได้หรือไม่
ฉันมีเอกสารที่มีบรรทัดว่างเปล่าจำนวนมาก ฉันจะลบออกได้อย่างไรเมื่อมี 2 หรือมากกว่ารวมกัน ฉันลองsed "s/\n\n//"ไฟล์แล้วแต่ใช้งานไม่ได้ ไม่มีข้อผิดพลาด
25 sed 

7
วิธีการแทนที่คำปัจจุบันภายใต้เคอร์เซอร์ใน Emacs
ฉันจะแทนที่คำปัจจุบันภายใต้เคอร์เซอร์ใน Emacs ได้อย่างไร ฉันรู้ว่าฉันสามารถใช้ query-replace หรือ replace-string ได้ แต่ทุกครั้งที่ทำเช่นนั้นฉันต้องพิมพ์สตริงทั้งหมดเพื่อแทนที่นี่เป็นเรื่องน่ารำคาญ Vi มี cword คำสั่งที่เทียบเท่าและฉันสามารถใช้ทางลัดเพื่อดึงคำใต้เคอร์เซอร์แทน: nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\># ใครรู้วิธีการทำกับ Emacs?
25 emacs  search  replace 

6
การเพิ่มข้อความไปยังชื่อไฟล์ก่อนที่จะขยาย
ฉันต้องการที่จะเพิ่มข้อความในตอนท้ายของชื่อไฟล์ แต่ก่อนที่จะขยาย ตอนนี้ฉันกำลังพยายาม for f in *.shp; do echo $f_poly; done ผลลัพธ์คือ Quercus_acutifolia.shp_poly Quercus_agrifolia.shp_poly Quercus_corrugata.shp_poly Quercus_cortesii.shp_poly Quercus_costaricensis.shp_poly Quercus_havardii.shp_poly Quercus_hemisphaerica.shp_poly Quercus_kelloggii.shp_poly Quercus_knoblochii.shp_poly Quercus_laceyi.shp_poly ฉันอยากให้มันเป็น Quercus_acutifolia_poly.shp Quercus_agrifolia_poly.shp Quercus_corrugata_poly.shp Quercus_cortesii_poly.shp Quercus_costaricensis_poly.shp Quercus_havardii_poly.shp Quercus_hemisphaerica_poly.shp Quercus_kelloggii_poly.shp Quercus_knoblochii_poly.shp Quercus_laceyi_poly.shp
25 bash  rename  filenames 

2
วิธีการเมานต์ภาพ mdf, iso9660 ไม่ทำงานหรือไม่
ฉันมี.mdfรูปไม่กี่รูปที่สามารถติดตั้งได้Alcohol 120%แต่บน Linux เป็นไปได้หรือไม่ ฉันได้พยายามสิ่งที่คล้ายกันไปแต่ที่ไม่ได้ทำงานที่นี่ผมได้mount -o loop -t iso9660 XX.mdf /mnt/isoISOFS: Unable to identify CD-ROM format
25 linux  iso 

5
การหาสาเหตุของ Linux kernel panic
ฉันใช้งานอนุพันธ์ Ubuntu 12.04 (amd64) และฉันมีปัญหาแปลก ๆ เมื่อเร็ว ๆ นี้ ดูเหมือนสีน้ำเงิน X จะหยุดอย่างสมบูรณ์ชั่วขณะหนึ่ง (1-3 นาที) จากนั้นระบบจะรีบูต ระบบนี้ถูกโอเวอร์คล็อก แต่มีเสถียรภาพมากเมื่อผ่านการตรวจสอบใน Windows ซึ่งทำให้ฉันเชื่อว่าฉันมีความตื่นตระหนกของเคอร์เนลหรือมีปัญหากับหนึ่งในโมดูลของฉัน แม้ใน Linux ฉันสามารถเรียกใช้ LINPACK และจะไม่เห็นความผิดพลาดแม้จะวางภาระที่น่าขันบน CPU ดูเหมือนว่าการขัดข้องจะเกิดขึ้นแบบสุ่มแม้ในขณะที่เครื่องไม่ได้ทำงาน ฉันจะดีบักสิ่งที่ระบบขัดข้องได้อย่างไร สำหรับลางสังหรณ์ว่าอาจเป็นไดรเวอร์ NVIDIA ที่เป็นกรรมสิทธิ์ฉันได้ย้อนกลับไปเป็นไดรเวอร์รุ่นเสถียรรุ่น 304 และฉันยังคงพบกับความผิดพลาด ทุกคนสามารถแนะนำขั้นตอนการดีบักที่ดีหลังจากเกิดความผิดพลาดได้หรือไม่? ฉันยินดีเป็นอย่างยิ่งที่จะบูตลงใน thumb drive และโพสต์ไฟล์การกำหนดค่าความผิดพลาดทั้งหมดของฉันฉันไม่แน่ใจว่ามันจะเป็นอะไร ฉันจะทราบได้อย่างไรว่าระบบของฉันหยุดทำงาน ต่อไปนี้เป็นบันทึกการกระทำผิดปกติ .xsession-errors : http://pastebin.com/EEDtVkVm /var/log/Xorg.0.log : http://pastebin.com/ftsG5VAn /var/log/kern.log : http://pastebin.com/Hsy7jcHZ / var …

2
วิธีออกจากโหมดค้นหาประวัติทุบตี
ใน Ubuntu 12.04 ฉันใช้CTRL- Rเพื่อเข้าสู่การค้นหาประวัติย้อนกลับ หากไม่พบคำสั่งที่ฉันต้องการ (หลังจากทำซ้ำCTRL- R) ฉันจะออกจากทันทีไปยังพรอมต์คำสั่ง (ว่าง) โดยไม่มีคำสั่งประวัติป้อนหรือดำเนินการในบรรทัดคำสั่งได้อย่างไร

4
การเรียกใช้งานฟังก์ชั่นที่ผู้ใช้กำหนดในการค้นหา -exec call
ฉันใช้ Solaris 10 และฉันได้ทดสอบสิ่งต่อไปนี้ด้วย ksh (88), bash (3.00) และ zsh (4.2.1) รหัสต่อไปนี้ไม่ได้ให้ผลลัพธ์ใด ๆ : function foo { echo "Hello World" } find somedir -exec foo \; การค้นหาไม่ตรงกับหลายไฟล์ (ดังแสดงโดยแทนที่-exec ...ด้วย-print) และฟังก์ชั่นการทำงานอย่างสมบูรณ์แบบเมื่อถูกเรียกออกไปข้างนอกจากการfindโทร นี่คือสิ่งที่man findหน้าพูดเกี่ยวกับ-exec: คำสั่ง -exec จริงถ้าคำสั่งดำเนินการส่งกลับ ค่าศูนย์เป็นสถานะออก จุดจบของ คำสั่งจะต้องคั่นด้วยการหลบหนี อัฒภาค (;) อาร์กิวเมนต์คำสั่ง {} คือ แทนที่ด้วยชื่อพา ธ ปัจจุบัน หากว่า อาร์กิวเมนต์สุดท้ายของ -exec คือ …

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