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

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

3
เป็นไปได้อย่างไรที่จะจัดเรียงฟิลด์ CPU ของคำสั่ง ps
ฉันกำลังพยายามสร้างคำสั่งขนาดเล็กที่จะค้นหากระบวนการที่ใช้พลังงาน CPU มากที่สุด ประการแรกผมใช้แล้วps aux > file.txtcut -c 16-20 file.txt | sort -n | tail -5 ผลลัพธ์ที่ฉันได้รับคือ: 1.0 2.7 8. 14.5 14.5 ดังนั้นคำถามของฉันคือฉันจะมีทั้งการ%CPUใช้งานและฟิลด์อื่นที่แสดงร่วมกันได้อย่างไร
18 bash  shell-script  sort  ps 

3
วนรอบสองบรรทัดของไฟล์แบบขนาน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา เป้าหมายของสคริปต์ที่ฉันทำคือการเปรียบเทียบไฟล์สองชุด ชื่อไฟล์จะถูกจัดเก็บไว้ในสองไฟล์แยกกันหนึ่งพา ธ ต่อบรรทัด ความคิดของฉันคือมีสองwhile readลูปหนึ่งอันสำหรับแต่ละชื่อไฟล์ แต่ฉันจะผสมลูปทั้งสองเข้าด้วยกันได้อย่างไร while read compareFile <&3; do if [[ ! $server =~ [^[:space:]] ]] ; then #empty line exception continue fi echo "Comparing file - $compareFile" if diff "$compareFile" _(other file from loop?_) …

1
วิธีเปลี่ยนเส้นทาง stdout และ stderr ไปยังไฟล์และแสดง stderr ไปยังคอนโซล?
ฉันรู้วิธีเปลี่ยนเส้นทางไปยังไฟล์และใช้ที ในระดับพื้นฐาน ดังนั้น $ alias outanderr='bash -c "echo stdout >&1; echo stderr >&2"' # A fake "application" displaying both output and error messages. $ outanderr 1>file # redirect stdout to a file, display stderr stderr $ outanderr 2>file # redirect stderr to a file, display stdout stdout $ outanderr 1>file …

5
ผู้ใช้จะไม่ให้เชลล์บันทึกคำสั่งของเขาลงในประวัติศาสตร์ในสถานการณ์ใด
หากฉันเพิ่มexport HISTCONTROL=ignorespaceเข้า.bashrcมาทุบตีจะไม่บันทึกคำสั่งใด ๆ ที่มีช่องว่างก่อนหน้าพวกเขาลงในประวัติศาสตร์ แต่ฉันไม่เข้าใจว่าสถานการณ์จะเป็นประโยชน์หรือไม่ ใครช่วยยกตัวอย่างบ้าง

2
วนรอบไฟล์ที่คั่นด้วยแท็บในสคริปต์ทุบตี
นี่คือสิ่งที่ฉันมี: #!/bin/bash while read line; do DB=$(echo $line | cut -f1) USER=$(echo $line | cut -f2) PASS=$(echo $line | cut -f3) echo DB=$DB USER=$USER PASS=$PASS done < users.txt และตัวอย่างของไฟล์อินพุต: drupal_1 drupal1 tmmjXSWL drupal_2 drupal2 FHiJSYHM drupal_3 drupal3 b7bFNj06 drupal_4 drupal4 0AaV62EL และส่งออกจากสคริปต์: DB=drupal_1 drupal1 tmmjXSWL USER=drupal_1 drupal1 tmmjXSWL PASS=drupal_1 drupal1 …
18 bash 

4
กระจายหลายไฟล์จริงถ้าไม่เท่ากันทั้งหมด
ฉันมีไฟล์จำนวนหนึ่งฉันต้องการตรวจสอบว่าไฟล์เหล่านั้นมีเนื้อหาเดียวกัน บรรทัดคำสั่งอะไรที่ฉันสามารถใช้เพื่อตรวจสอบสิ่งนั้น การใช้งานอาจเป็นสิ่งที่ชอบ: $ diffseveral file1 file2 file3 file4 ผลลัพธ์: All files equals หรือ Files are not all equals
18 bash  diff 

