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

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

4
ไปที่ไดเรกทอรีโดยใช้ตัวแปร bash ไม่ทำงานเมื่อชื่อไดเรกทอรีมีช่องว่าง
สมมติว่าฉันต้องการเก็บคำสั่งต่อไปนี้ในตัวแปร cd "/cygdrive/c/Program Files/" ดังนั้นฉันทำสิ่งนี้ dir="cd \"/cygdrive/c/Program Files/\"" ที่ควรเก็บคำสั่งเพื่อนำทางไปยังไดเรกทอรี Program Files ดังนั้นเมื่อฉันพิมพ์ $ dir มันจะพาฉันไปยังไดเรกทอรีนั้น ในการตรวจสอบว่าใบเสนอราคาได้รับการหลีกเลี่ยงอย่างถูกต้องฉันพิมพ์ echo $dir ซึ่งให้ฉัน cd "/cygdrive/c/Program Files/" ดังนั้นทุกอย่างควรจะทำงานได้ดี อย่างไรก็ตามเมื่อฉันพิมพ์ $dir ฉันเข้าใจ bash: cd: "/cygdrive/c/Program: No such file or directory ผมทำอะไรผิดหรือเปล่า? ฉันใช้ Cygwin แต่ฉันคิดว่าปัญหานี้ใช้ได้กับการทุบตีทั่วไป
11 linux  bash  cygwin 

3
ไม่สามารถไปที่ "mapfile" ของทุบตี ... แต่ทำไม?
ฉันต้องการรับไฟล์ทั้งหมดในไดเรกทอรีที่แน่นอนใน bash array (สมมติว่าไม่มีไฟล์ใดมี newline ในชื่อ): ดังนั้น: myarr=() find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}" ผลลัพธ์ว่างเปล่า! ถ้าฉันใช้วงเวียนในการใช้ไฟล์ชั่วคราวหรืออย่างอื่น: myarr=() find . -maxdepth 1 -name "mysqldump*" > X mapfile -t myarray < X echo "${myarray[@]}" ผลลัพธ์! แต่ทำไมไม่mapfileอ่านอย่างถูกต้องจากไปป์?
11 bash 


5
เปลือกแบบขนาน
ฉันต้องการประมวลผลไฟล์จำนวนมากและเนื่องจากฉันมีแกนประมวลผลที่นี่ฉันต้องการทำแบบขนาน: for i in *.myfiles; do do_something $i `derived_params $i` other_params; done ฉันรู้จักโซลูชัน Makefile แต่คำสั่งของฉันต้องการอาร์กิวเมนต์จากรายการ globbing เชลล์ สิ่งที่ฉันพบคือ: > function pwait() { > while [ $(jobs -p | wc -l) -ge $1 ]; do > sleep 1 > done > } > หากต้องการใช้งานสิ่งที่ต้องทำคือใส่ & หลังงานและการเรียก pwait พารามิเตอร์กำหนดจำนวนของกระบวนการแบบขนาน: > for i …

6
มีวิธีที่จะหลีกเลี่ยงอัญประกาศเดี่ยวในเชลล์หรือไม่?
เช่น. ฉันต้องการพูด perl -e 'print '"'"'Hello, world!'"'"', "\n";' มีวิธีที่น่าอึดอัดใจน้อยกว่าในการทำเช่นหนีคำเดียว? ใช่ฉันรู้ว่าฉันสามารถเขียนได้ perl -e 'print q[Hello, world!], "\n"' perl -e 'print "Hello, world!\n"' แต่คำถามนี้เกี่ยวกับการอ้างถึงในเชลล์ไม่ใช่ใน Perl ฉันสนใจที่จะทำมันในbashและcshในตอนแรก

1
การแทนที่ [0-9] ด้วย [AJ] ไม่ทำงานกับ sed
ฉันกำลังทำงานกับคำสั่งที่แทนที่ตัวเลขทั้งหมด 0-9 ด้วยตัวอักษรที่เกี่ยวข้องใน sed ฉันรู้ว่าฉันกำลังทำอะไรผิดพลาด แต่ sed ไม่ได้ตีความ regex การเปลี่ยนเป็นอะไรเลยยกเว้นสตริงตัวอักษร คำสั่งที่ฉันใช้คือ sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt ดูเหมือนจะตรงไปตรงมากับฉัน แต่ฉันติดอยู่กับมันประมาณหนึ่งชั่วโมง ผลลัพธ์ที่ฉันได้รับเพียงแทนที่ 0-9 ด้วยสตริง "[AJ]"

