Unix & Linux

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

6
ฉันควรติดตั้งโปรแกรมลงในไดเรกทอรีใดใน Linux?
ฉันต้องการติดตั้งโปรแกรมใน Linux และเรียกใช้เป็น daemon (ทีมพูด 3 ในกรณีนี้ แต่คำถามเป็นเรื่องธรรมดา) ไม่มีแพ็กเกจที่ให้บริการมีเพียงไบนารีไบนารี ฉันควรวางโปรแกรมไว้ในโครงสร้างของไดเร็กตอรี่ที่ไหน? บนเว็บฉันพบว่า / opt ใช้สำหรับ "แอพเสริมเพิ่มเติม" ในขณะที่ / usr ใช้สำหรับ "โปรแกรมผู้ใช้" ฉันพบหนึ่งกวดวิชาแนะนำ / เลือกในขณะที่อีก sugested / usr แล้วอันไหนที่ "ถูกกว่า"?

7
เน้นไวยากรณ์ในเทอร์มินัล
บรรณาธิการที่เน้นการเขียนโปรแกรมจำนวนมากจะเปลี่ยนสีซอร์สโค้ด มีคำสั่งที่จะ colorize ซอร์สโค้ดสำหรับการดูใน terminal หรือไม่? ฉันสามารถเปิดไฟล์ที่มีemacs -nw(ซึ่งจะเปิดใน terminal แทน popping ขึ้นหน้าต่างใหม่) แต่ฉันกำลังมองหาบางสิ่งบางอย่างที่ทำงานเช่นless(หรืองานที่มี less -Rซึ่งผ่านลำดับหนีสีในการป้อนข้อมูลของมัน)

5
init ทำอะไรได้บ้าง?
ฉันกำลังสร้างลินุกซ์ distro และตอนนี้ฉันต้องการโปรแกรมเริ่มต้น ฉันสามารถเขียนโค้ดใน c ได้ดีมากและฉันรู้ค่อนข้างน้อยเกี่ยวกับ linux (ไม่มาก แต่ฉันใช้ arch linux สำหรับการพัฒนาเป็นเวลา 4 ปี) ดังนั้นฉันคิดว่าฉันควรลองเขียนสคริปต์ init พื้นฐานของฉันเองใน C ฉัน แค่สงสัยว่างานเริ่มต้นทำอะไรเพื่อตั้งค่าระบบสำหรับเชลล์แบบง่าย? (เมื่อฉันถามว่า "init ทำอะไรได้บ้าง" ฉันรู้ว่า init คืออะไรและใช้ทำอะไรฉันไม่ทราบว่าจะทำงานอะไร) ฉันไม่จำเป็นต้องรหัสและฉันอาจไม่จำเป็นต้องมีแม้แต่คำสั่งพื้นฐาน แต่ฉันไม่ต้องการเพื่อที่พวกเขาจะทำงานใน
43 linux  startup  init 

3
ชื่อไฟล์ถูกเก็บไว้ในระบบไฟล์ที่ไหน?
ชื่อไฟล์ถูกเก็บไว้ในระบบไฟล์ที่ไหน? ไม่ได้อยู่ใน inode หรือเนื้อหาของไฟล์จริงเนื่องจากเรามีฮาร์ดลิงก์ที่ชื่อไฟล์สองไฟล์สามารถชี้ไปที่ไอโหนดเดียวกัน

2
วิธีใช้ rsync เพื่อสำรองข้อมูลไดเรกทอรีที่ไม่มีไดเรกทอรีย่อย git
ฉันต้องการคัดลอกcไดเรกทอรีของฉันด้วยไดเรกทอรีย่อยทั้งหมดยกเว้น./gitไดเรกทอรีย่อย ฉันใช้มันrsync: echo "copy c and sh files " rsync -a --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c # remove .git directory = do not send it to dropbox. Thx to Tomasz Sowa rm -rf ~/Dropbox/Public/c/.git ฉันทำได้ดีกว่าไหม
43 rsync  git  dropbox 

6
ระบบของฉันใช้ไลบรารี C เวอร์ชันใด
ฉันจะบอกได้อย่างไรว่าห้องสมุดของฉันใช้ระบบผู้ใช้อะไร เหตุผลที่เป็นไปได้ที่จะต้องการข้อมูลนี้ ได้แก่ : มีแพ็กเกจแหล่งข้อมูลขนาดมหึมาที่ฉันกำลังพิจารณาดาวน์โหลดซึ่งฉันแน่ใจว่าจะทำการตรวจสอบที่เหมาะสมและแสดงรายการเวอร์ชันไลบรารีขั้นต่ำ แต่ฉันควรช่วยตัวเองให้ยุ่งยากโดยการตรวจสอบก่อนว่ามันใช้ได้หรือไม่ ฉันกังวลเกี่ยวกับความเข้ากันได้ของ ABIกับไบนารีของบุคคลที่สามที่ฉันต้องการลองและติดตั้งนอกระบบการจัดการแพ็กเกจของระบบ ฉันมีแพ็กเกจซอร์สซึ่งเอกสารระบุถึงความต้องการไลบรารีเวอร์ชันระบบขั้นต่ำของฉัน แต่กระบวนการบิลด์ไม่ดำเนินการตรวจสอบใด ๆ ฉันกำลังสร้าง cross-compiler ที่กำหนดเป้าหมายไปยังระบบเฉพาะและไม่ต้องการที่จะเสี่ยงต่อปัญหาความเข้ากัน

