คำถามติดแท็ก bash

Bash เป็นเชลล์ฟรีสำหรับระบบปฏิบัติการยูนิกซ์จากโครงการ GNU

3
ฉันจะใช้ตัวแปร Bash (สตริง) ที่มีเครื่องหมายคำพูดในคำสั่งได้อย่างไร
ตัวอย่างที่ล้มเหลวและเข้าใจง่าย: FLAGS='--archive --exclude="foo bar.txt"' rsync $FLAGS dir1 dir2 ฉันต้องใส่เครื่องหมายคำพูดราวกับว่าคำสั่งเป็นแบบนี้: rsync --archive --exclude="foo bar.txt" dir1 dir2
45 bash 

9
วิธีใช้แท็บการเติมข้อความอัตโนมัติของ Cmd อย่างมีประสิทธิภาพ
ฉันใช้ Bash shell บน Linux มาหลายปีแล้วและเร็วมาก ๆ โดยการดึงดูดการเติมข้อความอัตโนมัติบ่อยครั้งโดยกดปุ่มแท็บฉันสามารถเขียนคำสั่งแบบยาวในการกดแป้นบางครั้ง เมื่อเร็ว ๆ นี้ที่งานของฉันฉันเริ่มใช้ Windows Command Prompt และ Cmd ฉันช้ามากใน Cmd มันมีคุณสมบัติเติมข้อความอัตโนมัติ แต่มันทำงานแตกต่างกัน ฉันคิดว่าฉันเข้าใจวิธีการใช้งาน แต่ฉันไม่เข้าใจวิธีการใช้อย่างมีประสิทธิภาพจริง ๆ แล้วมันทำให้ฉันช้าลง ดังนั้นฉันถามวิธีการใช้วิธีการเติมข้อความอัตโนมัติของ Cmd อย่างมีประสิทธิภาพ? ขอยกตัวอย่าง ก่อนอื่นฉันจะอธิบายว่าฉันใช้ Bash อย่างไรแล้วฉันจะพยายามใช้ Cmd อย่างไรและมีอะไรผิดพลาด สมมติว่าโฟลเดอร์ในไดเรกทอรีปัจจุบันมีชื่อที่ทำจากทวีปและประเทศเช่น africa-nigeria, asia-india, และที่ฉันต้องการที่จะเปลี่ยนแปลงไปยังโฟลเดอร์europe-franceeurope-norway วิธีการเติมข้อความอัตโนมัติของ Bash ทำงานคือปุ่มแท็บจะขยายเฉพาะเมื่อมีการขยายที่ไม่ซ้ำกัน ไม่เช่นนั้นจะไม่มีอะไรเกิดขึ้น แต่คุณสามารถกดแท็บเป็นครั้งที่สองเพื่อแสดงการขยายที่เป็นไปได้ ดังนั้นเมื่อต้องการย้ายไปที่นอร์เวย์ใน Bash ฉันพิมพ์cdแล้วทำการกดแป้นต่อไปนี้: e tab สำหรับ europe- n …

7
คำสั่ง 'ls -d' ไม่แสดงไดเรกทอรี มีวิธีรับ 'ls' เพื่อแสดงเฉพาะไดเรกทอรีแทนไฟล์และไดเรกทอรีหรือไม่
มีวิธีการที่lsจะแสดงเฉพาะไดเรกทอรีแทนไฟล์และไดเรกทอรีหรือไม่ จากหน้าคน: -d, --directory list directory entries instead of contents, and do not derefer‐ ence symbolic links ดังนั้นหากฉันพิมพ์ที่/ไดเรกทอรีฉันคาดว่าจะเห็นไดเรกทอรีเท่านั้น มันแสดงว่า "." แทน $ cd / $ ls -d . ฉันคาดหวังว่าls -dจะแสดงสิ่งนี้ให้ฉัน: $ ls -d bin data home opt sbin sys var boot dev lib media proc selinux tmp cdrom etc lost+found …
44 linux  bash  ls 