1
ทำไมซอฟต์ลิงค์นี้ใช้งานไม่ได้ตามที่คาดไว้?
bash4.3 # pwd /bin bash4.3 # ll sh lrwxrwxrwx. 1 root root 4 May 17 22:22 sh -> bash bash4.3 # ll bash -rwxr-xr-x. 1 root root 1072056 May 17 22:22 bash bash4.3 # bash bash4.3 # sh sh-4.3# ระบบปฏิบัติการของฉันคือ fedora 24 (รุ่น GNOME เริ่มต้น) จากตัวอย่างที่เราสามารถรู้ภายใต้/bin, bashเป็นไบนารี; คือการเชื่อมโยงที่อ่อนนุ่มshbash ดังนั้นเพื่อความรู้ของฉันควรจะมีผลกระทบต่อผลเดียวกันตรงตามที่type bash …
11 linux  bash  shell  fedora  sh 

3
เทอร์มินัล OS-X ทำงานผิดปกติหลังจากใช้งาน Python แบบโต้ตอบ
หลังจากรัน python replicate (2.7.10) ในเทอร์มินัล os-x และออกจากเครื่องเทอร์มินัลจะไม่ป้อนข้อมูล echos ที่ป้อนอีกต่อไปแล้วสิ่งแปลก ๆ อื่น ๆ ก็เกิดขึ้น หากฉันทำงานpythonอีกครั้งและexit()ดูเหมือนว่าสถานีจะคืนค่า ตอนนี้ฉันเพิ่งปิดแท็บและเปิดแท็บใหม่ดังนั้นฉันจึงไม่ได้ทดสอบอย่างกว้างขวาง ฉันเดาว่านี่เกี่ยวข้องกับการตั้งค่าเทอร์มินัล แต่เป็นสิ่งล่าสุดและฉันไม่ได้เปลี่ยนแปลงอะไรที่ฉันจำได้ Python ได้รับการติดตั้งด้วยmacportsหากมีบางสิ่งที่เกี่ยวข้องกับการพึ่งพาที่จับคู่ผิดกับไลบรารีคอนโซลบางตัว 2.7.10 ได้รับการติดตั้งเมื่อไม่นานมานี้และสิ่งนี้ไม่ได้เกิดขึ้นหลังจากการติดตั้ง ข้อนิ้วและเปิดterminal [~]: virtualenv-2.7 venv-test [~]: source venv-test/bin/activate [~]: python >>> ^D>>> *(press ctrl-d, the 2nd >>> is strange) [~]: *(type something like `ls-l`, nothing shows on console) [~]: -bash: …
11 macos  bash  terminal  python 

2
การติดตั้งไดเรกทอรีจากโฮสต์ใน boot2docker สำหรับ Windows
ฉันใช้นักเทียบท่า 1.6 และboot2dockerในกล่อง Windows 8.1 เมื่อฉันใช้ช็อตคัต Boot2Docker Start มันจะพาฉันไปยังพรอมต์ของ cygwin ที่ฉันสามารถเรียกใช้คำสั่งนักเทียบท่าได้ ฉันมีปัญหาในการติดตั้งไดเรกทอรีจากโฟลเดอร์ผู้ใช้ของฉัน ฉันพยายามแล้ว: $ docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe ฉันได้รับข้อผิดพลาด: invalid value "C:\\Users\\someone\\AppData\\Roaming/Bitcoin:/datadir" for flag -v: \Users\someone\AppData\Roaming/Bitcoin:/datadir is not an absolute path See 'c:\Program Files\Boot2DockeForWindows\docker.exe run --help'. ฉันได้รับผลลัพธ์เดียวกันเมื่อฉันเรียกมันว่าวิธีเหล่านี้: $ docker run -d --name abe -v "$APPDATA/Bitcoin":/datadir poliver/bitcoin-abe …

4
ฟังก์ชั่นเชลล์เก็บอยู่ที่ไหนบน Linux?
ในตอนแรกที่ผมกำลังมองหาเหตุผลที่ทำอะไรไม่ถูกขับออกหลังจากที่ให้มันบางโปรแกรมเป็นอาร์กิวเมนต์เช่นwhichcd จากสิ่งที่ฉันได้พบที่นี่เหตุผลที่อาจเป็นว่าในเครื่องของฉันเป็นฟังก์ชั่นซึ่งได้รับการยืนยันจากการทำงานcdtype cd TLDR:แต่ตามปกติแล้วโปรแกรมที่whichสามารถค้นหาด้วย$PATHตัวแปรจะถูกวางไว้ในหนึ่งใน$PATHโฟลเดอร์เหล่านั้นฟังก์ชั่นหรือสคริปต์ที่cdเก็บไว้เป็นอย่างไร user@linuxmchine:~$ type cd cd is a function cd () { __zsh_like_cd cd "$@" }

