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

สำหรับคำถามเกี่ยวกับสคริปต์ที่เขียนขึ้นสำหรับเชลล์คำสั่ง Bash สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาด / ข้อผิดพลาดทางไวยากรณ์โปรดตรวจสอบด้วยโปรแกรม shellcheck (หรือในเซิร์ฟเวอร์ shellcheck เว็บที่ https://shellcheck.net) ก่อนโพสต์ที่นี่ คำถามเกี่ยวกับการใช้งานอินเทอร์แอคทีฟของ Bash นั้นมีแนวโน้มที่จะอยู่ในหัวข้อของผู้ใช้ขั้นสูงมากกว่าในสแต็คโอเวอร์โฟลว์

7
จะรับค่าตัวแปรได้อย่างไรถ้าชื่อตัวแปรถูกเก็บเป็นสตริง?
ฉันจะดึงค่าตัวแปร bash ได้อย่างไรถ้าฉันมีชื่อตัวแปรเป็นสตริง? var1="this is the real value" a="var1" Do something to get value of var1 just using variable a. บริบท: ฉันมี AMI ( ภาพเครื่องของ Amazon ) บางส่วนและฉันต้องการเริ่มต้นบางกรณีของ AMI แต่ละอัน ทันทีที่บูตเสร็จฉันต้องการตั้งค่าแต่ละอินสแตนซ์ตามประเภท AMI ฉันไม่ต้องการอบสคริปต์หรือคีย์ลับจำนวนมากใน AMI ใด ๆ ดังนั้นฉันจึงเตรียมสคริปต์เริ่มต้นทั่วไปและฉันวางไว้บนS3ด้วยลิงก์ที่สาธารณชนสามารถเข้าถึงได้ ใน rc.local ฉันใส่โค้ดชิ้นเล็ก ๆ ซึ่งดึงข้อมูลสคริปต์เริ่มต้นและเรียกใช้งาน นี่คือทั้งหมดที่ฉันมีใน AMIs จากนั้น AMI แต่ละตัวจะเข้าถึงสคริปต์การกำหนดค่าทั่วไปซึ่งใช้ได้กับ AMI ทั้งหมดและสคริปต์การตั้งค่าพิเศษสำหรับแต่ละตัว สคริปต์เหล่านี้เป็นแบบส่วนตัวและต้องการ …
142 string  bash 

8
ฟังก์ชัน Bash เพื่อค้นหารูปแบบการจับคู่ไฟล์ใหม่ล่าสุด
ใน Bash ฉันต้องการสร้างฟังก์ชั่นที่คืนชื่อไฟล์ของไฟล์ใหม่ล่าสุดที่ตรงกับรูปแบบที่กำหนด ตัวอย่างเช่นฉันมีไดเรกทอรีของไฟล์เช่น: Directory/ a1.1_5_1 a1.2_1_4 b2.1_0 b2.2_3_4 b2.3_2_0 ฉันต้องการไฟล์ใหม่ล่าสุดที่ขึ้นต้นด้วย 'b2' ฉันจะทำเช่นนี้ในทุบตีได้อย่างไร ฉันต้องมีสิ่งนี้ใน~/.bash_profileสคริปต์ของฉัน
141 linux  bash 

5
ออกจากสคริปต์ในข้อผิดพลาด
ฉันกำลังสร้างเชลล์สคริปต์ที่มีifฟังก์ชั่นเช่นนี้: if jarsigner -verbose -keystore $keyst -keystore $pass $jar_file $kalias then echo $jar_file signed sucessfully else echo ERROR: Failed to sign $jar_file. Please recheck the variables fi ... ฉันต้องการให้การทำงานของสคริปต์เสร็จสิ้นหลังจากแสดงข้อความแสดงข้อผิดพลาด ฉันจะทำสิ่งนี้ได้อย่างไร
141 bash  exit  shell 

9
Bash: ข้อผิดพลาดทางไวยากรณ์: การเปลี่ยนเส้นทางที่ไม่คาดคิด
ฉันทำสิ่งนี้ในสคริปต์: read direc <<< $(basename `pwd`) และฉันได้รับ: Syntax error: redirection unexpected ในเครื่องอูบุนตู /bin/bash --version GNU bash, version 4.0.33(1)-release (x86_64-pc-linux-gnu) ในขณะที่ฉันไม่ได้รับข้อผิดพลาดนี้ในเครื่อง suse อื่น: /bin/bash --version GNU bash, version 3.2.39(1)-release (x86_64-suse-linux-gnu) Copyright (C) 2007 Free Software Foundation, Inc. เหตุใดจึงเกิดข้อผิดพลาด
141 bash  ubuntu 

12
ลบไฟล์ซ้ำ ๆ
ใครบ้างมีวิธีการลบไฟล์ที่น่ารำคาญ. _ และ. DS_ ที่เก็บที่ได้รับหลังจากย้ายไฟล์จาก Mac ไปยัง A Linux Server หรือไม่ ระบุไดเรกทอรีเริ่มต้นและปล่อยมันไปไหม? กดไลค์ / var / www / html / down ...
140 linux  bash 

3
รักษาสีหลังจากการ grep piping เพื่อ grep
มีคำถามเกี่ยวกับ simlar ในPreserve ls หลังจาก grep'ingแต่มันทำให้ฉันรำคาญว่าถ้าคุณใส่ grep color output ไปยัง grep ตัวอื่นที่สีนั้นไม่ได้ถูกสงวนไว้ เป็นตัวอย่างgrep --color WORD * | grep -v AVOIDไม่ให้สีของเอาท์พุทแรก แต่สำหรับฉันls | grep FILEเก็บสีทำไมถึงแตกต่าง
140 linux  bash  colors  grep  pipe 



12
การลบสีออก
ฉันมีสคริปต์ที่สร้างผลลัพธ์ด้วยสีและฉันต้องการลบรหัส ANSI #!/bin/bash exec > >(tee log) # redirect the output to a file but keep it on stdout exec 2>&1 ./somescript ผลลัพธ์คือ (ในล็อกไฟล์): java (pid 12321) is running...@[60G[@[0;32m OK @[0;39m] ฉันไม่รู้วิธีใส่อักขระ ESC ที่นี่ดังนั้นฉันจึง@เข้าแทนที่ ฉันเปลี่ยนสคริปต์เป็น: #!/bin/bash exec > >(tee log) # redirect the output to a file but keep it …

5
ด้วยการทุบตีฉันจะท่อข้อผิดพลาดมาตรฐานไปยังกระบวนการอื่นได้อย่างไร
เป็นที่ทราบกันดีว่าจะวางท่อส่งออกมาตรฐานของกระบวนการไปยังอินพุตมาตรฐานอื่นของกระบวนการได้อย่างไร: proc1 | proc2 แต่ถ้าฉันต้องการส่งข้อผิดพลาดมาตรฐานของ proc1 ไปยัง proc2 และปล่อยให้เอาต์พุตมาตรฐานไปยังตำแหน่งปัจจุบัน คุณคิดว่าbashจะมีคำสั่งตามบรรทัดของ: proc1 2| proc2 แต่อนิจจาไม่ มีวิธีใดบ้างที่จะทำเช่นนี้?
140 bash  pipe  stderr 

6
ฉันจะหลีกเลี่ยงอักขระตัวแทน / เครื่องหมายดอกจันใน bash ได้อย่างไร
ตัวอย่างเช่น: me$ FOO="BAR * BAR" me$ echo $FOO BAR file1 file2 file3 file4 BAR และใช้\อักขระหนี: me$ FOO="BAR \* BAR" me$ echo $FOO BAR \* BAR เห็นได้ชัดว่าฉันทำอะไรโง่ ๆ ฉันจะรับผลลัพธ์ได้BAR * BARอย่างไร
140 bash  shell  escaping 



22
จับเอาท์พุทของคำสั่งสุดท้ายโดยอัตโนมัติลงในตัวแปรโดยใช้ Bash?
ฉันต้องการที่จะสามารถใช้ผลลัพธ์ของคำสั่งที่ดำเนินการครั้งสุดท้ายในคำสั่งที่ตามมา ตัวอย่างเช่น, $ find . -name foo.txt ./home/user/some/directory/foo.txt ตอนนี้สมมติว่าฉันต้องการที่จะสามารถเปิดไฟล์ในโปรแกรมแก้ไขหรือลบมันหรือทำอย่างอื่นกับมันเช่น mv <some-variable-that-contains-the-result> /some/new/location ฉันจะทำมันได้อย่างไร อาจจะใช้ตัวแปรทุบตีบางอย่าง? ปรับปรุง: เพื่อชี้แจงฉันไม่ต้องการกำหนดสิ่งต่าง ๆ ด้วยตนเอง สิ่งที่ฉันตามมาคืออะไรบางอย่างเช่นตัวแปร bash ในตัวเช่น ls /tmp cd $_ $_ถืออาร์กิวเมนต์สุดท้ายของคำสั่งก่อนหน้า ฉันต้องการสิ่งที่คล้ายกัน แต่ด้วยผลลัพธ์ของคำสั่งสุดท้าย อัปเดตครั้งสุดท้าย: คำตอบของเซททำงานได้ค่อนข้างดี สิ่งที่ควรคำนึงถึง: อย่าลืมtouch /tmp/xเมื่อพยายามแก้ปัญหาเป็นครั้งแรก ผลลัพธ์จะถูกเก็บไว้ถ้ารหัสทางออกของคำสั่งสุดท้ายสำเร็จเท่านั้น
139 linux  bash  command-line 

11
เปลี่ยนชื่อไฟล์ทั้งหมดในไดเรกทอรีจาก $ filename_h เป็น $ filename_half?
ง่ายตาย ฉันจะเปลี่ยนชื่อได้อย่างไร 05_h.png 06_h.png ถึง 05_half.png 06_half.png อย่างน้อยฉันคิดว่ามันง่าย แต่ Google ก็ยากสำหรับเรื่องแบบนี้เว้นแต่คุณจะรู้อยู่แล้ว ขอบคุณ ....
139 bash  shell 

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