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

สคริปต์คือชุดคำสั่งที่เขียนในไฟล์ "ข้อความธรรมดา" ตัวแปลสคริปต์ (ตัวอย่างเช่น Bash หรือ shell อื่น, Python, Perl, Ruby, ฯลฯ ) อ่านไฟล์และดำเนินการตามคำแนะนำราวกับว่าพวกมันถูกป้อนที่ command prompt

2
Tee ไม่ได้รับผลลัพธ์ทั้งหมดจากไปป์
ฉันมีสคริปต์ดำเนินการคำสั่งเช่น: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH;./some_app -i $INDEX | tee $LOG echo "Number of errors: $(grep "ERROR" $LOG | wc -l)" teeปัญหาอาจจะอยู่ในท่อ ดูเหมือนจะไม่ได้รับผลลัพธ์ทั้งหมด เมื่อแอปพลิเคชันหยุดทำงานไม่กี่บรรทัดสุดท้ายของเอาต์พุต (โดยปกติจะเป็นแอปที่มีข้อผิดพลาดร้ายแรง) หายไป เมื่อฉันเรียกใช้แอพโดยไม่ต้องไปป์teeฉันก็เอามันออกมาได้ ฉันจะบังคับให้สคริปต์รอทีเพื่อประมวลผลเอาต์พุตทั้งหมดได้อย่างไร

2
วิธีตั้งค่าทางลัดบนเดสก์ท็อปใน KDE เพื่อเรียกใช้คำสั่งเทอร์มินัล
ฉันกำลังพยายามสร้างทางลัดบนเดสก์ท็อปเพื่อเปิดตัวSpyderซึ่งสามารถเปิดใช้งานได้โดยการพิมพ์spyderในเทอร์มินัล ฉันทำspy.shสคริปต์ที่มีspyderอยู่ในนั้น จะทำงานร่วมกับและbash spy.sh ./spy.shแต่เมื่อฉันสร้างทางลัดบนเดสก์ท็อปเช่นนี้: [Desktop Entry] Name=spyd Exec=/Desktop/spy.sh Comment= Icon= Type=Application Terminal=true มันทำให้เกิดข้อผิดพลาด: "มีข้อผิดพลาดในการสร้างกระบวนการลูกสำหรับเทอร์มินัลล้มเหลวในการดำเนินการกระบวนการลูก“ /Desktop/spy.sh” (ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)" ข้อผิดพลาดเดียวกันเมื่อฉันเปลี่ยนเป็น Exec=spyder ฉันควรทำอย่างไรดี?

4
วิธีแยกเอาต์พุตคำสั่งกับแต่ละบรรทัด
list=`ls -a R*` echo $list ภายในเชลล์สคริปต์คำสั่ง echo นี้จะแสดงรายการไฟล์ทั้งหมดจากไดเรกทอรีปัจจุบันเริ่มต้นด้วย R แต่ในบรรทัดเดียว ฉันจะพิมพ์แต่ละรายการในหนึ่งบรรทัดได้อย่างไร ฉันต้องมีคำสั่งทั่วไปสำหรับทุกสถานการณ์ที่เกิดขึ้นกับls, du, find -type -dฯลฯ
12 bash  scripts 

2
ไม่รวมไฟล์และไดเรกทอรีบางตัวเมื่อทำการลบไฟล์
dataไดเรกทอรีระดับบนสุดของฉันคือ dataมีหลายไดเรกทอรีและไดเรกทอรีเหล่านี้มีไดเรกทอรีย่อย ฉันต้องลบไฟล์และไดเรกทอรีdata/ทั้งหมดยกเว้นไฟล์หลายไฟล์ในบางไดเรกทอรี ตัวอย่างเช่นข้อมูลรวมถึงไดเรกทอรีและ100 101ผมแค่อยากจะให้a.txtและb.txtไฟล์ใน100/และc.txtและd.txtไฟล์ใน101/ขณะที่ลบไฟล์อื่น ๆ ทั้งหมดและไดเรกทอรีในและ100101 ตัวอย่าง: . ├── 100 │ ├── a.txt │ ├── b.txt │ ├── c.txt │ └── d.txt └── 101 ├── a.txt ├── b.txt ├── c.txt └── d.txt ฉันใช้rm -rf !(a.txt|b.txt)คำสั่ง แต่ฉันไม่สามารถใช้คำสั่งนี้สำหรับแต่ละไดเรกทอรีโดยอัตโนมัติ

