Unix & Linux

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

2
ทางลัดสำหรับการดำเนินการชุดคำสั่งในประวัติทุบตีอยู่หรือไม่?
สมมติว่าฉันมีตัวอย่างเล็ก ๆ น้อย ๆ ต่อไปนี้ในhistory: ... 76 cd ~ 77 ./generator.sh out.file 78 cp out.file ~/out/ 79 ./out/cleaner.sh . 80 ls -alnh /out ... ถ้าผมต้องการที่จะรันคำสั่ง77, 78และ79ในคำสั่งอย่างใดอย่างหนึ่งไม่มีอยู่ทางลัดสำหรับการนี้หรือไม่? ฉันได้ลอง!77 !78 !79แล้วซึ่งจะทำให้พวกเขาทั้งหมดในบรรทัดเดียวเพื่อดำเนินการ

2
ทำไมพฤติกรรมของ `คำสั่ง 1> file.txt 2> file.txt` ต่างจาก` คำสั่ง 1> file.txt 2> & 1`
เมื่อคุณต้องการเปลี่ยนเส้นทางทั้ง stdout และ stderr ไปยังแฟ้มเดียวกันคุณสามารถทำมันได้โดยการใช้หรือcommand 1>file.txt 2>&1 command &>file.txtแต่ทำไมพฤติกรรมcommand 1>file.txt 2>file.txtต่างไปจากสองคำสั่งข้างต้น? ต่อไปนี้เป็นคำสั่งการตรวจสอบ $ cat redirect.sh #!/bin/bash { echo -e "output\noutput" && echo -e "error" 1>&2; } 1>file.txt 2>&1 { echo -e "output\noutput" && echo -e "error" 1>&2; } 1>file1.txt 2>file1.txt { echo -e "error" 1>&2 && echo -e "output\noutput"; } …

3
เหตุใดปริมาณการใช้เครือข่าย Linux จึงต้องผ่าน eth0 เท่านั้น
ฉันมี NIC สองตัวที่ฝั่งเซิร์ฟเวอร์นั่นคือ eth0 ใช่ไหม 192.168.8.140 และ eth1 192.168.8.142 ลูกค้าส่งข้อมูลไปที่ 192.168.8.142 และฉันคาดว่าiftopจะแสดงปริมาณการใช้งานสำหรับ eth1 แต่ไม่ได้ เครือข่ายทั้งหมดผ่าน eth0 ดังนั้นฉันจะทดสอบ NIC ทั้งสองได้อย่างไร ทำไมปริมาณการใช้ข้อมูลทั้งหมดถึงผ่าน eth0 แทนที่จะเป็น eth1 ฉันคาดว่าฉันจะได้ 1 Gbit / s ต่ออินเตอร์เฟส เกิดอะไรขึ้นกับการตั้งค่าหรือการกำหนดค่าของฉัน เซิร์ฟเวอร์ ifconfig eth0 Link encap:Ethernet HWaddr 00:00:00:19:26:B0 inet addr:192.168.8.140 Bcast:0.0.0.0 Mask:255.255.252.0 inet6 addr: 0000::0000:0000:fe19:26b0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 …

3
ฉันจะดูได้อย่างไรว่าคำสั่งใดทำงานในเชลล์ผ่านนามแฝงหรือฟังก์ชั่น
ฉันมีฟังก์ชั่นทุบตี (หรือนามแฝง) function install() {sudo apt-get install $@}ตัวอย่างเช่น เมื่อใช้คำสั่งสิ่งที่ผมคาดว่าจะจริงจะทำงานเป็นinstall dicelab sudo apt-get install dicelabฉันจะดูได้ว่าอะไรที่เชลล์ใช้งานจริง? ฉันต้องการตรวจสอบให้แน่ใจว่านามแฝงที่ซับซ้อนของฉันทำงานได้ตามที่คาดไว้
20 bash  shell  debugging 

