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

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

3
วิธีรับช่วงประวัติ Bash เชลล์
ฉันจะรับ / กรองรายการประวัติในช่วงที่กำหนดได้อย่างไร ฉันมีไฟล์ประวัติขนาดใหญ่และใช้บ่อย history | grep somecommand ตอนนี้ความทรงจำของฉันค่อนข้างแย่และฉันก็ต้องการที่จะเห็นสิ่งที่ฉันทำในช่วงเวลาที่ฉันป้อนคำสั่ง สำหรับตอนนี้ฉันทำสิ่งนี้: จับคู่พูด4992 somecommandแล้วทำ history | grep 49[0-9][0-9] นี่มักจะดีพอ แต่ฉันอยากจะทำมากกว่านี้อย่างแม่นยำนั่นคือดูคำสั่งจาก 4972 ถึง 5012 นั่นคือ 20 คำสั่งก่อนหน้าและ 20 หลังจากนั้น ฉันสงสัยว่ามีวิธีที่ง่ายกว่านี้ไหม? ฉันสงสัยว่าสคริปต์ที่กำหนดเองนั้นเป็นไปตามลำดับ แต่อาจมีคนอื่นเคยทำสิ่งที่คล้ายกันมาก่อน
9 linux  bash  history  grep 

2
นามแฝงไม่“ แทนที่” รายการเส้นทางหรือไม่
บรรทัดสุดท้ายของฉัน.bash_profileคือ: alias cp=/usr/local/bin/gcp อย่างไรก็ตามที่ถูกแบนโดยรายการในของฉัน$PATH: $which cp /bin/cp 11:54:32/OCspark $type cp cp is aliased to `/usr/local/bin/gcp' ฉันคิดว่านามแฝงจะแทนที่PATH.. ?

2
ใช้ปฏิบัติการ cygwin ในสคริปต์ bash git
ฉันมี.shสคริปต์ที่ฉันคลิกสองครั้งเพื่อเรียกใช้งานโดย git สำหรับ Windows ตอนนี้ฉันต้องการ (imagemagick) convertจาก cygwin (ซึ่งฉันได้ติดตั้งแล้ว) และฉันกำลังเรียกมันด้วยเส้นทางที่สมบูรณ์/c/cygwin64/bin/convert.exe- แต่ฉันได้รับ: ข้อผิดพลาดร้ายแรง - ตรวจพบไม่ตรงกันฐานไซเบอร์ ปัญหานี้อาจเกิดจากการใช้ cygwin DLL รุ่นที่เข้ากันไม่ได้ การตัดการconvertโทรจริงในการโทร bash cygwin หรือแม้กระทั่งในการcmd.exeโทรไม่ได้ช่วยอะไร มันค่อนข้างแปลกเพราะบางครั้งฉันก็ใช้โปรแกรมปฏิบัติการ cygwin โดยตรงใน.cmdสคริปต์และมันก็ใช้ได้เสมอ ฉันควรทำอย่างไร โซลูชันที่ช่วยให้โปรแกรมของฉัน จำกัด เพียงหนึ่งไฟล์ (ฉันรู้ว่าฉันอาจจะแค่ติดตั้ง imagemagick ของ Windows แต่ในวันถัดไปฉันต้องการเครื่องมือ cygwin อื่นใน git-for-Win-Shellscript .. และฉันก็อยากจะเข้าใจว่าเกิดอะไรขึ้นที่นี่และใช่ ฉันอาจจะทำให้คอมไพล์สำหรับ Windows ล้าสมัยในที่ทำงานของฉันถ้าเป็นไปได้)
9 windows  bash  git  cygwin 

3
Bash บน Ubuntu บน Windows: ไม่สามารถเปลี่ยนสีไดเรกทอรี (บางส่วน)
ใน Bash ใหม่บน Ubuntu บนแอพ Windows (10) ฉันได้ลองเปลี่ยนสีไดเรคทอรีจากสีน้ำเงินไปเป็นสิ่งที่มองเห็นได้มากกว่า แต่ไม่สามารถเปลี่ยนสีของไฟล์ / ไดเรคทอรีได้ด้วยเหตุผลบางประการ ฉันจะเปลี่ยนทุกสีไดเรกทอรี / ไฟล์หรือไม่ ปัจจุบันไฟล์. bashrc ของฉันถูกตั้งค่าให้มีพรอมต์สีบนสีของไฟล์และไดเรกทอรีให้เป็นสีเขียวและสีสดใสอื่น ๆ การตั้งค่าคือ: LS_COLORS=$LS_COLORS:'di=1;31:fi=0;31;bd=0;32:fi=0;33:cd=0;96'; export LS_COLORS if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[0;31m\]\u@\h\[\033[0,31m\]:\[\033[0;31m\]\w\[\033[0,31m\]\$ ' ไฟล์และโฟลเดอร์บางรายการมีการเปลี่ยนแปลงสีที่สอดคล้องกับไฟล์. bashrc ของฉัน แต่บางไฟล์ไม่ได้มีเหตุผลบางประการ ภาพหน้าจอตัวอย่างบางส่วน:

4
วิ่ง `exec 'ด้วย Bash ในตัว
ฉันกำหนดฟังก์ชั่นเปลือก (ขอเรียกว่าclock) ซึ่งผมต้องการที่จะใช้เป็นเสื้อคลุมกับคำสั่งอื่นที่คล้ายกับฟังก์ชั่นเช่นtimeclock ls -R exec "$@"ฉันเปลือกทำหน้าที่งานบางส่วนแล้วปลายด้วย ฉันต้องการให้ฟังก์ชั่นนี้ทำงานได้แม้มี shell-ins อยู่เช่นclock time ls -Rควรส่งออกผลลัพธ์ของการtimeบิวด์อินไม่ใช่การ/usr/bin/timeประมวลผล แต่execมักจะจบลงด้วยการรันคำสั่งแทน ฉันจะทำให้ฟังก์ชั่น Bash ของฉันทำงานเป็น wrapper ที่ยอมรับเชลล์บิวด์อินเป็นอาร์กิวเมนต์ได้อย่างไร แก้ไข : ฉันเพิ่งเรียนรู้ว่าtimeไม่ใช่ Bash ในตัว แต่เป็นคำสงวนพิเศษที่เกี่ยวข้องกับท่อ ฉันยังคงสนใจวิธีแก้ปัญหาสำหรับบิวด์อินแม้ว่าจะไม่สามารถใช้งานได้timeแต่โซลูชันทั่วไปที่ดีกว่าก็ดีกว่า

