Unix & Linux

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

1
ทางเลือก 'หัว' ที่ไม่ออก?
ฉันต้องการยูทิลิตี้ที่จะพิมพ์บรรทัดแรกที่ n แต่แล้วก็ยังคงทำงานต่อไปดูดส่วนที่เหลือของบรรทัด แต่ไม่พิมพ์พวกเขา ฉันใช้เพื่อไม่ให้เทอร์มินัลกับผลลัพธ์ของกระบวนการที่ต้องดำเนินการต่อไป (มันเขียนผลลัพธ์ไปยังไฟล์) ฉันคิดว่าฉันสามารถทำได้process | {head -n 100; cat > /dev/null}แต่มีบางสิ่งที่สวยงามกว่านี้หรือไม่
13 head 

4
เมื่อใดที่ {a, b, c} ถูกขยายเป็น bash เมื่อใด
สคริปต์ทุบตีที่มี for i in {a,b}-{1,2}; do echo $i; done พิมพ์ a-1 a-2 b-1 b-2 เมื่อดำเนินการ นี่คือสิ่งที่ฉันคาดไว้ - ขณะที่การ{a,b}ก่อสร้างขยายออกไป อย่างไรก็ตามเมื่อสคริปต์ (อื่น) มี v={a,b}-{1,2} echo $v มันพิมพ์ {a,b}-{1,2} ซึ่งไม่ใช่สิ่งที่ฉันคาดหวัง a-1 a-2 b-1 b-2ผมคาดว่ามันจะพิมพ์ เห็นได้ชัดว่าการ{a,b}สร้างไม่ได้ขยาย ฉันสามารถทำให้มันขยายได้อย่างนั้น v=$(echo {a,b}-{1,2}) จากข้อสังเกตเหล่านี้ฉันมีสองคำถาม: 1) {a,b}โครงสร้างจะขยายเมื่อไหร่? 2) เป็น$(echo {a,b}-{1,2})วิธีที่ต้องการเพื่อกระตุ้นการขยายเมื่อต้องการหรือไม่

1
การตั้งค่านามแฝงทุบตีชั่วคราวเมื่อเข้าสู่โฟลเดอร์
บางครั้งฉันชอบที่จะมีนามแฝงทุบตีที่กำหนดเองมากและอาจจะเป็นปุ่มลัดเมื่อฉันป้อนในโฟลเดอร์ (อาจเป็นโครงการที่ฉันเคยพิมพ์คำสั่งจำนวนมากจาก CLI) ให้สมมติว่าเมื่อฉันป้อนโฟลเดอร์เช่น "projectAlpha /" ฉันคาดหวังชื่อแทนที่กำหนดเองเช่น: alias doTaskX='./app arg1 arg2...|filter arg1 arg2...' ... ยิ่งกว่านั้นฉันคิดว่า: แสดงข้อความที่เป็นประโยชน์แสดงนามแฝงและคำสั่งทั่วไป แสดง keybindings ที่กำหนดเองทั่วไปบางอย่างสำหรับโครงการของฉัน แต่ทันทีที่ฉันออกจากโครงการของฉันการตั้งค่าเหล่านี้จะไม่สามารถใช้ได้ วิธีที่ดีที่สุดที่จะทำวันนี้คืออะไร?
13 bash  shell  alias 

3
วิธีลบ \ n ระหว่างเอาต์พุตของคำสั่ง echo สองคำสั่ง?
ฉันมีไฟล์ข้อความที่มีชื่อไฟล์หนึ่งชื่อในแต่ละบรรทัด: 111_c4l5r120.png 123_c4l4r60.png 135_c4l4r180.png 147_c4l3r60.png 15_c4l1r120.png ... ฉันต้องการแปลงเป็นรูปนี้: 111_c4l5r120.png 111 123_c4l4r60.png 123 135_c4l4r180.png 135 147_c4l3r60.png 147 15_c4l1r120.png 15 ... ใช้รหัสนี้: #!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do echo "$line" >> output.txt echo "$line" | cut -d'_' -f 1 >> output.txt done < "$1" แต่ผลลัพธ์คือ: 111_c4l5r120.png …


