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

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน


6
ทำไมข้อความแสดงข้อผิดพลาดหลามนี้จึงถูกสร้างขึ้นทุกครั้งที่ฉันพิมพ์คำสั่งไร้สาระ?
เมื่อใดก็ตามที่ฉันพิมพ์คำสั่ง "ไร้สาระ" ข้อความแสดงข้อผิดพลาดหลามนี้จะถูกสร้างขึ้น คำสั่งปกติทำงานได้ดี มีความคิดวิธีการแก้ไขข้อบกพร่องนี้หรือไม่? $ somenonexistingcommand Traceback (most recent call last): File "/usr/local/lib/python2.7/site.py", line 553, in <module> main() File "/usr/local/lib/python2.7/site.py", line 535, in main known_paths = addusersitepackages(known_paths) File "/usr/local/lib/python2.7/site.py", line 268, in addusersitepackages user_site = getusersitepackages() File "/usr/local/lib/python2.7/site.py", line 243, in getusersitepackages user_base = getuserbase() # this will also …
16 bash  ubuntu  python 

5
ใน Chrome OS Bash จะไม่รันสคริปต์ของฉัน ฉันจะให้ Bash ใช้งานสคริปต์ได้อย่างไร
ฉันมีfoo.shไฟล์ในไดเรกทอรีปัจจุบันของฉัน ถ้าฉันพยายามวิ่ง./foo.shฉันจะได้: -bash: ./foo.sh: /bin/sh: bad interpreter: Permission denied แต่ถ้าฉันวิ่ง/bin/sh ./foo.shแล้วก็วิ่งได้ดี ฉันจะแก้ไขได้อย่างไรเพื่อที่ฉันจะสามารถเรียกใช้./foo.shและมันรันโดยอัตโนมัติด้วย / bin / sh? แก้ไข: เอาล่ะนี่คือ Chrome OS noexecและโฟลเดอร์นี้โดยเฉพาะอย่างยิ่งคือการติดตั้งด้วย เห็นได้ชัดว่าเกียดความสามารถในการทำงานเพียง./foo.sh; แต่ทำไม เหตุใดฉันจึงยังสามารถวิ่งsh foo.shเพื่อบรรลุสิ่งเดียวกันได้ ความปลอดภัยอะไรให้แล้วnoexec?
16 bash  chrome-os 