1
ความถี่ ping ที่ปลอดภัยโดยที่ไม่ถือว่าเป็นการโจมตี DDoS คืออะไร
ฉันพยายามที่จะทำแผนภูมิสถานะการออนไลน์ของเซิร์ฟเวอร์โดยการ Ping และ Google เป็นประจำแล้วเปรียบเทียบเวลา ping ฉันต้องการทำสิ่งนี้ต่อไปในระยะเวลา - สมมติว่า - สัปดาห์ ฉันกำลังส่งชุด 5 ปิงให้กับแต่ละคนมีการหมดเวลา 5 วินาทีและช่วงเวลา 2 นาทีระหว่างแต่ละชุด ต่อไปนี้เป็นbashคำสั่ง while true; do echo Google; date; ping -c 5 -t 5 www.google.com; sleep 120; echo Outlook; date; ping -c 5 -t 5 https://outlook.office365.com/; sleep 120; done >> pings.txt ฉันกังวลว่าเซิร์ฟเวอร์มองว่านี่เป็นการโจมตี DDoS หรือไม่

1
เครื่องหมายเปอร์เซ็นต์ (%) หน้าคำสั่งเชลล์
ฉันเพิ่งวางโค้ดจำนวนมากลงในเชลล์ แต่ลืมลบส่วนนำออก%ก่อนรันคำสั่ง ดูเหมือนว่าจะไม่ได้ทำอะไรเลย ทำไมนี้ไม่ทำอะไรในเปลือกของฉัน ( zsh )? > % echo foo ในทุบตีฉันได้รับดังต่อไปนี้ > % echo foo bash: fg: %: no such job ฉันแค่ต้องการให้แน่ใจว่าการใช้คำสั่งของฉันไม่มีผลข้างเคียง

