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

คำว่า 'เชลล์' หมายถึงคลาสทั่วไปของล่ามคำสั่งแบบโต้ตอบตามข้อความซึ่งส่วนใหญ่มักเกี่ยวข้องกับระบบปฏิบัติการ Unix & Linux สำหรับคำถามเกี่ยวกับการเขียนสคริปต์เชลล์โปรดใช้แท็กเฉพาะเพิ่มเติมเช่น 'bash', 'powershell' หรือ 'ksh' หากไม่มีแท็กเฉพาะควรใช้วิธีแก้ปัญหาแบบพกพา (POSIX-compliant) แม้ว่าจะใช้ 'posix' เพิ่มเติมหรือ 'sh' แทนก็ตาม

21
วิธีการตรวจสอบว่าลินุกซ์ที่ได้รับคือ 32 บิตหรือ 64 บิต?
เมื่อฉันพิมพ์uname -aมันจะให้ผลลัพธ์ต่อไปนี้ Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux ฉันจะรู้ได้อย่างไรว่าระบบปฏิบัติการที่กำหนดคือ 32 หรือ 64 บิต สิ่งนี้มีประโยชน์เมื่อเขียนconfigureสคริปต์ตัวอย่างเช่น: ฉันกำลังสร้างสถาปัตยกรรมอะไร

19
คำสั่ง bash / fish เพื่อพิมพ์พา ธ สัมบูรณ์ไปยังไฟล์
คำถาม: มีคำสั่ง sh / bash / zsh / fish / ... อย่างง่าย ๆ เพื่อพิมพ์พา ธ สัมบูรณ์ของไฟล์ใดก็ตามที่ฉันป้อน กรณีการใช้งาน: ฉันในไดเรกทอรี/a/bและฉันต้องการพิมพ์เส้นทางแบบเต็มไปยังไฟล์บนบรรทัดคำสั่งเพื่อที่ฉันสามารถวางลงในโปรแกรมอื่น:c /a/b/cเรียบง่าย แต่โปรแกรมเล็ก ๆ น้อย ๆ ในการทำเช่นนี้อาจช่วยฉันได้ 5 หรือประมาณวินาทีในการจัดการเส้นทางที่ยาวซึ่งในที่สุดจะเพิ่มขึ้น ดังนั้นฉันจึงประหลาดใจที่ฉันไม่สามารถหายูทิลิตี้มาตรฐานเพื่อทำสิ่งนี้ - ไม่มีจริงเหรอ? นี่คือตัวอย่างการใช้งาน abspath.py: #!/usr/bin/python # Author: Diggory Hardy <diggory.hardy@gmail.com> # Licence: public domain # Purpose: print the absolute path of all input …
448 bash  shell  path 

4
ประมวลผลอาร์กิวเมนต์ทั้งหมดยกเว้นอาร์กิวเมนต์แรก (ในสคริปต์ทุบตี)
ฉันมีสคริปต์ง่าย ๆ ที่อาร์กิวเมนต์แรกถูกสงวนไว้สำหรับชื่อไฟล์และอาร์กิวเมนต์ตัวเลือกอื่น ๆ ทั้งหมดควรถูกส่งผ่านไปยังส่วนอื่น ๆ ของสคริปต์ เมื่อใช้ Google ฉันพบวิกินี้แต่มีตัวอย่างจริง: echo "${@: -1}" ฉันไม่สามารถทำงานอย่างอื่นได้เช่น: echo "${@:2}" หรือ echo "${@:2,1}" ฉันได้รับ "การทดแทนไม่ดี" จากเทอร์มินัล ปัญหาคืออะไรและฉันจะดำเนินการทั้งหมดอย่างไร แต่อาร์กิวเมนต์แรกที่ส่งไปยังสคริปต์ทุบตี
444 bash  shell 

20
วิธีการรวมชื่อไฟล์หลายบรรทัดเป็นหนึ่งเดียวด้วยตัวคั่นที่กำหนดเองได้อย่างไร
ฉันต้องการที่จะเข้าร่วมผลลัพธ์ของการls -1เป็นหนึ่งบรรทัดและคั่นด้วยสิ่งที่ฉันต้องการ มีคำสั่ง Linux มาตรฐานที่ฉันสามารถใช้เพื่อให้บรรลุนี้
441 linux  bash  shell  parsing  merge 

