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

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

4
การค้นหาเวลาดำเนินการคำสั่งด้วยการเข้าใจถึงปัญหาย้อนหลัง
ฉันเพิ่งดำเนินการกระบวนการที่ยาวนานจากพรอมต์ bash ในการเข้าใจถึงปัญหาหลังฉันหวังว่าฉันจะใช้timeมันหรือสังเกตเวลาที่ฉันเตะมันออกไป มีวิธีในการรับข้อมูลนี้ย้อนหลังหรือไม่? .bash_historyดูเหมือนจะไม่รวมถึงการประทับเวลา ในกรณีของฉันคือ Mac OS X แต่ฉันสนใจโซลูชัน Unix / Linux ทั่วไป เพื่อชี้แจงกระบวนการนี้เสร็จสมบูรณ์แล้วและฉันไม่ต้องการเรียกใช้อีกครั้งเว้นแต่จำเป็นจริงๆ!

4
ฉันสามารถกำหนดค่า bash เพื่อดำเนินการ "ล้าง" ก่อนทุกคำสั่งที่พิมพ์ในคอนโซลหรือไม่
ฉันต้องการกำหนดค่า bash เพื่อประมวลผลclearคำสั่งทุกครั้งที่ฉันพิมพ์คำสั่งบางคำสั่งในเทอร์มินัล (ก่อนดำเนินการคำสั่งของฉัน) ฉันจะทำสิ่งนั้นได้อย่างไร ฉันใช้ Debian Linux

5
คัดลอกรูปภาพจากบรรทัดคำสั่งไปยังคลิปบอร์ด
มีวิธีในการทุบตีเพื่อคัดลอกรูปภาพไปยังคลิปบอร์ดหรือไม่? ตัวอย่างเช่นหากมีรูปภาพที่mypic.pngฉันต้องการให้มีคำสั่งclipcopy mypic.pngเช่นนั้นฉันสามารถไปตัวอย่างเพื่อ inkscape และวางมันในภายหลัง

4
เป็นไปได้ไหมที่จะตั้งชื่อของ Gnome Terminal เป็น“ user @ host” สำหรับโฮสต์ใดก็ตามที่ฉันเชื่อมต่ออยู่
ฉันต้องการตั้งค่าชื่อเทอร์มินัลเป็นuser@hostเพื่อให้ฉันสามารถบอกได้อย่างง่ายดายว่าเครื่องใดที่ฉันเชื่อมต่อกับจากชื่อหน้าต่าง มีวิธีทำสิ่งนี้จาก SSH หรือจากเทอร์มินัล GNOME หรือไม่?

5
ส่งออกตัวแปร env เพื่อให้พร้อมใช้งานที่เชลล์ย่อยทั้งหมดและสามารถแก้ไขได้หรือไม่
สมมติว่าฉันมี export MY_VAR=0 ใน~/.bashrc. ฉันมีขั้วคำพังเพยเปิดและในสถานีนี้เปลี่ยนแปลงฉันมูลค่าให้กับ$MY_VAR 200ดังนั้นถ้าฉันทำ echo $MY_VAR ในสถานีนี้200จะปรากฏขึ้น ตอนนี้ฉันเปิดแท็บอื่นในเทอร์มินอล gnome และทำ echo $MY_VAR ... และแทนผมมี2000 ฉันควรทำอย่างไรเพื่อยืนยันค่า 200 เมื่อเทอร์มินัลแก้ไขตัวแปรสภาพแวดล้อมทำให้การแก้ไขนี้ (การตั้งค่าเป็น 200) พร้อมใช้งานสำหรับเชลล์ย่อยที่ตามมาทั้งหมดและเช่นนั้น? เป็นไปได้ไหม