6
การใช้ข้อความจากเอาต์พุตคำสั่งก่อนหน้า
แก้ไขเมษายน, 2015: หากคุณมีคำถามเดียวกันนี้ฉันขอแนะนำให้ตรวจสอบhttp://xiki.org/ ฉันรู้ว่านี่ไม่ใช่วิธีการทำงานของเทอร์มินัล แต่ฉันพบว่าตัวเองมักจะคิดว่ามีวิธีที่ง่ายในการใช้ข้อความ (คัดลอกแก้ไขปรับเปลี่ยน ฯลฯ ) ที่มีอยู่แล้วในประวัติหน้าต่างเทอร์มินัลของฉัน ฉันจินตนาการไว้ดังนี้: ฉันอยู่ที่เปลือกทุบตีของฉันเกี่ยวกับการป้อนคำสั่งและฉันรู้ว่าฉันต้องพิมพ์สิ่งที่มีอยู่แล้วบนหน้าจอไม่กี่บรรทัดข้างต้น ฉันสามารถเอื้อมหยิบเมาส์และเลือกมัน แต่ฉันเกลียดมัน สิ่งที่ฉันต้องการจริงๆในขณะนี้คือเทอร์มินัลทั้งหมดของฉันกลายเป็นบัฟเฟอร์ Vim ขนาดใหญ่ทั้งหมดนั้น: พรอมต์คำสั่งที่ฉันพิมพ์และผลลัพธ์จากคำสั่งเหล่านั้น ทุกอย่าง จากนั้นฉันก็กระโดดได้สองสามบรรทัดอาจแก้ไขนิดหน่อยและดึงข้อความ จากนั้นกลับไปที่โหมดทุบตีเปลือกและวางสิ่งที่ฉันดึงลงในบรรทัดคำสั่งปัจจุบัน ฉันรู้ว่ามีตัวเลือกบางอย่าง: โดยปกติแล้วไพพ์ข้อความที่ฉันต้องการโดยตรงจากเอาท์พุทของคำสั่งบางอย่างไปยังไฟล์หรือขวาไปที่คำสั่งถัดไป แต่สำหรับสิ่งที่คุณต้องวางแผนล่วงหน้าหรือรันคำสั่งอีกครั้งจากประวัติของคุณ (หากว่าเอาต์พุตจะไม่เปลี่ยนระหว่างการเรียกใช้) ในการเข้าถึงสำหรับเมาส์และเลือกข้อความที่จะคัดลอก อ่อนแอน่ารำคาญฉันหวังว่าฉันจะไม่ทำอย่างนั้น (นี่ไม่ใช่ไซต์ GUI stackexchange ใช่ไหม? =) ในการใช้ตัวเลือก "ส่งออกข้อความเป็น ... " เทอร์มินัลแอปพลิเคชันของฉัน (Mac OS X) และบันทึกข้อความเทอร์มินัลเป็นไฟล์ จากนั้นเปิดไฟล์และทำงานกับมัน เกือบแล้วทำไมต้องทำตามขั้นตอนการบันทึกไฟล์บนดิสก์ ดังนั้นคำถามคือคุณทำอะไรในสถานการณ์นี้ มีลูกเล่น, เครื่องมือ, คุณสมบัติของเชลล์ที่อาจมีประโยชน์ในสถานการณ์นี้หรือไม่? คุณเพิ่งลาออกตัวเองเพื่อใช้เมาส์หรือพิมพ์สิ่งที่คุณต้องการพิมพ์อีกครั้ง? อาจเป็นไปได้ว่าปัญหาคือว่าฉันไม่ได้ทำสิ่งที่ 'unix วิธี' …

3
bash find xargs grep ปรากฏเพียงครั้งเดียวเท่านั้น
อาจจะแปลกไปหน่อยและบางทีอาจมีเครื่องมืออื่นที่จะทำเช่นนี้ แต่ก็ .. ฉันใช้คำสั่ง bash แบบคลาสสิคต่อไปนี้เพื่อค้นหาไฟล์ทั้งหมดที่มีสตริง: find . -type f | xargs grep "something" ฉันมีไฟล์จำนวนมากในหลายระดับ การเกิดขึ้นครั้งแรกของ "บางสิ่ง" นั้นเพียงพอสำหรับฉัน แต่การค้นหายังคงค้นหาอยู่และใช้เวลานานในการทำให้ไฟล์ที่เหลือเสร็จสมบูรณ์ สิ่งที่ฉันต้องการจะทำคือการ "ตอบกลับ" จาก grep back เพื่อค้นหาเพื่อให้การค้นหาสามารถหยุดการค้นหาไฟล์เพิ่มเติมได้ เป็นไปได้ไหม
16 bash  find  grep  xargs 

1
เชลล์แบบโต้ตอบสามารถกลายเป็นแบบไม่โต้ตอบหรือในทางกลับกันได้หรือไม่?
เชลล์แบบโต้ตอบสามารถกลายเป็นแบบไม่โต้ตอบหรือในทางกลับกันได้หรือไม่? หมายเหตุ:ผมเคยทำมากของการวิจัยเกี่ยวกับคำถามพื้นฐาน "ความแตกต่างระหว่างการโต้ตอบและไม่โต้ตอบอะไร" และผลการวิจัยของฉันทำให้ฉันถามนี้คำถาม คำถามนี้มีคำนำยาวส่วนหนึ่งเป็นเพราะมันเป็นสิ่งสำคัญสิ่งที่ประเภทของความหมายที่เราใช้สำหรับ "การโต้ตอบ" เพื่อที่จะตอบได้ คำจำกัดความอาจเป็นป้ายกำกับโดยพลการสำหรับบางชุด มันสามารถอธิบายคุณสมบัติต่าง ๆ ; หรืออาจให้ข้อมูลที่คุณสามารถใช้ในการทำนายพฤติกรรมและเข้าใจวัตถุประสงค์ ประเภทสุดท้ายนี้เราสามารถเรียกว่า "นิยามการกระทำ" หรือ "นิยามแบบไดนามิก" และเป็นประโยชน์มากที่สุด ในman 1p shนิยามของเชลล์เชิงโต้ตอบต่อไปนี้จะได้รับ: If the -i option is present, or if there are no operands and the shell’s standard input and standard error are attached to a terminal, the shell is considered to …