1
Grep ช้าที่จะออกหลังจากพบการแข่งขัน?
ฉันกำลังพยายามเขียนสคริปต์ทุบตีที่สำรวจ btmon สำหรับการเชื่อมต่ออุปกรณ์ ฉันมีวิธีแก้ปัญหาการทำงาน แต่มันช้าอย่างไร้เหตุผลและดูเหมือนว่าปัญหาคือ grep ช้ามากที่จะออกหลังจากพบการแข่งขัน (ประมาณ 25 วินาที) ฉันจะทำอย่างไรเพื่อเร่งความเร็วgrepหรือหลีกเลี่ยงการใช้งานพร้อมกัน? #!/bin/bash COUNTER=0 while : do until btmon | grep -m 1 '@ Device Connected' do : done let COUNTER=COUNTER+1 echo on 0 | cec-client RPI -s -d 1 sleep 5 echo as | cec-client RPI -s -d 1 until …
20 bash  grep 

3
การเปลี่ยนรหัสผ่านของผู้ใช้บางคนจะเปลี่ยนรหัสผ่าน sudo ด้วยหรือไม่
sudoฉันเป็นผู้ใช้เท่านั้นระบบลินุกซ์มิ้นท์ของฉันและฉันสังเกตเห็นว่ารหัสผ่านที่ฉันเลือกที่จะเข้าสู่ระบบก็เช่นเดียวกันที่ได้รับมอบหมายให้ ดังนั้นคำถามของฉันคือ: การเปลี่ยนรหัสผ่านการเข้าสู่ระบบของฉันจะเปลี่ยนรหัสผ่านด้วยsudoหรือไม่ ถ้าไม่ฉันจะเปลี่ยนsudoรหัสผ่านได้อย่างไร
20 sudo  password 

4
กรณีการใช้งานที่ถูกต้องสำหรับการอนุญาตให้ใช้ไฟล์“ เรียกใช้เท่านั้น” คืออะไร
ผมได้อ่านบน chmod และโหมดฐานแปด ฉันเห็นว่า1ทำงานได้เท่านั้น กรณีการใช้งานที่ถูกต้องสำหรับการอนุญาตให้ดำเนินการเท่านั้นคืออะไร ในการเรียกใช้ไฟล์โดยทั่วไปจะต้องการอ่านและเรียกใช้สิทธิ์ $ echo 'echo foo' > say_foo $ chmod 100 ./say_foo $ ./say_foo bash: ./say_foo: Permission denied $ chmod 500 ./say_foo $ ./say_foo foo

1
POSIX ต้องการอะไรสำหรับเอกสารที่ยกมาที่นี่ภายในการทดแทนคำสั่ง?
ในคำถามนี้มีคนรายงานปัญหาการใช้ที่นี่เอกสารด้วยคำคั่นอ้างภายใน$(...)แทนคำสั่งที่เครื่องหมาย\ที่ท้ายบรรทัดภายในการเรียกเอกสารการขึ้นบรรทัดใหม่เข้าสู่เส้นต่อเนื่องขณะเดียวกันที่นี่เอกสารนอกงานคำสั่งเปลี่ยนตัวตามที่คาดไว้ . นี่คือตัวอย่างเอกสารที่ง่ายขึ้น: cat <<'EOT' abc ` def ghi \ jkl EOT ซึ่งรวมถึง backtick หนึ่งรายการและแบ็กสแลชหนึ่งรายการที่ท้ายบรรทัด ตัวคั่นถูกยกมาดังนั้นจึงไม่มีการขยายเกิดขึ้นภายในร่างกาย ใน Bourne-alikes ทั้งหมดฉันสามารถค้นหาผลลัพธ์นี้เป็นคำต่อคำเนื้อหา หากฉันวางเอกสารเดียวกันไว้ภายในการทดแทนคำสั่งดังนี้: x=$(cat <<'EOT' abc ` def ghi \ jkl EOT ) echo "$x" จากนั้นพวกเขาจะไม่ทำงานเหมือนกันอีกต่อไป: dash, ash, zsh, ksh93, BusyBox ash, mkshและ SunOS 5.10 POSIX shทั้งหมดให้เนื้อหาคำต่อคำของเอกสารเป็นมาก่อน Bash 3.2 ให้ข้อผิดพลาดทางไวยากรณ์สำหรับ backtick ที่ไม่ตรงกัน ด้วย …

