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

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

1
สคริปต์การจัดสรรเชลล์ไม่ได้สร้าง. bash_aliases
ฉันใช้ Vagrant กับ VirtualBox เพื่อสร้าง VM guest guest ของ Ubuntu บนโฮสต์ Windows 10 นี่คือ Vagrantfile ของฉัน: # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "ubuntu/trusty64" config.vm.network "forwarded_port", guest: 8080, host: 8100 config.vm.provision "shell", path: "./bootstrap.sh" end และนี่คือไฟล์ bootstrap.sh printf "Working directory is: %s." $(pwd) if [ ! -f …

2
สร้างจากทุบตีภาพจากพาร์ทิชัน Windows / Linux
ฉันต้องการสร้างภาพด้วยเครื่องมือ Linux ที่มีอยู่จากคอนโซลทุบตี ใครสามารถบอกฉันถึงวิธีการทำงานนี้ให้สำเร็จ สมมติว่า/dev/sdaรวมถึงข้อมูลบันทึกการบู๊ตหลักของมันด้วย ฉันจะทำให้สำเร็จได้อย่างไร นอกจากนี้ฉันจะกู้คืนทุกสิ่งในแถวในเวลาต่อมาได้อย่างไร

1
การดีบัก env vars จาก ssh
ฉันกำลังเขียนสคริปต์และแอปพลิเคชันสำหรับบอร์ดฝังตัวที่มี linux - no X คอนโซลเท่านั้น วิธีเดียวในการเข้าถึงเป้าหมายคือผ่าน ssh ฉันไม่ได้เชื่อมต่อจอภาพ สคริปต์ควรส่งออก env vars สองสามตัวซึ่งจะถูกใช้โดยแอปพลิเคชัน ฉันรู้ว่าฉันต้องแหล่งสคริปต์เพื่อทำเช่นนี้ แต่ฉันมีปัญหาในการแก้ปัญหานี้เพราะฉันไม่ทราบวิธีการตรวจสอบว่าสคริปต์ทำงานจาก ssh วิธีแก้ปัญหาเล็กน้อยคือ: ทดสอบสคริปต์ในระบบอื่น เรียกใช้แอพพลิเคชั่นการดีบักเพื่อตรวจสอบ env vars และพิมพ์ไฟล์ ฯลฯ ... ฉันแค่สงสัยว่ามีวิธีที่จะใช้ ssh ทำสิ่งนี้ มันเป็นความอยากรู้อยากเห็นที่จะเรียนรู้สิ่งใหม่ ๆ การแก้ปัญหาเป็นที่รู้จักกัน! ตัวอย่างของสคริปต์: #!/bin/sh export MY_VAR="blablabla" exit 0 แน่นอนว่าสคริปต์ที่แท้จริงมีความซับซ้อนมากขึ้น

1
กระบวนการที่หยุดไม่ทำงานต่อหลังจากส่ง SIGCONT
ฉันเริ่มต้นcatใน terminal: $ cat จากนั้นในสถานีที่สองฉันส่งสัญญาณหยุด: $ kill -SIGSTOP $(pgrep cat) และใช้งานได้ - catหยุด ตอนนี้ฉันต้องการปลุกcatกระบวนการนี้โดยการส่งSIGCONT: $ kill -SIGCONT $(pgrep cat) และไม่มีอะไรเกิดขึ้น อย่างไรก็ตามถ้าฉันใช้fgในเปลือกแรกแล้วcatจะตื่นขึ้น ทำไมSIGCONTไม่ดำเนินcatการต่อไป
linux  bash  signal 

1
เปิดไฟล์โดยใช้ bash พร้อมกับคำสั่ง unix
ฉันมีแอปพลิเคชั่นที่โหลดโดยใช้สคริปต์ทุบตีเช่น /Applications/My.app/Contents/MyExecutable ฉันสามารถโหลดได้โดยใช้ bash อย่างนั้น "/Applications/My.app/Contents/MyExecutable" อย่างไรก็ตามฉันต้องการเปิดไฟล์ที่มีไฟล์เรียกทำงานนี้ (ไฟล์ที่สร้างด้วยไฟล์ปฏิบัติการและสามารถโหลดได้) ฉันสงสัยว่าจะทำอย่างไร ดูเหมือนจะใช้งานไม่ได้: "/Applications/My.app/Contents/MyExecutable" "/Users/MyUser/Desktop/MyFiletoload.xxx" มีวิธีการทำเช่นนี้หรือไม่?
linux  bash  unix  exec 