4
การเลื่อนระดับบิตและจำนวนเต็มที่ใหญ่ที่สุดใน Bash
นี่เป็นคำถามสำรวจซึ่งหมายความว่าฉันไม่แน่ใจว่าคำถามนี้เกี่ยวข้องกับอะไร แต่ฉันคิดว่ามันเป็นจำนวนเต็มที่ใหญ่ที่สุดใน Bash อย่างไรก็ตามฉันจะนิยามมันอย่างชัดแจ้ง $ echo $((1<<8)) 256 ฉันกำลังผลิตจำนวนเต็มโดยขยับบิต ฉันจะไปได้ไกลแค่ไหน? $ echo $((1<<80000)) 1 ไม่ไกลขนาดนี้ (1 คาดไม่ถึงและฉันจะกลับไปหามัน) แต่ $ echo $((1<<1022)) 4611686018427387904 ยังคงเป็นบวก อย่างไรก็ตามไม่ใช่: $ echo $((1<<1023)) -9223372036854775808 และก้าวไปอีกขั้นหนึ่ง $ echo $((1<<1024)) 1 ทำไมต้อง 1 และทำไมต่อไปนี้? $ echo $((1<<1025)) 2 $ echo $((1<<1026)) 4 มีคนต้องการวิเคราะห์ซีรี่ส์นี้หรือไม่ UPDATE เครื่องของฉัน: $ uname -a …
16 bash  arithmetic 

1
รอ bash-builtin เบิร์น CPU ที่ 100 เปอร์เซ็นต์
เกิดขึ้นอย่างน้อยในGNU bash รุ่น 4.3.42 x86_64 && GNU bash รุ่น 4.3.11 x86_64 ฉันใช้sleep & wait $!แทนวิธีง่าย ๆsleepในการทำให้sleepสัญญาณขัดจังหวะ(เหมือนSIGUSR1 ) แต่ดูเหมือนว่าwaitbash-builtin จะทำงานในลักษณะที่แปลกเมื่อคุณเรียกใช้สิ่งต่อไปนี้ อาคาร 1: cat <( trap 'echo SIGUSR1' SIGUSR1; echo $BASHPID; while :;do sleep 1 & wait $!; echo test; done )& อาคาร 2: kill -10 /the pid of the subshell, printed …

1
pushd, popd vs cd, cd- in bash และ zsh
มีความแตกต่างระหว่างพฤติกรรมของ pushd / popd ใน bash vs zsh หรือไม่? ดูเหมือนว่าใน zsh cd, cd- ทำงานเหมือนกับ pushd / popd (ซึ่งจะเพิ่ม / pops directory โดยอัตโนมัติเมื่อ cd) ในขณะที่ bash cd ไม่มีผลต่อ dir stack หากใครบางคนสามารถให้ฉันตัวชี้ที่จะดี
16 bash  zsh  cd-command  pushd 