9
การยกเลิกเชลล์สคริปต์หากคำสั่งใดส่งคืนค่าที่ไม่ใช่ศูนย์
ฉันมีสคริปต์เชลล์ Bash ที่เรียกใช้คำสั่งจำนวนมาก ฉันต้องการให้เชลล์สคริปต์ออกโดยอัตโนมัติด้วยค่าส่งคืน 1 หากคำสั่งใด ๆ ส่งคืนค่าที่ไม่เป็นศูนย์ เป็นไปได้โดยไม่ตรวจสอบผลลัพธ์ของแต่ละคำสั่งอย่างชัดเจนหรือไม่ เช่น dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi
437 linux  bash  unix  shell 

10
วิธีรับรหัสผ่านจากเชลล์สคริปต์โดยไม่ต้องสะท้อน
ฉันมีสคริปต์ที่ทำให้กระบวนการที่ต้องการเข้าถึงระบบป้องกันด้วยรหัสผ่านโดยอัตโนมัติ ระบบสามารถเข้าถึงได้ผ่านโปรแกรมบรรทัดคำสั่งที่ยอมรับรหัสผ่านผู้ใช้เป็นอาร์กิวเมนต์ ฉันต้องการให้ผู้ใช้พิมพ์รหัสผ่านกำหนดให้กับตัวแปร shell จากนั้นใช้ตัวแปรนั้นเพื่อสร้างบรรทัดคำสั่งของโปรแกรมที่เข้าถึง (ซึ่งแน่นอนจะสร้างเอาต์พุตสตรีมที่ฉันจะประมวลผล) ฉันเป็นโปรแกรมเมอร์เชลล์ที่มีความสามารถพอสมควรใน Bourne / Bash แต่ฉันไม่รู้วิธีรับอินพุตของผู้ใช้โดยไม่ต้องสะท้อนไปยังเทอร์มินัล มีใครช่วยได้บ้าง
424 bash  shell  scripting  sh 

30
วิธีที่ดีที่สุดในการส่งสัญญาณไปยังสมาชิกทุกคนของกลุ่มกระบวนการคืออะไร?
ฉันต้องการฆ่าต้นไม้กระบวนการทั้งหมด วิธีที่ดีที่สุดในการทำสิ่งนี้โดยใช้ภาษาสคริปต์ทั่วไปคืออะไร ฉันกำลังมองหาทางออกที่ง่าย
422 linux  shell  process  signals 

15
ไพพ์เอาต์พุตและสถานะการดักจับใน Bash
ฉันต้องการรันคำสั่งที่รันเป็นเวลานานใน Bash และทั้งคู่ก็จับสถานะทางออกของมันและเอาท์พุทของมันที ดังนั้นฉันทำสิ่งนี้: command | tee out.txt ST=$? ปัญหาคือตัวแปร ST รวบรวมสถานะการออกของteeและไม่ใช่คำสั่ง ฉันจะแก้ปัญหานี้ได้อย่างไร โปรดทราบว่าคำสั่งนั้นใช้เวลานานและการเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์เพื่อดูในภายหลังไม่ใช่วิธีแก้ปัญหาที่ดีสำหรับฉัน


18
จะบันทึกเซสชันการโต้ตอบ Python ได้อย่างไร?
ฉันพบว่าตัวเองใช้ล่ามของ Python บ่อยครั้งในการทำงานกับฐานข้อมูลไฟล์และอื่น ๆ - โดยทั่วไปแล้วการจัดรูปแบบด้วยตนเองของข้อมูลกึ่งโครงสร้าง ฉันไม่ได้บันทึกและล้างบิตที่มีประโยชน์อย่างถูกต้องบ่อยเท่าที่ฉันต้องการ มีวิธีบันทึกอินพุตของฉันลงในเชลล์ (การเชื่อมต่อฐานข้อมูลการกำหนดตัวแปรเล็ก ๆ น้อย ๆ สำหรับลูปและบิตของตรรกะ) - ประวัติของเซสชันแบบโต้ตอบหรือไม่? ถ้าฉันใช้บางอย่างเช่นscriptฉันได้รับเสียง stdout มากเกินไป ฉันไม่จำเป็นต้องดองวัตถุทั้งหมด - แม้ว่าจะมีวิธีแก้ปัญหามันก็คงจะโอเค เป็นการดีที่ฉันจะเหลือสคริปต์ที่วิ่งตามที่ฉันสร้างขึ้นแบบโต้ตอบและฉันสามารถลบบิตที่ฉันไม่ต้องการ มีแพ็คเกจที่ทำสิ่งนี้หรือวิธี DIY UPDATE : ฉันประหลาดใจมากกับคุณภาพและประโยชน์ของแพ็คเกจเหล่านี้ สำหรับผู้ที่มีอาการคันที่คล้ายกัน: IPython - ควรใช้สิ่งนี้มานานแล้วเป็นสิ่งที่ฉันมีอยู่ในใจ reinteract - น่าประทับใจมากฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างภาพและดูเหมือนว่ามันจะส่องแสงที่นั่น จัดเรียงแอปเดสก์ท็อป gtk / gnome ที่แสดงกราฟแบบอินไลน์ ลองจินตนาการถึงเครื่องคิดเลขเชลล์ไฮบริด + กราฟ + มินิคราส แหล่งที่มาของการจัดจำหน่ายที่นี่: http://www.reinteract.org/trac/wiki/GettingIt สร้างได้ดีบน Ubuntu รวมเข้ากับเดสก์ท็อป GNOME, …