3
ฉันจะรู้ได้อย่างไรว่าสิทธิ์ sudoer หมดเวลาหรือไม่
ฉันกำลังทำงานกับสคริปต์ที่รันคำสั่งเป็น sudo และ echoes บรรทัดข้อความเท่านั้นหากสิทธิ์ sudo ของฉันหมดเวลาดังนั้นหากใช้คำสั่งด้วย sudo จะต้องให้ผู้ใช้ของฉัน (ไม่รูท) เพื่อพิมพ์รหัสผ่านอีกครั้ง ฉันจะตรวจสอบได้อย่างไร โปรดทราบว่า$(id -u)แม้ในขณะที่ทำงานเป็น sudo จะส่งคืนรหัสผู้ใช้ปัจจุบันของฉันดังนั้นจึงไม่สามารถตรวจสอบเพื่อให้ตรงกับ 0 ... ฉันต้องการวิธีที่จะตรวจสอบเรื่องนี้อย่างเงียบ ๆ
20 sudo 

4
ปลอดภัยหรือไม่ที่จะใช้ `เสียงสะท้อน '
การใช้งานevalมักจะหมดกำลังใจเพราะจะทำให้สามารถเรียกใช้รหัสโดยอำเภอใจได้ อย่างไรก็ตามถ้าเราใช้eval echoดูเหมือนว่าส่วนที่เหลือของสตริงจะกลายเป็นข้อโต้แย้งechoดังนั้นมันควรจะปลอดภัย ฉันถูกต้องหรือไม่
20 bash  echo 

2
ซิปฮาร์ดไดรฟ์ภาพใหญ่มาก
ฉันเพิ่งสร้างอิมเมจสำหรับบูตคู่ที่ติดตั้งใหม่ (Ubuntu และ Windows) โดยใช้คำสั่งนี้ (ซึ่งฉันใช้มาระยะหนึ่งแล้วสำหรับภาพขนาดเล็ก): dd if=/dev/sda | gzip > /mnt/drive.img.gz ในไดรฟ์นี้ใช้น้อยกว่า 60G จาก 500G อย่างไรก็ตามไฟล์รูปภาพนั้นใหญ่ 409G มันเป็นอย่างไร gzip ไม่ควรบีบอัดค่าศูนย์ทั้งหมดเหรอ? อย่างที่ฉันบอกไปมันเป็นระบบที่ติดตั้งใหม่ มันจะไม่รกอย่างนั้น ตอนนี้ฉันไม่ได้คาดหวังว่าไฟล์จะเป็น 60G แต่ 400G นั้นใหญ่มากสำหรับฉัน

2
คำพูดซ้อนคู่ในหนึ่งคะแนนโหวตสูง
คำตอบ StackOverflow ด้วย> 3.5K โหวตให้คุณสมบัติหนึ่งซับสำหรับการกำหนดไปDIRยังไดเรกทอรีของสคริปต์ทุบตีปัจจุบัน: DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" ฉันงงกับคำพูดซ้อนคู่ เท่าที่ฉันสามารถบอกได้ชิ้นส่วนต่อไปนี้เป็นเครื่องหมายคำพูดคู่: "$( cd " "${BASH_SOURCE[0]}" " && pwd )" ... และทุกอย่างอื่นทางด้านขวาของ=(เช่น$( dirnameและ)) ไม่มีการอ้างอิง ในคำอื่น ๆ ฉันคิดว่าตัวละครที่ 2, 4 และ 6 ""ปิด" ตัวที่ 1, 3 และ 5 "ตามลำดับ ฉันเข้าใจว่าการเสนอราคาสองเท่าในการ"${BASH_SOURCE[0]}"บรรลุผลสำเร็จ แต่อะไรคือจุดประสงค์ของการเสนอราคาสองคู่อื่น ๆ หากในอีกทางหนึ่ง (และคะแนนโหวตสูงถึงแม้จะมี) ตัวอย่างข้างต้นไม่ถูกต้องสิ่งที่เป็นวิธีที่เหมาะสมเพื่อให้บรรลุเจตนาที่ระบุ? (โดยเจตนาที่ระบุฉันหมายถึง: รวบรวมค่าที่ส่งคืนโดยpwdหลังจากการcdเข้าสู่ไดเรกทอรีที่ส่งคืนโดยครั้งแรกdirname …

4
บางครั้งคำสั่งประวัติจะไม่ถูกเก็บไว้ใน. bash_history
ฉันออกคำสั่งมากมายเมื่อวานนี้ใน CentOS 7 ของฉัน แต่เมื่อฉันต้องการเรียกคำสั่งเหล่านี้วันนี้ฉันพบว่าไม่มีบันทึกใด ๆ เมื่อฉันเปิดไฟล์.bash_historyฉันยังไม่พบคำสั่งที่ฉันใช้เมื่อวานนี้ แต่ฉันพบคำสั่งเก่า ๆ หลายครั้งเมื่อไม่กี่วันที่ผ่านมา เหตุใดคำสั่งล่าสุดจึงไม่ถูกจัดเก็บ ฉันจะเพิ่มความสามารถด้านประวัติศาสตร์ได้อย่างไร?

3
เวลา Unix / เวลาเป็นทางการอยู่ที่ไหน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน3 ปีที่ผ่านมา สิ่งที่ปฏิเสธความรับผิดชอบ: ฉันเพิ่งผ่านรายการของไซต์ StackExchange ประมาณ 20 นาทีพยายามที่จะโพสต์สิ่งนี้ หากคุณรู้จักเว็บไซต์ใดที่เหมาะสมกว่าโปรดย้ายคำถามนี้ไปที่นั่น ฉันโพสต์ที่นี่เพราะเวลายูนิกซ์ทำให้ฉันคิด อย่างที่เรารู้มีเวลายูนิกซ์และมี UTC เวลาของยูนิกซ์เพียงแค่ทำการติ๊กนับวินาที - หนึ่งวินาทีต่อวินาที - ในขณะที่ UTC พยายามเก็บเวลาในรูปแบบที่มนุษย์สามารถอ่านได้ที่เราใช้สอดคล้องกับเฟสของโลกในการหมุน เมื่อต้องการทำเช่นนี้ UTC จะแทรกวินาทีกระโดดเป็นครั้งคราว เนื่องจากเวลามีความสัมพันธ์กับแรงโน้มถ่วงของวัตถุที่มีเวลาสัมผัสกับการเร่งความเร็วชนิดอื่นและความเร็วสัมพัทธ์สิ่งนี้นำไปสู่คำถาม 2 ข้อ ลองมาดูสิ่งที่ง่ายกว่าก่อน: การวัดเวลาของยูนิกซ์อยู่ที่ไหน? ถ้าอลิซและบ๊อบเริ่มเห็นด้วยกับเวลาปัจจุบันคือ 1467932496.42732894722748 เมื่อพวกเขาอยู่ในที่เดียวกัน (หนึ่งในสองถูกกำหนดเป็น 9'192'631'770 รอบของการแผ่รังสีที่สอดคล้องกับการเปลี่ยนแปลงระหว่างสองระดับพลังงานของซีเซียม-133 อะตอมที่พักผ่อนและที่ 0 K) พบกับความขัดแย้งคู่เนื่องจากอลิซอาศัยอยู่ที่ระดับน้ำทะเลและบ๊อบอยู่สูงขึ้นไปบนภูเขาหรืออลิซอาศัยอยู่ที่ขั้วโลกเหนือและบ็อบอาศัยอยู่ที่เส้นศูนย์สูตรพวกเขาจะไม่เห็นด้วยอีกต่อไป ดังนั้นเวลายูนิกซ์จะถูกกำหนดอย่างไร คุณอาจไม่เห็นปัญหากับ UTC …
20 timestamps  time 

2
ฉันสามารถกำหนดข้อความ sudo“ เหตุการณ์นี้จะได้รับการรายงาน” ได้หรือไม่?
เป็นไปได้บน Linux หรือบนระบบ BSD เพื่อกำหนดข้อความsudo"เหตุการณ์นี้จะถูกรายงาน" ฉันได้ไปมากกว่าman sudoและman sudoersในเครื่องอูบุนตู 16.04 เครื่อง FreeBSD 10.2 และเครื่อง Fedora 23 และฉันไม่ได้พบสิ่งที่มีประโยชน์
20 sudo 

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