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

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

11
วิธีรับอาร์กิวเมนต์ด้วยค่าสถานะใน Bash
ฉันรู้ว่าฉันสามารถรับพารามิเตอร์ตำแหน่งได้อย่างง่ายดายเช่นนี้ใน bash: $0 หรือ $1 ฉันต้องการใช้ตัวเลือกการตั้งค่าสถานะเช่นนี้เพื่อระบุสิ่งที่แต่ละพารามิเตอร์ใช้: mysql -u user -h host เป็นวิธีที่ดีที่สุดในการรับ-u paramค่าและ-h paramค่าตามธงแทนโดยตำแหน่งคืออะไร?
283 bash  shell 

7
ฉันสามารถส่งออกตัวแปรไปยังสภาพแวดล้อมจากสคริปต์ทุบตีโดยไม่ต้องจัดหาได้หรือไม่
สมมติว่าฉันมีสคริปต์นี้ ส่งออกทุบตี : #! /usr/bin/env bash export VAR="HELLO, VARIABLE" เมื่อฉันรันสคริปต์และพยายามเข้าถึง$VARฉันจะไม่ได้รับค่าใด ๆ ! echo $VAR มีวิธีเข้าถึง$VARโดยเพียงแค่รันexport.bashโดยไม่ต้องจัดหามันหรือไม่

23
วิธีสร้าง CPU spike ด้วยคำสั่ง bash
ฉันต้องการสร้างการโหลดเกือบ 100% บนเครื่อง Linux มันเป็นระบบควอดคอร์และฉันต้องการให้แกนทั้งหมดเต็มความเร็ว เป็นการดีที่ภาระของ CPU จะคงอยู่ตามระยะเวลาที่กำหนดจากนั้นจึงหยุด ฉันหวังว่าจะมีเคล็ดลับในการทุบตี ฉันกำลังคิดวนรอบไม่สิ้นสุดบางอย่าง
281 linux  bash  load  cpu 

5
Bash conditionals: วิธีการ“ และ” การแสดงออก? (ถ้า [! -z $ VAR && -e $ VAR])
ฉันเดาว่าฉันยังไม่ชัดเจนเกี่ยวกับวิธีการทดสอบ "และ" ฉันต้องการตรวจสอบให้แน่ใจว่ามีการโต้แย้งที่ใช้งานได้ดี[ -e $VAR ]แต่กลับกลายเป็นว่าการประเมินนั้นเป็นจริงในสตริงว่าง ซึ่งฉันไม่ต้องการ ฉันจะ 'และ' พวกเขาเข้าด้วยกันได้อย่างไร หรือมีการทดสอบ unary อื่นที่ทำสิ่งที่ฉันต้องการได้หรือไม่
281 bash  shell 

