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

ชุดคำสั่งอัตโนมัติดำเนินการตามคำสั่งเฉพาะเช่นสคริปต์ Windows ที่สร้างขึ้นเพื่อเปิดโปรแกรมเฉพาะเมื่อเริ่มต้น

30
วิธีรันคำสั่งเมื่อใดก็ตามที่ไฟล์มีการเปลี่ยนแปลง
ฉันต้องการวิธีที่ง่ายและรวดเร็วในการรันคำสั่งเมื่อใดก็ตามที่ไฟล์มีการเปลี่ยนแปลง ฉันต้องการบางอย่างที่เรียบง่ายสิ่งที่ฉันจะปล่อยให้ทำงานบนเทอร์มินัลและปิดเมื่อใดก็ตามที่ฉันทำงานกับไฟล์นั้นเสร็จ ขณะนี้ฉันใช้สิ่งนี้: while read; do ./myfile.py ; done จากนั้นฉันต้องไปที่เทอร์มินัลนั้นแล้วกดEnterเมื่อใดก็ตามที่ฉันบันทึกไฟล์นั้นไว้ในเครื่องมือแก้ไข สิ่งที่ฉันต้องการคือสิ่งนี้: while sleep_until_file_has_changed myfile.py ; do ./myfile.py ; done หรือวิธีแก้ปัญหาอื่น ๆ ได้ง่ายอย่างที่คิด BTW: ฉันใช้ Vim และฉันรู้ว่าฉันสามารถเพิ่ม autocommand เพื่อใช้งานบางอย่างใน BufWrite แต่นี่ไม่ใช่วิธีการแก้ปัญหาที่ฉันต้องการในตอนนี้ อัปเดต:ฉันต้องการอะไรที่เรียบง่ายละทิ้งได้ถ้าเป็นไปได้ ยิ่งไปกว่านั้นฉันต้องการให้บางสิ่งบางอย่างทำงานใน terminal เพราะฉันต้องการที่จะเห็นผลลัพธ์ของโปรแกรม (ฉันต้องการที่จะเห็นข้อความผิดพลาด) เกี่ยวกับคำตอบ:ขอบคุณสำหรับคำตอบทั้งหมดของคุณ! พวกเขาทั้งหมดดีมากและแต่ละคนก็ใช้วิธีที่แตกต่างจากคนอื่นมาก เนื่องจากฉันต้องยอมรับเพียงคนเดียวฉันจึงยอมรับสิ่งที่ฉันใช้จริง ๆ (มันง่ายรวดเร็วและง่ายต่อการจดจำ) แม้ว่าฉันจะรู้ว่ามันไม่ได้สง่างามที่สุด
434 linux  unix  shell  script 

7
อะไรคือความแตกต่างระหว่างการเรียกใช้งานสคริปต์ Bash เทียบกับการจัดหามัน
อะไรคือข้อแตกต่างระหว่างการเรียกใช้งานสคริปต์ Bash เช่น A และการจัดหาสคริปต์ Bash เช่น B A > ./myscript B > source myscript
282 linux  bash  script 

20
เพิ่มไดเรกทอรีไปยัง $ PATH หากยังไม่มี
มีใครเขียนฟังก์ชั่นทุบตีเพื่อเพิ่มไดเรกทอรีไปยัง $ PATH เท่านั้นหากยังไม่ได้มี? ฉันมักจะเพิ่มเส้นทางโดยใช้สิ่งที่ชอบ: export PATH=/usr/local/mysql/bin:$PATH หากฉันสร้าง PATH ของฉันใน. bash_profile แสดงว่าไม่ได้อ่านยกเว้นว่าเซสชันที่ฉันใช้อยู่นั้นเป็นเซสชันการเข้าสู่ระบบซึ่งไม่ได้เป็นจริงเสมอไป ถ้าฉันสร้าง PATH ของฉันใน. bashrc มันจะทำงานกับแต่ละ subshell ดังนั้นถ้าฉันเปิดหน้าต่างเทอร์มินัลแล้วเรียกใช้หน้าจอแล้วเรียกใช้สคริปต์เชลล์ฉันจะได้รับ: $ echo $PATH /usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/bin:.... ฉันจะลองสร้างฟังก์ชั่นทุบตีที่เรียกว่าadd_to_path()เพิ่มเฉพาะไดเรกทอรีถ้ามันไม่ได้มี แต่ถ้าใครได้เขียน (หรือพบ) สิ่งนั้นฉันจะไม่ใช้เวลากับมัน
126 bash  script  path 

