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

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

2
เป็นไปได้ไหมที่จะให้ SSH ส่งต่ออาร์กิวเมนต์ที่ว่างเปล่า?
ฉันพยายามเรียกใช้สคริปต์ระยะไกลด้วย SSH และสคริปต์นี้เปลี่ยนพฤติกรรมของมันขึ้นอยู่กับว่าอาร์กิวเมนต์ที่ระบุนั้นว่างเปล่าหรือไม่ นี่คือตัวอย่างเล็กน้อยที่ฉันสร้างtmp.shไฟล์อย่างง่ายที่สะท้อนจำนวนข้อโต้แย้งแล้วข้อโต้แย้งคืออะไร เมื่อฉันรันมันแบบโลคัลมันทำงานได้ตามที่คาดไว้โดยมีอาร์กิวเมนต์ 3 ข้อ แต่เมื่อฉันรันสคริปต์ผ่าน SSH มันบอกว่ามันมีเพียง 2 ข้อโต้แย้ง: $ cat argtest.sh #!/bin/bash echo $# echo $@ $ ./argtest.sh foo '' bar 3 foo bar $ ssh user@localhost ./argtest.sh foo '' bar 2 foo bar มีวิธีที่จะให้ SSH ส่งต่ออาร์กิวเมนต์ที่ว่างเปล่าดังนั้นสคริปต์บอกว่ามันมี 3 ข้อโต้แย้ง?

1
ฉันจะใช้แต่ละบรรทัดเหมือนอาร์กิวเมนต์ในเอาต์พุตข้อความได้อย่างไร
ฉันมีไฟล์ที่มีข้อความเช่น a 111 222 333 444 555 ฉันต้องการให้แต่ละบรรทัดเป็นอาร์กิวเมนต์สำหรับบล็อกข้อความ: อินพุต = ชื่อไฟล์ Hello world $ อินพุต เอาต์พุต: สวัสดีโลก 111 สวัสดีโลก 222 สวัสดีชาวโลก 333 สวัสดีชาวโลก 444 สวัสดีชาวโลก 555 ฉันจะทำสิ่งนั้นได้อย่างไรในการทุบตี?
bash 

2
Bash rsync การเขียนสคริปต์เชลล์
ฉันจะคัดลอกเนื้อหาทั้งหมดของโฟลเดอร์หนึ่งซ้ำไปยังโฟลเดอร์อื่นโดยใช้ RSYNC ได้อย่างไร ตัวอย่างเช่น: โฟลเดอร์ปลายทาง
linux  bash 

1
จำกัด ความถี่ของ CPU บน Ubuntu Linux
ฉันกำลังมองหาวิธี จำกัด ความถี่ของ CPU เมื่อระบบใช้แบตเตอรี่ โซลูชันไม่จำเป็นต้องทำงานเฉพาะเมื่อใช้แบตเตอรี่มันอาจอยู่ในรูปแบบของคำสั่ง bash ซึ่งฉันสามารถสร้างสคริปต์ซึ่งฉันจะเรียกใช้เมื่อเริ่มต้นระบบ แบบร่างสำหรับสคริปต์: #!/bin/bash while true do sleep 60 #wait one minute # check whether laptop has ac plugged in # if not, set frequency limit to what I want # else, set frequency limit to max done

