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

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

8
คุณส่งออกชื่อไฟล์ในคำสั่ง find ขณะใช้ -exec ได้อย่างไร
ฉันใช้บรรทัดต่อไปนี้เพื่อค้นหาไดเรกทอรีย่อยทั้งหมดของ PWD และเรียกใช้svnadmin verifyในแต่ละไดเรกทอรี (ฉันรู้อยู่แล้วว่าพวกเขาเป็นที่เก็บข้อมูลการโค่นล้ม) find ./* -maxdepth 0 -exec svnadmin verify {} \; สิ่งนี้ทำงานได้ดีนอกเหนือจากข้อเท็จจริงที่ว่าผลลัพธ์จะเป็นดังนี้: * Verifying repository metadata ... * Verifying metadata at revision 1 ... * Verifying metadata at revision 2 ... * Verifying metadata at revision 4 ... * Verifying metadata at revision 5 ... * Verifying …

9
ชื่อไฟล์ที่มีช่องว่างสำหรับลูปค้นหาคำสั่ง
ฉันมีสคริปต์ที่ค้นหาไฟล์ทั้งหมดในหลาย ๆ โฟลเดอร์ย่อยและเก็บถาวรเพื่อ tar สคริปต์ของฉันคือ for FILE in `find . -type f -name '*.*'` do if [[ ! -f archive.tar ]]; then tar -cpf archive.tar $FILE else tar -upf archive.tar $FILE fi done คำสั่ง find ให้ผลลัพธ์ต่อไปนี้แก่ฉัน find . -type f -iname '*.*' ./F1/F1-2013-03-19 160413.csv ./F1/F1-2013-03-19 164411.csv ./F1-FAILED/F2/F1-2013-03-19 154412.csv ./F1-FAILED/F3/F1-2011-10-02 212910.csv …
33 bash  scripts  find 

1
ฉันจะทำให้ cowsay พูดบางสิ่งได้ทุกครั้งที่ปิดเทอร์มินัลได้อย่างไร
ฉันต้องการ cowsay เพื่อพิมพ์บางอย่างเช่น "มีวันที่ดี" เมื่อฉันปิดสถานี ฉันรู้ว่าฉันต้องมีสคริปต์บางอย่าง แต่ฉันไม่แน่ใจด้วยซ้ำว่าจะเขียนสคริปต์หรือใช้อย่างไรเมื่อมีการเขียน คำแนะนำใด ๆ?
32 bash  scripts 

6
วิธีการตรวจสอบกระบวนการกำลังทำงานอยู่หรือไม่
ฉันต้องการตรวจสอบกระบวนการเฉพาะในการทำงานหรือไม่ ฉันอ่านคำถามและคำตอบนี้ แต่ฉันไม่ได้รับการแก้ปัญหาเฉพาะใด ๆ ต่อไปนี้เป็นตัวอย่างที่ฉันพยายาม: ฉันได้สร้างไฟล์และเรียกใช้สคริปต์นี้บนพื้นหลังเช่นabc.shsh abc.sh & ตอนนี้ไฟล์นี้กำลังทำงานบนพื้นหลังและฉันใช้ps aux | grep "abc"คำสั่ง ต่อไปนี้เป็นผลลัพธ์ของคำสั่งนี้: prakash 3594 0.0 0.0 4388 820 pts/0 S+ 16:44 0:00 grep --color=auto abc หลังจากนั้นฉันหยุดabc.shสคริปต์ทำงานและยิงคำสั่งเดียวกันps aux | grep "abc"คำสั่ง แต่ฉันได้รับผลลัพธ์เดียวกันเช่น: prakash 3594 0.0 0.0 4388 820 pts/0 S+ 16:44 0:00 grep --color=auto abc มีวิธีอื่นในการค้นหากระบวนการที่กำลังทำงานอยู่หรือไม่?

1
เพิ่มตัวแปรสภาพแวดล้อมให้กับ. bashrc ผ่านสคริปต์
ฉันต้องเพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายของไฟล์. bashrc ใน Ubuntu ฉันจะเพิ่มบรรทัดเหล่านี้โดยอัตโนมัติโดยใช้สคริปต์ได้อย่างไร ถ้าฉันรันสคริปต์มันจะแทรกบรรทัดที่ท้ายไฟล์. bashrc โดยอัตโนมัติ export APP="/opt/tinyos-2.x/apps" export TOS="/opt/tinyos-2.x/tos"
31 scripts  bashrc 

3
การซ่อนเอาต์พุตของคำสั่ง
ฉันมีสคริปต์ที่ตรวจสอบว่ามีการติดตั้งแพคเกจหรือไม่และไม่ว่าจะใช้พอร์ต 8080 โดยกระบวนการเฉพาะหรือไม่ ฉันไม่เคยมีประสบการณ์กับทุบตีเลยดังนั้นฉันจึงทำสิ่งนี้: if dpkg -s net-tools; then if netstat -tlpn | grep 8080 | grep java; then echo "Shut down server before executing this script" exit fi else echo "If the server is running please shut it down before continuing with the execution of this script" fi # …
31 bash  scripts 

8
จะรักษา“ dot files” ไว้ภายใต้การควบคุมเวอร์ชันได้อย่างไร?
Etckeeper/etcเป็นเครื่องมือที่ดีสำหรับการติดตามการเปลี่ยนแปลงแฟ้มการกำหนดค่าของคุณ สิ่งสำคัญบางประการเกี่ยวกับมันโดดเด่นจริงๆ มันสามารถใช้กับ VCS ได้หลากหลาย: git, mercurial, darcs หรือ bzr นอกจากนี้ยังทำหน้าที่อัตโนมัติทุกวันและเมื่อใดก็ตามที่คุณติดตั้งลบหรืออัพเกรดแพ็คเกจ นอกจากนี้ยังติดตามการอนุญาตของไฟล์และข้อมูลเมตาความเป็นเจ้าของของผู้ใช้ / กลุ่ม ฉันต้องการเก็บ "dot files" ไว้ในโฮมไดเร็กตอรี่ของฉันภายใต้การควบคุมเวอร์ชันเช่นกันโดยเฉพาะตลาดสด ไม่มีใครรู้ว่าเครื่องมือเช่น etckeeper มีอยู่เพื่อจุดประสงค์นี้หรือไม่? กรณีที่เลวร้ายที่สุดที่ฉันคิดว่างาน cron อย่างง่ายที่ใช้bzr add && bzr ciครั้งเดียวหรือสองครั้งต่อวันพร้อมกับการเพิ่ม~/Documents, ~/Musicฯลฯ ให้กับ.bzrignore ทุกคนที่ได้ทำสิ่งที่คล้ายกับสคริปต์หรือไม่? แม้ว่าฉันจะชอบตลาดสด แต่ตัวเลือกอื่นอาจน่าสนใจ

4
เรียกใช้คำสั่งที่ต้องใช้ sudo หลังจากเวลาผ่านไป
ฉันมักจะทำ sleep 4h; command เพื่อรันคำสั่งหลังจาก 4 ชม. อย่างไรก็ตามหากคำสั่งนั้นต้องการsudoมันจะไม่ทำงาน เป็นไปได้หรือไม่ที่จะsudoอนุญาตในขณะที่ฉันใช้sleepคำสั่ง?
30 bash  scripts  sudo 

2
เรียกใช้งานสคริปต์เมื่อออกจากระบบ / รีบูต / ปิดระบบใน Ubuntu
ฉันต้องการเรียกใช้.shไฟล์โดยใช้ bash เมื่อล็อกเอาต์และปิดตัว Ubuntu ฉันค้นหาเว็บขึ้นและลงและพบเฉพาะการแก้ไขสำหรับ KDE และ GNOME สคริปต์นั้นง่ายฉันแค่ต้องรู้ว่าฉันสามารถเพิ่มบรรทัดของรหัสไปยังแฟ้ม "logoff / shutdown" หรือถ้าฉันต้องการอ้างอิงในสคริปต์อื่น

7
ฉันจะทดสอบเชลล์สคริปต์ใน "สภาพแวดล้อมที่ปลอดภัย" เพื่อหลีกเลี่ยงอันตรายต่อคอมพิวเตอร์ของฉันได้อย่างไร
ฉันต้องการติดตั้งสคริปต์ทุบตีที่เรียกว่า 42FileChecker โดยใช้คำสั่ง: git clone https://github.com/jgigault/42FileChecker ~/42FileChecker && cd ~/42FileChecker && bash ./42FileChecker.sh แต่ฉันไม่รู้ว่า 42FileChecker.sh จะทำสิ่งแปลก ๆ บนพีซีของฉันเพราะฉันเป็นมือใหม่และไม่รู้ว่าเกิดอะไรขึ้นในสคริปต์นั้น มีวิธีเรียกใช้ในเทอร์มินัลจำลองหรือโฟลเดอร์รากจำลองหรืออะไรทำนองนั้นเพื่อดูว่าเกิดอะไรขึ้นเพื่อที่ฉันจะได้หลีกเลี่ยงสิ่งที่บ้าเหมือนการฟอร์แมตไดรฟ์ของฉัน ฉันต้องการทราบวิธีการทดสอบเชลล์สำหรับเชลล์สคริปต์ในอนาคตด้วยเช่นกันแม้ว่า 42FileChecker.sh จะปลอดภัย

4
มีวิธีใดที่จะทำให้ฮอตคีย์ปิดหน้าจอได้หรือไม่
ฉันจะสร้างสคริปต์ (หรือเปลี่ยนแปลงบางอย่าง) เพื่อให้ฉันปิดหน้าจอใน Ubuntu (12.04) ได้ทุกเมื่อที่ต้องการวิธีปิดหน้าจอในโทรศัพท์มือถือ และฉันจะสร้างคีย์ผสม (ทางลัด) เพื่อเรียกใช้สคริปต์ได้อย่างไร ฉันต้องการประหยัดพลังงาน ฉันเคยเห็นคำถามนี้ การปิดมอนิเตอร์ด้วยไอคอนแต่ไม่มีปุ่มลัดใด ๆ ยิ่งไปกว่านั้นในคำตอบมันบอกว่ามีหลายวิธีที่จะทำสิ่งนี้ให้สำเร็จดังนั้นฉันจึงอยากรู้มากขึ้น

6
วิธีการเขียน shscript เพื่อฆ่า -9 a pid ซึ่งพบได้ผ่าน lsof -i
ฉันใช้ทอมแคทและบางครั้งเมื่อฉันบอกให้หยุดมันไม่ได้ฆ่ากระบวนการอย่างถูกต้อง วิธีของฉันเกี่ยวกับสิ่งนี้ก็เช่นกัน: lsof -i tcp:8080 ผลลัพธ์ใด: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 888 root 35u IPv6 780659 0t0 TCP *:http-alt (LISTEN) java 888 root 39r IPv6 790103 0t0 TCP localhost:58916->localhost:http-alt (CLOSE_WAIT) java 888 root 40r IPv6 792585 0t0 TCP localhost:58936->localhost:http-alt (CLOSE_WAIT) java 888 root 75r IPv6 …
29 bash  scripts 

7
สคริปต์หรือฟังก์ชันเพื่อส่งคืนจำนวนวันนับจากวันนี้จนถึงวันที่กำหนด
ฉันต้องการเขียนสคริปต์หรือฟังก์ชั่นเพื่อบอกฉันว่ากี่วันนับจากนี้จนถึงวันที่กำหนดในอนาคต สิ่งที่ฉันกำลังดิ้นรนเพื่อหาวิธีคือการประมวลผลวันที่ที่กำหนดและเปรียบเทียบกับวันที่ปัจจุบัน ... ฉันจินตนาการถึงบางอย่างเช่น read -p "enter the date in the format YYYY-MM-DD " แล้วฉันคิดว่าฉันมีสตริงที่ไม่มีความหมายต่อเชลล์และฉันต้องทำการประเมินบางอย่างเช่น ... ?? (นี่เป็นเพียงตัวอย่าง; ฉันคิดว่าbcจะต้อง) i=$(($(date +%Y)-${REPLY%%-*})) j=$(($(date +%m)-${REPLY:5:2})) k=$(($(date +%d)-${REPLY##*-})) แล้วฉันก็ไม่รู้จะทำยังไงกับตัวเลขเหล่านั้น ... ? if $i > 1 then assign l=$((i*365)) and else what?? # what about leap years? Using $j somehow assign m # confused …

4
ฉันสามารถแก้ไขไฟล์ bash script (.sh) ในขณะที่กำลังรันได้หรือไม่
สมมติว่าฉันมีสคริปต์script.shซึ่งใช้เวลาพอสมควรในการดำเนินการ ./script.shผมดำเนินการนั้น ในขณะที่มันกำลังทำงานในหน้าต่าง terminal script.shผมแก้ไขไฟล์ สิ่งนี้จะมีผลกระทบต่อกระบวนการที่กำลังทำงานอยู่หรือไม่? หลังจากแก้ไขมันฉันรันไฟล์ที่แก้ไขดังนั้นฉันจึงมีสองกระบวนการที่ทำงานอยู่ในขณะนี้ ไม่เป็นไร

2
วิธีทำให้สคริปต์ bash ทำงานด้วยเวลาแฝง (เช่นรอ 1 วินาทีในการทำซ้ำแต่ละครั้ง)
ฉันมีสคริปต์ทุบตีนี้ for (( i = 1 ; i <= 160 ; i++ )); do qsub myccomputations"${i}".pbs done โดยทั่วไปฉันต้องการถ้ามีการหน่วงเวลา 1 วินาทีระหว่างการทำซ้ำแต่ละครั้ง เหตุผลก็คือในการทำซ้ำแต่ละครั้งมันจะส่งไฟล์โปรแกรมmycomputation"${i}$.pbsไปยังโหนดหลักสำหรับการแก้ปัญหา แรงจูงใจคือการแก้ไขในกรณีนี้เกี่ยวข้องกับการใช้ตัวเลขสุ่มหลอกและ RNG ฉันใช้ (R's) ใช้เวลา CPU เป็นเมล็ด ดังนั้นวิธีที่คุณขอทุบตี for (( i = 1 ; i <= 160 ; i++ )); do wait 1 sec qsub myccomputations"${i}".pbs done

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