9
ใช้ curl เพื่ออัพโหลดข้อมูล POST พร้อมไฟล์
ฉันต้องการใช้ cURL เพื่อส่งพารามิเตอร์ข้อมูลใน HTTP POST ไม่เพียง แต่จะอัปโหลดไฟล์ที่มีชื่อฟอร์มเฉพาะ ฉันควรจะทำอย่างไร พารามิเตอร์ HTTP Post: userid = 12345 filecomment = นี่คือไฟล์รูปภาพ HTTP อัพโหลดไฟล์: ตำแหน่งไฟล์ = /home/user1/Desktop/test.jpg ชื่อแบบฟอร์มสำหรับไฟล์ = ภาพ (ตรงกับ $ _FILES ['image'] ที่ด้าน PHP) ฉันคิดว่าเป็นส่วนหนึ่งของคำสั่ง cURL ดังต่อไปนี้: curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php ปัญหาที่ฉันได้รับมีดังนี้: Notice: Undefined index: image in …
414 shell  file  curl  post  file-upload 

30
จะเพิ่มแถบความคืบหน้าลงในเชลล์สคริปต์ได้อย่างไร?
เมื่อสคริปต์ใน bash หรือเชลล์อื่น ๆ ใน * NIX ในขณะที่รันคำสั่งที่จะใช้เวลานานกว่าสองสามวินาทีแถบความคืบหน้าเป็นสิ่งจำเป็น ตัวอย่างเช่นการคัดลอกไฟล์ขนาดใหญ่เปิดไฟล์ tar ขนาดใหญ่ คุณแนะนำวิธีการเพิ่มแถบความคืบหน้าให้กับเชลล์สคริปต์?
413 bash  shell  zsh 

9
สตริงหลายบรรทัดพร้อมพื้นที่เพิ่มเติม (เยื้องที่สงวนไว้)
ฉันต้องการที่จะเขียนข้อความที่กำหนดไว้ล่วงหน้าบางส่วนลงในไฟล์ที่มีต่อไปนี้: text="this is line one\n this is line two\n this is line three" echo -e $text > filename ฉันคาดหวังอะไรแบบนี้: this is line one this is line two this is line three แต่ได้สิ่งนี้: this is line one this is line two this is line three ฉันคิดว่าไม่มีที่ว่างหลังจากแต่ละ\nอัน แต่พื้นที่พิเศษจะออกมาได้อย่างไร
409 string  bash  shell  echo 

10
รับเวลาดำเนินการโปรแกรมในเชลล์
ฉันต้องการดำเนินการบางอย่างใน linux shell ภายใต้เงื่อนไขที่แตกต่างกันเล็กน้อยและสามารถส่งออกเวลาดำเนินการของการดำเนินการแต่ละครั้ง ฉันรู้ว่าฉันสามารถเขียนสคริปต์ Perl หรือหลามที่จะทำเช่นนี้ แต่มีวิธีที่ฉันสามารถทำได้ในเปลือก? (ซึ่งเกิดขึ้นจะทุบตี)
407 linux  bash  shell 

22
วิธีรันคำสั่ง mongo ผ่านเชลล์สคริปต์
ฉันต้องการรันmongoคำสั่งในเชลล์สคริปต์เช่นในสคริปต์test.sh: #!/bin/sh mongo myDbName db.mycollection.findOne() show collections เมื่อฉันรันสคริปต์นี้ผ่าน./test.shดังนั้นการเชื่อมต่อกับ MongoDB จะถูกสร้างขึ้น แต่คำสั่งต่อไปนี้จะไม่ถูกดำเนินการ วิธีรันคำสั่งอื่น ๆ ผ่าน shell script test.sh?
403 mongodb  bash  shell  sh 

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