2
ขอลงในเครื่องจัดการคำสั่งไม่พบคำสั่งใน Ubuntu
ฉันต้องการขอเข้าสู่ handler เพื่อหาคำสั่งไม่พบ wim@SDFA100461C:~$ thing No command 'thing' found, did you mean: Command 'tping' from package 'lam-runtime' (universe) Command 'thin' from package 'thin' (universe) thing: command not found ฉันต้องการแทนที่พฤติกรรมนี้ด้วยสคริปต์ของฉันเอง โดยเฉพาะฉันต้องการตรวจสอบว่าคำสั่งมีอยู่ในผลลัพธ์ของlsvirtualenv -bและถ้าเป็นเช่นนั้นฉันต้องการเปิดใช้งาน virtualenv นั้น ฉันจะเริ่มแฮ็คได้ที่ไหน

1
ฉันจะเปลี่ยนเส้นทางการส่งออก OS X dtruss เมื่อทำงานด้วย sudo ได้อย่างไร
ฉันทำงานdtrussบน Mac OS X 10.9 ตัวอย่างง่ายๆคือ: sudo -c ls แต่ฉันต้องการจับdtrussเอาท์พุทเป็นไฟล์ ฉันเห็นสิ่งที่แนะนำว่าฉันสามารถทำสิ่งที่ชอบ: sudo bash -c 'dtruss -c ls >x' แต่เมื่อฉันทำเช่นนี้การส่งออกของdtrussยังคงไปที่สถานีและรายการของไฟล์จากlsได้รับการเปลี่ยนเส้นทางไปยังไฟล์ ฉันจะเปลี่ยนเส้นทางการส่งออกdtrussไปยังไฟล์ได้อย่างไร?

2
Alias ​​scoping ในฟังก์ชัน bash
ฉันใช้สคริปต์ (ซึ่งฉันไม่มีสิทธิ์ในการเขียน) ซึ่งสร้างนามแฝงมากมายเพื่อตั้งค่าสภาพแวดล้อม ฉันต้องการสร้างฟังก์ชั่นทุบตีเพื่อตั้งค่าสภาพแวดล้อมของฉัน แต่ดูเหมือนว่านามแฝงจะไม่รอดจากการทำงานของร่างกาย นี่คือตัวอย่างเล็กน้อย: # aliases.sh alias fooAlias='echo "this will never work!"' . # .bashrc function setupLotsOfThings() { source aliases.sh fooAlias } . ตอนนี้ถ้าฉันเพียงแค่aliases.shโต้ตอบแหล่งที่มาสิ่งที่ทำงานตามที่คาดไว้: [mycomputer]~/ $ source aliases.sh [mycomputer]~/ $ fooAlias this will never work! อย่างไรก็ตามถ้าฉันเรียกฟังก์ชันที่กำหนดใน. bashrc ของฉันแทนมันจะไม่รู้จักนามแฝงหลังจากหาคำจำกัดความของมัน: [mycomputer]~/ $ setupLotsOfThings -bash: fooAlias: command not found เกิดขึ้นที่นี่คืออะไร? มีบางสิ่งที่ฉันขาดหายไปเกี่ยวกับขอบเขตของaliasคำสั่งเมื่อใช้ในฟังก์ชันหรือไม่? …
9 bash 

4
วิธีคืนค่าการตั้งค่าอย่างถูกต้องเมื่อเรียกใช้สคริปต์โดยใช้“ แหล่งที่มา”
ฉันกำลังเขียนสคริปต์ที่ต้องดำเนินการโดยใช้sourceเพราะหน้าที่ของมันคือการแก้ไขสภาพแวดล้อม ในระหว่างสคริปต์ฉันต้องการใช้set -eเพื่อให้ข้อผิดพลาดใด ๆ หยุดสคริปต์ สคริปต์มีลักษณะดังนี้: #!/bin/bash set -e # do something cd somewhere source anotherScript ปัญหาคือว่าset -eยังคงมีผลตามธรรมชาติหลังจากสคริปต์เสร็จสิ้น ฉันจะมั่นใจได้อย่างไรว่าsetตัวเลือกที่เปลี่ยนแปลงนั้นได้รับการคืนค่าอย่างเหมาะสมเมื่อสคริปต์หยุดทำงาน (ไม่ว่าด้วยวิธีใด - โดยการดำเนินการให้สำเร็จหรือเกิดข้อผิดพลาด)