3
วิธีที่เร็วที่สุดในการเรียกใช้สคริปต์คืออะไร?
/dev/nullฉันถูกสงสัยว่าเป็นวิธีที่เร็วที่สุดที่จะเรียกใช้สคริปต์ที่ผมได้อ่านว่ามีความแตกต่างในความเร็วระหว่างการแสดงผลลัพธ์ของสคริปต์บนอาคารที่เปลี่ยนเส้นทางไปยังไฟล์หรือบางทีอาจจะ ดังนั้นหากผลลัพธ์ไม่สำคัญวิธีที่เร็วที่สุดในการทำให้สคริปต์ทำงานเร็วขึ้นคืออะไรแม้ว่ามันจะน้อยก็ตาม bash ./myscript.sh -or- bash ./myscript.sh > myfile.log -or- bash ./myscript.sh > /dev/null
22 linux  bash 

2
จุดประสงค์ของการสั่งทุบตี `` suspend 'builtin คืออะไร?
ฉันพิมพ์help suspendและได้รับคำอธิบายสั้น ๆ นี้: suspend: suspend [-f] Suspend shell execution. Suspend the execution of this shell until it receives a SIGCONT signal. Unless forced, login shells cannot be suspended. Options: -f force the suspend, even if the shell is a login shell Exit Status: Returns success unless job control is …

2
รหัสจบการทำงานท้ายสคริปต์ทุบตี
ฉันสับสนเกี่ยวกับความหมายของรหัสออกในตอนท้ายของสคริปต์ทุบตี: ฉันรู้ว่ารหัสออก 0 หมายความว่าเสร็จสมบูรณ์และมีหมายเลขรหัสทางออกอื่นอีกมากมาย (127 ถ้าฉันไม่เข้าใจผิด?) คำถามของฉันเกี่ยวกับเมื่อเห็นรหัสออก 0 ที่ท้ายสคริปต์มันบังคับให้รหัสออกเป็น 0 แม้ว่าสคริปต์จะล้มเหลวหรือมีความหมายอื่นหรือไม่