9
จะเปลี่ยนคำแรกในคำสั่ง Bash อย่างรวดเร็วได้อย่างไร?
ฉันต้องการปรับปรุงขั้นตอนการทำงานของฉันด้วย Bash และฉันรู้ว่าฉันมักจะต้องการรันคำสั่งเดียวกันกับโปรแกรมที่แตกต่างกัน ตัวอย่างบางส่วน: Git (ที่ฉันต้องการเปลี่ยนคำที่สองอย่างรวดเร็ว): git diff foo/bar.c git checkout foo/bar.c Cat / rm (โดยที่จะต้องเปลี่ยนเฉพาะคำแรกเท่านั้น): cat foo/is/a/very/long/path/to/bar.c rm foo/is/a/very/long/path/to/bar.c ฉันรู้ว่าฉันสามารถตีCtrl+ aแล้วDelจะลบคำแรก แต่ผมสงสัยว่าถ้ามีวิธีที่รวดเร็วที่จะทำมัน
44 linux  bash 

6
หน้าจอ Bash vs. Gnu: แทนที่ Ctrl-A ด้วย Ctrl-Shift-A
ฉันเป็นผู้ใช้ใหม่ในหน้าจอ GNU ฉันใช้ Bash มานานแล้วและฉันต้องการลองใช้ GNU Screen ดังที่คุณทราบ GNU Screen ใช้ 'Ca' (Control-A) เป็นอักขระคำสั่ง ปัญหาคือสิ่งนี้รบกวนคุณสมบัติการแก้ไขสายใน Bash (และ GNU Readline) เนื่องจากการควบคุม A ใน Bash จะย้ายไปที่จุดเริ่มต้นของบรรทัด " ฉันรู้ว่าฉันสามารถตั้งค่าอักขระคำสั่งเป็นลำดับคีย์อื่นเช่น "^ Q" หรือ "` `" (Backtick) แต่ฉันมีปัญหาในการค้นหาลำดับคีย์อื่นที่ไม่ได้ใช้งานอยู่ (^ Q ใช้โดยเทอร์มินัล , backtick ใช้เมื่อเขียนเชลล์สคริปต์) ดูเหมือนว่าอักขระคำสั่งอาจมีความยาวหนึ่งหรือสองอักขระเท่านั้น ฉันสามารถตั้งค่าตัวควบคุมหน้าจอของ GNU ให้เป็นแบบ "Control-Shift-A" ได้หรือไม่? (ฉันไม่สามารถใช้ไฮเปอร์ลิงก์มากกว่าหนึ่งลิงก์ได้ดังนั้นฉันจึงไม่สามารถลิงก์ไปยังเอกสาร Bash ได้)

2
Bash เติมข้อความอัตโนมัติใน symlink ไปยังไดเรกทอรีที่สมบูรณ์ไปยังไดเรกทอรีทั้งหมดรวมถึงเครื่องหมายทับ [ซ้ำกัน]
ซ้ำได้: แท็บเสร็จสิ้นด้วยไดเรกทอรี / ลิงค์ เมื่อฉันfooเชื่อมโยงsymlink ไปยังไดเรกทอรีbar/และฉันเริ่มพิมพ์fและกดtabมันจะเสร็จสมบูรณ์fooแต่ฉันต้องการทำให้เสร็จสมบูรณ์เพื่อfoo/ให้ฉันสามารถเพิ่มอักขระถัดไปทันทีเพื่อให้เสร็จสมบูรณ์เพิ่มเติม ฉันจะทำสิ่งนั้นได้อย่างไร