2
“ <Esc> Kv” ใน bash คืออะไร
เมื่อผมอยู่ในทุบตีและกดEsc, Shift+ K, Vทุบตียิงขึ้นกับชื่อไฟล์ที่คล้ายกับ$EDITOR/tmp/bash-fc-186566385 ทำไมจึงเป็นและวัตถุประสงค์ของมันคืออะไร? set -o viผมอาจจะต้องพูดถึงว่าฉันทำงานกับทุบตี

5
ฉันพบข้อผิดพลาด“ ชื่อโฮสต์: ชื่อหรือบริการที่ไม่รู้จัก” เมื่อตรวจสอบ IP ของชื่อโฮสต์
ฉันใช้ Ubuntu 14.04 ในบริการคลาวด์ของ บริษัท ของฉัน (อินสแตนซ์ของฉันมี IP ที่ยืดหยุ่น) ฉันต้องการตรวจสอบที่อยู่ IP ของอินสแตนซ์ที่ฉันใช้งานโดยบรรทัดคำสั่ง แต่มันไม่ทำงาน root@ubuntu14-graphite:~# hostname ubuntu14-graphite root@ubuntu14-graphite:~# hostname -i hostname: Name or service not known ฉันไม่เข้าใจเหตุผลว่าทำไม ฉันพยายาม ping ไปที่ ubuntu14-graphite แต่มันบอกว่า: unknown host ubuntu14-graphite. นั่นหมายความว่าโฮสต์ของฉันไม่มีอยู่จริงเหรอ? ฉันมีเซิร์ฟเวอร์อื่น (ไม่ใช่อินสแตนซ์ระบบคลาวด์ แต่เป็นเซิร์ฟเวอร์จริง) ในเซิร์ฟเวอร์นี้ฉันติดตั้ง CentOS 6.7 ฉันจะตรวจสอบ IP /etc/hostsชื่อโฮสต์และมันทำงานแม้ว่าจะมีอะไรพิเศษใน นี่คือผลลัพธ์ของcat /etc/hosts: 127.0.0.1 localhost # The …

1
กระบวนการ / usr / libexec / packagekitd ทำอะไร
กระบวนการนี้ทำให้แบนด์วิดธ์ของฉัน: กระบวนการนี้ทำอะไร? ปลอดภัยที่จะฆ่าหรือไม่ ปลอดภัยที่จะลบแพ็กเกจทั้งหมด (เพื่อป้องกันไม่ให้เริ่มต้นใหม่อีกครั้ง) หรือฉันควรป้องกันไม่ให้ทำงานในพื้นหลังโดยอัตโนมัติอีกครั้ง? ฉันกำลังใช้งาน Fedora 23

5
จะทราบได้อย่างไรว่า PID ใดบ้างที่รับฟัง
ฉันมี PID ของกระบวนการบางอย่างที่ฟังพอร์ตบางตัวใน OS X ของฉันและฉันจำเป็นต้องรู้ว่าพอร์ตใดที่ฟังโดยกระบวนการนี้ ฉันจะทำมันได้อย่างไร ฉันรู้ว่าฉันสามารถใช้lsofเพื่อทราบว่ากระบวนการใดบ้างที่รับฟังพอร์ต แต่ฉันจำเป็นต้องทำการดำเนินการแบบผกผัน ขอขอบคุณ. UPD OS X ใช้ utils BSD ดังนั้นฉันมี BSD ไม่ลินุกซ์netstat netstatLinux netstatมี-pตัวเลือกในการแสดง PID, BSD netstatใช้-pเพื่อระบุพอร์ตและไม่มีตัวเลือกในการแสดง PID
13 networking  osx  bsd 

4
วางคำสั่งผ่านฟิลเตอร์สี
สิ่งนี้มีอยู่ใน Unix หรือไม่? $ echo "this should show in red" | red $ echo "this should show in green" | green $ echo "this should show in blue" | blue ที่นี่ฉันไม่ได้ตั้งใจให้ข้อความรหัสสีตัวอักษรปรากฏขึ้น (ตัวอย่างเช่นวางในไฟล์) ฉันแค่หมายถึงข้อความที่จะแสดงจริงใน terminal เป็นสีนั้น เป็นไปได้ไหม
13 bash  terminal  colors 