4
เป็นไปได้ไหมที่จะใช้เชลล์สคริปต์ในโฟลเดอร์ sendto
ฉันต้องการใช้สคริปต์เชลล์ bash จากSendToโฟลเดอร์ เมื่อฉันใส่ทางลัดไปยังชุดหรือ exe ลงในSendToโฟลเดอร์มันจะปรากฏขึ้นในSend Toเมนูย่อยบริบทของเชลล์แต่เมื่อทางลัดชี้ไปที่เชลล์สคริปต์มันไม่ได้ ระบบปฏิบัติการที่ฉันกำลังทดสอบนี้คือ Win7 Home Premium SP1 ส่วนขยาย.shที่เกี่ยวข้องกับ bash.exe ของ MinGW เชลล์สคริปต์ของฉันมี.shส่วนขยายและฉันได้ลองยกเลิกการเชื่อมโยง.shส่วนขยาย (ฉันคิดว่า MinGW ตั้งค่าเริ่มต้น แต่ไม่ได้ผล) โดยใช้โปรแกรมอรรถประโยชน์นี้และพยายามเชื่อมโยงอีกครั้งเพื่อทุบตีโดยใช้: ftype ShellScript=c:\MinGW\msys\1.0\bin\bash.exe -c "'%1' %2" assoc .sh=ShellScript ในเชลล์ cmd ของผู้ดูแลระบบ แม้ว่าสิ่งนี้จะทำงานที่พร้อมรับคำสั่งและเชลล์ Explorer (ผ่านการคลิกสองครั้ง) แต่จะไม่แสดงในSend Toเมนูและจะไม่ยอมรับพารามิเตอร์โดยการลากไฟล์ที่ด้านบนของสคริปต์โดยตรง ไม่มีใครรู้ว่าฉันจะทำเช่นนี้?

2
เปิดหลายแท็บใน iTerm2 ด้วยไดเรกทอรีเฉพาะ
ฉันต้องการทราบว่าเป็นไปได้หรือไม่ ฉันต้องการตั้งค่าสคริปต์หรือคำสั่งที่จะเปิด 5 แท็บและแต่ละแท็บที่จะเปิดจะมีการระบุไดเรกทอรีของตัวเอง ทั้งหมดในหน้าต่างเดียวกัน tab 1: open ~/folderA1 tab 2: open ~/folderA2 tab 3: open ~/folderA3 tab 4: open ~/folderA4 tab 5: open ~/folderA5 นี่คือ iTerm2 ใน Mac OS X ฉันรู้ว่าฉันสามารถทำบางอย่างเช่น CMD + T จากนั้นเปิดแต่ละรายการโดยใช้cd ~/folderA1และอื่น ๆ แต่ถ้ามีคำสั่งที่ฉันสามารถตั้งค่าหรือสคริปต์ที่เรียกใช้งานได้หลังจากนั้นพวกเขาจะทำทุกอย่างทันทีฉันชอบที่จะรู้ หากมีวิธีการทำเช่นนั้น
9 macos  bash  iterm2 

2
บันทึกประวัติทุบตีเป็นประจำ
ฉันได้ตั้งค่า bash เพื่อบันทึกประวัติลงในไฟล์ มันทำได้เมื่อใดก็ตามที่ bash ออก [เหมาะสม] เนื่องจากบางครั้ง bash ไม่ออกอย่างถูกต้องประวัติจะสูญหาย ดังนั้นคำถามคือฉันสามารถตั้งค่า bash เพื่อบันทึกประวัติได้เป็นประจำหรือไม่ ฉันใช้ Debian Gnu (รุ่น 6, Squeeze) ด้วยเคอร์เนล Linux รุ่น bash: GNU bash, รุ่น 4.1.5 (1) - ปล่อย (i486-pc-linux-gnu)
9 linux  bash  gnu 

2
จะปิดหน้าต่างอื่นใน tmux ได้อย่างไร?
ฉันเขียนฟังก์ชั่นบางอย่าง.bashrcเพื่อให้tmuxใช้งานง่าย: #!/bin/bash # .bashrc # vim tmux #----- -------------------- tabc() { tmux kill-window; } tabe() { tmux new-window; } tabf() { tmux find-window $@; } tabn() { tmux next-window; } tabo() { ; } # <-- How to `tabonly`? tabp() { tmux previous-window; } qa() { tmux kill-session; } sp() …
9 bash  vim  tmux 

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