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

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

15
เส้นทางสัมบูรณ์ของสคริปต์ Bash กับ OS X
ฉันกำลังพยายามหาเส้นทางที่แน่นอนไปยังสคริปต์ที่กำลังทำงานอยู่บน OS X ฉันเห็นการตอบกลับreadlink -f $0มากมาย อย่างไรก็ตามเนื่องจาก OS X readlinkเหมือนกับ BSD จึงไม่สามารถใช้งานได้ (ใช้ได้กับเวอร์ชันของ GNU) มีวิธีแก้ปัญหาแบบสำเร็จรูปหรือไม่?
104 macos  bash  path 

20
พยายามใช้ bash บน Windows และไม่มีข้อความการกระจายที่ติดตั้งไว้
ฉันพยายามใช้bashบนWindows 10แต่ฉันได้รับข้อความนี้เมื่อพยายามเรียกใช้ bash: ระบบย่อยของ Windows สำหรับ Linux ไม่มีการกระจายที่ติดตั้ง สามารถติดตั้งการแจกจ่ายได้โดยไปที่ Windows Store: https://aka.ms/wslstoreกดปุ่มใด ๆ เพื่อดำเนินการต่อ ... เมื่อฉันไปที่ url ที่เปิดแอพWindows Storeไม่มีสัญญาณของการแจกจ่ายLinux ที่นั่น เวอร์ชัน Windows ของฉันคือ (ที่มุมล่างขวาของหน้าจอ): ตัวอย่าง Windows 10 Enterprise Insider สำเนาการประเมินสร้าง 16215.rs_prelease.170603-1840 ฉันทำตามคำแนะนำในคู่มือนี้คู่มือการติดตั้งและยังดูวิดีโอนี้การแก้ไขโค้ดและไฟล์บน Windows Subsystem for Linux บน Windows 10จาก Scott Hanselman แต่พวกเขาไม่ได้รับข้อความว่าไม่มีการแจกจ่ายที่ติดตั้ง ความช่วยเหลือใด ๆ

29
ฉันจะรับค่า INI ภายในเชลล์สคริปต์ได้อย่างไร
ฉันมีไฟล์ parameters.ini เช่น: [parameters.ini] database_user = user database_version = 20110611142248 ฉันต้องการอ่านและใช้เวอร์ชันฐานข้อมูลที่ระบุในไฟล์ parameters.ini จากภายใน bash shell script เพื่อให้ฉันสามารถประมวลผลได้ #!/bin/sh # Need to get database version from parameters.ini file to use in script php app/console doctrine:migrations:migrate $DATABASE_VERSION ฉันจะทำอย่างไร
104 bash  shell  config  ini 

7
จะลบไฟล์หลายไฟล์พร้อมกันใน Bash บน Linux ได้อย่างไร
ฉันมีรายการไฟล์นี้บนเซิร์ฟเวอร์ Linux: abc.log.2012-03-14 abc.log.2012-03-27 abc.log.2012-03-28 abc.log.2012-03-29 abc.log.2012-03-30 abc.log.2012-04-02 abc.log.2012-04-04 abc.log.2012-04-05 abc.log.2012-04-09 abc.log.2012-04-10 ฉันได้ลบไฟล์บันทึกที่เลือกทีละไฟล์โดยใช้คำสั่งrm -rfดูด้านล่าง: rm -rf abc.log.2012-03-14 rm -rf abc.log.2012-03-27 rm -rf abc.log.2012-03-28 มีวิธีอื่นเพื่อให้ฉันสามารถลบไฟล์ที่เลือกพร้อมกันได้หรือไม่?
103 linux  bash  rm 

22
การสร้างผู้ใช้และรหัสผ่านใหม่ด้วย Ansible
ฉันมีงานที่ตอบได้ซึ่งสร้างผู้ใช้ใหม่บน ubuntu 12.04; - name: Add deployment user action: user name=deployer password=mypassword มันเสร็จสมบูรณ์ตามที่คาดไว้ แต่เมื่อฉันเข้าสู่ระบบในฐานะผู้ใช้นั้นและพยายาม sudo ด้วยรหัสผ่านฉันตั้งไว้เสมอว่ามันไม่ถูกต้อง ผมทำอะไรผิดหรือเปล่า?
103 bash  shell  ubuntu  ansible 


6
Bash: คัดลอกไฟล์ที่มีชื่อแบบวนซ้ำรักษาโครงสร้างโฟลเดอร์
ฉันหวังว่า: cp -R src/prog.js images/icon.jpg /tmp/package จะให้โครงสร้างสมมาตรใน dir ปลายทาง: /tmp | +-- package | +-- src | | | +-- prog.js | +-- images | +-- icon.jpg แต่ทั้งสองไฟล์จะถูกคัดลอกไปยัง / tmp / package แทน สำเนาแบน (นี่คือบน OSX) มีฟังก์ชั่นทุบตีง่ายๆที่ฉันสามารถใช้เพื่อคัดลอกไฟล์ทั้งหมดรวมถึงไฟล์ที่ระบุโดยสัญลักษณ์แทน (เช่น src / *. js) ลงในตำแหน่งที่ถูกต้องภายในไดเร็กทอรีปลายทาง คล้ายกับ "สำหรับแต่ละไฟล์ให้เรียกใช้mkdir -p $(dirname "$file"); cp "$file" …
103 bash  shell 