5
ทำไมเชลล์แบบโต้ตอบบนเชลล์ล็อกอินของ OSX เป็นค่าเริ่มต้น
ใน Linux และตามความรู้ของฉันระบบ Unix ทั้งหมดเทอร์มินัลอีมูเลเตอร์รันเชลล์แบบโต้ตอบและไม่ล็อกอินตามค่าเริ่มต้น ซึ่งหมายความว่าสำหรับทุบตีเปลือกเริ่มต้นจะ: เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก/etc/bash.bashrcและ~/.bashrcถ้ามีไฟล์เหล่านี้อยู่ สิ่งนี้อาจถูกยับยั้งโดยใช้ --norc ตัวเลือก --rcfile ตัวเลือกไฟล์จะบังคับทุบตีอ่านและรันคำสั่งจากไฟล์แทนและ/etc/bash.bashrc~/.bashrc และสำหรับล็อกอินเชลล์: เมื่อ bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบหรือเป็นเชลล์ที่ไม่มีการโต้ตอบพร้อมกับ--loginตัวเลือกมันจะอ่านและเรียกใช้คำสั่งจากไฟล์/etc/profileก่อนหากไฟล์นั้นมีอยู่ หลังจากที่ได้อ่านแฟ้มที่จะมองหา~/.bash_profile, ~/.bash_loginและ~/.profileในลำดับที่และอ่านและรันคำสั่งจากคนแรกที่มีอยู่และสามารถอ่านได้ --noprofileตัวเลือกที่อาจจะนำมาใช้เมื่อเปลือกจะเริ่มต้นในการยับยั้งการทำงานนี้ บน OSX อย่างไรก็ตามเชลล์เริ่มต้น (ซึ่งเป็น bash) เริ่มต้นในเทอร์มินัลเริ่มต้น (Terminal.app) จริง ๆ แล้วแหล่งที่มา~/.bash_profileหรือ~.profileอื่น ๆ กล่าวอีกนัยหนึ่งมันทำหน้าที่เหมือนเปลือกเข้าสู่ระบบ คำถามหลัก : เหตุใดเชลล์การโต้ตอบเริ่มต้นคือเชลล์การเข้าสู่ระบบบน OSX เหตุใด OSX จึงเลือกทำเช่นนี้ ซึ่งหมายความว่าทุกคำแนะนำ / แบบฝึกหัดสำหรับสิ่งเปลือกตามที่กล่าวถึงการเปลี่ยนแปลงในสิ่งที่~/.bashrcจะล้มเหลวใน OSX ~/.profileหรือในทางกลับกันสำหรับ ถึงกระนั้นในขณะที่ข้อกล่าวหาจำนวนมากสามารถปรับระดับได้ที่ Apple การจ้าง devs ที่ไร้ความสามารถหรืองี่เง่าไม่ได้เป็นหนึ่งในนั้น …
43 bash  osx 

