Unix & Linux

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

5
การจับคู่รูปแบบกับชื่อพา ธ ใน bash
ฉันต้องการดำเนินการกับรายการไดเรกทอรีย่อยในไดเรกทอรี พิจารณา: for x in x86-headers/*/C/populate.sh; do echo $x; done สิ่งนี้จะช่วยให้ x86-headers/elf/C/populate.sh x86-headers/gl/C/populate.sh x86-headers/gmp/C/populate.sh x86-headers/gnome2/C/populate.sh x86-headers/gtk2/C/populate.sh x86-headers/jni/C/populate.sh x86-headers/libc/C/populate.sh แต่ฉันต้องการค่าที่สอดคล้องกับส่วนที่สองของเส้นทาง elf, glฯลฯ x86-headersฉันรู้วิธีการเปลื้องผ้าชั้นนำ for x in x86-headers/*/C/populate.sh; do i=${x##x86-headers/}; echo $i; done ซึ่งจะช่วยให้ elf/C/populate.sh gl/C/populate.sh gmp/C/populate.sh gnome2/C/populate.sh gtk2/C/populate.sh jni/C/populate.sh libc/C/populate.sh ฉันรู้วิธีถอดคำศัพท์ในภายหลังในเส้นทางด้วย เช่นลงไปหนึ่งระดับ: cd x86-headers for x in */C/populate.sh; do i=${x%%/*}; echo …

1
เปลี่ยนที่อยู่ IP ของโฮสต์ระยะไกลโดยไม่สูญเสียการควบคุม (Linux)
ฉันจะเปลี่ยนที่อยู่ IP หลักของโฮสต์ระยะไกลได้อย่างไรโดยไม่ต้องยกเลิกการเชื่อมต่อเลย (โดยไม่ต้องอยู่ในสถานะ "no IP addr") เรื่องนี้ได้รับการกล่าวถึงอย่างไม่ดีทางอินเทอร์เน็ต (จากการวิจัยของฉัน) ทรัพยากรที่ดีที่สุดที่ฉันพบคือยุ่งยากเล็กน้อย ตัวอย่าง: เปลี่ยน 10.0.0.11/24 เป็น 10.0.0.15/24 1. ssh root@10.0.0.11 2. ip addr add 10.0.0.15/24 dev eth0 3. logout 4. ssh root@10.0.0.15 5. ip addr del 10.0.0.11/24 dev eth0 ปัญหา:คำสั่งสุดท้ายจะลบทั้งที่อยู่ IP และการเชื่อมต่อจะหายไปเนื่องจาก 10.0.0.11 เป็นอุปกรณ์หลักและจะลบที่อยู่สำรอง (ซึ่งมี 10.0.0.15 อยู่) เมื่อถูกลบ ฉันรู้ว่าฉันสามารถ "โกง" โดยการเพิ่ม 10.0.0.11/ …
10 linux  ip  routing 

3
ปิด Caps lock เมื่อกด Escape
มีวิธีการปิดการใช้งานCapsLockเมื่อใดก็ตามที่Escมีการกด ใช่ฉันใช้ VIM! จริง ๆ แล้วฉันมีรูปแบบแป้นพิมพ์ all-caps ที่เป็นทางเลือกCtrl-6แต่ฉันคิดว่ามันยุ่งยากและอยากให้ระบบปิดการใช้งาน CapsLock ทุกครั้งที่Escกด นอกจากนี้ฉันมักจะ SSH ไปยังเซิร์ฟเวอร์อื่น ๆ สองสามชั่วโมงดังนั้นฉันจึงอยู่ในสต็อก VIM ที่นั่น โปรดทราบว่าฉันได้สลับไปมาแล้วCapsLockและEscปุ่ม แต่เมื่อEscกดแป้น (ซึ่งเกิดขึ้นที่จะระบุCapsLockบนแป้นพิมพ์และอยู่ถัดไปA) ผมต้องการที่จะดำเนินการทั้งในและEscapeDisable-CapsLock-If-It-Is-Enabled นี่คือใน Kubuntu 12.10 ขอบคุณ
10 keyboard  xkb  kubuntu 

2
เหตุใด $ '\ 0' จึงเหมือนกับ ''
วิธีทั่วไปในการทำสิ่งต่าง ๆ ที่มีไฟล์อยู่สองไฟล์คือ - และอย่าไปทำอย่างนั้นกับฉัน: for f in $(ls); do … ตอนนี้เพื่อความปลอดภัยต่อไฟล์ที่มีช่องว่างหรือตัวอักษรแปลก ๆ วิธีการที่ไร้เดียงสาจะทำ: find . -type f -print0 | while IFS= read -r -d '' file; … ที่นี่-d ''เป็นระยะสั้นสำหรับการตั้งค่า NUL ASCII -d $'\0'กับใน แต่ทำไมถึงเป็นเช่นนั้น? ทำไม''และ$'\0'เหมือนกัน นั่นเป็นเพราะราก C ของ Bash ที่มีสตริงว่างจะถูกยกเลิกด้วยค่าว่างเสมอหรือไม่?
10 bash 

1
จะติดตั้ง linux บน USB ด้วยตนเองได้อย่างไร?
ฉันใช้unetbootinเพื่อสร้าง Linux USB ที่สามารถบู๊ตได้ ฉันต้องการทำสิ่งนี้ด้วยตนเองโดยใช้บรรทัดคำสั่ง ขั้นตอนที่ unetbootin ใช้ในการเตรียม USB ที่สามารถบู๊ตได้คืออะไร คุณจะแปลง Ubuntu ISO เป็น USB ด้วยตนเองอย่างไร

2
จัดการชื่อไฟล์ piped จากคำสั่ง find
ฉันค่อนข้างใหม่กับ Bash และฉันพยายามทำบางสิ่งที่บนพื้นผิวนั้นค่อนข้างตรงไปตรงมา - ลองค้นหาลำดับชั้นของไดเรกทอรีเพื่อรับไฟล์ * .wma ทั้งหมดไปป์ที่เอาต์พุตไปยังคำสั่งที่ฉันแปลงเป็น mp3 และ บันทึกไฟล์ที่แปลงเป็น. mp3 ฉันคิดว่าคำสั่งควรมีลักษณะดังต่อไปนี้ (ฉันได้ละทิ้งคำสั่งการแปลงเสียงและฉันใช้ echo แทนภาพประกอบ): $ find ./ -name '*.wma' -type f -print0 | xargs -0 -I f echo ${f%.*}.mp3 ตามที่ฉันเข้าใจแล้ว -print0 arg จะให้ฉันจัดการกับชื่อไฟล์ที่มีช่องว่าง ฉันคาดหวังว่า (เนื่องจาก xargs) ว่าแต่ละพา ธ ไฟล์จาก find ถูกดักจับใน f และการใช้ซับสตริงจับคู่ / ลบจากจุดสิ้นสุดของสตริงนั้นฉันควรจะสะท้อนพา ธ ไฟล์ดั้งเดิมด้วย mp3 …

4
autofs mounts ไม่ได้ตัดการเชื่อมต่อหลังจากไม่ได้ใช้งาน
ฉันติดตั้งautofsไว้ในเซิร์ฟเวอร์ linux หลายตัวที่เชื่อมต่อกับเซิร์ฟเวอร์ NFS ส่วนกลางสำหรับผู้ใช้ / โฮมไดเรกทอรี มันใช้งานได้ดีเมื่อทำการติดตั้งไดเรกทอรีในการเข้าสู่ระบบ แต่การติดตั้งไม่เคยหมดเวลา ฉันได้ตรวจสอบ / etc / sysconfig / autofs แล้วและค่าเริ่มต้นถูกตั้งไว้ที่ 300 ดังนั้นสิ่งเหล่านี้ควรหมดเวลาหลังจาก 5 นาที การรีสตาร์ทautofsจะเพิ่มไดเรกทอรีทั้งหมดดังนั้นฉันรู้ว่ามันมีความสามารถ ฉันพยายามใช้lsofสุ่มในไดเรกทอรี แต่ไม่มีไฟล์ปรากฏเปิดตลอดเวลา ฉันยังติดตั้งไดเรกทอรีแบบสุ่มที่ฉันรู้ว่าไม่ได้ใช้งาน แต่สิ่งเหล่านี้ไม่เคยเมานท์เอง กล่องเหล่านี้บางกล่องมีผู้ใช้มากกว่า 10 คนที่เข้าสู่ระบบครั้งเดียวและการติดตั้งไม่เคยลดลง ฉันแค่พยายามค้นหาว่ามีวิธีที่ดีกว่าในการค้นหาสาเหตุ ฉันไม่เห็นสิ่งใดเฉพาะในบันทึกใด ๆ ข้อเสนอแนะใด ๆ ที่ชื่นชม ขอบคุณ! UPDATE ฉันเปิดใช้งานการดีบักสำหรับautofsแต่ดูเหมือนจะไม่เปิดเผยสิ่งที่ผิดปกติ บันทึกเหล่านี้ถูกสร้างขึ้น 7 นาทีหลังจาก / home / user1 ถูกเมาท์ตั้งแต่แรกและหลังจากไม่มีการใช้งาน 6 นาที ตามค่าเริ่มต้น 5 …
10 rhel  mount  nfs  autofs 

4
รายการไฟล์ / ไบนารีทั้งหมดใน PATH ปัจจุบัน
มีวิธี "ใช้ง่าย" ในการรันคำสั่งลักษณะ "ls -la" สำหรับการแสดงรายการไฟล์ทั้งหมด / ไบนารีที่ปฏิบัติการได้ใน PATH ปัจจุบันหรือไม่? (ฉันตั้งใจที่จะไพพ์เอาต์พุตเป็น grep สำหรับการค้นหาคำสั่งที่ไม่รู้จักคำนำหน้า แต่รู้จักกันโดยทั่วไปว่า "ชื่อ" ชนิดของกรณีเมื่อการเติมข้อมูลอัตโนมัติ / การแท็บในทุบตีนั้นไม่มีประโยชน์ คุณสมบัติที่สมบูรณ์ "... )
10 bash  ls  path  autocomplete 

2
“ grep -r foo *” และ“ grep -r foo”
เมื่อใช้ grep -r คุณสามารถค้นหาไฟล์ทั้งหมดด้วย * หรือ และดูเหมือนว่าจะกลับมาเหมือนเดิม แต่มันเหมือนกันจริงหรือ สมมติว่าฉันค้นหา "foo" จากนั้นฉันสามารถเขียนได้ grep -r foo * หรือ grep -r foo . ทุกคนจะพยายามอธิบายความแตกต่างระหว่าง และ *?
10 grep  wildcards 

1
เชลล์แบบโต้ตอบควรทำอย่างไรในกลุ่มกระบวนการที่ถูกโยงถึง
(โพสต์ซ้ำในยูนิกซ์ตามคำแนะนำใน/programming/13718394/what-should-interactive-shells-do-in-orphaned-process-group ) คำถามสั้น ๆ คือเชลล์ควรทำอย่างไรถ้าอยู่ในกลุ่มกระบวนการที่ถูกโยงถึงที่ไม่มี tty อยู่? แต่ฉันแนะนำให้อ่านคำถามยาว ๆ เพราะมันสนุก นี่คือวิธีที่สนุกและน่าตื่นเต้นในการเปลี่ยนแล็ปท็อปของคุณให้เป็นเครื่องทำพื้นที่พกพาโดยใช้เปลือกที่คุณชื่นชอบ (ยกเว้นว่าคุณเป็นหนึ่งในพวก tcsh weirdos): #include <unistd.h> int main(void) { if (fork() == 0) { execl("/bin/bash", "/bin/bash", NULL); } return 0; } ทำให้ bash ตรึง CPU ที่ 100% zsh และปลาทำแบบเดียวกันในขณะที่ ksh และ tcsh พึมพำอะไรบางอย่างเกี่ยวกับการควบคุมงานและจากนั้นก็กระดูกงูซึ่งดีกว่าเล็กน้อย แต่ไม่มาก โอ้และเป็นผู้กระทำความผิดที่ไม่เชื่อเรื่องพระเจ้าแพลตฟอร์ม: OS X และ Linux ได้รับผลกระทบทั้งคู่ …

5
ฉันจะต้องล้างดิสก์ถ้าติดตั้ง linux หรือไม่
ฉันต้องการประสบการณ์ Linux แบบสแตนด์อโลนและต้องการแทนที่ windows 7 ด้วย คำถามของฉันคือ: ฉันจะต้องล้างข้อมูลทั้งหมดของฉันหรือไม่หากฉันติดตั้ง Linux บนโน้ตบุ๊กแทนที่หน้าต่าง

4
ฉันจะเขียนซับหนึ่งซับเพื่อเพิ่มอักขระหลังจากอักขระที่สามทุกตัวได้อย่างไร
ดังนั้นฉันมีสตริงที่มีลักษณะเช่นนี้: AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA และฉันต้องการแยกสตริงออกเป็น 3 ตัวอักษรที่คั่นด้วยเครื่องหมาย '+' AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UGA sedและฉันต้องการที่จะทำอย่างนั้นกับเพื่อนที่ดีของฉัน ฉันเหนื่อย cat codons | sed -r 's/([A-Z]\{3\})/\1\+/g' ... ไม่ประสบความสำเร็จ sedฉันสามารถใช้คำสั่งอะไรได้บ้าง

1
ALSA / ASoC: วิธีโหลดอุปกรณ์ / ไดรเวอร์อย่างถูกต้อง
ฉันใช้ Buildroot เพื่อสร้างระบบ Linux (2.6.39.2) ในตัวสำหรับไมโครคอนโทรลเลอร์ NXP LPC3250 ตอนนี้ฉันกำลังพยายามทำให้ ALSA / ASoC ทำงาน แต่ฉันมีปัญหากับการทำให้โมดูลทำงานร่วมกัน (ฉันคิด!) พื้นหลังสำคัญบางอย่าง: คณะกรรมการฉันกำลังทดสอบกับเป็นศิลปินแบบฝัง 3250 V2 คณะกรรมการพัฒนาการ V2 แตกต่างจาก V1 เนื่องจากไม่มีหน้าจอ LCD แต่มีตัวแปลงสัญญาณเสียง I2S: NXP UDA1380 การสนับสนุนบอร์ดสำหรับ EA3250 V1รวมอยู่ในเคอร์เนลรุ่นLPCLinux นอกจากนี้ยังมีบอร์ดพัฒนาอื่นที่เรียกว่าPhytec 3250ซึ่งมีชิปตัวแปลงสัญญาณ UDA1380 เดียวกัน การกระจาย LPCLinux ยังสนับสนุนบอร์ด Phytec พร้อมกับชิปตัวแปลงสัญญาณเสียง จากสิ่งที่ฉันได้มองเห็นคณะกรรมการ Phytec 3250 มีตัวแปลงสัญญาณ UDA1380 บน I2C อยู่0x18 บนกระดาน …

2
tar ไฟล์จากไดเรกทอรีอื่นโดยไม่คัดลอก
นี่ควรจะง่ายมากสำหรับผู้เชี่ยวชาญที่นี่ ฉันมีบัญชี Linux พร้อมโควต้าดิสก์ผู้ใช้เพียง 6GB มีโฟลเดอร์ข้อมูลบางส่วนที่มีข้อมูล/optประมาณ 3GB เมื่อบีบอัดขึ้นมา 1GB data-folderมีบางอย่างที่เชื่อมโยงสัญลักษณ์อยู่ภายใน โดยปกติแล้วสำหรับการสำรองข้อมูลการทำงานฉันใช้ในการทำดังต่อไปนี้ cp -rvfL /opt/data-folder ~/ cd ~/ tar -zcvf data-folder.tar.gz data-folder rm -rvf data-folder ตอนนี้ผมมีการบริโภคอยู่แล้ว 2.5GB ในโควต้าของฉันดิสก์ของผู้ใช้ผมมีพื้นที่พอเพียงที่จะคัดลอกไฟล์ไปที่บ้านของฉัน แต่ไม่ถึงtarมันอีกครั้ง มีวิธีการ tar และคัดลอกโฟลเดอร์ด้วยคำสั่งเดียวพูดโดยใช้ไพพ์ PS ฉันไม่สามารถน้ำมันดินใน/optเพราะฉันมีเพียง /optแต่การเข้าถึงการอ่านเพื่อ
10 files  tar  cp 

1
การกู้คืนไฟล์ที่ถูกลบที่ค้างไว้เปิดโดย apache?
สมมติว่าไฟล์บันทึก apache ถูกลบ แต่ถูกระงับโดย apache นี่คือสิ่งที่ฉันทำ: pid=$(lsof | grep text.txt | awk '/deleted/ {print $2}') fd=$(lsof | grep text.txt | awk '/deleted/ {print $4}' | grep -oE "[[:digit:]]{1,}") cp /proc/$pid/fd/$fd directorytobecopied/testfile.txt นี่คือสิ่งที่ฉันกำลังทำเพื่อกู้คืนไฟล์และนำกลับไปวางไว้ที่เดิม มีวิธีที่ง่ายกว่าในการทำเช่นนี้เพราะรหัสด้านบนดูไม่ดี นอกจากนี้ฉันจะรู้ได้อย่างไรว่าไฟล์ถูกลบไปที่ไหน ( directorytobececied ) เพื่อที่ฉันจะได้ไม่ต้องถามใครสักคนว่าไฟล์นั้นอยู่ที่ใดและอยู่ที่นั่น

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