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

เชลล์คือซอฟต์แวร์ที่ช่วยให้ผู้ใช้โต้ตอบกับระบบปฏิบัติการโดยปกติแล้วพิมพ์ที่บรรทัดคำสั่ง

1
แยกเนื้อหาจากไฟล์บันทึกสำหรับ 5 นาทีที่ผ่านมา
ฉันพยายามใช้คำสั่ง awk เพื่อแยกเนื้อหาจากไฟล์บันทึกสำหรับ 5 นาทีที่ผ่านมา ด้านล่างเป็นคำสั่งที่ฉันใช้ `awk -v d1="$(date --date="-5 min" "+%m/%d/%y %k:%M:%S:%3N")" -v d2="$(date "+%m/%d/%y %k:%M:%S:%3N")" '$0 > d1 && $0 < d2 || $0 ~ d2' /tmp/test.log พบว่าเงื่อนไข'$0 > d1 && $0 < d2 || $0 ~ d2'ใช้ได้กับรูปแบบวันที่ที่ระบุเท่านั้น รูปแบบวันที่ในบันทึกของฉันอยู่ด้านล่าง: [2/9/17 13: 30: 35: 552 EST] คำสั่งที่ฉันเรียกใช้ข้างต้นไม่ทำงาน .. แต่เมื่อฉันทดสอบรูปแบบวันที่อื่น …
1 shell  awk 

1
ดาวน์โหลดและประมวลผลไฟล์โดย ftp ตามช่วงเวลาที่กำหนดพร้อมการจัดการข้อผิดพลาดการกำหนดเวลาใหม่และข้อความสถานะ
ฉันต้องการดาวน์โหลดไฟล์ข้อมูลจากเซิร์ฟเวอร์ ftp ระยะไกลไปยังเครื่องของฉันในช่วงเวลาปกติ เมื่อดาวน์โหลดไฟล์แล้วฉันต้องการเรียกใช้สคริปต์อื่นซึ่งจะประมวลผลไฟล์ เครื่องพัฒนาของฉันคือ mac os x สภาพแวดล้อมการปรับใช้ในที่สุดคือ linux ในรายละเอียด: มีเซิร์ฟเวอร์ ftp สาธารณะระยะไกลที่ดำเนินการโดยสำนักงานพยากรณ์อากาศซึ่งสำนักพยากรณ์อากาศโพสต์ไฟล์ที่มีการพยากรณ์อากาศ นี่ไม่ใช่เครื่องของฉันฉันสามารถดาวน์โหลดได้เท่านั้น สำนักพยากรณ์อากาศจะวางไฟล์ใหม่ที่นี่ทุก ๆ หกชั่วโมงเวลาเป็นส่วนหนึ่งของชื่อไฟล์ ฉันจะมีเครื่องมือในเครื่องของฉันที่สามารถประมวลผลข้อมูลในไฟล์เหล่านี้ ฉันไม่ได้ขอความช่วยเหลือในการพัฒนาเครื่องมือนี้ ฉันขอความช่วยเหลือติดกาวชิ้นเข้าด้วยกันจัดตารางเวลาการดาวน์โหลดและการเรียกใช้เครื่องมือ สิ่งที่ฉันต้องการจะทำ: ทุก ๆ หกชั่วโมงฉันต้องการดาวน์โหลดไฟล์ใหม่จากเซิร์ฟเวอร์ weather bureau ftp หากสิ่งนี้ล้มเหลวฉันต้องการ: ส่งอีเมลและกำหนดเวลาการดาวน์โหลดใหม่ หากการดาวน์โหลดยังคงล้มเหลวหลังจากหกชั่วโมงฉันต้องการหยุดพยายามรับไฟล์นี้เนื่องจากตอนนี้ควรมีไฟล์ใหม่ที่มีชื่อใหม่ เมื่อดาวน์โหลดไฟล์สำเร็จแล้วฉันต้องการเรียกเครื่องมือของฉันเพื่อประมวลผลไฟล์ หากเครื่องมือล้มเหลวเนื่องจากไฟล์เสียหายมันจะส่งคืนข้อผิดพลาดและฉันต้องการกำหนดเวลาไฟล์ใหม่เพื่อดาวน์โหลด มาตรฐานหุ้นจะทำสิ่งนี้โดยอัตโนมัติอย่างไร ฉันรู้ว่าฉันสามารถใช้ cron เพื่อกำหนดการ curl เพื่อดาวน์โหลดและเรียกใช้สคริปต์ที่จะประมวลผลไฟล์ที่ดาวน์โหลดในช่วงเวลาปกติและฉันรู้ว่าสามารถเขียนสคริปต์ที่ซับซ้อนขึ้นเล็กน้อยหรือแอปพลิเคชันที่จะทำเช่นนี้และเพิ่มการจัดการข้อผิดพลาด ส่งอีเมลสถานะ แต่หนึ่งในความต้องการของฉันสำหรับโครงการนี้คือการเขียนโค้ดที่กำหนดเองน้อยที่สุดเท่าที่จะทำได้แทนฉันควรจะลองใช้เครื่องมือมาตรฐานที่ได้ลองและเป็นเครื่องมือจริงที่มีอยู่และถ้าฉันต้องเขียนโค้ดเพื่อลองเขียนโค้ดที่ตรงไปตรงที่สุด . เหตุผลนี้เป็นรหัสที่อาจจะติดตั้งในเครื่องจำนวนมากซึ่งทั้งหมดจะต้องได้รับการปรับแต่งและดูแลโดยผู้คนที่แตกต่างกันนานหลังจากฉันหายไปจากโครงการดังนั้นความตั้งใจคือการใช้งานได้ดี จัดทำเอกสารเครื่องมือที่ได้รับการสนับสนุนเป็นอย่างดี ดูเหมือนว่างานทั่วไปนั้นจะต้องมีเครื่องมือและสคริปต์ทั่วอินเทอร์เน็ตซึ่งเขียนขึ้นโดยผู้ที่พิจารณาทุกอย่างที่อาจผิดพลาดเมื่อคุณต้องการดาวน์โหลดและประมวลผลไฟล์จากเซิร์ฟเวอร์ระยะไกลเป็นระยะโดยไม่มีข้อผิดพลาด การจัดการการจัดกำหนดการใหม่และการส่งข้อความสถานะ นั่นคือสิ่งที่ 'คาดหวัง' มีไว้เพื่ออะไร? คุณจะแนะนำอะไร
1 shell  ftp  scheduling 

4
วิธีการลบไฟล์. exe ทั้งหมดจากไดเรกทอรีย่อยทั้งหมดของไดเรกทอรีปัจจุบันซ้ำ ๆ ?
ฉันมี USB ที่มีไฟล์สำคัญ อย่างไรก็ตามมันถูกแทรกซึมด้วยไฟล์. exe ที่ไม่พึงประสงค์ (อาจเป็น virsuses) ในแต่ละโฟลเดอร์ย่อย ตั้งแต่ฉันอยู่บนเครื่อง Linux ไฟล์ exe จะไม่ส่งผลกระทบต่อฉัน อย่างไรก็ตามฉันต้องการลบพวกเขา (เพื่อความปลอดภัยส่วนบุคคล) ดังนั้นฉันจะทำอย่างไรโดยใช้คำสั่ง Linux หรือเชลล์ / AWK หรือสคริปต์ Python
1 linux  shell  script  awk  rm 

1
Sed: ตัวเลือกที่ไม่รู้จักเป็น `s '
ฉันกำลังพยายามเปลี่ยนไฟล์ปรับแต่งโดยใช้ bash script ฉันใช้คำสั่ง sed เพื่อเปลี่ยนดังนี้ VAR1=$(cat postgresql.conf | grep "shared_buffers =" | cut -d# -f1) VAR2=$(shared_buffers = 8GB) sed -ie s/${VAR1}/${VAR2}/g postgresql.conf ฉันพยายาม แต่มันทำให้ฉันมีข้อผิดพลาด sed: -e expression # 1, ถ่าน 29: ตัวเลือกที่ไม่รู้จักเป็น `s ' อะไรหายไป?
1 linux  bash  shell 

2
สคริปต์ Bash จะทำงาน แต่ไม่พบคำสั่ง 'จนถึง'
ฉันกำลังเขียนสคริปต์ทุบตีสำหรับคลาสที่มีเมนูหลักพร้อมกับเมนูย่อยสองรายการ ฉันยังเขียนสคริปต์ไม่เสร็จ แต่ฉันมีปัญหาฉันยังไม่สามารถแก้ไข: สคริปต์ของฉันทำงานได้ดี แต่ทุกครั้งที่ฉันเรียกใช้ฉันได้รับข้อผิดพลาดต่อไปนี้ (แต่รหัสของฉันยังคงทำงานตามที่ตั้งใจ): ./menu1.sh: line 105: =: command not found นอกจากนี้เมื่อฉันป้อนเมนูย่อยอีกสองรายการฉันได้รับข้อผิดพลาดเดียวกัน (เนื่องจากรหัสที่คล้ายกัน): ./menu1.sh: line 7: e: command not found ./menu1.sh: line 79: r: command not found บรรทัดที่เป็นสาเหตุของข้อผิดพลาดคือการที่ผมใช้จะอยู่ในเมนูแต่ละจนปัจจัยการผลิตของผู้ใช้until ($choice = q);q การเพิ่มset -xรหัสของฉันแสดง+ = qทันทีก่อนพิมพ์ข้อผิดพลาด การพิมพ์which untilลงในเทอร์มินัลจะไม่มีผล (ไม่พิมพ์เส้นทางใด ๆ ) ในที่สุดการพิมพ์การecho $SHELLพิมพ์/bin/bashดังนั้นฉันจึงใช้ bash นี่คือรหัสที่มาทั้งหมดของฉัน (ยังไม่เสร็จ): #!/bin/bash q= cNum= …
1 bash  shell  script 

1
รัน xinit จาก rc.local โดยอัตโนมัติเป็นผู้ใช้อื่น
ฉันกำลังปรับแต่ง raspberry pi b + ของฉันอยู่ ดังนั้นฉันจึงตัดสินใจว่ามิโดริควรเริ่มต้นโดยอัตโนมัติหลังจากออโตโลจิน ด้วย startx มันทำงานได้โดยไม่มีปัญหา แต่ X ก็ยังคงหิวกระหายอยู่ ดังนั้นฉันจะเริ่มต้น midori ด้วย xinit และ matchbox จากการทดสอบฉันใช้เป็นผู้ใช้ "pi" คำสั่งนี้ "xinit ./home/pi/startmidori.sh" และใช้งานได้ ดังนั้นฉันจะใส่ลงในไฟล์ rc.local ของฉัน มีคำสั่ง "su -l pi -c xinit ./home/pi/startmidori.sh" สิ่งนี้ไม่ทำงาน ฉันไม่รู้ว่าทำไม แต่ xinit ออกทันทีหลังจากเริ่มต้น ไม่มีข้อผิดพลาดหรือคำเตือนใน Xorg logfile แต่เป็นที่รู้จัก (ไม่พบโมดูล g3d_23) ฉันจะแก้ปัญหานี้ได้อย่างไร ในคำแนะนำฉันพบวิธีการแก้ปัญหาบางอย่าง แต่พวกเขาทั้งหมดไม่ทำงาน ฉันพยายามเรียกใช้เป็นรูท …

2
การติดตั้งใหม่ของ Python จะให้ข้อผิดพลาด "Python Shell, prompt [x], บรรทัด [x] builtins.NameError: ชื่อ '[function]' ไม่ได้ถูกกำหนดไว้ [ปิด]
ฉันยังใหม่กับการเขียนโค้ดและฉันเพิ่งติดตั้ง Python 3.7.1 และ Wing IDE Personal 6.1 บนคอมพิวเตอร์ของฉัน ฉันติดตั้ง python ก่อนแล้วจึง Wing Wing และชี้ไปที่ python.exe ผ่านทางเมนูคุณสมบัติของโครงการ นี่คือสิ่งที่ปรากฏในเปลือกงูหลามเมื่อฉันเริ่ม Wing IDE: 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)] Python Type "help", "copyright", "credits" or "license" for more information. ฉันเขียนโปรแกรมต่อไปนี้: def addFive(value): return 5 + value จากนั้นบันทึกและเรียกใช้โปรแกรม ฉันเขียนในเชลล์ …