3
Linux Bash Script คำสั่งเดียว แต่หลายบรรทัด?
ฉันมีสคริปต์ต่อไปนี้ที่ฉันเขียนโดยค้นหา Google และสำรองข้อมูลระบบ Linux ของฉันไปยังที่เก็บถาวร: #!/bin/bash # init DATE=$(date +20%y%m%d) tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive / ใช้งานได้ แต่ฉันสงสัยว่าฉันสามารถจัดรูปแบบสคริปต์เพื่อแสดงคำสั่งผ่านหลายบรรทัดได้อย่างไรเช่นนี้ดังนั้นจึงง่ายต่อการแก้ไขในภายหลัง: tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive / วิธีนี้จะง่ายต่อการอ่านและแก้ไขในภายหลัง เป็นไปได้หรือไม่ที่จะจัดรูปแบบสคริปต์ Bash ด้วยวิธีนี้
97 linux  bash  script  tar 

11
ควรใช้ Bash เมื่อใดและเมื่อใดควรใช้ Perl / Python / Ruby [ปิด]
เรากำลังเขียนสคริปต์ทั้งหมดของเรากับ Bash จนถึงตอนนี้ แต่ฉันเริ่มรู้สึกโง่เล็กน้อยเกี่ยวกับเรื่องนี้ แน่นอนว่าเราสามารถทำทุกอย่างที่เราต้องการด้วย Bash (มันค่อนข้างทรงพลัง) ฉันเริ่มสงสัยว่าเราไม่ควรใช้ภาษาสคริปต์ที่เหมาะสม (ในกรณีของเราคือ Ruby ที่สุด) คุณตัดสินใจอย่างไรเมื่อใช้ Perl / Python / Ruby ผ่าน Bash สำหรับสคริปต์ ฉันไม่คิดว่าสคริปต์เริ่มต้นที่ใช้ Ruby มีเหตุผล แต่ใช้เวลานานกว่าสคริปต์เล็กน้อยที่เพิ่มบัญชีอีเมล
78 linux  bash  script  perl  ruby 

5
วิธีรันคำสั่งในหน้าจอและแยกออก?
ฉันจะได้รับหน้าจอเพื่อดำเนินการคำสั่งแล้วแยกออก (นั่นคือโดยอัตโนมัติในสคริปต์เดียวโดยไม่ต้องใส่เพิ่มเติมนอกเหนือจากการเริ่มต้นสคริปต์)? เช่นฉันใช้ myscript.sh และเริ่มเซสชันหน้าจอโดยอัตโนมัติดำเนินการคำสั่งแล้วแยกออก

6
ฉันจะดำเนินการคำสั่งในโฟลเดอร์อื่นโดยไม่ต้องทำเส้นทางโฟลเดอร์ซ้ำได้อย่างไร
มีวิธีที่ชาญฉลาดในการทำสำเนาและย้ายการดำเนินการหรือคำสั่งเพื่อทำซ้ำไฟล์โดยไม่ต้องทำ a หลังจากcdนั้นmvในโฟลเดอร์เดียวกันหรือไม่? ตัวอย่างเช่นฉันต้องเรียกใช้ต่อไปนี้: mv /folder1/folder2/folder3/file.txt /folder1/folder2/folder3/file-2013.txt โปรดทราบว่าไดเรกทอรีที่ฉันกำลังย้ายไฟล์เหมือนกัน แต่ฉันต้องใส่เส้นทางทั้งหมดอีกครั้งและบางครั้งก็น่ารำคาญ ฉันอยากรู้ว่ามีวิธีอื่นในการทำเช่นนั้นโดยไม่ต้องใส่เส้นทางทั้งหมดอีกครั้งเพราะการดำเนินการจะทำในเส้นทางเดียวกัน


10
ฉันจะรันแอปพลิเคชันด้วยอาร์กิวเมนต์บรรทัดคำสั่งใน Mac OS ได้อย่างไร
มีวิธีง่าย ๆ ในการต่อท้ายอาร์กิวเมนต์บรรทัดคำสั่งกับแอปพลิเคชันบน Mac หรือไม่? ตัวอย่างเช่นการเรียกใช้ Opera ในโหมดคีออสก์หรือใช้โปรไฟล์อื่นใน Firefox ฉันสามารถพิมพ์ได้ $ /Applications/Opera.app/Contents/MacOS/Opera -kioskmode $ /Applications/Firefox.app/Contents/MacOS/firefox -P profilename -no-remote ใน Windows ฉันสามารถต่อท้ายอาร์กิวเมนต์ไปยังคุณสมบัติทางลัด แต่เนื่องจาก Mac ไม่ได้ใช้ทางลัดต่อ se และเรียกใช้แอปพลิเคชันโดยตรงจึงไม่สามารถทำได้ ฉันได้พบว่าการเปิดใช้งานแอปพลิเคชันผ่าน bash หรือ Applescript ใช้งานได้บางส่วน: # Bash #!/bin/sh /Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote # Applescript do shell script "exec /Applications/Opera.app/Contents/MacOS/Opera -kioskmode" ฉันสามารถทำให้ไฟล์ปฏิบัติการเหล่านี้และกำหนดไอคอนและทุกอย่างใช้งานได้ดียกเว้นว่าเมื่อฉันรันโปรแกรมหลอกเหล่านี้ไม่ว่าจะเป็นหน้าต่างเทอร์มินัลหรือไอคอน Applescript จะยังคงเปิดอยู่ตราบเท่าที่แอปพลิเคชันเปิดอยู่ สันนิษฐานได้ว่าการใช้คำสั่ง …