6
แสดงเฉพาะไดเรกทอรีปัจจุบันและพาเรนต์ใน bash prompt
ฉันใหม่เพื่อทุบตีและต้องการให้ฉันแสดงบางอย่างที่ tcsh ไม่สำคัญ แต่หลังจากการค้นหา google ที่ดีฉันยังไม่สามารถทำได้ ฉันต้องการให้ฉันรวมเฉพาะไดเรกทอรีปัจจุบันและผู้ปกครองเช่นนี้ /parent/currentdir $ ใน tcsh สามารถทำได้โดย: set prompt = "%C2 %" อย่างไรก็ตามใน bash จนถึงตอนนี้ฉันเพิ่งพบว่าฉันต้องแยกวิเคราะห์ pwd เพื่อให้ได้ผลลัพธ์เดียวกัน ไม่มีวิธีที่ง่ายกว่าเช่นการทำ: export PS1="$(some_command) $"
16 bash  prompt 


5
วิธีการหลีกเลี่ยงอักขระพิเศษในสตริงได้อย่างไร
สมมติว่า$fileเก็บค่าชื่อไฟล์Dr' A.tifไว้ ในการเขียนโปรแกรม bash ฉันจะหนีจากเครื่องหมายคำพูดเดี่ยวและอักขระพิเศษอื่น ๆ$fileโดยไม่ลบอักขระพิเศษได้อย่างไร อัพเดทเมื่อวันที่ 9 กรกฎาคม 2557 ตามคำขอจาก @Gillesโค้ดต่อไปนี้ที่ไม่สามารถจัดการได้Dr' A.tif: files=$(find /path/ -maxdepth 1 -name "*.[Pp][Dd][Ff]" -o -name "*.[Tt][Ii][Ff]") echo "${files}" > ${TEMP_FILE} while read file do newfile=$(echo "${file}" | sed 's, ,\\ ,g') ## line 1 done < ${TEMP_FILE} หลังจากที่ฉันได้ลองคำตอบจาก @Patrickบนline 1ดูเหมือนว่าจะทำงานให้ฉัน แต่ถ้าผมมีไฟล์เช่นDr\^s A.tif, คำสั่งไม่ได้ดูเหมือนความช่วยเหลือมันแสดงให้เห็นฉันprintf Dr\^s\ …
16 bash 

5
Bash: การใช้ประเภท (Bash builtins) คืออะไร?
ฉันเจอคำสั่งในสคริปต์ Bash ที่ฉันพบ: find /var/log/abcd -type f คำสั่งดังกล่าวอยู่ในบริบทของการทำความสะอาดไฟล์บันทึก ฉันรู้ว่าสิ่งที่findทำ หลังจากได้เห็น-type fฉันดูหน้าคู่มือด้วยตนเอง ฉันได้เห็นมันใน man page ของBASH_BUILTINS (1) คำอธิบายของแฟล็ก -f ภายใต้typeคำสั่งคือ: - The -f option suppresses shell function lookup, as with the command builtin. ต่อไปนี้เป็นคำถามของฉัน: การใช้งานtypeคืออะไร? ความสำคัญของการ-fตั้งค่าสถานะคืออะไร? การใช้typeกับfindคำสั่งคืออะไร [แก้ไข]: -หลังจากที่ได้อ่านความคิดเห็นทั้งหมดและคำตอบจนถึงตอนนี้ผมอยากจะพูดถึงสาเหตุการเข้าใจผิดของฉันVs-type option in command find type commandทั้งหมดนี้เกิดขึ้นเพราะผมสมมติและจนถึงวันที่ได้เห็นเพียงตัวเลือกสั้น (การทดสอบในกรณีของfindคำสั่ง) ที่มีเครื่องหมายลบเดียว '-' , ls -lตัวอย่างเช่น …
16 bash  bash-script 

