Unix & Linux

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

3
สคริปต์ใดที่ทำให้ผู้ใช้ทั่วไปสามารถใช้เนมสเปซเครือข่ายได้
ฉันมีสถาปัตยกรรมที่ใช้เนมสเปซเครือข่าย (netns) ฉันต้องการอนุญาตให้ผู้ใช้ทั่วไปทำการดำเนินการบางอย่างในเน็ตเหล่านี้ ฉันสามารถเขียนสคริปต์netns-exec.shซึ่งได้รับแรงบันดาลใจจากโพสต์นี้ดำเนินการโดยsudoมี: ip netns exec $1 su $USER -c "$2" และเพิ่มลงในไฟล์ sudoer ของฉัน: user ALL=(ALL) /path/to/netns-exec.sh แต่ฉันคิดว่ามันน่าเกลียดมากจนฉันสามารถฝันร้ายได้โดยสิ้นเชิง มีวิธีแก้ปัญหาที่ดีกว่าเพื่อให้ผู้ใช้ทั่วไปสามารถใช้เนมสเปซหรือไม่ เป็นไปได้ไหมที่จะนำผู้ใช้ไปสู่กลุ่มที่มีประโยชน์บางกลุ่ม? ฉันค้นหามัน แต่ไม่พบอะไรเลย

5
ฉันจะลบไฟล์ชื่อ“>” ได้อย่างไร?
ผมทำงานสคริปต์หลามที่ผิดปกติและนำมาใช้ในการสร้างไฟล์ชื่อsudo> ฉันจะกำจัดไฟล์นี้ได้อย่างไร แน่นอนว่าเมื่อฉันพยายามที่sudo rm >ฉันได้รับข้อผิดพลาดเพราะคิดว่าฉันพยายามที่จะเปลี่ยนเส้นทางการส่งออกของbash: syntax error near unexpected token 'newline'rm -rw-r--r--มันเป็นสิทธิ์
22 bash  quoting  filenames  rm 

2
จะออกจากคอมไพล์ผสานเพื่อขอข้อความยืนยันได้อย่างไร
ฉันใช้คอมไพล์ ฉันทำการผสานปกติแล้ว แต่มันยังคงถามสิ่งนี้อยู่: # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. และแม้ว่าฉันจะเขียนอะไรบางอย่างฉันก็ไม่สามารถออกจากที่นี่ได้ ฉันไม่พบเอกสารที่อธิบายสิ่งนี้ ฉันควรทำอย่างไร
22 git  merge 

2
เหตุการณ์ hotplug จากอินเตอร์เฟสคืออะไร
ตามเอกสารการตั้งค่าเครือข่าย Debian allow-hotplug <interface_name>stanza ใน/etc/network/interfacesไฟล์เริ่มต้นอินเตอร์เฟสเมื่อเคอร์เนลตรวจพบเหตุการณ์ hotplug จากอินเตอร์เฟส เหตุการณ์ hotplug นี้คืออะไร

2
ท่อการไหลของข้อมูลในไปป์ไลน์เป็นอย่างไร
ฉันไม่เข้าใจว่าข้อมูลไหลในท่อและหวังว่าใครบางคนสามารถชี้แจงสิ่งที่เกิดขึ้นที่นั่น ฉันคิดว่าไพพ์ไลน์ของคำสั่งประมวลผลไฟล์ (ข้อความ, อาร์เรย์ของสตริง) ในลักษณะทีละบรรทัด (หากคำสั่งแต่ละคำสั่งใช้งานได้ทีละบรรทัด) แต่ละบรรทัดของข้อความจะผ่านไปป์ไลน์คำสั่งจะไม่รอให้การประมวลผลอินพุตทั้งหมดเสร็จสิ้นก่อนหน้า แต่ดูเหมือนว่ามันจะไม่เป็นเช่นนั้น นี่คือตัวอย่างการทดสอบ มีข้อความบางบรรทัด ฉันพิมพ์ใหญ่และทำซ้ำแต่ละบรรทัดสองครั้ง cat text | tr '[:lower:]' '[:upper:]' | sed 'p'ผมทำด้วย ที่จะปฏิบัติตามกระบวนการที่เราสามารถเรียกมันว่า "การโต้ตอบ" - catข้ามชื่อไฟล์การป้อนข้อมูลใน แต่ละส่วนของไปป์ไลน์ทำงานทีละบรรทัด: $ cat | tr '[:lower:]' '[:upper:]' alkjsd ALKJSD sdkj SDKJ $ cat | sed 'p' line1 line1 line1 line 2 line 2 line 2 แต่ไปป์ไลน์ที่สมบูรณ์รอให้ฉันเสร็จสิ้นอินพุตด้วยEOFและจากนั้นพิมพ์ผลลัพธ์: …

