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

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

2
เรียกใช้คำสั่งในเชลล์แบบโต้ตอบด้วย ssh หลังจาก sourcing .bashrc
ฉันต้องการที่จะ SSH เข้าไปในคอมพิวเตอร์ Ubuntu ระยะไกลแหล่งที่มาของฉันและเรียกใช้คำสั่งที่ขึ้นอยู่กับพารามิเตอร์ที่กำหนดโดยที่.bashrc .bashrcทั้งหมดที่อยู่ในเชลล์แบบโต้ตอบที่ไม่ปิดหลังจากทำคำสั่งเสร็จแล้ว สิ่งที่ฉันพยายามจนถึงตอนนี้คือ ssh user@remote_computer -t 'bash -l -c "my_alias;bash"' หรือเพียงแค่ ssh user@remote_computer -t "my_alias;bash" ใช้งานได้กับคำสั่งทั่วไป (เช่นlsตัวอย่าง) แต่เมื่อฉันพยายามเรียกใช้นามแฝงที่กำหนดไว้ใน.bashrcฉันได้รับข้อผิดพลาด: bash: my_alias: command not found แต่เมื่อฉันเขียนมันเองอีกครั้งและรันมันก็ใช้งานได้! ดังนั้นฉันจะแน่ใจได้อย่างไรว่า.bashrcมีแหล่งที่มาก่อนที่คำสั่งจะถูกเรียก?
11 bash  shell  ssh  alias 

1
ใช้ 'จดหมาย' เพื่ออ่านอีเมลจากบรรทัดคำสั่ง
ฉันรู้ว่าเราสามารถใช้mailคำสั่งในเทอร์มินัลเพื่อเริ่มใช้mailโปรแกรมในโหมดโต้ตอบ อย่างไรก็ตามฉันต้องการอ่านอีเมลโดยใช้mailคำสั่งแบบไม่โต้ตอบ มีคำสั่งเช่นไร $ mail -optionToReadMail -mailNumber 1; ซึ่งจะแสดงเนื้อหาของอีเมลใน stdout?
11 bash  scripting  mailx 

3
เปรียบเทียบส่วนหัวของสองไฟล์ใน bash
ฉันสามารถทำได้diff filea filebเพื่อดูความแตกต่างระหว่างไฟล์ ฉันสามารถทำได้head -1 fileaเพื่อดูบรรทัดแรกของ filea หรือ fileb ฉันจะรวมคำสั่งเหล่านี้เพื่อแสดงความแตกต่างระหว่างบรรทัดแรกของ filea และบรรทัดแรกของ fileb ได้อย่างไร
11 bash  shell  diff  head 

5
ฉันจะเรียกใช้บรรทัดที่ระบุเป็นคำสั่งในไฟล์ข้อความได้อย่างไร
บางครั้งฉันจำเป็นต้องสั่งคำสั่งเดียวซึ่งอยู่ในเชลล์สคริปต์ ฉันรู้แล้วว่าsed -n 'line_num p'สามารถพิมพ์บรรทัดนั้นได้ แต่ฉันจะ exec ที่พิมพ์บรรทัดที่เฉพาะเจาะจงเป็นคำสั่งได้อย่างไร

3
เนื้อหาของไฟล์. bash_history ใช้เวลานานเท่าใด
ฉันจะแก้ไขเนื้อหาของbash_historyไฟล์ของฉันได้อย่างไร? ค่าหรือตัวแปรใดที่ควบคุมว่าประวัติศาสตร์จะอยู่ได้นานแค่ไหน มีสิ่งอื่นใดอีกบ้างที่ฉันสามารถเปลี่ยนเพื่อให้การควบคุมประวัติ BASH ของฉันดีขึ้นหรือไม่?

2
วิธีทำให้ตัวแปรจากเชลล์ย่อยพร้อมใช้งานในพาเรนต์เชลล์
ฉันได้เขียนสคริปต์ที่รวดเร็วและสกปรกเพื่อรายงานเวลาจากบริการเว็บ: BASE_URL='http://example.com/json/webservice/' FIRST=1 FINAL=10000 for report_code in $(seq 1 $FINAL); do (time -p response=$(curl --write-out %{http_code} --silent -O ${BASE_URL}/${report_code}) ) 2> ${report_code}.time echo $response # <------- this is out of scope! How do I fix that? if [[ $response = '404' ]]; then echo "Deleting report # ${report_code}!" rm ${report_code} …

4
การติดตั้ง crontab โดยใช้ bash script
ฉันได้สร้างสคริปต์เพื่อติดตั้งสองสคริปต์ไปยัง crontab #!/bin/bash sudo crontab -l > mycron #echo new cron into cron file echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script #install new cron file crontab mycron rm mycron …
11 linux  bash  cron 

3
แปลงพา ธ ไฟล์เป็น URI ใน bash
ฉันจะแปลงพา ธ ไฟล์เป็น URI ในบรรทัดคำสั่งได้อย่างไร ตัวอย่าง : /home/MHC/directory with spaces and ümläuts ถึง file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
11 bash  filenames 