2
อะไรคือ local6 (และ # local อื่น ๆ ) ใน syslog?
สิ่งที่ฉันเข้าใจ บนเซิร์ฟเวอร์ระวัง * เรากำหนดค่าส่งบันทึกที่ใช้facility.severityที่facilityเป็นชื่อของ (ขอเรียกว่า) "องค์ประกอบ" ของระบบเช่นเคอร์เนลตรวจสอบและอื่น ๆ ; และseverityเป็น "ระดับ" ของบันทึกแต่ละรายการที่บันทึกโดยเครื่องมืออำนวยความสะดวกเช่นบันทึกinfo(ที่ให้ข้อมูล) crit(ที่สำคัญ) kern.critดังนั้นถ้าผมต้องการที่จะส่งเคอร์เนลบันทึกที่สำคัญผมจะใช้ การรวมกันของสิ่งอำนวยความสะดวกและความรุนแรงเป็นที่รู้จักกันเป็นลำดับความสำคัญเช่น ... ระดับความสำคัญ = kern.crit สิ่งอำนวยความสะดวก = kern ความรุนแรง = crit คำถาม มี "สิ่งอำนวยความสะดวก" เรียกว่าไปlocal0local7 อะไรคือlocal#สิ่งอำนวยความสะดวกเหล่านี้ในโลก? ฉันถามโดยเฉพาะเกี่ยวกับlocal6เพราะมักจะพบบ่อยที่สุดในการค้นหา คำถามของฉันเป็นจริงเพราะฉันกำหนดค่า Snort (SourceFire Intrusion Sensor) เพื่อส่งบันทึกดังนั้นฉันต้องการทราบว่าfacilityจะใช้อะไร คำถามของฉันไม่เฉพาะ Snort เนื่องจากlocal#สิ่งอำนวยความสะดวกมีทุกที่ บน Cisco และ IBM Application Server ของ IBM เช่น การวิจัย …
43 syslog 

4
เน้นคำสั่งและไวยากรณ์น้อยลง
ฉันจำเป็นต้องใช้less commandกับการเน้นไวยากรณ์ของคำสั่งที่เป็นกลุ่มสำหรับpython, C, bashและภาษาอื่น ๆ ฉันจะใช้สีที่เน้นสีซินแท็กซ์ตามvimสีได้less commandอย่างไร

4
แสดงเส้นทางในแบบที่มนุษย์อ่านได้
ฉันต้องการแสดงตัวแปรสภาพแวดล้อม PATH ในแบบที่มนุษย์อ่านได้มากขึ้น $ echo $PATH /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/bin:/usr/local/git/bin:/Users/arturo/.gvm/groovy/current/bin:/Users/arturo/.gvm/grails/current/bin:/Users/arturo/.gvm/griffon/current/bin:/Users/arturo/.gvm/gradle/current/bin:/Users/arturo/.gvm/lazybones/current/bin:/Users/arturo/.gvm/vertx/current/bin:/Users/arturo/.gvm/bin:/Users/arturo/.gvm/ext:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin ฉันกำลังคิดในบางสิ่งเช่นนี้: $ echo $PATH | some cut and awk magic /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin /Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin /Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin /Users/arturo/.rvm/bin ...

3
$ {1 +“ $ @”} หมายถึงอะไรในเชลล์สคริปต์และมันแตกต่างจาก“ $ @” อย่างไร
ในเอกสารประกอบ Perl, perlrun (1)แนะนำการเรียกใช้สคริปต์ Perl โดยใช้ส่วนหัวของสองภาษาเชลล์ / Perl: #!/bin/sh #! -*-perl-*- eval 'exec perl -x -wS $0 ${1+"$@"}' if 0; อะไร${1+"$@"}หมายถึง? ฉันลองใช้"$@"แทน (โดยใช้ Bash เป็น / bin / sh) และดูเหมือนว่าจะใช้งานได้เช่นกัน แก้ไข ${1:+"$@"}สองคำตอบด้านล่างบอกว่ามันควรจะเป็น ฉันรับรู้ถึง${parameter:+word}ไวยากรณ์ ("ใช้ค่าทางเลือก") ที่ระบุไว้ใน bash (1) อย่างไรก็ตามฉันไม่มั่นใจเพราะ ทั้งสองอย่าง${1+"$@"}และใช้"$@"งานได้ดีแม้ว่าจะไม่มีพารามิเตอร์ก็ตาม ถ้าฉันสร้าง simple.sh เป็น #!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 …
43 bash  shell  perl 

4
วิธีพิมพ์“ $” ในเอกสารที่นี่
ฉันจะสะท้อน "$" ใน here-doc ใน bash ได้อย่างไร? $ABC=home_dirตัวอย่างเช่นผมต้องการที่จะมีไฟล์ที่มีเนื้อหาบนเซิร์ฟเวอร์ระยะไกลเช่น $ ssh hostname sudo -s <<EOF echo "$ABC=home_dir" > file EOF แต่มันก็จะถือว่าเป็นตัวแปร ฉันจะพิมพ์ตัวอักษรได้$อย่างไร
43 bash  shell  quoting 

10
ตรวจสอบว่าโฟลเดอร์เป็นระบบไฟล์รีโมตที่เมาท์หรือไม่
เป็นวิธีที่ดีที่สุด (เชื่อถือได้พกพา ฯลฯ ) เพื่อตรวจสอบว่าโฟลเดอร์ที่กำหนดอยู่ในระบบไฟล์ระยะไกลติดตั้ง (NFS) ภายในเปลือกสคริปต์คืออะไร? ฉันกำลังมองหาคำสั่งที่จะมีลักษณะ: chk-remote-mountpoint /my/path/to/folder


7
วิธีรับคำแรกของสตริง
เมื่อฉัน'echo *' ได้รับผลลัพธ์ต่อไปนี้: file1 file2 file3 ... สิ่งที่ฉันต้องการคือการเลือกคำแรก ฉันจะดำเนินการต่อได้อย่างไร
43 bash  string 

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