2
bash_history: แสดงความคิดเห็นคำสั่งที่เป็นอันตราย: `#`
เพื่อป้องกันการบันทึกคำสั่ง "อันตราย" ในประวัติทุบตีฉันได้เพิ่มบรรทัดต่อไปนี้ใน.bashrcไฟล์ของฉัน: HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*' ใช้งานได้ดี แต่มีผลข้างเคียง: ฉันไม่สามารถดูประวัติคำสั่งที่ดำเนินการบนเครื่องได้อย่างสมบูรณ์ สมมติว่าฉันมีเครื่องหลายเครื่องสำหรับการทดลองและฉันต้องการเห็นคำสั่งทั้งหมดที่ดำเนินการ ฉันจะใช้ทุบตีภายในhistoryเพื่อแสดงคำสั่งดำเนินการและบางที grep สำหรับวันที่วันนี้: history | grep Sep-28 สิ่งที่ฉันต้องการทำคือการบันทึกคำสั่ง "อันตราย" เช่นกัน แต่วาง#ที่จุดเริ่มต้นของบรรทัดดังนั้นหากฉันเกิดขึ้นเพื่อดำเนินการคำสั่งจากประวัติโดยไม่ได้ตั้งใจจะไม่มีความเสียหายเกิดขึ้น ฉันไม่รู้ว่ามันเป็นไปได้ไหม ปรับปรุงและชี้แจง: สาเหตุหลักที่ทำให้เกิดปัญหาสำหรับฉันก็คือฉันมักจะเชื่อมต่อกับเครื่องของฉันจากเครื่องเทอร์มินัลหลายเครื่องและคำสั่งใด ๆ ที่ทำงานบนเครื่องเทอร์มินัลเครื่องหนึ่งจะอ่านทันทีในประวัติศาสตร์ของเทอร์มินัลอื่น ๆ นี่คือความสำเร็จโดย PROMPT_COMMAND="history -a; history -c; history -r" ลองจินตนาการว่าฉันเปิดเทอร์มินัลสองเครื่อง ในหนึ่งฉันมีcat /dev/foo > file.outกระบวนการทำงานบางอย่าง ls -lAhFในครั้งที่สองฉันจะตรวจสอบความคืบหน้าด้วย ฉันทำซ้ำlsโดยการกดUpและENTER(นั่นคือคำสั่งสุดท้ายจากประวัติ) ทันทีที่เสร็จสิ้นคำสั่งแรกที่คำสั่งสุดท้ายจากประวัติศาสตร์จะไม่มีอีกต่อไปแต่ls cat /dev/foo > file.outถ้าฉันไม่ระวังฉันจะเริ่ม cat อีกครั้งและเขียนทับ …

3
ข้อผิดพลาดสคริปต์ bash stty: อินพุตมาตรฐาน: ioctl ที่ไม่เหมาะสมสำหรับอุปกรณ์
ฉันใช้เอกสารที่นี่ในสคริปต์ทุบตีเพื่อทำการติดตั้งและตั้งค่าอัตโนมัติซึ่งต้องใช้รหัสผ่านหลายครั้ง ฉันป้อนรหัสผ่านหนึ่งครั้งและสคริปต์จะส่งไปยังคำสั่งต่างๆ ในกรณีส่วนใหญ่วิธีการที่นี่เอกสารจัดการปรับนี้ อย่างไรก็ตามในกรณีหนึ่งฉันได้รับข้อผิดพลาดนี้: Enter VNC password: stty: standard input: Inappropriate ioctl for device Verify password: stty: standard input: Inappropriate ioctl for device โปรดสังเกตว่าข้อความแสดงข้อผิดพลาดนี้มาจากx11vnc -storepassword(ไม่ใช่จากsudo) ปัญหาของฉันเกี่ยวข้องกับx11vnc -storepasswdและนี่คือรหัสของฉัน: sudo x11vnc -storepasswd ~/.vnc/passwd << ENDDOC password password y ENDDOC เห็นได้ชัดว่า (จากข้อผิดพลาด) ไม่ทำงาน ฉันขอขอบคุณตัวอย่างการทำงานของวิธีการใช้งานsudo x11vnc -storepasswd ~/.vnc/passwdในสคริปต์ ในกรณีที่ช่วยได้พรอมต์จะมีลักษณะดังนี้: ป้อนรหัสผ่าน VNC: ยืนยันรหัสผ่าน: เขียนรหัสผ่านไปที่ /home/user/.vnc/passwd? …

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