3
วิธีการเขียนสคริปต์ทุบตีที่เข้าสู่เครื่องอื่นเพื่อทำสิ่ง?
เป็นไปได้ไหมที่จะเขียนสคริปต์ทุบตี จะเริ่มจากเครื่อง A, เข้าสู่ระบบในเครื่อง B อื่นโดย ssh (ทั้งเครื่อง A และ B จะเป็น Linux-Machines), คัดลอกไฟล์บางไฟล์ไปยังเครื่อง B รันสคริปต์ python กับสคริปต์ python ที่ระบุบนเครื่องเหล่านี้ โอนผลลัพธ์กลับไปที่เครื่อง A ออกจากระบบบี เทคนิคนี้ใช้ได้หรือไม่?
11 bash  ssh  shell-script 

1
คำสั่ง bash แบบไม่บล็อค
สมมติว่าฉันมีสคริปต์ทุบตีต่อไปนี้: #!/bin/sh gedit rm *.temp เมื่อผมดำเนินการโดยใช้sh ./test.sh, geditปรากฏขึ้น แต่ส่วนหนึ่งไม่ทำงานจนกว่าหลังจากที่ผมใกล้ชิดrmgedit ฉันต้องการให้สคริปต์ทำงานต่อไปแม้ว่าgeditจะไม่ได้ปิด เช่นเดียวกับที่geditไม่ได้ปิดกั้นการดำเนินการทุบตี ตัวอย่างที่ฉันให้ไว้เป็นเพียงตัวอย่าง (การวางไว้rmก่อนจะไม่ทำงานในสถานการณ์จริง)
11 bash  job-control 

2
เขียนอาร์เรย์เริ่มต้นให้กับตัวแปรใน Bash
ผมคาดหวังว่า excludes="${excludes:-( ${default_excludes[@]} )}" ที่จะเป็นอาร์เรย์ถ้า$excludesว่างเปล่า น่าเสียดายที่สิ่ง:-ต่อไปนี้ถูกใช้เป็นสตริง ฉันพลาดความผิดพลาดทางไวยากรณ์หรือไม่หรือฉันต้องใช้ clunky if [ -z "${excludes:-}" ] then excludes=( "${default_excludes[@]}" ) fi ?
10 bash  array 

1
มีข้อได้เปรียบอะไรบ้างในการระบุ './' ใน a for for loop โดยใช้ glob?
ผมก็รู้สึกว่ามันอาจจะปลอดภัยในการใช้เมื่อค้นหาไฟล์ที่ลงท้ายด้วย./*.fastq .fastqยกตัวอย่างเช่นจะป้องกันไม่ให้จับไฟล์./ .fastqเห็นได้ชัดว่ามันผิดอย่างที่แสดงในตัวอย่างด้านล่าง: TMP_DIR=$(mktemp --directory) mkdir -p ${TMP_DIR} (cd ${TMP_DIR} touch {a,b,c,}.fastq ls -a echo "" echo "# match all:" for f in *.fastq ; do echo "${f}" done echo "" echo "# with ./:" for f in ./*.fastq ; do echo "${f}" done ) rm -rf ${TMP_DIR} . .. …
10 bash  shell  wildcards 

1
การแทนที่ $ {! var_name + x} หมายถึงอะไร
ฉันพบสคริปต์ที่มีฟังก์ชันที่ตรวจสอบว่ามีการตั้งค่าตัวแปร แต่ฉันไม่เข้าใจมันเป็นอย่างดี check_if_variable_is_set() { var_name=$1 if [ -z "${!var_name+x}" ]; then false else true fi } เกิดอะไรขึ้นกับการทดแทนนี้

2
วิธีสร้างนามแฝงด้วยคำสั่งประกอบด้วย 'และ "
มีบางโพสต์ที่ผ่านมามีคนถามวิธีแสดงหน่วยความจำเป็นเปอร์เซ็นต์ มีคนตอบกลับด้วย: free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }' ฉันสงสัยว่าฉันสามารถเปลี่ยนคำสั่งนี้เป็นชื่อแทนใน ~ / .bashrc หรือไม่ แต่ไวยากรณ์ของนามแฝงคือ: alias aliasname='command' ฉันจะทำสิ่งนี้ได้อย่างไร ที่มีทั้งคำสั่งและ' "ฉันลองใช้วิธีการต่าง ๆ แต่มันไม่ทำงาน เป็นไปได้ไหม ฉันพลาดอะไรไปรึเปล่า?
10 bash  quoting  alias 

5
จับรหัสทางออกของคำสั่ง exit
ฉันมีสิ่งนี้ในสคริปต์ทุบตี: exit 3; exit_code="$?" if [[ "$exit_code" != "0" ]]; then echo -e "${r2g_magenta}Your r2g process is exiting with code $exit_code.${r2g_no_color}"; exit "$exit_code"; fi ดูเหมือนว่าจะออกทันทีหลังจากคำสั่ง exit ซึ่งทำให้รู้สึก ฉันสงสัยว่าจะมีคำสั่งง่ายๆที่สามารถให้รหัสออกโดยไม่ต้องออกทันทีหรือไม่ ฉันจะเดา: exec exit 3 exec: exit: not foundแต่จะให้ข้อความแสดงข้อผิดพลาด: ฉันควรทำอย่างไร :)

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