4
เข้าใจ“ ibase” และ“ obase” ในกรณีที่มีการแปลงกับ bc หรือไม่
ฉันมักจะใช้bcยูทิลิตี้สำหรับการแปลงฐานสิบหกเป็นทศนิยมและในทางกลับกัน แต่ก็เป็นบิตลองผิดลองถูกอยู่เสมอวิธีการibaseและobaseควรจะกำหนดค่า ตัวอย่างเช่นที่นี่ฉันต้องการแปลงค่าฐานสิบหก C0 เป็นทศนิยม: $ echo "ibase=F;obase=A;C0" | bc 180 $ echo "ibase=F;obase=10;C0" | bc C0 $ echo "ibase=16;obase=A;C0" | bc 192 ตรรกะที่นี่คืออะไร? obase( Aในตัวอย่างที่สามของฉัน) ต้องอยู่ในฐานเดียวกันกับค่าที่แปลง ( C0ในตัวอย่างของฉัน) และibase( 16ในตัวอย่างที่สาม) ต้องอยู่ในฐานที่ฉันแปลงไป?
22 bc 


1
ลำดับการหลีกสีของเทอร์มินัลถูกกำหนดไว้ทุกที่เพื่อทุบตีหรือไม่?
ฉันใช้ทุกสีบ่อยในการเขียนสคริปต์ Bash (ส่วนใหญ่เป็น CentOS) แต่เพื่อให้การใช้งานของพวกเขาง่ายขึ้นฉันก็สิ้นสุดการกำหนดตัวแปรใหม่เป็นค่าสี: local GRAY="\[\033[1;30m\]" local LIGHT_GRAY="\[\033[0;37m\]" local CYAN="\[\033[0;36m\]" local LIGHT_CYAN="\[\033[1;36m\]" local NO_COLOUR="\[\033[0m\]" หรือด้วยtput: bold=`tput bold` normal=`tput sgr0` whitef=`tput setaf 7` greenf=`tput setaf 2` redb=`tput setab 1` ฉันเคย grep'ed รอบ/etc/rc.d/init.dไดเรกทอรี แต่ไม่พบสิ่งที่เกี่ยวข้องกับคำจำกัดความสีในนั้น มีคำจำกัดความดังกล่าวแล้วหรือยัง? ถ้าไม่ใช่ฉันจะเอาไฟล์เหล่านั้นใส่ลงในไฟล์/etc/rc.d/init.dเพื่อพูดและรวมไว้ในสคริปต์ของฉัน/etc/rc.d/init.d/functions
22 bash  terminal  colors 

2
คัดลอกไฟล์ที่มีนามสกุลหลาย ๆ ตัว
ฉันต้องการคัดลอกไฟล์ที่มีหลายนามสกุลไปยังไดเรกทอรีปลายทางเดียว ตัวอย่างเช่นฉันสามารถใช้คำสั่งต่อไปนี้เพื่อคัดลอกไฟล์. txtทั้งหมดในไดเรกทอรีทำงานไปยังไดเรกทอรีที่เรียกว่าdestination: cp -v *.txt destination/ และฉันสามารถใช้สิ่งต่อไปนี้เพื่อคัดลอกไดเรกทอรี. pngทั้งหมดในไดเรกทอรีทำงานไปที่destination: cp -v *.png destination/ แต่ใช้เวลานานในการพิมพ์คำสั่งเหล่านี้เป็นคำสั่งแยกต่างหาก (แม้จะใช้ประวัติคำสั่ง) ดังนั้นจะมีวิธีการที่ผมสามารถบอกได้ใด ๆcpในการคัดลอกไฟล์ที่มีทั้งรูปแบบ*.txt หรือรูปแบบ*.pngที่จะdestination? จะเป็นการดีที่ฉันต้องการที่จะสามารถระบุมากกว่าสองรูปแบบที่ชอบ - สอนcpการคัดลอกทั้งหมด*.txt หรือ *.png หรือ *.jpgไฟล์ไปdestinationยกตัวอย่างเช่น ฉันแน่ใจว่าทั้งหมดนี้เป็นไปได้โดยใช้เชลล์สคริปต์ - ฉันใช้bash- แต่มีวิธีใดที่จะทำให้สำเร็จได้ง่ายขึ้นเพียงจากคอนโซลหรือไม่ ฉันจะใช้การขยายรั้งเพื่อทำมันได้หรือไม่? ฉันรู้ว่ามันเป็นไปได้ที่จะคัดลอกไฟล์ทั้งหมดในไดเรกทอรีการทำงานยกเว้นที่ตรงกับรูปแบบที่ระบุบางอย่างแต่เนื่องจากไดเรกทอรีการทำงานของฉันมีนามสกุลไฟล์มากกว่าที่ฉันไม่ต้องการคัดลอกกว่าที่ฉันทำซึ่งจะเป็นความเจ็บปวด คุณมีความคิดเกี่ยวกับสิ่งนี้หรือไม่?
22 bash  shell  wildcards  cp 