4
ทำไมไม่พบคำสั่งล่าช้าเป็นเวลานาน
บ่อยครั้งเมื่อฉันพิมพ์คำสั่งเช่น ls (เช่นฉันกด ENTER ก่อนที่ฉันจะพิมพ์) จะมีการหน่วงเวลาที่ยาวนาน (~ 2 วินาที) หลังจากเทอร์มินัลแสดง: bash: l: command not found... ฉันสามารถเข้าใจสาเหตุของความล่าช้าที่คล้ายกันหลังจากป้อนรหัสผ่านไม่ถูกต้องต่อเหตุใดจึงมีความล่าช้าครั้งใหญ่หลังจากป้อนรหัสผ่านผิด . แต่ทำไมล่าช้าหลังจากคำสั่งที่ไม่รู้จัก? ไม่FAIL_DELAYในการ/etc/login.defsส่งผลกระทบต่อนี้?

4
รีสตาร์ท Bash โดยสิ้นเชิง
มีวิธีที่จะสมบูรณ์รีสตาร์ททุบตีและโหลด.bashrcและ.profileและชอบ? ฉันต้องการตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลงของฉันทำงานอย่างถูกต้องหลังจากแก้ไขไฟล์เหล่านี้


3
ลบ tilespace พิเศษออกจากภาพคอมโพสิต (ImageMagick) หรือไม่
ฉันมีรูปถ่ายมากมาย พวกมันมีความสูงเท่ากันทั้งหมดและฉันพยายามที่จะรวมมันไว้ในภาพคอมโพสิตโดยใช้โปรแกรมตัดต่อของ ImageMagick ผ่านทาง Bash ปัญหาคือโดยค่าเริ่มต้นขนาดกระเบื้อง (ภาพหนึ่งภาพใช้หนึ่งกระเบื้อง) เท่ากับภาพที่มีขนาดใหญ่ที่สุด ภาพที่แคบจึงถูกล้อมรอบด้วยพื้นที่สีขาวจำนวนมาก ฉันต้องการลบพื้นที่สีขาวนี้ ฉันจะทำมันได้อย่างไร

7
รวบรวมรหัสทางออกของกระบวนการพื้นหลังแบบขนาน (เชลล์ย่อย)
สมมติว่าเรามีสคริปต์ทุบตีดังนี้: echo "x" & echo "y" & echo "z" & ..... echo "Z" & wait มีวิธีในการรวบรวมรหัสทางออกของกระบวนการย่อย / กระบวนการย่อยหรือไม่? กำลังมองหาวิธีการทำสิ่งนี้และหาอะไรไม่เจอ ฉันต้องเรียกใช้ subshells เหล่านี้ในแบบคู่ขนานมิฉะนั้นจะทำได้ง่ายกว่านี้ ฉันกำลังมองหาโซลูชันทั่วไป (ฉันมีกระบวนการย่อยจำนวนไม่ทราบ / แบบไดนามิกเพื่อให้ทำงานแบบขนาน)