1
rsync จะลบไฟล์โฟลเดอร์ที่ปลายทางโดยค่าเริ่มต้นหรือไม่?
ไฟล์ สมมติว่า/foo/srcมีเพียงA.cและ/foo/destมีทั้งและA.c B.cและสมมติว่าฉันใช้คำสั่งต่อไปนี้: rsync /foo/src/ /foo/dest จะrsyncลบB.cหรือไม่ โฟลเดอร์ ตอนนี้สมมติว่า/foo/srcมีไดเรกทอรีที่Aมีไฟล์อยู่ข้างในและ/foo/destมีทั้งไดเรกทอรีAและBแต่ละไฟล์มีบางส่วนอยู่ในนั้น และสมมติว่าฉันรันคำสั่งต่อไปนี้ (ตัวเลือก -a รวมถึง -r, เรียกซ้ำ) rsync -a /foo/src/ /foo/dest จะrsyncลบBและเนื้อหาของมันหรือไม่
44 macos  bash  unix  rsync 

5
บรรทัดใหม่ใน sed บน Mac OS X
ฉันพบว่า\nใช้งานไม่ได้ในระบบปฏิบัติการภายใต้ Mac OS X โดยเฉพาะฉันต้องการแบ่งคำออกเป็นหลายช่อง: # input foo bar ฉันใช้, echo "foo bar" | sed 's/ /\n/' แต่ผลที่ได้คือโง่\nไม่หนี! foonbar หลังจากที่ฉันปรึกษากับ google ฉันพบวิธีแก้ปัญหา : echo 'foo bar' | sed -e 's/ /\'$'\n/g' หลังจากอ่านบทความฉันยังไม่เข้าใจความ\'$'\n/g'หมาย บางคนสามารถอธิบายให้ฉันหรือถ้ามีวิธีอื่นที่จะทำ? ขอบคุณ!
44 macos  mac  bash  regex  sed 

1
ไดเรกทอรีต่าง ๆ ยกเว้นหนึ่งโฟลเดอร์ภายใน
ฉันคิดว่าฉันมีสองไดเรกทอรีที่มีเนื้อหาเหมือนกัน แต่ฉันต้องการตรวจสอบ นอกจากนี้ฉันต้องการแยกโฟลเดอร์ที่อยู่ในทั้งสองไดเรกทอรี ฉันจะทำมันได้อย่างไร
44 linux  bash  diff 

1
+/- หมายถึงอะไรถ้าหากงาน linux ในพื้นหลังเสร็จสิ้น (เริ่มต้นด้วย &)
ถ้าฉันเริ่มต้นกระบวนการด้วยเครื่องหมายแอมเปอร์แซนด์ ( &) ในตอนท้ายมันจะถูกแยกเป็นพื้นหลัง เมื่อเสร็จแล้วฉันจะได้ผลลัพธ์ที่คล้ายกับ [1]+ Fertig my_script ฉันมีการกระจายภาษาท้องถิ่น แต่สิ่งนี้ไม่สำคัญ สิ่งที่ฉันเห็นคือรหัสงานในวงเล็บเหลี่ยมตามด้วยเครื่องหมายบวก ( +) ถ้าฉันเริ่มงานหลายงานพร้อมกันฉันจะได้ [1]- Fertig my_script [2]+ Fertig my_script ตอนนี้ฉันมีเครื่องหมายลบ ( -) สำหรับงานกำปั้นและบวก ( +) สำหรับงานที่สอง ฉันสงสัยว่าสิ่งเหล่านั้น+/ -เฉลี่ย ไม่พบคำตอบใด ๆ โดยใช้เครื่องมือค้นหาอินเทอร์เน็ต
43 linux  bash 