7
รับ UUID จาก / ระบบไฟล์จากสคริปต์
ฉันจะรับ UUID ของไดรฟ์ข้อมูลที่มี/ระบบไฟล์ได้อย่างไร blkid -o listสิ่งที่ดีที่สุดสำหรับการที่ฉันได้พบว่าวันที่ แต่ผลลัพธ์นี้เป็นมนุษย์อ่านได้และยากที่จะแยกวิเคราะห์ อาจจะมีวิธีที่ดีกว่า ฉันต้องการใช้การจัดการการกำหนดค่าพารามิเตอร์ด้วยเทมเพลตเฉพาะระบบ หมายเหตุเกี่ยวกับblkidgotcha สำหรับผู้ที่อาจนำมาใช้ผลของคำถามของฉันในอนาคต: แคชผลของการทำงานก่อนหน้านี้ที่blkid /etc/blkid.tabนั่นหมายความว่าการทำงานblkidในฐานะผู้ใช้ที่ไม่ใช่รูทในครั้งแรกจะไม่ส่งคืนข้อมูลใด ๆ นอกจากนี้การรันblkidในฐานะผู้ใช้ที่ไม่ใช่รูทหลังจากรันรูทจะส่งคืนข้อมูลเก่า (อาจไม่ถูกต้อง)

4
วิธีหยุดสคริปต์ bash เมื่อเงื่อนไขล้มเหลว
ที่นี่มันแสดงให้เห็นถึงการใช้||และ&&ในบรรทัดเดียวเพื่อเชื่อมต่อการดำเนินการคำสั่ง: ฉันจะตรวจสอบข้อผิดพลาด apt-get ในสคริปต์ทุบตีได้อย่างไร ฉันกำลังพยายามหยุดการประมวลผลสคริปต์หากเงื่อนไขบางอย่างล้มเหลว เช่น false || echo "Obvious error because its false on left" && exit ที่นี่มันพิมพ์Obvious error because its false on the leftและออกจากคอนโซลซึ่งเป็นสิ่งที่ฉันต้องการ true || echo "This shouldn't print" && exit ที่นี่ไม่มีการพิมพ์เสียงสะท้อน แต่exitคำสั่งทำงานได้ดีเช่นคอนโซลถูกปิดไม่ควรexitคำสั่งไม่ทำงานเพราะคำสั่ง echo ทางด้านขวาไม่ได้ถูกดำเนินการ หรือโดยค่าเริ่มต้นข้อความที่ถือว่าเป็นเท็จทางด้านซ้ายของ&&ผู้ประกอบการ? แก้ไข: ฉันควรได้กล่าวถึงก่อนหน้านี้เป้าหมายของฉันคือการสะท้อนข้อผิดพลาดและออกหากไม่ชัดเจน wrt กรณีเฉพาะของฉันในการจับข้อผิดพลาดเมื่อจัดกลุ่มเงื่อนไขโดยใช้ && และ | |, @ bodhi.zazen คำตอบจะช่วยแก้ปัญหา …

5
วิธีพิมพ์ค่าในไฟล์ข้อความไปยังไฟล์คอลัมน์โดยใช้เชลล์สคริปต์
ฉันมี output.txt จากการรันเชลล์สคริปต์ดังนี้: abc.txt errorstatus1 Fri Nov 11 02:00:09 2016 def.txt errorstatus2.txt Sat Nov 12 03:00:09 2016 ไฟล์ข้อความมีหลายรายการทีละบรรทัดในลักษณะเดียวกัน ฉันต้องการพิมพ์ค่าเหล่านี้ลงในคอลัมน์: ชื่อไฟล์, สถานะและการประทับเวลาดังนี้: Filename Status Timestamp abc.txt errorstatus1 Fri Nov 11 02:00:09 2016 def.txt errorstatus2 Sat Nov 12 03:00:09 2016