1
ความหมายของการเปลี่ยนเส้นทาง '2>> (คำสั่ง)' ใน Bash
ไม่นานมานี้ฉันสร้างสคริปต์และฉันเพิ่มการบันทึกรอบ ๆ มัน แต่ฉันลืมว่าการเปลี่ยนเส้นทางสำหรับการบันทึกทำงานอย่างไร :-( ส่วนสำคัญของมันคือ: #!/bin/bash LOGFILE=/some/path/mylogfile ( # here go my commands which produce some stdout # and, if something goes wrong, also some stderr ) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 ) เมื่อฉันเรียกใช้สคริปต์ก็ไม่ได้พิมพ์อะไรไปแต่เพียงพิมพ์สิ่งที่จะไปstdout stderrLogfile ${LOGFILE}จับทั้ง stdout และ stderr เมื่อฉันรันสคริปต์และไม่มีผลลัพธ์ในเทอร์มินัลของฉันฉันรู้ว่าทุกอย่างเรียบร้อยดี หากมีผลลัพธ์ใด ๆ ฉันรู้ว่ามีบางอย่างผิดปกติและฉันสามารถตรวจสอบล็อกไฟล์เพื่อค้นหาว่าปัญหาคืออะไร ส่วนของการเปลี่ยนเส้นทางที่ตอนนี้ไขปริศนาให้ฉันคือไวยากรณ์ของ: 2> >( some …

2
ฉันจะแยกออกจาก while loop ได้อย่างไรจากภายในคำสั่ง case ที่ซ้อนกัน? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ในสคริปต์ด้านล่าง - ซึ่งจะแจ้งให้ผู้ใช้ยืนยันว่าพวกเขาต้องการดำเนินการเรียกใช้สคริปต์ที่อาจไม่ดี - เมื่อผู้ใช้เข้าสู่Yพรอมต์ - มันจะแตกออกจากcaseบล็อกเท่านั้นที่จะถูกส่งกลับเข้าไปในwhileวงอีกครั้ง #! /bin/bash set -e echo echo "bad install start" echo "-----------------------------------------" while true; do read -p "this script will probably fail - do you want to run anyway?" yn case $yn …

2
คำพูดเดี่ยวในเครื่องหมายคำพูดคู่และคู่มืออ้างอิง Bash
ในส่วน 3.1.2.3 ชื่อ Double Quotes คู่มือ Bash พูดว่า: การใส่อักขระในเครื่องหมายคำพูดคู่ ('"') จะเก็บรักษาค่าตัวอักษรของอักขระทั้งหมดภายในเครื่องหมายคำพูดยกเว้น '$', '`', '\' และเมื่อเปิดใช้งานการขยายประวัติ '!' ในขณะนี้ฉันกังวลกับคำพูดเดียว ( ') เป็นความหมายพิเศษที่อธิบายไว้ในส่วนก่อนหน้าหัวข้อ 3.1.2.2 คือ: การใส่อักขระในเครื่องหมายคำพูดเดี่ยว ( ') จะรักษาค่าตามตัวอักษรของอักขระแต่ละตัวภายในเครื่องหมายคำพูด เครื่องหมายคำพูดเดี่ยวอาจไม่เกิดขึ้นระหว่างเครื่องหมายคำพูดเดี่ยวแม้ว่าจะนำหน้าด้วยเครื่องหมายทับขวา รวมสอง expositions echo "'$a'" โดยที่ตัวแปรaไม่ได้ถูกกำหนด (ดังนั้น$a= สตริงว่าง) ควรพิมพ์$aบนหน้าจอเนื่องจาก''การมีความหมายพิเศษภายในจะป้องกัน$จากการตีความพิเศษ แต่จะพิมพ์''ออกมา ทำไมเป็นเช่นนั้น
18 bash  shell  quoting 

2
ใน bash ฉันจะสะท้อนชื่อตัวแปรได้อย่างไรไม่ใช่ค่าตัวแปร? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา สมมติว่าฉันมีตัวแปรvarในทุบตี ฉันสามารถกำหนดค่าให้กับมัน ตัวอย่างเช่นฉันจะทำให้มันสตริง: var="Test" ฉันต้องการechoชื่อของไม่คุ้มค่าที่จัดขึ้นโดยvar var(ฉันสามารถทำสิ่งหลังได้echo $varแต่จริง ๆ แล้วฉันต้องการที่จะทำในอดีต) คำตอบสำหรับคำถามนี้จาก SOบอกว่าจะใช้echo ${!var}แต่เมื่อฉันทำที่ฉันสะท้อนเพียงแค่ส่งกลับบรรทัดว่าง ตัวอย่างเช่นสคริปต์ทุบตีนี้ #!/bin/bash echo "Hi" var="Test" echo ${!var} echo "Bye" ส่งคืนผลลัพธ์นี้: Hi Bye มีเพียงบรรทัดว่างระหว่างสวัสดีและลาก่อนแทนที่จะvar ผมทำอะไรผิดหรือเปล่า? ฉันทำงานทุบตี 4.1.5 (1)บนUbuntu 10.04.4
18 bash 

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