3
ออกข้อผิดพลาดเมื่อใช้ตัวแปรเชลล์ที่ว่างเปล่า
บางครั้งฉันก็ใช้$PROJECT_HOME/*เพื่อลบไฟล์ทั้งหมดในโครงการ เมื่อตัวแปรสภาพแวดล้อมPROJECT_HOMEไม่ได้ถูกตั้งค่า (เพราะฉันทำsuและผู้ใช้ใหม่ไม่มีชุดตัวแปรสภาพแวดล้อมนี้) จึงเริ่มลบไฟล์ทั้งหมดจากโฟลเดอร์รูท นี่คือสันทราย ฉันbashจะกำหนดค่าให้เกิดข้อผิดพลาดได้อย่างไรเมื่อฉันใช้ตัวแปรสภาพแวดล้อมที่ไม่ได้กำหนดในเชลล์?

5
แยกความแตกต่างระหว่างการรันและการซอร์สในสคริปต์เชลล์ bash หรือไม่?
ไม่ว่าฉันจะขออะไรจากที่นี่เป็นเรื่องแปลกแหกคอก / ไม่เป็นทางการ / มีความเสี่ยงหรือทักษะ Google-fu ของฉันไม่ได้ขึ้นอยู่กับว่า ... ในbashเชลล์สคริปต์มีวิธีใดที่จะบอกได้ง่ายว่าเชลล์สคริปต์นั้นมาจากแหล่งอื่นหรือไม่? กล่าวอีกนัยหนึ่งเป็นไปได้ไหมที่จะแยกแยะระหว่างพฤติกรรมสองอย่างต่อไปนี้? # from another shell script source myScript.sh # from command prompt, or another shell script ./myScript.sh สิ่งที่ฉันกำลังคิดที่จะทำคือการสร้างเชลล์สคริปต์แบบยูทิลิตี้ที่มีbashฟังก์ชั่นที่สามารถให้บริการได้เมื่อมีที่มา แม้ว่าสคริปต์นี้จะถูกเรียกใช้ด้วยตัวเองฉันก็อยากให้มันทำงานบางอย่างตามหน้าที่ที่กำหนดไว้เช่นกัน มีตัวแปรสภาพแวดล้อมบางชนิดที่เชลล์สคริปต์นี้สามารถรับได้เช่น some_function() { # ... } if [ -z "$IS_SOURCED" ]; then some_function; fi โดยเฉพาะอย่างยิ่งฉันกำลังมองหาโซลูชันที่ไม่ต้องการสคริปต์ผู้โทรเพื่อตั้งค่าตัวแปรสถานะใด ๆ แก้ไข : ฉันทราบความแตกต่างระหว่างการจัดหาและการเรียกใช้สคริปต์สิ่งที่ฉันพยายามค้นหาที่นี่หากเป็นไปได้ที่จะบอกความแตกต่างในสคริปต์ที่ใช้งานอยู่ (ทั้งสองวิธี)

2
เพิ่มอาร์กิวเมนต์ให้กับ 'bash -c'
สมมติว่าฉันต้องการเรียกใช้คำสั่งผ่าน Bash ดังนี้: /bin/bash -c "ls -l" ตามหน้า Bash man ฉันก็สามารถเรียกใช้เช่นนี้: # don't process arguments after this one # | pass all unprocessed arguments to command # | | # V V /bin/bash -c ls -- -l ยกเว้นดูเหมือนว่าจะไม่ทำงาน (ดูเหมือนจะถูกละเว้น) ฉันกำลังทำอะไรผิดหรือฉันตีความหน้าคนผิดหรือเปล่า? คำพูดที่เกี่ยวข้องจากมนุษย์: หากมีอ็อพชัน -c อยู่คำสั่งจะอ่านจากสตริง หากมีข้อโต้แย้งหลังจากสตริงพวกเขาจะถูกกำหนดให้กับพารามิเตอร์ตำแหน่งเริ่มต้นด้วย $ 0 และ เอ - …

2
แยกแยะไฟล์ปกติจาก symlink
ฉันกำลังเขียนสคริปต์ทุบตีที่ต้องการแยกไฟล์ปกติจาก symlink ฉันคิดว่าฉันสามารถทำได้ด้วย if / test expression แต่มันไม่ทำงานอย่างที่ฉันคาดไว้: $ touch regular_file $ test -f regular_file; echo $? 0 $ test -h regular_file; echo $? 1 $ ln -s regular_file symlink $ test -h symlink; echo $? 0 $ test -f symlink; echo $? 0 ทำไมถึงเป็นอย่างนั้น? และฉันจะทำสิ่งนี้อย่างถูกต้องได้อย่างไร?
22 bash 

2
วิธีการทำ for loop ใน command line?
ลองทำง่ายๆ for loop #!/bin/bash for i in `seq 1 10`; do echo $i done อัฒภาค AFAIK ในสคริปต์ทุบตีทำให้เชลล์เรียกใช้คำสั่งปัจจุบันแบบซิงโครนัสแล้วไปที่คำสั่งถัดไป การกด Enter จะทำเช่นเดียวกันยกเว้นจะไม่อนุญาตให้คุณป้อนคำสั่งต่อไปนี้โดยล้างบัฟเฟอร์ทันที ดังนั้นทำไมเชลล์ไม่สามารถตีความบรรทัดต่อไปนี้ for i in `seq 1 10`; do; echo $i; done มันfor loopใช้งานได้จริงอย่างไร
22 bash  shell 

2
ในทุบตีอ่านหลังจากท่อไม่ได้ตั้งค่า
แก้ไข: ชื่อเดิมคือ "อ่านล้มเหลวในการทุบตี" ด้วย ksh ฉันใช้อ่านเป็นวิธีที่สะดวกในการแยกค่า: $ echo 1 2 3 4 5 | read a b dump $ echo $b $a 2 1 $ แต่มันล้มเหลวในการทุบตี: $ echo 1 2 3 4 5 | read a b dump $ echo $b $a $ ฉันไม่พบเหตุผลในหน้าคู่มือทำไมจึงล้มเหลวความคิดใด ๆ
22 bash  shell  pipe  read 


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