3
ไม่สามารถเปิดแอปพลิเคชันใน tmux
ฉันได้รับข้อผิดพลาดนี้เมื่อฉันพยายามเปิด Sublime Text หรือ SourceTree จาก tmux: $ subl Unable to launch Sublime Text 2 $ stree Unable to open SourceTree ดูเหมือนว่าฉันไม่สามารถเปิดแอป OS x ได้เช่นกัน: $ open MPlayerX.app LSOpenURLsWithRole() failed with error -10810 for the file /Applications/MPlayerX.app. ฉันใช้ Yosemite OS X 10.10 (14A388a), iTerm 2 กับ zsh, tmux 1.0a มีปัญหาเดียวกันกับการทุบตี …

3
ใช้งานได้จริง (ใกล้กับ Linux คลาสสิกมากที่สุด) วิธีใช้ (อัตโนมัติ) SUDO สำหรับ CygWin
ความสามารถในการใช้sudoคำสั่งในCygWin นั้นมีประโยชน์และเร็วกว่าการเปิดเชลล์ที่ยกระดับ: Luis@Kenobi /cygdrive/c/Users/Luis $ net user /add TestUser System error 5. Access denied. Luis@Kenobi /cygdrive/c/Users/Luis $ sudo net user /add TestUser Command completed successfully. ดังที่แสดงด้านบนคุณสามารถเรียกใช้คำสั่ง / สคริปต์ของ Windows ได้เช่นเดียวกับ Linux สำหรับฉันเรียบร้อย ทำงานบนคอนโซลระยะไกล (SSH) และอนุญาตให้รวมคำสั่งWindows / Linux ดังนั้นความสามารถในการดำเนินงานการบริหารจึงเป็นสิ่งจำเป็น แต่โครงการSUDO for CygWinมีพฤติกรรมที่อาจเป็นอันตราย : มันทำงานเป็นสถาปัตยกรรมเซิร์ฟเวอร์ / ไคลเอนต์ในความเป็นจริงลูกค้า (sudo) ส่งคำขอของคำสั่งไปยังเซิร์ฟเวอร์ (sudoserver.py) ที่ภายใน (ไม่ฟังนอก …

2
เป็นไปได้หรือไม่ที่จะเปลี่ยนข้อความแจ้งหน้าต่างเทอร์มินัลของฉัน?
ข้อความแจ้งเตือนค่าเริ่มต้นของหน้าต่างเทอร์มินัลของฉันใช้พื้นที่มากเกินไป (ฉันเดาว่าชื่อคอมพิวเตอร์ของฉันยาวเกินไป) ฉันสามารถปรับแต่งสิ่งนี้ได้ไหม
11 bash 

6
ความแตกต่างระหว่างคำว่า "เชลล์" และ "ทุบตี" คืออะไร?
"Shell" และ "Bash" ต่างกันอย่างไรและข้อกำหนดเหล่านี้หมายความว่าอย่างไร เท่าที่ฉันรู้ไม่มีความแตกต่าง แต่ฉันเคยเห็นหนังสือหลายเล่มเกี่ยวกับ "Shell" และอื่น ๆ เกี่ยวกับ "Bash"! ดังนั้นในกรณีที่ฉันต้องการทำงานกับ Terminal ใน Mac OS X และเขียนสคริปต์ทุบตีฉันสงสัยว่าฉันควรจะใช้หนังสือประเภทไหน
11 macos  bash  shell 

2
คุณสามารถปรับแต่งการทุบตีเทอร์มินัลด้วยใบหน้าที่ยิ้มได้อย่างไร
ฉันกำลังพยายามหาวิธีที่ฉันสามารถกำหนดค่า bash prompt ของเทอร์มินัลเพื่อใช้หน้ายิ้มได้ สิ่งที่ฉันต้องการ (ตามที่เห็นในตัวอย่างการระเบิด) คือการให้ cwd แยกออกจากพรอมต์ด้วย \ n และแสดงหน้ายิ้มสีเขียวหากคำสั่งประสบความสำเร็จและหน้าเศร้าสีแดงหากล้มเหลว ความคิดใด ๆ สิ่งนี้ได้รับแรงบันดาลใจจาก Screencast ของ Peepcode

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