1
ทำไมบางโปรแกรมกลับสู่เชลล์ทันทีขณะที่บางโปรแกรมไม่ทำจนกว่าการประมวลผลจะเสร็จสมบูรณ์?
ฉันได้อ่านจากหนังสือระบบปฏิบัติการสมัยใหม่ว่าเมื่อคำสั่งถูกเรียกใช้เชลล์จะสร้างกระบวนการลูกรอจนกระทั่งลูกประมวลผลเสร็จสิ้นแล้วจึงรอคำสั่งอื่นจากผู้ใช้ geditแท้จริงนี่คือกรณีที่หลายโปรแกรมเช่น geditขั้วไม่ได้ใช้คำสั่งจนกว่าฉันจะได้ปิด อย่างไรก็ตามเมื่อฉันเปิดตัวแก้ไขรหัสatomเชลล์จะคืนค่าทันทีพร้อมที่จะยอมรับคำสั่งถัดไปแม้จะมีตัวแก้ไขที่ทำงานอยู่ การปิดเทอร์มินัลไม่ได้ปิดอะตอม นี่หมายความว่าตัวแก้ไขเปิดไม่เป็นกระบวนการลูกหรือไม่? กลไกพื้นฐานที่ทำให้สิ่งนี้เป็นไปได้คืออะไร? วิ่งps au | grep atomให้ &lt;username&gt; 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom

3
การลิงก์ / dev / random ไปยัง / dev / urandom บน Linux ผิดหรือเปล่า
ฉันกำลังทดสอบgpg --genkeyบน Linux VM น่าเสียดายที่ซอฟแวร์นี้ดูเหมือนว่าจะ/dev/randomรวบรวมเอนโทรปีและขอให้ผู้ใช้พิมพ์หน้าจอด้วยตนเองหลังจากที่หน้าจอของการป้อนข้อมูลแบบสุ่ม cryptographically ดังนั้นในที่สุดมันก็อาจจบลงด้วยการสร้างคีย์และฉันไม่พบพารามิเตอร์บรรทัดคำสั่ง เพื่อใช้ไฟล์อื่นเป็นแหล่งข้อมูลเอนโทรปี (ผู้ที่อยู่ในวิดีโอนี้พบปัญหาเดียวกันมาก ... ) อย่างไรก็ตามผู้ใช้ควรมีอิสระที่จะเลือกที่จะใช้/dev/urandomแทนตั้งแต่มีอะไรผิดปกติกับมัน มันมีส่วนใหญ่เป็นความทรงจำของอัลกอริทึม PRNG เก่าซึ่งอ่อนแอจากมุมมองการเข้ารหัสลับ ตัวอย่างเช่นในขณะNetBSD manpageโครงการที่แตกต่างยังคงอาจจะมีประโยชน์ในขั้นตอนการบูตเร็วมากจะอธิบายความแตกต่างเช่น"ชาวบ้าน"และ"ทฤษฎีจินตนาการที่ปกป้องเฉพาะกับรุ่นภัยคุกคามจินตนาการ" ไม่มีใครเห็นด้วยกับปริมาณของเอนโทรปีที่จำเป็นตามคำสั่งนี้หรือความจริงที่ว่าเอนโทรปีเป็นสิ่งที่บริโภคจริงตามที่ระบุในGPG manpage ("โปรดอย่าใช้คำสั่งนี้ยกเว้นว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่มันอาจลบเอนโทรปีอันมีค่าออกจากระบบ!" ) ฉันได้อ่านเกี่ยวกับคนที่ติดตั้งrngdภูตและกำหนดค่าให้ใช้/dev/urandomเป็นแหล่งข้อมูลเอนโทรปีให้ฟีด/dev/randomแต่ฉันพบว่าการปฏิบัติดังกล่าวสกปรกมาก ฉันพยายามแก้ไขปัญหาด้วยวิธี FreeBSD ด้วยการลบ/dev/randomและเชื่อมโยงไปยัง/dev/urandom: rm /dev/random ln -s /dev/urandom /dev/random ฉันเห็นนี้เป็นที่บอกการตั้งค่า"ผมเชื่อว่า/dev/urandomเป็นแหล่งเอนโทรปี" ฉันกลัวว่าฉันจะพบข้อผิดพลาดบางอย่าง แต่สิ่งนี้ดูเหมือนจะให้ผลลัพธ์ที่คาดหวังตั้งแต่ตอนนี้คำสั่งกลับมาประสบความสำเร็จในทันที คำถามของฉันคือมีผลข้างเคียงที่รู้จักได้จริงและไม่ถูกต้องของการเชื่อมโยง/dev/randomไปยัง/dev/urandomบนระบบ Linux ตามค่าเริ่มต้นบนระบบ FreeBSD หรือไม่? หรือลองจินตนาการถึงการตั้งค่านี้อย่างถาวร (ในสคริปต์เมื่อสิ้นสุดกระบวนการบู๊ตเป็นต้น) ในกรณีที่เกิดปัญหาซ้ำ ๆ เนื่องจากการ/dev/randomล็อคบริการบางอย่าง?
13 linux  security  random 

