Unix & Linux

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


7
ฉันจะทำให้สคริปต์ทุบตีแข็งขึ้นเพื่อป้องกันอันตรายเมื่อมีการเปลี่ยนแปลงในอนาคตได้อย่างไร
ดังนั้นฉันจึงลบโฟลเดอร์บ้านของฉัน (หรืออย่างแม่นยำยิ่งขึ้นไฟล์ทั้งหมดที่ฉันมีสิทธิ์เข้าถึงเพื่อเขียน) สิ่งที่เกิดขึ้นคือฉันมี build="build" ... rm -rf "${build}/"* ... <do other things with $build> ในสคริปต์ทุบตีและหลังจากต้องไม่$buildเอาการประกาศและการใช้งานได้ทั้งหมด - rmแต่ rm -rf /*ทุบตีอย่างมีความสุขที่จะขยาย ใช่. ฉันรู้สึกงี่เง่าติดตั้งข้อมูลสำรองทำให้งานที่ฉันทำหายไป พยายามที่จะย้ายผ่านความอับอาย ตอนนี้ฉันสงสัยว่าอะไรคือเทคนิคในการเขียนสคริปต์ทุบตีเพื่อให้ข้อผิดพลาดดังกล่าวไม่สามารถเกิดขึ้นได้หรืออย่างน้อยก็มีโอกาสน้อย? ตัวอย่างเช่นถ้าฉันเขียน FileUtils.rm_rf("#{build}/*") ในสคริปต์ Ruby ผู้แปลก็จะบ่นbuildว่าไม่ได้ถูกประกาศดังนั้นภาษาก็ช่วยปกป้องฉัน สิ่งที่ฉันได้พิจารณาในการทุบตีนอกเหนือจากการจับกลุ่มrm(ซึ่งเป็นคำตอบมากมายในคำถามที่เกี่ยวข้องพูดถึงไม่ได้เป็น unproblematic): rm -rf "./${build}/"* นั่นคงจะฆ่างานปัจจุบันของฉัน (repo Git) แต่ไม่มีอะไรอื่น ตัวแปร / การกำหนดพารามิเตอร์ของrmนั้นต้องมีการโต้ตอบเมื่อทำหน้าที่ภายนอกไดเรกทอรีปัจจุบัน (ไม่พบสิ่งใด) ลักษณะพิเศษที่คล้ายกัน มันเป็นหรือมีวิธีอื่นในการเขียนสคริปต์ทุบตีที่ "แข็งแกร่ง" ในแง่นี้หรือไม่?
46 bash  shell-script  rm 

4
เครื่องหมายสแลช (/) เป็นส่วนหนึ่งของชื่อของไดเรกทอรีรากของ Linux หรือไม่
เครื่องหมายทับ ( /) เป็นส่วนหนึ่งของชื่อไดเรกทอรีรากของ Linux หรือไม่ หรือมันเป็นเพียงสัญลักษณ์ของมัน? แล้วเรื่อง/etcอื่นล่ะ? ปรับปรุง สมมติว่า/dev/sda2เป็นอุปกรณ์บล็อกของไดเร็กทอรีรูท Linux $ sudo debugfs / dev / sda2 debugfs 1.44.1 (24-Mar-2018) debugfs: pwd [pwd] INODE: 2 PATH: / [root] INODE: 2 PATH: / debugfs: stat / Inode: 2 ประเภท: โหมดไดเรกทอรี : 0755 ค่าสถานะ: 0x80000 การสร้าง: 0 เวอร์ชัน: 0x00000000: 00000077 ผู้ใช้: …

2
จะบอกเจอร์นัลให้อ่านการกำหนดค่าใหม่ได้อย่างไร?
คำถามของฉันง่าย: ฉันจะบอก journald ให้อ่านไฟล์การกำหนดค่าอีกครั้งโดยไม่ต้องรีบูตเครื่องได้อย่างไร ฉันได้ทำการเปลี่ยนแปลงบางอย่าง/etc/systemd/journald.confแล้วและฉันต้องการดูว่าถูกต้องหรือไม่และทุกอย่างทำงานได้ตามที่คาดหวัง ฉันไม่ต้องการรีบูท

3
วัตถุประสงค์ของรูปแบบไฟล์“ ASCII พร้อมรูปแบบโอเวอร์”
หลังจากดาวน์โหลดซอร์สโค้ดสำหรับ Bash ฉันกำลังค้นหาdocไดเรกทอรีและพบไฟล์ต่อไปนี้: bash.1เป็นปกติtroffไฟล์ที่ใช้ในการสร้างหน้าคน bash.0เป็นเหมือนเวอร์ชันข้อความธรรมดาของ man page - เฉพาะที่มันมี^Hอักขระควบคุม backspaceกระจายอย่างอิสระไปทั่วมัน อักขระควบคุมเหล่านี้จะไม่แสดงในการเป็นตัวแทนจาก Git เว็บอินเตอร์เฟส แต่ไฟล์จริงสามารถดาวน์โหลดและตรวจสอบในโปรแกรมแก้ไขข้อความเช่น Vim การรันfileคำสั่งบนbash.0พิมพ์เอาต์พุตต่อไปนี้: bash.0: ASCII text, with overstriking ฉันไม่เคยเจอรูปแบบไฟล์นี้มาก่อนและสงสัยว่าจุดประสงค์ของมันคืออะไรและใช้อย่างไร การค้นหาเว็บสำหรับวลี“ ข้อความ ASCII ที่มีการใช้งานเกินเวลา”ไม่ได้ให้ความกระจ่างมากนัก

3
ค้นหา tmp dir ที่ถูกต้องบนหลาย ๆ แพลตฟอร์ม
ฉันมีสคริปต์ที่ต้องการสร้างไฟล์ชั่วคราวสำหรับการทำงานและล้างข้อมูลหลังจากนั้น คำถามของฉันเกี่ยวกับการค้นหาไดเรกทอรีฐานที่เหมาะสมสำหรับไฟล์ชั่วคราว สคริปต์ต้องทำงานกับหลายแพลตฟอร์ม: Git Bash (Windows), Solaris, Linux, OSX ในแต่ละแพลตฟอร์มไดเรกทอรีชั่วคราวที่ต้องการจะแสดงแตกต่างกัน: Windows: %TMP%(และอาจเป็นไปได้%TEMP%) OSX: $TMPDIR Linux, UNIX: น่าจะเป็น$TMPDIRแต่ดูเหมือนว่าจะไม่มีการตั้งค่าในหลาย ๆ ระบบที่ฉันได้ลอง ดังนั้นในสคริปต์ของฉันฉันเพิ่มแผ่นสำเร็จรูปนี้: if test -d "$TMPDIR"; then : elif test -d "$TMP"; then TMPDIR=$TMP elif test -d /var/tmp; then TMPDIR=/var/tmp else TMPDIR=/tmp fi ดูเหมือนว่าน่าเบื่อเกินไป มีวิธีที่ดีกว่า?

13
วิธีบรรทัดคำสั่งอย่างรวดเร็วเพื่อสลับระหว่างหลายไดเรกทอรีสำหรับการบริหารระบบคืออะไร?
วิธีบรรทัดคำสั่งอย่างรวดเร็วเพื่อสลับระหว่างหลายไดเรกทอรีสำหรับการบริหารระบบคืออะไร? ฉันหมายถึงฉันสามารถใช้pushd .และpopdสลับได้ แต่ถ้าฉันต้องการเก็บทวีคูณและวนรอบพวกมันแทนที่จะโผล่มันออกอย่างถาวรที่ด้านล่างของสแต็ก

5
อะไรคือความแตกต่างระหว่างการสร้างจากแหล่งที่มาและการใช้แพ็คเกจการติดตั้ง?
ฉันสงสัยว่า: เมื่อติดตั้งบางอย่างมีวิธีที่ง่ายในการคลิกสองครั้งที่ไฟล์ปฏิบัติการติดตั้งและในทางกลับกันก็มีวิธีสร้างไฟล์จากแหล่งที่มา อันหลังการดาวน์โหลดบันเดิลซอร์สนั้นยุ่งยากมาก แต่อะไรคือความแตกต่างพื้นฐานระหว่างสองวิธีนี้?

6
มีข้อเสียคือการลบลิงก์สัญลักษณ์ที่เสียทั้งหมดในระบบหรือไม่?
ฉันกำลังเรียกใช้สคริปต์ที่วนซ้ำไฟล์ทั้งหมดในระบบ Linux ของฉันและสร้างข้อมูลเมตาเกี่ยวกับพวกเขาและมันเกิดข้อผิดพลาดเมื่อกดลิงค์สัญลักษณ์ที่เสียหาย ฉันใหม่ถึง * ระวัง แต่ฉันได้รับแนวคิดหลักที่อยู่เบื้องหลังการเชื่อมโยงไฟล์และการเชื่อมโยงที่ขาดหายไปมีอยู่จริง เท่าที่ฉันรู้พวกเขาก็เหมือนขยะในท้องถนน สิ่งที่โปรแกรมที่ฉันลบไม่ฉลาดพอที่จะบอกว่าตัวจัดการแพคเกจนั้นมีอยู่และเป็นของมันหรือสิ่งที่ทิ้งไว้ในการอัปเกรด ในตอนแรกฉันเริ่มปรับแต่งสคริปต์ที่ฉันกำลังจะข้ามไปจากนั้นฉันก็คิดว่า 'เราสามารถลบมันได้ตลอดเวลาเมื่อเราอยู่ที่นี่ ... ' ฉันใช้Ubuntu 14.04 (Trusty Tahr) ฉันไม่เห็นเหตุผลใด ๆ ที่จะทำ แต่ก่อนที่ฉันจะดำเนินการเรื่องนี้ผ่านระบบการพัฒนาของฉันมีเหตุผลใด ๆ ที่จริง ๆ แล้วนี่อาจเป็นความคิดที่แย่มาก? symlink ที่ใช้งานไม่ได้นั้นมีจุดประสงค์บางอย่างที่ฉันไม่ทราบหรือไม่?
46 symlink 

5
อะไรคือความแตกต่างระหว่าง bsdtar และ GNU tar?
ฉันใช้ GNU tarเสมอ อย่างไรก็ตามการแจกแจง GNU / Linux ทั้งหมดที่ฉันเห็นมาbsdtarในที่เก็บของมัน ฉันเคยเห็นมันติดตั้งโดยค่าเริ่มต้นในบาง IIRC ฉันรู้ว่า Arch GNU / Linux ต้องการมันเป็นส่วนหนึ่งของbasedevel(อาจbaseแต่ฉันไม่แน่ใจ) ตามที่ฉันเห็นใน PKGBUILD ทำไมคุณต้องการที่จะใช้bsdtarแทน GNU tar? ข้อดีคืออะไร โปรดทราบว่าฉันเป็นคนที่ถามอะไรคือความแตกต่างที่สำคัญระหว่าง BSD และ GNU / Linux userland? .
46 tar  gnu  bsd 

3
เคอร์เนลใช้ RAM เท่าใด
คำถามนี้เป็นแรงบันดาลใจโดยช็อตของฉันเมื่อฉันค้นพบว่า Mac OS X เคอร์เนลใช้750MB of RAM ฉันใช้ลินุกซ์มา 20 ปีแล้วและฉันก็ "รู้" อยู่เสมอว่าการใช้ RAM ในเคอร์เนลนั้นถูกแคระโดย X (มันเป็นความจริงหรือเปล่า? ดังนั้นหลังจาก googling ฉันพยายามslabtopที่บอกฉัน: Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%) นี่หมายความว่าเคอร์เนลของฉันใช้ RAM ~ 72MB หรือไม่ (เนื่องจากว่าRSS ของtopรายงานXorgเป็น 17 ล้านเคอร์เนลตอนนี้ก็แคระ X ซึ่งไม่ใช่วิธีอื่น ๆ ) การใช้ RAM เคอร์เนล "ปกติ" (ช่วง) สำหรับแล็ปท็อปคืออะไร เหตุใด …
46 linux  kernel  ram 

2
ประสิทธิภาพของ unix sockets เทียบกับพอร์ต TCP
ตัวอย่างเช่นใน php-fpm: #listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock มีความแตกต่างด้านประสิทธิภาพที่สำคัญระหว่างการใช้ unix socket-based Listeners ผ่านพอร์ต TCP หรือไม่? (ไม่ใช่เฉพาะสำหรับ PHP แต่โดยทั่วไปแล้วมันแตกต่างกันไปในแต่ละบริการหรือไม่)



3
git diff แสดงสีไม่ถูกต้อง
ในการรับเอาต์พุตสีจากคำสั่ง git ทั้งหมดฉันได้ตั้งค่าต่อไปนี้: git config --global color.ui true แต่นี้ผลิตออกเช่นนี้สำหรับgit diff,git log ในขณะที่คำสั่งเช่นgit statusปรับการแสดงผล เหตุใดจึงไม่รู้จักรหัสสีที่ใช้ Escape ในคำสั่งบางคำสั่งเท่านั้นและฉันจะแก้ไขได้อย่างไร ฉันใช้ iTerm 2 (ประเภทเทอร์มินัลxterm-256color) บน OS X 10.8.2 และ zsh เป็นเชลล์ของฉัน zsh --version zsh 5.0.0 (x86_64-apple-darwin12.0.0) git --version git version 1.7.9.6 (Apple Git-31.1)
46 osx  colors  git  pager 

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