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

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

2
พิมพ์ค่าส่งคืนหลังจากการทำงานของโปรแกรม
ผมสงสัยว่าวิธีการตั้งค่าตัวเลือกในการพิมพ์ค่าตอบแทนอัตโนมัติหลังจากการดำเนินการทุกโปรแกรมใน terminal echo $?โดยไม่ต้องพิมพ์ เป็นสิ่งที่สามารถตั้งค่าได้หรือไม่? Codeblocks มีคุณสมบัติดังกล่าว

2
ความแตกต่างระหว่าง $ '$ foo' และ $“ $ foo”
ฉันมีปัญหาในการหาความแตกต่างระหว่างคำพูดเดียวและสองครั้งภายในบริบทของตัวแปร ฉันกำหนด: foo=pwd จากนั้นเรียกใช้สิ่งเหล่านี้: echo $'$foo' echos ใด$foo(หมายถึง$คำสั่งแรกในคำสั่ง echo ของฉันถูกดร็อป) echo $"$foo" echos นี้pwd(ซึ่งหมายความว่า bash จะขยาย$foo, ตัวแปรของฉัน, เป็นค่าของมัน) echo $`$foo` ในที่สุด echos นี้$~/scripts(ฉันคาดว่าจะพิมพ์~/scriptsและไม่$~/scripts) ใครสามารถช่วยฉันค้นหาความแตกต่างเหล่านี้ได้บ้าง

2
มีซอฟต์แวร์ที่ให้ฉันทำแบบฝึกหัดการคิดเลขในใจเป็นระยะ ๆ หรือไม่?
ฉันตระหนักถึงธรรมชาติที่ขี้เกียจของฉันและจำเป็นต้องผลักดันตัวเองไปสู่การทำเลขคณิตพื้นฐานบางครั้ง ดังนั้นฉันกำลังมองหาซอฟต์แวร์ที่ขอให้ฉันทำแบบฝึกหัดทางคณิตศาสตร์สั้น ๆ เป็นระยะ ๆ (บวกลบคูณหาร) เกณฑ์: มันควรให้ฉันปรับแต่งช่วงเวลา ควรรวมไว้ใน Ubuntu Desktop เช่นซ่อนอยู่ในพื้นหลังและแสดงเฉพาะ (ป๊อปอัป) ในช่วงเวลาออกกำลังกายเท่านั้น

4
การเปิดแท็บเทอร์มินัลหลายแท็บและคำสั่งที่รันอยู่
ฉันต้องการเปิดแท็บเทอร์มินัลหลายแท็บตั้งชื่อให้ไปที่ไดเรกทอรีและทำให้แต่ละแท็บเรียกใช้คำสั่ง ฉันยังใหม่กับ Linux และ shell scripting หลังจากค้นหาออนไลน์และตรวจสอบโซลูชันฉันได้สร้างสคริปต์นี้ ( แก้ไขตามคำตอบด้านล่าง): #!/bin/bash cd /media/Extra/Project tab=" --tab-with-profile=Default" options=(--tab --title=Terminal) cmds[1]="'rails s'" titles[1]="Server" cmds[2]="'rails c'" titles[2]="Console" for i in 1 2; do options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; bash\"" ) done gnome-terminal "${options[@]}" exit 0 มันเปิดแท็บชื่อพวกเขา แต่ล้มเหลวในการดำเนินการคำสั่งสร้างข้อผิดพลาดนี้: มีข้อผิดพลาดในการสร้างกระบวนการลูกสำหรับเทอร์มินัลนี้ ข้อบกพร่องอีกอย่างคือถ้าฉันหยุดคำสั่งที่กำลังรันมันจะปิดแท็บซึ่งฉันไม่ต้องการ ฉันต้องสามารถหยุดคำสั่งและเรียกใช้อีกครั้งภายในแท็บเดียวกัน เกิดอะไรขึ้นกับสคริปต์ มีวิธีอื่นที่ง่ายกว่าในการทำเช่นนั้น? หมายเหตุ: …

5
วิธีเพิ่มบันทึกลงใน crontab ด้วยการประทับเวลา
ใน crontab ฉันกำหนดตารางเวลาสคริปต์สำรองข้อมูลรายวัน ตอนนี้เมื่อ cron ดำเนินการสคริปต์สถานะจะถูกบันทึกลงในไฟล์บันทึกที่แสดงด้านล่าง 0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1 ตอนนี้เมื่อ cron รันสคริปต์เนื้อหาของบันทึกจะได้รับการต่ออายุทุกครั้ง ดังนั้นฉันต้องการเพิ่มเนื้อหาลงในไฟล์เดียวกันโดยมีการประทับเวลาของเวลาที่ดำเนินการและต่ำกว่าเนื้อหาของแต่ละครั้งพร้อมกับเนื้อหาที่มีอยู่ ฉันจะทำสิ่งนี้ได้อย่างไร
9 bash  scripts  cron  logs 