15
การนับจำนวนไดเร็กทอรีในไดเร็กทอรีเฉพาะ
วิธีนับจำนวนโฟลเดอร์ในไดเร็กทอรีเฉพาะ ฉันใช้คำสั่งต่อไปนี้ แต่จะมีคำสั่งพิเศษเสมอ find /directory/ -maxdepth 1 -type d -print| wc -l ตัวอย่างเช่นถ้าฉันมี 3 โฟลเดอร์คำสั่งนี้จะให้ 4. ถ้ามี 5 โฟลเดอร์คำสั่งจะมี 6 ทำไม?
103 linux  bash 

5
คำสั่งเชลล์แบบอะซิงโครนัส
ฉันกำลังพยายามใช้เชลล์สคริปต์เพื่อเริ่มคำสั่ง ฉันไม่สนใจว่า / เมื่อไหร่ / อย่างไร / ทำไมมันจบ ฉันต้องการให้กระบวนการเริ่มต้นและทำงาน แต่ฉันต้องการกลับไปที่เชลล์ของฉันทันที ...

6
อ่านอินพุตของผู้ใช้ภายในลูป
ฉันมีสคริปต์ทุบตีซึ่งมีลักษณะดังต่อไปนี้ cat filename | while read line do read input; echo $input; done แต่สิ่งนี้ไม่ได้ให้ผลลัพธ์ที่ถูกต้องแก่ฉันอย่างชัดเจนเมื่อฉันอ่านใน while ลูปมันพยายามอ่านจากชื่อไฟล์ไฟล์เนื่องจากการเปลี่ยนเส้นทาง I / O ที่เป็นไปได้ วิธีอื่นในการทำเช่นเดียวกัน?
103 bash  while-loop 

6
วิธีที่สะอาดในการเปิดเว็บเบราว์เซอร์จากเชลล์สคริปต์?
ในสคริปต์ทุบตีฉันต้องเปิดเว็บเบราว์เซอร์ของผู้ใช้ ดูเหมือนจะมีหลายวิธีในการทำสิ่งนี้: $BROWSER xdg-open gnome-open บน GNOME www-browser x-www-browser ... มีวิธีที่เป็นมาตรฐานมากกว่าวิธีอื่นในการทำเช่นนี้ที่ใช้ได้กับแพลตฟอร์มส่วนใหญ่หรือไม่หรือฉันควรทำสิ่งนี้: #/usr/bin/env bash if [ -n $BROWSER ]; then $BROWSER 'http://wwww.google.com' elif which xdg-open > /dev/null; then xdg-open 'http://wwww.google.com' elif which gnome-open > /dev/null; then gnome-open 'http://wwww.google.com' # elif bla bla bla... else echo "Could not detect the web browser …

12
งาน Cron และเวลาสุ่มภายในไม่กี่ชั่วโมง
ฉันต้องการความสามารถในการเรียกใช้สคริปต์ PHP 20 ครั้งต่อวันในเวลาสุ่มอย่างสมบูรณ์ ฉันยังต้องการให้มันทำงานระหว่าง 9.00 น. - 23.00 น. เท่านั้น ฉันคุ้นเคยกับการสร้างงาน cron ใน linux
103 bash  cron  sh 

3
คำสั่งเพื่อหลีกเลี่ยงสตริงใน bash
ฉันต้องการคำสั่ง bash ที่จะแปลงสตริงเป็นสิ่งที่หนี นี่คือตัวอย่าง: echo "hello\world" | escape | someprog ในกรณีที่คำสั่งการหลบหนีทำให้เข้า"hello\world" "hello\\\world"จากนั้น someprog สามารถใช้งานได้"hello\\world"ตามที่คาดหวัง แน่นอนว่านี่เป็นตัวอย่างที่เรียบง่ายของสิ่งที่ฉันจะทำจริงๆ
103 bash  escaping 

15
จะค้นหาไฟล์ที่ใหญ่ที่สุดในไดเร็กทอรีและไดเร็กทอรีย่อยได้อย่างไร
เราเพิ่งเริ่มคลาส UNIX และกำลังเรียนรู้คำสั่ง Bash ที่หลากหลาย งานของเราเกี่ยวข้องกับการดำเนินการคำสั่งต่างๆในไดเร็กทอรีที่มีโฟลเดอร์จำนวนมากอยู่ข้างใต้เช่นกัน ฉันรู้วิธีแสดงรายการและนับไฟล์ปกติทั้งหมดจากโฟลเดอร์รูทโดยใช้: find . -type l | wc -l แต่ฉันต้องการทราบว่าจะไปจากที่ใดเพื่อค้นหาไฟล์ที่ใหญ่ที่สุดในไดเรกทอรีทั้งหมด ฉันเคยเห็นบางอย่างเกี่ยวกับduคำสั่ง แต่เราไม่ได้เรียนรู้สิ่งนั้นดังนั้นในสิ่งที่เราได้เรียนรู้ฉันคิดว่าเราจำเป็นต้องเชื่อมต่อกับls -tคำสั่งอย่างใด และยกโทษให้ฉันถ้า 'ศัพท์แสง' ของฉันไม่ถูกต้องฉันก็ยังชินอยู่ดี!

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