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

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

4
วิธีที่ง่ายที่สุดในการดำเนินการข้อความจากหางที่บรรทัดคำสั่งคืออะไร?
บางครั้งฉันกำลังทำงานกับกล่องใหม่ (อูบุนตู) และฉันพิมพ์gitและได้รับการแจ้งเตือน: The program 'git' is currently not installed. You can install it by typing: apt-get install git-core หากเกิดขึ้นฉันรู้ว่าฉันสามารถคว้าบรรทัดสุดท้ายโดยทำสิ่งที่ชอบ: !! 2>&1 | tail -n 1 แต่ฉันจะรันผลลัพธ์ของ (นั้นapt-get install git-core) ได้อย่างง่ายดายที่สุดได้อย่างไร ฉันรู้ว่าฉันสามารถทำได้ `!! 2>&1 | tail -n 1` แต่ยังมีวิธีที่จะส่งออกไปป์ไลน์จริง ๆ และมีการเรียกใช้หรือไม่ ดูเหมือนจะใช้งานไม่ได้: !! 2>&1 | tail -n 1 | sh …

4
ให้สคริปต์ทุบตีรอข้อความสถานะก่อนดำเนินการต่อ
ฉันยิงเซิร์ฟเวอร์ Selenium ด้วยสคริปต์ทุบตีและอย่างที่คุณเห็นจากการประทับเวลาในบันทึกด้านล่างใช้เวลาประมาณ 32 วินาทีสำหรับสิ่งที่จะมาออนไลน์อย่างสมบูรณ์: Feb 28, 2012 10:19:02 PM org.openqa.grid.selenium.GridLauncher main INFO: Launching a standalone server 22:19:02.835 INFO - Java: Sun Microsystems Inc. 20.0-b11 22:19:02.836 INFO - OS: Linux 2.6.32-220.4.1.el6.x86_64 amd64 22:19:02.852 INFO - v2.19.0, with Core v2.19.0. Built from revision 15849 22:19:02.988 INFO - RemoteWebDriver instances should connect …
10 bash  logs  pipe  search  selenium 


2
ส่งงานไปที่พื้นหลังใน“ ถ้า”
ทำไมนี้ if true; then sleep 3 &; fi bash: syntax error near unexpected token `;' ฉันต้องการวิ่ง sleep 3 ในพื้นหลังเพื่อให้คำสั่ง ["sleep 3" เป็นเพียงตัวอย่าง] จะทำงานในสไตล์ "paralell" ดังนั้นจึงเสร็จเร็วขึ้น แต่ฉันได้รับสิ่งนี้: bash: syntax error near unexpected token `;' ข้อความผิดพลาด. ทำไม? ทำไมฉันไม่สามารถส่งงานไปที่พื้นหลังได้?

2
ฉันจะดักโปรแกรมที่คืนค่า 139 (การแบ่งเซกเมนต์ผิดพลาด) ใน bash ได้อย่างไร?
ฉันมีสคริปต์ทุบตีที่ทดสอบโปรแกรมบางโปรแกรมและหนึ่งในโปรแกรมส่งคืนSegmentation faultดังนั้นฉันจึงพยายามเพิ่มกับดักไว้ในหัวสคริปต์ของฉัน: trap "echo 'segfault occured!'" SIGSEGV อย่างไรก็ตามไม่ได้ทำอะไรเลย ฉันใช้ echo $? หลังจากโปรแกรมที่สร้าง segfault และฉันได้รับ139เป็นผลลัพธ์ ฉันจะเพิ่มกับดักสำหรับรหัสข้อผิดพลาดเฉพาะนั้นได้อย่างไร

1
คุณละเว้น“ ./” อย่างไรเมื่อเรียกใช้สคริปต์ในไดเรกทอรีปัจจุบัน
ในบทเรียนบางอย่างผ่านทางอินเทอร์เน็ตพวกเขาสามารถเรียกใช้สคริปต์ในไดเรกทอรีปัจจุบันโดยไม่ต้องทำ: ./script คุณจะละเว้นสิ่งนี้ได้อย่างไร ฉันใช้ CentOS 5.6 x64 ฉันต้องการเรียกใช้วิธีนี้ script