1
`mount -o loop` เปลี่ยนแปลงไฟล์อิมเมจ ISO ที่เมาท์
ดูเหมือนว่าmount -o loopการเปลี่ยนแปลงไฟล์ภาพที่ติดตั้งอยู่ ฉันดาวน์โหลดไฟล์อิมเมจ ISO แล้วตรวจสอบ SHA-1 checksum ของมัน จากนั้นฉันติดตั้งไฟล์ ISO และการตรวจสอบการเปลี่ยนแปลง นี่คือขั้นตอนที่แน่นอนที่ฉันทำคัดลอกวางจากคอนโซลของฉัน CentOS 7 x64 (โปรดทราบว่าไฟล์ ISO เป็นแบบอ่านอย่างเดียว): [mbartnicki@89-78-33-81 Downloads]$ ls -lh total 3.1G -r--r--r--. 1 mbartnicki mbartnicki 3.1G Mar 31 18:28 X17-58997.iso [mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso 6c9058389c1e2e5122b7c933275f963edf1c07b9 X17-58997.iso [mbartnicki@89-78-33-81 Downloads]$ sudo mount -o loop X17-58997.iso /mnt/iso/ mount: /dev/loop0 …
22 mount  iso  checksum 

5
วิธีการห้าม windows จากการขโมยโฟกัสใน XFce4
ใน XFce4 เมื่อฉันเปิดใช้แอปพลิเคชันฉันไม่ต้องการให้พวกมันปรากฏเหนือหน้าต่างที่ฉันใช้อยู่ในปัจจุบันหรือเพื่อแสดงหน้าต่างแจ้งเตือนเหนือการทำงานปัจจุบันของฉัน แต่ฉันต้องการให้หน้าต่างโหลดในพื้นหลังและไม่ขโมยโฟกัส ข้อยกเว้นจะเป็นหน้าต่างการแจ้งเตือนหรือกล่องโต้ตอบที่เป็นของแอปพลิเคชันที่ฉันใช้เช่นถ้าฉันใช้ LibreOffice Calc อยู่ในขณะนี้และป๊อปอัปแจ้งให้ฉันทราบว่ามีข้อผิดพลาดหน้าต่างนั้นสามารถโฟกัสได้ มีวิธีใดที่จะป้องกันไม่ให้ windows ขโมยโฟกัสใน Xfce4 หรือไม่?

4
กระบวนการหลักใหม่เมื่อกระบวนการหลักตาย
ใน UNIX เมื่อกระบวนการผู้ปกครองหายไปฉันคิดว่ากระบวนการลูกทั้งหมดรีเซ็ตการเริ่มต้นเป็นผู้ปกครอง สิ่งนี้ไม่ถูกต้องตลอดเวลาหรือไม่ มีข้อยกเว้นใด ๆ
22 process  init  exit 

4
ทำไม sudo ไม่สนใจชื่อแทน
ฉันใช้ Ubuntu 10.04 และฉันใช้upstartสำหรับการจัดการภูต แอปพลิเคชันองค์กรของฉันทำงานเป็น daemon และต้องทำงานเป็น root เนื่องจากสิทธิ์ต่างๆ เช่น: sudo start my-application-long-ID sudo stop my-application-long-ID etc ฉันอยากจะแนะนำการaliasย่อคำสั่งเหล่านี้เป็นสิ่งที่ต้องการ: alias startapp='sudo start my-application-long-ID' และเรียกใช้เป็นstartappและใช้งานได้ แต่ฉันไม่ต้องการมี sudo ในนามแฝง alias startapp='start my-application-long-ID' เมื่อไม่ได้ทำงานโดยใช้กลับsudo startappsudo: startapp: command not found อย่างไรก็ตามเมื่อฉันเพิ่มนามแฝง: alias sudo='sudo ' sudo startapp ตอนนี้ใช้ได้ แต่ฉันยังสงสัยว่าทำไม sudo ไม่สนใจชื่อแทน
22 shell  sudo  alias 

3
เปรียบเทียบสองสตริงใน Bash
ฉันมีifบล็อกต่อไปนี้ในสคริปต์ทุบตีของฉัน: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi การดำเนินการสคริปต์ไม่ได้เข้ามาของฉันifบล็อกแม้ว่าจะมีค่าเท่ากับ$PACKAGENAME kakadu-v6_4-00902Cผมทำอะไรผิดหรือเปล่า?

3
มีความแตกต่างที่สำคัญเมื่อเปรียบเทียบตัวแปรเป็นสตริงหรือเป็น int
จากความอยากรู้เมื่อทำการเปรียบเทียบตัวแปรทุบตี (ความคุ้มค่าเป็นinteger) ก็เป็นไปได้ที่จะทดสอบกับค่าที่กำหนดไว้ล่วงหน้าบางส่วนประกาศว่าจะเป็นหรือเป็นintstring สคริปต์ตัวอย่าง : #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2() { [[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int" } f1 $1 f2 $1 ผลผลิต : $ ./param.sh 1 f1: "1" compared as string …
22 bash  shell  test 

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