1
วิธีการตรวจสอบว่าปีที่กำหนดเป็นปีที่ยาวนานในการทุบตี?
วิธีหนึ่งสามารถตรวจสอบว่าปีที่กำหนดเป็นปีที่ยาวนานในการทุบตี? เพื่อความสะดวกในการใช้งานฟังก์ชั่นจะเป็นที่ต้องการ
bash 

2
รหัสของฉัน. sh ไม่สามารถทำงานได้ ช่วยฉันด้วย
#!/usr/bin/expect -f set port [lindex $argv 0] spawn ps xu | grep "ssh -f -N -o ConnectTimeout=5 -D $port" | grep -v grep | awk '{ print $2 }' | xargs kill -9 expect eol ฉันแน่ใจว่าพอร์ต 10034 1234 ทำงานอยู่ เพราะฉันตรวจสอบมัน ps aux | grep ssh และดู ดังนั้นในรหัสของฉันคืออะไร ขอบคุณ
linux  bash  ssh  grep 

0
วิธีการเขียนสคริปต์ที่จะเปิดตัวจาวาแอปพลิเคชันโดยใช้ jre ที่ให้มา?
โดยพื้นฐานแล้วฉันมี MyApplication.jar และห้องสมุดท้องถิ่นที่น่ารังเกียจที่จะทำงานกับ JRE แบบ 32 บิตเท่านั้น ฉันรวม JRE 32 บิตในโฟลเดอร์ / JREF อยู่ในไดเรกทอรีเดียวกันกับ MyApplication.jar วิธีเขียนสคริปต์ที่จะเรียกใช้ MyApplication.jar โดยใช้บันเดิล JRE ในไดเร็กทอรี / JREF เป็นไปได้หรือไม่ที่สคริปต์จะทำงานบน windows, mac และ linux?

0
เทอร์มินัล: หลายคอลัมน์ / ตาราง 'ls'
เมื่อใช้เทอร์มินัลแบบเต็มหน้าจอlsไม่ได้ปรับให้เข้ากับความกว้างของเทอร์มินัลปัจจุบันและจัดหารายการรายการคอลัมน์หลายรายการให้ฉันมันมีคอลัมน์ของรายการไดเรกทอรีเสมอ แม้ในขณะที่ใช้งานเต็มรูปแบบls -alFฉันก็ยังไม่ได้ใช้ครึ่งหน้าจอเลย ฉันเดาว่านี่คือการออกแบบและทั้งหมด แต่มีทางเลือกอื่นสำหรับ ls ที่ใช้ประโยชน์จากความกว้างของเทอร์มินัลปัจจุบันและให้เอาต์พุตตามลำดับตัวอย่างเช่นในรูปแบบตารางหรือไม่

1
Linux: การลบซ้ำแบบปลอดภัยภายในสคริปต์
ฉันกำลังทำงานกับสคริปต์อัตโนมัติที่ทำงานบนกล่อง Linux (Debian) สคริปต์เหล่านั้นเริ่มจากตัวจัดตารางเวลาและจัดการไฟล์ภายในไดเรกทอรีของตนเอง ในตอนท้ายของสคริปต์ฉันต้องลบไฟล์ชั่วคราว ขณะนี้ฉันชอบสิ่งนี้: #check that some variables are not empty if [[ -z $var1 || -z $var2 || -z $var3 ]]; then echo "Some var is empty" exit 1 fi workingdir=$var1/$var2 #some checks on working directory if [[ ! -d $workingdir ]]; then echo "Directory error" exit …

2
MacVim ทำงานแปลก ๆ กับนามแฝงของฉัน (แม้การตั้งค่า shell = / bin / bash \ -l)
ฉันต้องการเขียนสคริปต์และให้ MacVim เรียกคำสั่ง bash บางคำ ฉันมีนามแฝงบางคนและต้องการให้กลุ่มเรียกพวกเขาดังนั้นฉันรู้ว่าฉันต้องการเชลล์การเข้าสู่ระบบเพียงแค่ไม่รู้วิธีการใช้กลุ่มอย่างมีประสิทธิภาพ ฉันอ่านสิ่งนี้: https://stackoverflow.com/questions/4642822/vim-is-not-obeying-command-aliases (ซึ่งใช้ไม่ได้กับ MacVim ของฉัน); และสิ่งนี้: https://stackoverflow.com/questions/4642822/vim-is-not-obeying-command-aliasesซึ่งดูเหมือนว่าเป็นความคิดที่ดี ดังนั้นฉันจึงเปิด. vimrc ของฉันและใส่สิ่งนี้ลงใน: set shell=/bin/bash\ -l. ตอนนี้มีอะไรบางอย่างแปลก ๆ เกิดขึ้น: ฉันมีนามแฝงอยู่ในตัวฉัน.bash_profile: alias mytest='echo "TEST!!"' .bashrcแหล่งที่มาของฉัน.bash_profileดังนั้นฉันรู้ว่าไม่ควรเป็นเรื่องของการตั้งชื่อแทน ถ้าฉันเข้าไปในกลุ่มและเรียกใช้::! alias mytest ฉันเห็นสิ่งนี้: alias mytest='echo "TEST!!"' Press ENTER or type command to continue ถ้าฉันวิ่ง:! mytestแม้ว่านี่คือสิ่งที่ฉันได้รับ: /bin/bash: mytest: command not found shell returned …