3
วิธีรันบรรทัดที่มาจากผลลัพธ์ grep
ฉันมีไฟล์ข้อความพร้อมคำแนะนำในการติดตั้งและฉันรู้ว่าฉันสามารถ grep สำหรับเหตุการณ์ที่ไม่ซ้ำกันในไฟล์ ตัวอย่างเช่นไฟล์ข้อความมีลักษณะดังนี้: MYDIR = `find / home / ชื่อผู้ใช้ somedir` ส่งออก PERL5LIB = $ PERL5LIB: $ MYDIR ในทุบตีฉันจะรันบรรทัดหลังจาก grep ในไฟล์ได้อย่างไร สิ่งที่ต้องการ: เรียกใช้ผลลัพธ์จาก "grep somedir INSTALLFILE" เรียกใช้ผลลัพธ์จาก "grep 'export PERL5LIB' INSTALLFILE"
10 bash  grep 

5
การรันหลายคำสั่งด้วย su ใน Bash
ฉันต้องการใช้su -cเพื่อรันเป็นคำสั่งหลายคำสั่งพร้อมกัน ฉันไม่ต้องการใช้สคริปต์พิเศษสำหรับสิ่งนี้ ฉันพยายามต่อไปนี้: su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh" แต่มันดำเนินการเพียงอย่างเดียวlsไม่ใช่คนแรก ฉันพยายามต่อไปนี้: su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;" ;แต่มันบอกว่ามีข้อผิดพลาดกับอัฒภาค คุณรู้วิธีการทำเช่นนั้น?
10 bash  su 

5
ค้นหาพา ธ สัมบูรณ์จากสคริปต์
ในสคริปต์ฉันได้รับใน$0เส้นทางญาติที่เป็นไปได้ สำหรับการแปลงให้เป็นสัมบูรณ์ฉันได้พบโซลูชันนี้ซึ่งฉันไม่เข้าใจ: abspath=$(cd ${0%/*} && echo $PWD/${0##*/}) ปัญหาของฉันคือภายในมหัศจรรย์ของและ${0%/*} ${0##*/}ดูเหมือนว่าก่อนหน้านี้จะแยก dirname และหลังจะแยกชื่อไฟล์ฉันไม่เข้าใจเลย
10 bash  path 

3
วิธีปฏิบัติที่ดีที่สุดในการใช้ $? ในทุบตี?
เมื่อฉันอ่านคำตอบนี้เกี่ยวกับ $? คำถามอื่นอยู่ในใจ มีวิธีปฏิบัติที่ดีที่สุดสำหรับวิธีใช้ $ หรือไม่ ในทุบตี? ลองมาตัวอย่าง: เรามีสคริปต์แบบเส้นตรงและฉันต้องการทราบว่าคำสั่งทั้งหมดจะทำงานได้ดี คุณคิดว่าเป็นการดีไหมที่จะเรียกใช้ฟังก์ชั่นเล็ก ๆ (ลองเรียกมันว่า "did_it_work") เพื่อตรวจสอบรหัสข้อผิดพลาดและแตกถ้าไม่ได้ #!/bin/bash function did_it_work { code=$1 if [ "$code" -ne "0" ] then echo "Error failure: code $code " exit 1 fi } dir=some/path mkdir -p $dir did_it_work $? cd $dir did_it_work $? run_some_command did_it_work $? แน่นอนว่าวิธีการนี้หมายความว่าฉันต้องแก้ไขปัญหาด้วยตนเองหากมีและเรียกใช้สคริปต์อีกครั้ง …