4
จะสร้างลิงค์สัญลักษณ์ไปยังไฟล์ทั้งหมด (คลาสของไฟล์) ในไดเรกทอรีได้อย่างไร?
ฉันต้องการสร้างลิงก์สัญลักษณ์ ( ln -s) ไปยังไฟล์ทั้งหมด (หรือคลาสของไฟล์เช่นลงท้ายด้วย.bar) ในไดเรกทอรีหนึ่ง บอกว่าฉันอยู่ใน cwd และประเภทls ../source/*.barให้ฉัน foo.bar baz.bar ฉันจะส่งรายการพารามิเตอร์ไปยังวิธีการln -sที่จะแก้ไขในที่สุด ln -s ../source/foo.bar ln -s ../source/baz.bar แน่นอนฉันรู้ว่าฉันสามารถเขียนสคริปต์ทุบตีได้ แต่ควรมีบางอย่างที่เกี่ยวข้องกับเรื่องนี้ง่ายกว่าxargsเนื่องจากเป็นงานทั่วไป - อย่างน้อยก็สำหรับฉัน

5
grep: แสดงผลลัพธ์ทั้งหมด แต่ไฮไลต์ตรงกับการค้นหา
ใน bash หากฉันต้องการรันคำสั่งและแสดงเฉพาะบรรทัดเอาต์พุตที่ตรงกับรูปแบบที่กำหนดฉันสามารถไพพ์ไปที่grepเช่น ไฟล์ testfile hello there my friends คำสั่ง $ cat testfile | grep 'hello' hello #this will be highlightd นี่จะเน้นการจับคู่การค้นหาและแสดงทั้งบรรทัดที่ตรงกับ ฉันสามารถใช้-Aและ-Bเพื่อแสดงบรรทัดก่อนและหลังบรรทัดนั้น คำถามของฉันเป็นไปได้หรือไม่ที่จะรันคำสั่งและแสดงเอาต์พุตทั้งหมดตามปกติ แต่เพื่อเน้นการค้นหาที่ตรงกันอย่าง grep ดังนั้น ouput ของฉันจะเป็น hello #highlighted there my friends

5
วนลูปผ่านไดเรกทอรีย่อยและเรียกใช้คำสั่งในแต่ละรายการ
ฉันมีชุดของที่เก็บเรียงลำดับลงในไดเรกทอรีตาม VCS (Git, Mercurial, SVN) ของพวกเขา ด้วยการโค่นล้มฉันสามารถทำงานได้ svn update * ในไดเรกทอรีหลักและจะวนซ้ำแต่ละไดเรกทอรีและอัปเดตที่เก็บแต่ละรายการตามที่คาดไว้ นั่นไม่ใช่กรณีของ Git หรือ Mercurial ฉันต้องการสร้างสคริปต์ทุบตีที่ฉันสามารถเรียกใช้เพื่อทำสิ่งนั้นได้อย่างแน่นอนวนรอบไดเรกทอรีต่างๆ git pull หรือ hg pull ในแต่ละ. ฉันไม่ได้มีประสบการณ์การเขียนสคริปต์ทุบตีมากนัก
42 linux  bash  shell  script 

6
ฉันจะกำหนดค่า ConEmu ให้เรียกใช้ Cygwin Bash ได้อย่างไร
ฉันสร้างงานใหม่ {ทุบตี} ผ่านไดเรกทอรีบ้านของฉัน / dir "C: \ Users \ TMB \" และเพิ่ม bash เป็นแอปพลิเคชัน C: \ Cygwin \ bin \ bash.exe เมื่อฉันเปิด Bash จะไม่สามารถใช้ยูทิลิตี UNIX / Cygwin พื้นฐานได้ ฉันจะกำหนดค่า ConEmu ให้เรียกใช้ Cygwin Bash ได้อย่างไร

4
วิธีเพิ่มบรรทัดใน. bash_profile
ฉันเพิ่งติดตั้ง Homebrew บน bash บน Mac ของฉันและตอนนี้ฉันต้องทำสิ่งนี้: เมื่อคุณติดตั้ง Homebrew แล้วให้ใส่ไดเรกทอรี Homebrew ที่ด้านบนของตัวแปรสภาพแวดล้อม PATH ของคุณ คุณสามารถทำได้โดยเพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของ~/.bashrcไฟล์ของคุณ export PATH=/usr/local/bin:$PATH "คำสั่ง ls -a" การแสดงและ.bash_profile.bashrc.save ฉันจะเพิ่มบรรทัดนี้ไปที่.bash_profile? อย่างไร? ขอโทษ ฉันใหม่สำหรับทุกสิ่ง
42 bash  osx-lion  path 

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