1
bash script source: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ฉันมีสคริปต์ที่เริ่มต้นเช่นนี้ #!/bin/bash VALKYRIE=~/myProjects/valkyrie source $VALKYRIE/cluster.conf แต่เมื่อฉันเรียกใช้มันกลับมา line 2: ~/myProjects/valkyrie/cluster.conf: No such file or directory แต่มีไฟล์อยู่และเมื่อฉันรันsource ~/myProjects/valkyrie/cluster.confมันก็ทำงานได้ดี ความคิดใด ๆ ฉันตั้งค่าVALKYRIEตัวแปรไว้ที่อื่นดังนั้นรหัสยากในเส้นทางไม่ใช่ตัวเลือก
9 bash  scripts  source 

2
ฉันจะส่งไฟล์ไปยังเซิร์ฟเวอร์ FTP ด้วยสคริปต์โดยอัตโนมัติได้อย่างไร
ฉันต้องสร้างสคริปต์ที่ใช้ไฟล์บันทึกเฉพาะ/var/log/และวางไว้ที่ไหนสักแห่งที่ฉันสามารถหาได้ง่าย (ส่วนใหญ่เป็นเว็บหรือเซิร์ฟเวอร์ FTP ที่ฉันสามารถเข้าถึงได้) ฉันไม่คิดว่าฉันต้องการใช้เมลเพื่อส่ง Webdav อาจเป็นตัวเลือก เพียงแค่ต้องทำงานโดยไม่ต้องมีการโต้ตอบกับผู้ใช้และรวดเร็วและไม่เจ็บปวด ข้อเสนอแนะใด ๆ (ไม่ต้องใช้รหัสผ่านโดยทั่วไป)

3
จะติดตั้ง PPA และแอพพลิเคชั่นหลายตัวพร้อมกันได้อย่างไร
ฉันจะตั้งค่าคอมพิวเตอร์ที่ใช้งานทั่วไปสองเครื่องบนม้านั่งทำงานหนึ่งในห้องปฏิบัติการของฉัน มีที่เก็บ PPA และแอพพลิเคชั่นมากมายจากที่เก็บ Ubuntu ที่ฉันต้องการติดตั้งหลังจากการติดตั้ง Ubuntu ครั้งแรก เป็นไปได้หรือไม่ที่จะเขียนสคริปต์ที่จะติดตั้งแอพและ PPA เหล่านั้นทั้งหมดในคราวเดียวฉันต้องคลิกสองครั้งที่สคริปต์ปฏิบัติการและพิมพ์รหัสผ่านผู้ดูแลระบบหรือไม่ ฉันคิดว่ามันจะค่อนข้างตรงไปตรงมา ใครช่วยชี้ให้ฉันไปที่กวดวิชาด่วนหรืออาจจะให้สคริปต์แม่แบบของการจัดเรียงบางอย่างเพื่อให้ฉันสามารถเพิ่มในชื่อ PPA และแพกเกจติดตั้ง apt-get? ขอบคุณ

1
เริ่มแอพหลายตัวที่รันใน shells แยกกันในคอนโซลเดียว
ฉันต้องเริ่มแอพหลายตัวที่ทำงานใน shells และตรวจสอบการทำงานของมัน ขณะนี้ฉันมีสคริปต์หลักที่เปิดใช้งานทุกแอปใน gnome-console ใหม่ แต่ฉันต้องการเปิดใช้งานทั้งหมดในหน้าต่างเดียวกันในหน้าจอแยก โพสต์นี้มีหลายเชลล์ในหน้าต่างเดียวอธิบายวิธีใช้หน้าจอแยกที่มีแอพพลิเคชั่นคอนโซลหลายประเภทเช่นหน้าจอ, เทอร์มิเนเตอร์และ byobu ทำงานได้ดีด้วยตนเอง แต่ฉันต้องการเริ่มแอปทั้งหมดของฉันในคอนโซลหน้าจอแยกโดยอัตโนมัติจากส่วนหลักของฉัน ในเอกสารจากเครื่องมือที่กล่าวมาข้างต้นไม่มีอะไรที่ฉันจะทำได้เพื่อให้บรรลุโดยอัตโนมัติจากสคริปต์ ความคิดใด ๆ

4
คุณจะบอกเวอร์ชั่นของ Ubuntu บนระบบในสคริปต์. sh (bash) ได้อย่างไร
ดังนั้นฉันจึงพยายามสร้าง bash / executable และฉันต้องรู้หมายเลขเวอร์ชันของ Ubuntu บนระบบ ทุกวิธีที่ฉันพบทางออนไลน์นั้นประกอบด้วยlsb_release -rแต่ฉันไม่สามารถเอาสิ่งนี้ไปเป็นตัวแปรได้ มีวิธีการรับรุ่นปัจจุบันของ Ubuntu และบันทึกเป็นตัวแปรในเปลือกปฏิบัติการหรือไม่