3
ใช้สคริปต์เมื่อเข้าสู่ระบบ mac [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันสงสัยว่าใครสามารถช่วยฉันออกด้วยการรับไฟล์. sh ให้ทำงานเมื่อฉันลงชื่อเข้าใช้บัญชีของฉันบนคอมพิวเตอร์ของฉัน ฉันใช้ Mac OS X 10.6.7 ฉันมีไฟล์ "Example.sh" ที่ฉันต้องการเรียกใช้เมื่อลงชื่อเข้าใช้คอมพิวเตอร์ของฉัน ฉันไม่มีปัญหาในการใช้งานเมื่อฉันเข้าสู่ระบบแล้ว แต่ฉันต้องการให้มันทำงานโดยอัตโนมัติ มีคนบอกว่าจะเพิ่มลงในไฟล์เชลล์ล็อกอิน แต่ฉันไม่รู้ว่าอยู่ที่ไหน โปรดช่วยด้วย

5
การแทนที่อักขระบางตัวในสตริงด้วยอักขระอื่น
ฉันมีสตริงเหมือนAxxBCyyyDEFzzLMNและฉันต้องการจะแทนที่เกิดขึ้นทั้งหมดของX , YและZกับ_ ฉันจะบรรลุสิ่งนี้ได้อย่างไร ฉันรู้ว่าecho "$string" | tr 'x' '_' | tr 'y' '_'มันใช้งานได้ แต่ฉันต้องการที่จะทำในครั้งเดียวโดยไม่ต้องใช้ท่อ
279 string  bash 

6
ห้ามฝากไดเรกทอรีไว้ แต่อย่าเก็บเส้นทางที่สมบูรณ์แบบไว้ในที่เก็บถาวร
ฉันมีคำสั่งต่อไปนี้ในส่วนของเชลล์สคริปต์สำรอง: tar -cjf site1.bz2 /var/www/site1/ เมื่อฉันแสดงรายการเนื้อหาของไฟล์เก็บถาวรฉันจะได้รับ: tar -tf site1.bz2 var/www/site1/style.css var/www/site1/index.html var/www/site1/page2.html var/www/site1/page3.html var/www/site1/images/img1.png var/www/site1/images/img2.png var/www/site1/subdir/index.html แต่ฉันต้องการที่จะลบส่วน/var/www/site1จากไดเรกทอรีและชื่อไฟล์ภายในที่เก็บเพื่อลดความยุ่งยากในการสกัดและหลีกเลี่ยงโครงสร้างไดเรกทอรีคงที่ไร้ประโยชน์ ไม่เคยรู้ในกรณีที่ฉันจะแยกเว็บไซต์ที่/var/wwwสำรองไว้ในที่ที่ไม่มีการจัดเก็บข้อมูลเว็บไว้ สำหรับตัวอย่างข้างต้นฉันต้องการ: tar -tf site1.bz2 style.css index.html page2.html page3.html images/img1.png images/img2.png subdir/index.html ดังนั้นเมื่อฉันแตกไฟล์จะถูกแตกในไดเรกทอรีปัจจุบันและฉันไม่จำเป็นต้องย้ายไฟล์ที่ถูกแยกหลังจากนั้นและเพื่อให้โครงสร้างไดเรกทอรีย่อยถูกเก็บรักษาไว้ มีคำถามมากมายเกี่ยวกับ tar และการสำรองข้อมูลในstackoverflowและที่อื่น ๆ บนเว็บ แต่ส่วนใหญ่ขอให้วางโครงสร้างไดเรกทอรีย่อยทั้งหมด (แบน) หรือเพียงแค่เพิ่มหรือลบชื่อเริ่มต้น / ในชื่อ (I don ' ไม่รู้ว่ามันจะเปลี่ยนไปเมื่อสกัด) แต่ไม่มาก หลังจากอ่านคำตอบบางส่วนที่พบที่นี่และที่นั่นพร้อมกับคู่มือแล้วฉันลอง: tar -cjf site1.bz2 -C …
277 linux  bash  backup  tar 

15
การใช้คำสั่ง RUN ใน Dockerfile ด้วย 'แหล่งที่มา' ไม่ทำงาน
ฉันมี Dockerfile ที่ฉันรวมตัวกันเพื่อติดตั้งสภาพแวดล้อมของ vanilla python (ซึ่งฉันจะทำการติดตั้งแอพ แต่ในภายหลัง) FROM ubuntu:12.04 # required to build certain python libraries RUN apt-get install python-dev -y # install pip - canonical installation instructions from pip-installer.org # http://www.pip-installer.org/en/latest/installing.html ADD https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py /tmp/ez_setup.py ADD https://raw.github.com/pypa/pip/master/contrib/get-pip.py /tmp/get-pip.py RUN python /tmp/ez_setup.py RUN python /tmp/get-pip.py RUN pip install --upgrade pip # …
274 bash  shell  docker 

17
วิธีการตรวจสอบว่าทำงานเป็น root ในสคริปต์ทุบตี
ฉันกำลังเขียนสคริปต์ที่ต้องได้รับอนุญาตในระดับรากและฉันต้องการที่จะทำมันเพื่อที่ว่าหากสคริปต์ไม่ได้รับการเรียกใช้ในฐานะรากมันก็ก้อง "กรุณาเรียกใช้เป็นราก" และออกจาก นี่คือรหัสเทียมบางส่วนสำหรับสิ่งที่ฉันกำลังมองหา: if (whoami != root) then echo "Please run as root" else (do stuff) fi exit ฉันจะทำได้ดีที่สุด (อย่างปลอดภัยและปลอดภัย) ได้อย่างไร ขอบคุณ! อ่าเพื่อชี้แจง: ส่วน (ทำสิ่ง) จะเกี่ยวข้องกับการใช้คำสั่งที่จำเป็นต้องใช้รูท ดังนั้นการรันเป็นผู้ใช้ปกติจะเกิดข้อผิดพลาดขึ้น นี่หมายถึงการรันสคริปต์ที่ต้องการคำสั่งรูทอย่างชัดเจนโดยไม่ต้องใช้ sudo ภายในสคริปต์ฉันแค่มองหาน้ำตาลประโยค
274 bash  shell  root 

24
ระงับข้อความเตือนโดยใช้ mysql จากภายใน Terminal แต่รหัสผ่านที่เขียนในสคริปต์ทุบตี
เมื่อฉันพยายามเรียกใช้คำสั่งต่อไปนี้ใน MySQL จากภายใน Terminal: mysql -u $user -p$password -e "statement" การดำเนินการทำงานตามที่คาดไว้ แต่จะออกคำเตือนเสมอ: คำเตือน: การใช้รหัสผ่านบนอินเตอร์เฟสบรรทัดคำสั่งอาจไม่ปลอดภัย อย่างไรก็ตามฉันต้องทำคำสั่งข้างต้นโดยใช้ตัวแปรสภาพแวดล้อม ( $password) ที่เก็บรหัสผ่านของฉันเพราะฉันต้องการเรียกใช้คำสั่งอย่างซ้ำ ๆ ในสคริปต์ทุบตีจากภายในเทอร์มินัลและฉันไม่ชอบความคิดในการรอให้ปรากฏขึ้น และบังคับให้ฉันใส่รหัสผ่าน 50 หรือ 100 ครั้งในสคริปต์เดียว ดังนั้นนี่คือคำถามของฉัน: เป็นไปได้หรือไม่ที่จะระงับคำเตือน? คำสั่งทำงานอย่างถูกต้องตามที่ระบุไว้ แต่หน้าต่างจะดูยุ่งเหยิงเมื่อฉันวนลูปและรันคำสั่ง 50 หรือ 100 ครั้ง ฉันควรเชื่อฟังข้อความเตือนและอย่าเขียนรหัสผ่านในสคริปต์ของฉัน? หากเป็นเช่นนั้นฉันต้องพิมพ์รหัสผ่านทุกครั้งที่ระบบพรอมต์บังคับให้ฉันทำเช่นนั้นหรือไม่ การวิ่งman mysqlไม่ได้ช่วยพูดเพียงอย่างเดียว --show-warnings ทำให้เกิดคำเตือนที่จะแสดงหลังจากแต่ละคำสั่งถ้ามี ตัวเลือกนี้ใช้กับโหมดการโต้ตอบและแบทช์ และไม่ได้กล่าวถึงวิธีการปิดฟังก์ชั่นหากฉันไม่ได้ทำอะไรสักอย่าง ฉันใช้ OS X 10.9.1 Mavericks และใช้ MySQL 5.6 จาก …
273 mysql  bash  shell 

15
วิธีการแปลงเวลาเป็นวันที่ใน Bash?
ฉันต้องการคำสั่งเชลล์หรือสคริปต์ที่แปลงเวลา Unix เป็นวันที่ อินพุตสามารถมาจากพารามิเตอร์แรกหรือจาก stdin ซึ่งอนุญาตให้ใช้รูปแบบการใช้งานต่อไปนี้: ts2date 1267619929 และ echo 1267619929 | ts2date ทั้งสองคำสั่งควรส่งออก "พุธ 3 มีนาคม 13:38:49 2010"

8
ฉันจะตรวจสอบไวยากรณ์ของ Bash script โดยไม่เรียกใช้ได้อย่างไร
เป็นไปได้หรือไม่ที่จะตรวจสอบไวยากรณ์ของ bash script โดยไม่ต้องดำเนินการ? ใช้ Perl, perl -c 'script name'ฉันสามารถเรียกใช้ มีคำสั่งใด ๆ ที่เทียบเท่าสำหรับสคริปต์ทุบตีหรือไม่?
267 linux  bash  unix  syntax  gnu 

11
วิธีการตรวจสอบว่าไฟล์มีสตริงที่ระบุโดยใช้ Bash
ฉันต้องการตรวจสอบว่าไฟล์มีสตริงเฉพาะหรือไม่ในทุบตี ฉันใช้สคริปต์นี้ แต่มันไม่ทำงาน: if [[ 'grep 'SomeString' $File' ]];then # Some Actions fi มีอะไรผิดปกติในรหัสของฉัน
266 bash  shell  grep 

6
ค้นหาไฟล์ที่มีการเปลี่ยนแปลงใน 24 ชั่วโมงที่ผ่านมา
เช่นเซิร์ฟเวอร์ MySQL กำลังทำงานบนเครื่อง Ubuntu ของฉัน ข้อมูลบางอย่างมีการเปลี่ยนแปลงในช่วง 24 ชั่วโมงที่ผ่านมา สคริปต์อะไร (Linux) สามารถค้นหาไฟล์ที่มีการเปลี่ยนแปลงในช่วง 24 ชั่วโมงที่ผ่านมา? กรุณาระบุชื่อไฟล์ขนาดไฟล์และเวลาที่แก้ไข
265 linux  bash  find 

18
วิธีแทนที่ช่องว่างในชื่อไฟล์โดยใช้สคริปต์ทุบตี
ใครสามารถแนะนำวิธีแก้ปัญหาที่ปลอดภัยเพื่อแทนที่ช่องว่างด้วยการขีดเส้นใต้ในชื่อไฟล์และไดเรกทอรีเริ่มต้นจากไดเรกทอรีรากที่กำหนด? ตัวอย่างเช่น: $ tree . |-- a dir | `-- file with spaces.txt `-- b dir |-- another file with spaces.txt `-- yet another file with spaces.pdf กลายเป็น: $ tree . |-- a_dir | `-- file_with_spaces.txt `-- b_dir |-- another_file_with_spaces.txt `-- yet_another_file_with_spaces.pdf

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