2
บล็อกสคริปต์วนซ้ำ (ซ้ำ) จนกระทั่งรหัสผ่าน db (mysql) สำเร็จ
ฉันมีฟังก์ชั่นดังต่อไปนี้ function executeMySql() { while IFS= read -p "$prompt" -r -s -n 1 char do if [[ $char == $'\0' ]]; then break fi if [[ $char == $'\177' ]]; then prompt=$'\b \b' password="${password%?}" else prompt='*' password+="$char" fi done mysql -u root -p$password -e "$1" ret=$? if [ $ret = …

1
วิธีการติดตั้ง bash-it ในระบบ Windows 10 bash
ฉันทำงานมากกับ git และbash มันเป็นเครื่องมือสร้างภาพที่ยอดเยี่ยมโดยเฉพาะเมื่อทำงานกับสาขา ฉันหวังว่ามีคนรู้วิธีการติดตั้ง "bash-it" (หรือโปรแกรมอื่นที่คล้ายคลึงกัน) ในสภาพแวดล้อมทุบตี Windows 10? ฉัน Googled เกี่ยวกับเรื่องนี้ แต่บทความส่วนใหญ่เกี่ยวกับการตั้งค่าบน Mac ฉันหวังว่าจะได้รับการติดตั้งเพื่อให้การทำงานกับกิ่ง git ง่ายขึ้น ประโยชน์ของการทุบตีมัน

0
รายการไดเรกทอรีที่แก้ไขใน 24 ชั่วโมงที่ผ่านมาโดยใช้คำสั่ง `ls`
ฉันต้องการแสดงรายการไดเรกทอรีที่ถูกแก้ไขใน 24 ชั่วโมงที่ผ่านมา จนถึงตอนนี้ฉันมีรหัสต่อไปนี้ซึ่งใช้ในสคริปต์เพื่อทำซ้ำในไดเรกทอรีผลลัพธ์: for item in $(ls -lt | grep ^d | awk '{print $9}') do .... done ls -lt | grep ^d | awk '{print $9}'คำสั่งให้ฉันชื่อของไดเรกทอรีที่ได้รับคำสั่งจากที่ผ่านมามีการปรับเปลี่ยน สิ่งคือฉันต้องการกรองผลลัพธ์ที่พบเฉพาะไดเรกทอรีที่มีการเปลี่ยนแปลงใน 24 ชั่วโมง คุณสามารถช่วยฉันได้ไหม?

1
เรียกใช้สคริปต์แต่ละหน้าต่างเทอร์มินัลเวลาที่เปิด
ดังนั้นฉันจึงได้เขียนสคริปต์ทุบตีง่ายๆเพื่อเรียกใช้โปรแกรมที่เรียกว่า "cmatrix" ทุกครั้งที่มีหน้าต่างเทอร์มินัลใหม่เปิดขึ้น ฉันได้เปลี่ยนการอนุญาตบนไฟล์ดังนั้นจึงเป็น rx สำหรับทุกคนและตรวจสอบว่ามันจะทำงานอย่างที่ฉันต้องการเมื่อถูกเรียก แต่ตอนนี้ฉันไม่ทราบว่าจะใส่สคริปต์ไว้ที่ไหนเพื่อให้มันทำงานบนทุบตีใหม่ทุกครั้ง เปิดตัวสถานี ฉันรู้ว่าถ้าฉันต้องการให้มันทำงานเมื่อเริ่มต้นฉันจะวางไว้ใน usr / local / bin แต่ฉันเพียงต้องการให้มันทำงานเมื่อฉันเปิดหน้าต่างเทอร์มินัลใหม่ ง่ายมาก: cmatrix -bs -C cyan ความช่วยเหลือใด ๆ และชื่นชมทั้งหมด! ขอบคุณ

1
สคริปต์ทุบตีดำเนินการร่วมกันไม่ได้ฆ่ากระบวนการพื้นหลัง
ฉันมีเชลล์สคริปต์จำนวนหนึ่งที่ทำงานคล้ายกับคำถามนี้มาก แต่ละสคริปต์ใช้งานแบ็คกราวนด์ไม่กี่ครั้งจดจำการ PID ด้วย$!ทำการทดสอบบางอย่างแล้วฆ่ากระบวนการพื้นหลัง ปัญหาของฉันคือฉันต้องการเรียกใช้สคริปต์ประเภทนี้จำนวนมาก หากฉันเรียกใช้ด้วยตนเองทีละคนพวกเขาทำงานได้ดี: ps -aแสดงว่ากระบวนการพื้นหลังถูกฆ่าอย่างเหมาะสม $ ./test_1.sh $ ./test_2.sh อย่างไรก็ตามถ้าฉันใช้ทั้งสองในหนึ่งคำสั่งเช่นนั้น: $ ./test_1.sh; ./test_2.sh กระบวนการพื้นหลังเริ่มต้นโดยtest_1.shล้มเหลวที่จะตายตามเวลาtest_2.shเริ่มต้น สิ่งนี้ทำให้พอร์ตเชื่อมโยงกันซึ่งtest_2.shจำเป็นต้องเชื่อมโยง ดังนั้นแม้ว่าtest_1.shปัญหาที่ถูกต้องkillคำสั่งเกิดปัญหาถ้ามันดำเนินการทันทีหลังจากที่test_2.shtest_1.sh หากฉันแทรกการหน่วงเวลาระหว่างสคริปต์ไม่มีปัญหา: $ ./test_1.sh; sleep 1; ./test_2.sh จากนั้นสันนิษฐานว่ามีความล่าช้าระหว่างเมื่อkillมีการออกและเมื่อกระบวนการตายจริงและปล่อยพอร์ต คำถามของฉันคือ: เกิดอะไรขึ้น? แพลตฟอร์มนี้เฉพาะเจาะจงหรือไม่ ฉันใช้ Mac OS X แต่สิ่งนี้ดูเหมือนจะไม่เป็นปัญหาสำหรับคนที่เขียนสคริปต์บน Linux มาก่อน มีวิธีที่ดีกว่าเพื่อให้แน่ใจว่ากระบวนการเบื้องหลังถูกฆ่าโดยไม่ใช้sleepระหว่างสคริปต์หรือไม่ เพื่อความสมบูรณ์นี่คือลักษณะของสคริปต์ทดสอบตัวใดตัวหนึ่ง: #!/bin/sh echo "starting up server 1(parent)..." $JAVA siena.StartServer -port 7000 & server1=$! …
macos  bash  sh 

1
ทำไม os.stat และ du และ ls ของ python ถึงไม่เห็นด้วยกับขนาดบล็อก
ในขณะที่เขียนฟังก์ชั่นง่าย ๆ ที่คำนวณปริมาณบล็อกที่ใช้ในไดเรกทอรีฉันตรวจสอบกับ du เพื่อดูว่าฉันได้รับคำตอบเดียวกัน เหตุใด ls และ du บอกว่าไฟล์นี้มีขนาด 16 บล็อก #!/bin/bash targetfile=/scratch/blob rm -rf /scratch > /dev/null 2>&1 mkdir -p /scratch > /dev/null 2>&1 bs=$(dumpe2fs -h /dev/mapper/testvm-root 2> /dev/null | grep "Block size:") bs=${bs/Block size:/} bs=${bs// /} echo blocksize=$bs # create a file slightly too big for three …
linux  bash  unix  python 

1
BASH: grep นับคำเดียวกันที่เกิดขึ้น
เป็นไปได้หรือไม่ที่จะนับจำนวนครั้งสูงสุดของคำในสตริงโดยใช้ grep เท่านั้น นี่คือตัวอย่างของสิ่งที่ฉันต้องการ: script.sh "aaaa bbbb ccc bbbb azesd bbbb" จะกลับมา bbbb 3 ขอขอบคุณ แก้ไข: ฉันพบวิธีแก้ปัญหา ขอบคุณ
bash  regex  grep 

2
รวมหลายไอเอฟทุบตี
ฉันจะลดความซับซ้อนของรหัสต่อไปนี้ถ้าคำสั่งได้อย่างไร ขอขอบคุณ function git_dirty { text=$(git status) changed_text="Changes to be committed" changes_not_staged="Changes not staged for commit" untracked_files="Untracked files" dirty=false if [[ ${text} = *"$changed_text"* ]];then dirty=true fi if [[ ${text} = *"$changes_not_staged"* ]];then dirty=true fi if [[ ${text} = *"$untracked_files"* ]];then dirty=true fi echo $dirty }

1
การดาวน์โหลดหลายไฟล์พร้อมกันกับชื่อที่มีการเปลี่ยนแปลง
ฉันกำลังเขียน bash script และไม่รู้วิธีแก้ปัญหาของฉัน ฉันต้องการดาวน์โหลดไฟล์หลายไฟล์พร้อมกัน แต่ ... ฉันต้องการบันทึกไฟล์ภายใต้ชื่อที่ปรับเปลี่ยน ฉันมีตัวแปรที่มี URL example.com/aaa.txt example.com/ooo/bbbbbb.txt example.info/c.txt ลำดับของ URL มีความสำคัญ หลังจากดาวน์โหลดฉันต้องการ: 1.txt 2.txt 3.txt ฉันทดสอบขนานและ wget แต่ฉันไม่ทราบวิธีการเปลี่ยนชื่อไฟล์ PS: จำกัด การดาวน์โหลดพร้อมกัน 5 ครั้ง
linux  bash  wget 

2
.bashrc / .bash_profile ไม่โหลดการส่งออก
ฉันพยายามรวบรวมรหัสและเพื่อให้มันทำงานฉันต้องเรียกใช้บรรทัดต่อไปนี้ก่อนที่จะรวบรวม: export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig หลังจากนี้โค้ดจะคอมไพล์ฉันพยายามเพิ่มมันเพื่อที่ฉันจะได้ไม่ต้องเรียกใช้บรรทัดนี้ทุกครั้งเมื่อฉันรีสตาร์ทพีซี ฉันได้ลองเพิ่มบรรทัดนั้นใน.bashrcไฟล์ (เส้นทางของไฟล์ต้องการอัญประกาศหรือไม่) ซึ่งดูเหมือนจะไม่ทำงาน ฉันได้ลองสร้าง.bash_profileไฟล์ด้วยการเพิ่มบรรทัดในนั้นอีกครั้ง แต่ดูเหมือนจะไม่ทำงาน เมื่อใดก็ตามที่ฉันพยายามรวบรวมหลังจากเพิ่ม.bash_profileฉันได้รับข้อผิดพลาดต่อไปนี้: ./makeScript: line 1: pkg-config: command not found

1
เรียกใช้แอปพลิเคชันเมื่อบู๊ตในสภาพแวดล้อมรูทจากนั้นมอนิเตอร์และหากปิดหรือเปิดใหม่อีกครั้ง
ฉันมีคำถามเกี่ยวกับวิธีที่ฉันสามารถเปิดแอปพลิเคชั่นเขียนด้วยไพ ธ อนทันทีที่การบู๊ตเสร็จสมบูรณ์ แอปพลิเคชันนี้จำเป็นต้องเรียกใช้ด้วยสิทธิ์แบบเต็มดังนั้นจึงไม่จำเป็นต้องใช้รหัสผ่านเนื่องจากมีสองคำสั่งที่ทำงานด้วย sudo ฉันต้องการมันอีกครั้งเพื่อเปิดใช้งานแอปพลิเคชั่นที่มีสิทธิ์เดิมอีกครั้งหากการปิดแอปพลิเคชัน ฉันได้ทำสิ่งที่คล้ายกัน แต่ไม่เคยทั้งหมดเข้าด้วยกัน ตัวอย่างเช่นการเปิดตัวที่บูต ฉันจะโยนสคริปต์สั้น ๆ ที่เรียกแอปพลิเคชันที่ฉันต้องการในไดเรกทอรีอื่นในไดเรกทอรี init.d จากนั้นด้วยการทำ "การตั้งค่าเริ่มต้นของแอพ update-rc.d" มันจะเปิดอัตโนมัติโดยเป็นส่วนหนึ่งของสคริปต์เริ่มต้นสำหรับ Ubuntu สำหรับการเรียกใช้โปรแกรมอีกครั้งหากเกิดข้อขัดข้องสคริปต์อื่น ๆ #!/usr/bin/python from subprocess import Popen import sys filename = sys.argv[1] while True: print("\nStarting " + filename) p = Popen("python " + filename, shell=True) p.wait() ทำงานให้เสร็จลุล่วง ฉันสามารถใส่ชื่อแอปพลิเคชันที่ชื่อไฟล์ดังนั้นฉันไม่ต้องระบุชื่อเป็นส่วนหนึ่งของข้อโต้แย้งเมื่อฉันเรียกมัน ปัญหาหลักของฉันคือแอพพลิเคชั่นที่ฉันใช้จำเป็นต้องทำงานในสภาพแวดล้อมราก, เปิดใช้งานอัตโนมัติตอนบู๊ตและเปิดใหม่หากปิดเครื่อง ข้อเสนอแนะใด ๆ

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