1
ฉันจะเรียกใช้บริการ systemd เมื่อเริ่มต้นก่อนที่บริการ systemd อื่นจะเริ่มทำงานได้อย่างไร
ฉันใช้ Ubuntu 16.04 กับแล็ปท็อป HP เครื่องเก่า ฉันได้ติดตั้งซอฟต์แวร์บางอย่างเพื่อสร้างเซิร์ฟเวอร์เพล็กซ์ขนาดเล็ก ฉันได้ติดตั้ง sonarr, radarr, deluge, jackett, etc ฯลฯ และพวกเขาทั้งหมดจะเปิดตัวโดยอัตโนมัติเมื่อเริ่มต้น! สองสามวันที่ผ่านมาฉันตัดสินใจที่จะติดตั้ง rclone ด้วยและฉันได้สร้าง (ขอบคุณโครงการ GitHub) สองสามโฟลเดอร์ที่ต้องติดตั้งในแต่ละการเริ่มต้นด้วยการเปิดตัวสคริปต์ (ฉันเปิดมันผ่านการเขียน terminal sudo ~/bin/check.mount) Sonarr และ Radarr ได้รับการตั้งค่าให้ดาวน์โหลดสิ่งต่าง ๆ ผ่านทาง deluge ไปยังโฟลเดอร์ temp แล้วส่งออกไปยังหนึ่งในสองโฟลเดอร์ที่ติดตั้ง ปัญหาคือตามเวลาที่ฉันเปิดตัวสคริปต์ Sonarr / Radarr ด้วยตนเองแล้วและทำงานและไม่สามารถค้นหาโฟลเดอร์รากของพวกเขาดังนั้นพวกเขาให้ฉันข้อผิดพลาด สิ่งที่ฉันต้องการจะทำคือสร้าง mountgdrive.service (บริการหรืออะไรก็ตามที่จำเป็น) เพื่อเปิดสคริปต์ check.mount โดยอัตโนมัติและหากยังไม่พอให้แทรกความล่าช้าใน sonarr.service และ radarr.service! เป็นไปได้ไหม …


6
นับผลรวมของแต่ละคอลัมน์ในไฟล์
ในไฟล์ที่มีจำนวนคอลัมน์แตกต่างกันคั่นด้วยช่องว่าง '', วิธีนับผลรวมของคอลัมน์ ตัวอย่างจะแสดงความต้องการ: File A: 1 2 2 3 4 5 6 1 1 1 5 จากนั้นผลลัพธ์จะเป็น: สำหรับคอลัมน์ 1 (1 + 2 + 4 + 1) = 8 สำหรับคอลัมน์ 2 คือ 11 สำหรับคอลัมน์ 3 คือ 7 สำหรับคอลัมน์ 4 คือ 5

3
จะส่งอักขระตัวแทน '*' ไปยังพารามิเตอร์ path ของคำสั่ง find ผ่านตัวแปรในสคริปต์ได้อย่างไร
ฉันต้องการใช้findเพื่อค้นหาไฟล์ในชุดของโฟลเดอร์ที่ จำกัด ด้วยอักขระตัวแทน แต่ในกรณีที่มีช่องว่างในชื่อพา ธ จากบรรทัดคำสั่งนี่เป็นเรื่องง่าย ตัวอย่างต่อไปนี้ใช้ได้ทั้งหมด find te*/my\ files/more -print find te*/'my files'/more -print find te*/my' 'files/more -print เหล่านี้จะหาไฟล์ในตัวอย่างเช่น, และterminal/my files/moretepid/my files/more อย่างไรก็ตามฉันต้องการสิ่งนี้เพื่อเป็นส่วนหนึ่งของสคริปต์ สิ่งที่ฉันต้องการคืออะไรเช่นนี้: SEARCH='te*/my\ files/more' find ${SEARCH} -print น่าเสียดายที่สิ่งที่ฉันทำฉันไม่สามารถผสม wildcard และช่องว่างในfindคำสั่งภายในสคริปต์ได้ ตัวอย่างข้างต้นจะส่งกลับข้อผิดพลาดต่อไปนี้ (ให้สังเกตเครื่องหมายแบ็กสแลชสองเท่าที่ไม่คาดคิด): find: ‘te*/my\\’: No such file or directory find: ‘files/more’: No such file or directory การพยายามใช้อัญประกาศก็ล้มเหลวเช่นกัน …

1
กด GIT รายชั่วโมง
เป็นไปได้ไหมที่ฉันจะใช้Gitพุชแบบอัตโนมัติทุกชั่วโมงผ่านสคริปต์แบทช์ ฉันมักจะพิมพ์สิ่งนี้: git add * git commit -m "latest update" git push https://username:password@github.com/username/repository.git master ฉันจะทำให้สิ่งนี้เป็นแบบอัตโนมัติได้อย่างไร

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