3
วิธีการเปิดคำสั่งเกี่ยวกับการเชื่อมต่อเครือข่าย / ตัดการเชื่อมต่อ
ฉันมีการเชื่อมต่อ wifi ที่ต้องใช้การตรวจสอบความถูกต้องโดยใช้แบบฟอร์มเว็บเมื่อมีการสร้างลิงค์ไร้สาย ฉันรู้วิธีการทำให้การตรวจสอบที่มีสคริปต์ที่ใช้curl/ curlIE แต่ฉันจะขอให้ Windows เรียกสคริปต์ของฉันทุกครั้งที่ฉันเชื่อมต่อกับการเชื่อมต่อเครือข่ายที่เฉพาะเจาะจงได้อย่างไร ฉันจะสนใจรับชื่อโปรไฟล์ไร้สายหรือ ESSID ในบรรทัดคำสั่งของสคริปต์

12
ลบไฟล์ทั้งหมดออกจากโฟลเดอร์และโฟลเดอร์ย่อย
ฉันต้องการลบไฟล์ทั้งหมดออกจากโครงสร้างโฟลเดอร์ดังนั้นฉันจึงเหลือโครงสร้างโฟลเดอร์เปล่า สามารถทำได้ในชุดหรือสคริปต์VBScript ? ฉันได้ลองชุดคำสั่งพื้นฐานมาก แต่สิ่งนี้ต้องการให้ผู้ใช้อนุญาตการลบแต่ละไฟล์ นี่ไม่ใช่วิธีแก้ปัญหาที่เหมาะสมเนื่องจากมีไฟล์หลายร้อยไฟล์และจะเพิ่มขึ้นอย่างมากเมื่อเวลาผ่านไป คุณแนะนำอะไรได้บ้าง

2
dd กำลังสร้างไฟล์สุ่ม 32 MB แทน 1 GB
ฉันต้องการสร้างไฟล์สุ่มขนาด 1 GB ดังนั้นฉันจึงใช้คำสั่งต่อไปนี้ dd if=/dev/urandom of=output bs=1G count=1 แต่ทุกครั้งที่ฉันเรียกใช้คำสั่งนี้ฉันจะได้รับไฟล์ขนาด 32 MB: <11:58:40>$ dd if=/dev/urandom of=output bs=1G count=1 0+1 records in 0+1 records out 33554431 bytes (34 MB, 32 MiB) copied, 0,288321 s, 116 MB/s เกิดอะไรขึ้น? แก้ไข: ขอบคุณคำตอบที่ยอดเยี่ยมในหัวข้อนี้ฉันมาพร้อมกับโซลูชันที่อ่าน 32 ชิ้นขนาดใหญ่ 32 MB ซึ่งทำให้ 1GB: dd if=/dev/urandom of=output bs=32M count=32 วิธีการแก้ปัญหาอื่นได้รับที่อ่าน …


5
เรียกใช้สคริปต์จากระยะไกลบน Unix รับเอาต์พุตในเครื่องหรือไม่
ฉันต้องการเรียกใช้สคริปต์ (Tcl หรืออะไรก็ตาม) บนเครื่อง Unix ระยะไกลจากเชลล์คำสั่งของ Windows (ในเครื่อง) และฉันต้องการ stdout / stderr ของสคริปต์เพื่อแสดงใน Windows CLI รหัสทางออกก็มีประโยชน์เช่นกัน เป็นไปได้นี้ใช้ ssh (putty)? หรือด้วยวิธีอื่นใด ขอบคุณ!

3
SSH: รันคำสั่ง sudo
ฉันมีเชลล์สคริปต์แบบโต้ตอบที่หนึ่งต้อง ssh ไปยังเครื่องอื่น (ตาม Ubuntu) และดำเนินการบางอย่างเป็น root (ผู้ใช้ควรป้อนรหัสผ่านของเขา แต่คำสั่งระยะไกลควรทำงานตามที่ระบุไว้ในสคริปต์): # ... ssh remote-machine 'sudo ls' # ... อย่างไรก็ตามฉันได้รับข้อความแสดงข้อผิดพลาดนี้เสมอ: sudo: no tty present and no askpass program specified ตกลงนั่นค่อนข้างชัดเจน แต่ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร สิ่งนี้จะเกิดขึ้น: $ ssh remote-machine 'sudo ls /' [sudo] password for user1: /bin /etc /var
44 ssh  script  remote  sudo 

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