3
ฉันจะติดตามเวลาจากบรรทัดคำสั่งได้อย่างไร
ฉันกำลังมองหาคำสั่งเพื่อติดตามเวลา ฉันจินตนาการถึงเวิร์กโฟลว์ต่อไปนี้: เรียกใช้คำสั่ง ... ทำอย่างอื่น ... กลับไปที่หน้าต่างเทอร์มินัลแล้วหยุดคำสั่ง ในฐานะที่เป็นเอาท์พุทที่คุณได้รับเวลาที่ผ่านไประหว่าง 3 และ 1

2
อะไรคือข้อแตกต่างระหว่าง ls [13] และ ls {1,3}
touch inv{1..3}.txtฉันสร้างสามไฟล์ในไดเรกทอรีของฉันโดยใช้คำสั่ง ตอนนี้ฉันใช้คำสั่งสองคำสั่งและเอาต์พุตของพวกเขาก็เหมือนกันมาก คำสั่งทั้งสองนั้นคือls inv[13].txtและls {1,3}.txt. แล้วสองคนนี้ต่างกันอย่างไร วงเล็บเหลี่ยมแตกต่างกันอย่างไรเมื่อเปรียบเทียบกับเครื่องมือจัดฟัน นอกจากนี้ฉันยังได้ค้นหาคำว่า "linux [.. ]" แต่ไม่พบอะไรเลยฉันจึงรู้ได้ว่าสิ่งเหล่านี้เรียกว่าอะไรในคำศัพท์ของ linux? ขอบคุณ

3
rm ทำงานบนบรรทัดรับคำสั่ง แต่ไม่อยู่ในสคริปต์
เมื่อฉันทำrm *.old.*ในบรรทัดคำสั่งจะลบอย่างถูกต้อง แต่เมื่อฉันทำในส่วนต่อไปของสคริปต์ของฉันมันไม่ได้ rm *.old.*ไฟล์ทั้งหมด มีอะไรผิดปกติในสคริปต์ทุบตีของฉัน: for i in ./*; do if [[ -f $i ]]; then if [[ $i == *.old.* ]]; then oldfile=$i echo "this file is to be removed: $oldfile" rm $oldfile exec 2>errorfile if [ -s $errorfile ] then echo "rm failed" else echo "removed $oldfile!" …
11 bash  scripts  rm 

3
ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `('
เมื่อฉันใช้โค้ดด้านล่างในเทอร์มินัล Ubuntu มันใช้งานได้ดี: rm !(*.sh) -rf แต่ถ้าฉันวางโค้ดบรรทัดเดียวกันในเชลล์สคริปต์ (clean.sh) และรันเชลล์สคริปต์จากเทอร์มินัลมันจะพ่นข้อผิดพลาด: สคริปต์ clean.sh: #!/bin/bash rm !(*.sh) -rf ข้อผิดพลาดที่ฉันได้รับ: ./clean.sh: line 2: syntax error near unexpected token `(' ./clean.sh: line 2: `rm !(*.sh) -rf' คุณช่วยได้ไหม

2
จะไฮไลต์หน้าจอปัจจุบัน (หรือหน้าต่าง) ได้อย่างไร?
ฉันใช้การตั้งค่าสองหน้าจอในที่ทำงานและในขณะที่มันมักจะช่วยได้มากกว่าที่ฉันเจ็บฉันมีปัญหาบางอย่างกับมัน หนึ่งในนั้นมีปัญหากับการโฟกัสที่ต่อท้าย - บางครั้งฉันทำผิดพลาดในการพิมพ์บนหน้าจอที่ไม่ถูกต้อง (การโฟกัสคือการลากเคอร์เซอร์ของฉัน แต่มันไม่ง่ายเลยที่จะสังเกตเห็นว่าเคอร์เซอร์อยู่บนหน้าจออื่น ๆ สิ่งนี้น่ารำคาญมากเมื่อแทนที่จะพิมพ์ฉันทำให้เกิดการกระทำที่แตกต่างกันหลายอย่าง (ทางลัดคีย์เดียวในธันเดอร์เบิร์ด) มีวิธีการเน้นหน้าจอหรือหน้าต่างที่ใช้งาน (ตัวอย่างเช่นการใช้เส้นขอบที่มองเห็นได้ง่ายกว่า - แม้สำหรับหน้าต่างที่ขยายใหญ่สุด)? แก้ไข: ฉันคิดว่าทางออกที่ดีน่าจะเป็นภาพเคลื่อนไหวสั้น ๆ เมื่อหน้าต่างได้รับโฟกัส

3
ปัญหาเชลล์สคริปต์: สคริปต์งาน cron เพื่อรีสตาร์ทเซิร์ฟเวอร์ MySQL เมื่อหยุดโดยไม่ตั้งใจ
ฉันมีสคริปต์นี้ฉันใช้เพื่อตั้งค่างาน CRON เพื่อเรียกใช้สคริปต์นี้เพื่อให้สามารถตรวจสอบว่าบริการ MySQL กำลังทำงานอยู่หรือไม่ ถ้าไม่เช่นนั้นจะเริ่มบริการ MySQL: #!/bin/bash service mysql status| grep 'mysql start/running' > /dev/null 2>&1 if [ $? != 0 ] then sudo service mysql restart fi ฉันมีงานติดตั้ง cron เป็น sudo crontab -e แล้วเพิ่ม */1 * * * * /home/ubuntu/mysql-check.sh ปัญหาคือมันรีสตาร์ท MySQL ในทุก ๆ การประมวลผลงาน cron .. แม้ว่าเซิร์ฟเวอร์จะรันมันก็จะเริ่มบริการ …
11 bash  mysql  cron  scripts 