5
IFS (Internal Field Separator) ทำหน้าที่เป็นตัวคั่นเดี่ยวสำหรับตัวคั่นหลายตัวต่อเนื่องกันได้หรือไม่?
การแยกอาร์เรย์โดยใช้ IFS ด้วยค่าที่ไม่ใช่ขาวสร้างองค์ประกอบที่ว่างเปล่า แม้แต่การใช้tr -sเพื่อย่อขนาด delim หลาย ๆ ตัวเป็น delim เดียวก็ไม่เพียงพอ ตัวอย่างอาจอธิบายปัญหาได้ชัดเจนยิ่งขึ้น .. มีวิธีการที่จะบรรลุผลลัพธ์ "ปกติ" ผ่าน tweaking ของ IFS (มีการตั้งค่าที่เกี่ยวข้องเพื่อเปลี่ยนพฤติกรรมของ IFS หรือไม่? ไอเอฟเอ var=" abc def ghi " echo "============== IFS=<default>" arr=($var) for x in ${!arr[*]} ; do echo "# arr[$x] \"${arr[x]}\"" done # sfi="$IFS" ; IFS=':' set -f # …
10 bash  shell  scripting 

4
ฉันจะตรวจสอบได้อย่างไรว่าไฟล์ gzipped ว่างเปล่า?
มีวิธีที่รวดเร็วในการตรวจสอบว่าไฟล์ gzipped ว่างเปล่าหรือฉันต้องคลายซิปก่อนหรือไม่? ตัวอย่าง: $ touch foo $ if [ -s foo ]; then echo not empty; fi $ gzip foo $ if [ -s foo.gz ]; then echo not empty; fi not empty $ wc -l foo.gz 1 foo.gz

3
วิธีการเปิดหลายไฟล์จาก `find` output?
ฉันรู้ว่าฉันสามารถเปิดหลายไฟล์ที่พบใน dir ดังนี้: find -name *.foo -xargs <command> {} \; วิธีนี้ใช้งานได้ แต่เมื่อพยายามเปิด textfiles แบบกลุ่มใน gedit ในเวลาเดียวกันมันจะเปิดขึ้นมาอย่างต่อเนื่อง (เมื่อปิดไฟล์หนึ่งไฟล์จะเปิดขึ้นอีกอันหนึ่ง) ฉันต้องการเปิดไฟล์ทั้งหมดในเวลาเดียวกัน ฉันจะบรรลุสิ่งนี้ได้อย่างไร
10 bash  find  xargs 

5
sh ไฟล์เริ่มต้นผ่าน ssh
ฉันมีคำสั่งที่สำคัญบางอย่างที่ฉันต้องเรียกใช้ก่อนที่เชลล์ sh จะเริ่มทำงาน สิ่งนี้จำเป็นสำหรับการส่งคำสั่ง SSH ในคำสั่ง SSH ( ssh host somecommand) และโปรแกรมอื่น ๆ ที่เรียกใช้คำสั่ง ในฉัน.profileฉันมีสิ่งนี้: ihammerhands@wreckcreations:~> cat .profile #specific environment and startup programs export PS1="\u@wreckcreations:\w> " export PYTHONPATH=~/python/lib/python2.4/site-packages export PATH=$PATH:~/bin:~/python/bin อย่างไรก็ตามสิ่งนี้ล้มเหลว: W:\programming\wreckcreations-site\test-hg>ssh name@host echo $PATH Enter passphrase for key '/home/Owner/.ssh/id_rsa': /usr/local/bin:/bin:/usr/bin สังเกตเห็นตัวเลือก PATH ที่หายไป ชื่อที่เหมาะสมสำหรับโปรไฟล์ sh คืออะไร? หมายเหตุ: ฉันไม่สามารถเข้าถึงรูทและไม่ต้องการให้สิ่งนี้ใช้กับผู้ใช้รายอื่น มีวิธีอื่นในการทำเช่นนี้หรือไม่? …
10 bash  ssh  shell  profile 

3
ฉันจะแยกตัวแปร $ 0 เพื่อค้นหาไดเรกทอรีและเส้นทางสัมพัทธ์เป็น bash ได้อย่างไร
ตัวแปร $ 0 มีข้อมูลเส้นทางของสคริปต์ ฉันจะเปลี่ยนข้อมูลเส้นทางเป็นเส้นทางที่แน่นอนได้อย่างไร ฉันหมายถึงวิธีการดำเนินการ ~,., .. หรือคล้ายกัน? ฉันจะแบ่งข้อมูลพา ธ เป็นไดเรกทอรีและชื่อไฟล์ได้อย่างไร ฉันสามารถใช้ python / perl สำหรับสิ่งนี้ได้ แต่ฉันต้องการใช้ bash ถ้าเป็นไปได้
10 bash  parameter 

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