2
กระบวนการแยกและตัวแปรที่แชร์
ฉันมีสคริปต์ทุบตีที่มีฟังก์ชั่นสองทางแยกทั้งหมดเขียนลงในบันทึก เมื่อทั้งคู่เสร็จสิ้นแล้วฉันต้องการลบบันทึกนี้ ปัญหาที่ฉันมีอยู่processFinishCountก็คือมันไม่เคยมากกว่าหนึ่ง กระบวนการที่แยกแต่ละอันจะจับสำเนาของตัวแปรที่ใช้ร่วมกันและการเพิ่มขึ้นของสำเนานั้นเมื่อเรียกใช้delete_logหรือไม่ ฉันจะแน่ใจได้อย่างไรว่าตัวแปรจะเพิ่มขึ้นอย่างเหมาะสม? processFinishCount=0 delete_log() { let processFinishCount++ if ["$processFinishCount" == 2]; then rm log.txt else echo `$processFinishCount task(s) finished" >> log.txt fi } function_one() { ... delete_log } function_two() { ... delete_log } function_one & function_two &
1 macos  bash  shell 

1
แพคเกจติดตั้งแบบชุดยำทำให้โหลด CPU 100% หรือไม่
ฉันต้องติดตั้งรายการแพคเกจดังนี้ ดังนั้นฉันจึงสร้างสคริปต์ขนาดเล็กโดยอัตโนมัติ: yum -y install libstdc++.i686 yum -y install libibcm.x86_64 yum -y install librdmacm.x86_64 yum -y install ibsim.x86_64 yum -y install ibutils.x86_64 yum -y install libcxgb3.x86_64 yum -y install libibmad.x86_64 yum -y install libipathverbs.x86_64 อย่างไรก็ตามมันทำให้โหลด CPU 100% และหยุดระบบเมื่อเริ่มติดตั้งแพ็คเกจอ้างอิง

2
เป็นไปได้หรือไม่ที่จะเริ่มคำสั่งบนหลาย ๆ โหนดในเวลาเดียวกัน?
เป็นไปได้หรือไม่ที่จะเริ่มคำสั่งบน 10 โหนดในเวลาเดียวกัน? นี่คือส่วนหนึ่งของสคริปต์ของฉัน: #! /bin/sh nb_lignes=`wc -l $1 | cut -d " " -f1` echo "$nb_lignes machines" for i in $(seq $nb_lignes) do machine=`head $1 -n $i | tail -1` ssh root@$machine -x "instruction" done
1 linux  shell  script 

1
เยื้องการประมวลผลผลลัพธ์ใน zshell
ฉันต้องการปรับแต่ง zshell ของฉันเพื่อให้พรอมต์แจ้งเตือนกับชายแดนด้านซ้ายเหมือนปกติ ฉันต้องการที่จะได้ผลลัพธ์การดำเนินการเยื้องโดยอาจ 2 ช่องว่าง มีวิธีเยื้องแบบนี้หรือไม่? ฉันกำลังทดลองกับพรอมต์ 2 บรรทัด: PROMPT=' %{$fg[gray]%}PWD:%{$reset_color%}%{$fg[cyan]%}%~ %{$reset_color%} %{$fg[red]%}> ' มันจะเป็นการดีถ้าได้ทำให้การแจ้งนี้โดดเด่นในคอลัมน์ของตัวเอง
1 shell  zsh 


2
เทียบเท่ากับ $ $ `สำหรับเชลล์ windows
ฉันใช้แบตช์ไฟล์เพื่อสร้างคำล้อมรอบคำสั่งบางคำซึ่งต้องการอาร์กิวเมนต์พิเศษเพื่อให้ทำงานได้ ตัวอย่างเช่นฉันมีไฟล์pip.cmdที่เพิ่มอาร์กิวเมนต์พร็อกซีที่กำหนดเองให้กับการpipโทรทั้งหมด: pip.exe --proxy="myproxy" %1 %2 %3 %4 %5 อย่างที่คุณเห็นฉันใช้%1สัญกรณ์ในการถ่ายโอนอาร์กิวเมนต์ของpip.cmdไปยังpip.exeอย่างไรก็ตามแนวทางของฉันจะหยุดหากมีมากกว่า 5 ข้อโต้แย้ง ในลีนุกซ์, ฉันจะใช้"$@", ซึ่งจัดการกับข้อโต้แย้งทั้งหมดในคราวเดียว. มีสัญกรณ์ที่คล้ายกันหรือวิธีแก้ปัญหาที่เหมาะสมสำหรับเชลล์ Windows หรือไม่?


1
วิธีการเรนเดอร์สองคอลัมน์เพื่อรักษาช่องว่างทั้งหมดหลังจากคอลัมน์แรกด้วย awk หรือทางเลือก?
ผลลัพธ์ของฉันมาในรูปแบบที่มนุษย์อ่านได้ด้วยช่องว่างหนึ่งช่องแล้วตามด้วยชื่อไดเรกทอรี: ฉันกำลังใช้ ... awk '{ printf "%-20s %-40s\n", $1, $2 }' อินพุต 1G foo 1.5M foo baz 5K foo spaces in this directory เอาท์พุต 1G foo 1.5M foo 5K foo ต้องการ 1G foo 1.5M foo baz 5K foo spaces in this directory วิธีการแบ่งออกเป็นสองคอลัมน์ด้วยตัวคั่นช่องว่างการรักษาช่องว่างทั้งหมดในคอลัมน์ที่สองโดยใช้ awk หรือทางเลือก?
1 shell  awk 

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