1
วิธีการเปลี่ยนชื่อไฟล์ (ภาพ) ตามไฟล์ CSV
สิ่งที่ฉันมีและต้องการบรรลุ: มีหลายพันภาพในโฟลเดอร์เดียว ฉันมีไฟล์ CSV พร้อมคอลัมน์ต่อไปนี้: A: ชื่อเดิม B: เปลี่ยนชื่อ แถวทั่วไปมีลักษณะดังนี้: "original-1.jpg","renamed-1.jpg" "original-2.jpg","renamed-2.jpg" ฉันสามารถลบเครื่องหมายคำพูดได้นั่นไม่ใช่ปัญหา ตอนนี้ฉันต้องการใช้แอพหรือเรียกใช้สคริปต์ที่จะค้นหารูปภาพทั้งหมดในคอลัมน์ A และเปลี่ยนชื่อเป็นชื่อในคอลัมน์ B (เช่น original-1.jpg -> renamed-1.jpg) มีคำตอบรอบ ๆ เช่น: http://ubuntuforums.org/showthread.php?t=1069652 http://systembash.com/content/one-line-batch-rename-files-using-csv-input-file-and-awk/ อย่างไรก็ตามมีสคริปต์บางส่วนที่เกี่ยวข้องและฉันไม่แน่ใจว่าสคริปต์เหล่านั้นทั้งหมดมีผลกับโฟลเดอร์ที่คุณเก็บสคริปต์ไว้หรือไม่หรือสามารถเปลี่ยนชื่อไฟล์ทั้งหมดในดิสก์ที่ตรงตามเงื่อนไข แน่นอนว่าต้องหลีกเลี่ยงหลัง สิ่งที่ฉันกำลังมองหาคือคำแนะนำง่ายๆในการเปลี่ยนชื่อไฟล์และวิธีเลือกโฟลเดอร์ที่มีไฟล์ ขอบคุณล่วงหน้า.

3
เรียกใช้สคริปต์โดยอัตโนมัติในเซิร์ฟเวอร์หลังจากการเชื่อมต่อ ssh
วิธีการเรียกใช้สคริปต์โดยอัตโนมัติในเซิร์ฟเวอร์หลังจากระบบไคลเอนต์สร้างการเชื่อมต่อ ssh กับเซิร์ฟเวอร์ ตัวอย่างเช่นสมมติว่าผู้ใช้จะเข้าสู่ระบบคอมพิวเตอร์ของฉันจากระบบอื่น (เชื่อมต่อผ่าน LAN) โดยใช้การเชื่อมต่อ ssh ในเวลานั้นสคริปต์ (python หรือ shell) ควรรันโดยอัตโนมัติในระบบของฉันเพื่อทำการตรวจสอบความถูกต้อง? วิธีการเรียกใช้สคริปต์โดยอัตโนมัติในระบบเซิร์ฟเวอร์

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