5
ไม่สามารถติดตั้ง man page บนคอนเทนเนอร์ Centos Docker ที่น้อยที่สุด
ฉันมีอิมเมจ Center 7 Docker น้อยที่สุดและฉันพยายามหาหน้าเว็บเพื่อช่วยในการดีบัก Dockerfile ของฉัน ออกจากกล่องมันมีไม่มาก: # man ls No manual entry for ls ตามคำตอบ Serverfault นี้ฉันได้ติดตั้งman-pagesRPM และดูเหมือนว่าจะไม่เป็นไร: # yum install -y man-pages Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirror.vtti.vt.edu * extras: centos.mbni.med.umich.edu * updates: centos.netnitco.net Resolving Dependencies --&gt; Running transaction check …
13 centos  rpm  man  docker 

2
ทำไม `watch` สร้าง` ls / tmp` ทำรายการเนื้อหาของ $ HOME?
ฉันพยายามดูจำนวนไฟล์ใน/tmp/ไดเรกทอรีของฉัน สำหรับสิ่งนี้ฉันคิดว่าคำสั่งนี้จะทำงาน: watch sh -c 'ls /tmp/|wc -l' แต่ดูเหมือนว่าจะทำงานเหมือนlsไม่มีข้อโต้แย้ง คือผมอยู่ในและฉันได้รับจำนวนไฟล์ที่มีแทน~ /tmp/ฉันพบวิธีแก้ปัญหาซึ่งดูเหมือนจะทำงานได้: watch sh -c 'ls\ /tmp/|wc -l' แต่ทำไมฉันต้องหลบหนีช่องว่างระหว่างlsและ/tmp/? คำสั่งถูกแปลงโดยwatchเพื่อให้lsเอาต์พุตถูกป้อนเข้าwcแต่/tmp/ไม่ถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังls?
13 shell  ls  watch 

2
วิธีลบพารามิเตอร์ตำแหน่งจาก $ @
โดยทั่วไปฉันต้องการ "ถอนออก" เกิดขึ้นครั้งแรก-infจากรายการพารามิเตอร์ (พารามิเตอร์ที่เหลือจะถูกส่งผ่านไปยังคำสั่งอื่น) สคริปต์ที่ฉันมีมีโครงสร้างต่อไปนี้: #!/bin/sh &lt;CODE&gt; for POSITIONAL_PARAM in "$@" do &lt;CODE&gt; if [ "$POSITIONAL_PARAM" = '-inf' ] then &lt;PLUCK $POSITIONAL_PARAM FROM $@&gt; break fi &lt;CODE&gt; done &lt;CODE&gt; some-other-command "$@" # end of script มีวิธีที่ดีในการทำเช่นนี้? BTW แม้ว่าฉันสนใจส่วนใหญ่อยู่ในคำตอบที่ใช้บังคับกับฉันสนใจยังอยู่ในคำตอบเฉพาะ/bin/sh/bin/bash

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