1
Command Line: เรียกดูเส้นทางเครือข่ายที่มีช่องว่างและเครื่องหมายคำพูดเดี่ยว
ฉันพยายามที่จะเรียกดูเส้นทางเครือข่ายใน dos ที่มีทั้งช่องว่างและคำพูดเดียว เมื่อฉันทำ: net use "\\server\path's name\folder\" ฉันได้รับข้อความแสดงข้อผิดพลาดว่าเกิดข้อผิดพลาด 53 ขึ้น ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

1
กระบวนการ WSL ที่ก่อให้เกิด DPC_WATCHDOG_VIOLATION
ฉันใช้ Bash บน Ubuntu สำหรับ Windows บน Windows 10 ข้อจำกัดความรับผิดชอบ: ฉันค่อนข้างใหม่สำหรับ Windows มีระบบยูนิกซ์ที่ใช้เกือบเฉพาะ ฉันกำลังดาวน์โหลดรูปภาพขนาด ~ 1 ล้านภาพในกลุ่มที่มีขนาดไม่เกิน 100k โดยเรียกใช้สคริปต์ต่อไปนี้ใน WSL ($ 1 เป็นโฟลเดอร์เป้าหมายที่มีการดาวน์โหลดรูปภาพ): #!/bin/bash SECONDS=0 cat "$1/pics.csv" | xargs -n 1 -P 10 wget -q -P "$1/" echo "Elapsed $SECONDS seconds" echo "Adding .jpg extentions" mmv "$1/*_small" "$1/#1.jpg" find "$1" …

0
RHEL 6: GNOME: การจ้องมองไฟล์ * .desktop ในเชลล์ที่แตกต่างจากระบบเริ่มต้น
ฉันอยู่ใน RHEL 6 พร้อมทุบตีเป็นเปลือกเริ่มต้นของฉัน ฉันมีสคริปต์ชื่อ startServers ฉันสร้างไฟล์ startServers.desktop ซึ่งฉันวางไว้บนเดสก์ท็อปของฉันเพื่อให้ฉันสามารถคลิกไอคอนเพื่อเริ่มสคริปต์ได้อย่างสะดวก มันใช้งานได้ดี เพื่อนบางคนต้องการใช้สคริปต์ของฉัน พวกเขาก็อยู่ใน RHEL 6 แต่เชลล์เริ่มต้นของพวกเขาคือ CSH เมื่อฉันคลิกที่ "คุณสมบัติ" สำหรับ startServers.desktop ฉันมีช่องข้อความที่เรียกว่า "คำสั่ง" ที่เป็นเพียง / pathtofile / StartServers ฉันสามารถเปลี่ยนฟิลด์นั้นเพื่อให้ดับเบิลคลิกที่ไอคอนส่งคำสั่งไปยัง bash แทน CSH ได้หรือไม่? สิ่งที่ต้องการ ทุบตี / pathtofile / startServers? ขอบคุณ

3
วิธีออกจากการถูกระงับโดย bash console
ในเทอร์มินัลระบบเหมือนยูนิกซ์บางครั้งฉันใช้คำสั่งบางอย่างไม่ถูกต้องและทำให้ bash ไม่รู้ว่าต้องทำอะไร เช่น grep 'word' -R จากนั้นฉันจะแก้ไขข้อผิดพลาดหรือกำจัดมันให้ลองใหม่ได้อย่างไร ดูเหมือนว่า CTRL + C จะช่วยให้ฉันกลับมาฟรี แต่ไม่แน่ใจว่านี่เป็นการปฏิบัติที่ดีหรือไม่?
bash  shell 

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