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

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

16
การรันคำสั่งเชลล์และการดักจับเอาต์พุต
ฉันต้องการเขียนฟังก์ชั่นที่จะรันคำสั่งเชลล์และส่งคืนเอาต์พุตเป็นสตริงไม่ว่าจะเป็นข้อผิดพลาดหรือข้อความแจ้งความสำเร็จ ฉันแค่อยากได้ผลลัพธ์แบบเดียวกับที่ฉันได้รับจากบรรทัดคำสั่ง อะไรคือตัวอย่างโค้ดที่จะทำสิ่งนั้น? ตัวอย่างเช่น: def run_command(cmd): # ?????? print run_command('mysqladmin create test -uroot -pmysqladmin12') # Should output something like: # mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'
907 python  shell  subprocess 

30
คำสั่ง Shell เพื่อรวมจำนวนเต็มหนึ่งรายการต่อบรรทัดหรือไม่
ฉันกำลังมองหาคำสั่งที่จะยอมรับ (เป็นอินพุต) ข้อความหลายบรรทัดแต่ละบรรทัดมีจำนวนเต็มเดียวและส่งออกผลรวมของจำนวนเต็มเหล่านี้ เป็นพื้นหลังเล็กน้อยฉันมีไฟล์บันทึกซึ่งรวมถึงการวัดเวลา ผ่านการ grepping สำหรับบรรทัดที่เกี่ยวข้องและการsedฟอร์แมตเล็กน้อยฉันสามารถแสดงรายการการกำหนดเวลาทั้งหมดในไฟล์นั้น ฉันต้องการผลรวมทั้งหมด ฉันสามารถไพพ์เอาต์พุตกลางนี้ไปยังคำสั่งใดก็ได้เพื่อทำผลรวมสุดท้าย ฉันเคยใช้มาก่อนexprในอดีต แต่ถ้ามันไม่ทำงานในโหมด RPN ฉันไม่คิดว่ามันจะรับมือกับสิ่งนี้ (และถึงแม้มันจะยุ่งยากก็ตาม) ฉันจะรับผลรวมของจำนวนเต็มได้อย่างไร
867 shell 

12
ฉันควรใส่ #! (shebang) ในสคริปต์ Python และควรใช้รูปแบบใด
ฉันควรใส่ shebang ในสคริปต์ Python ของฉันหรือไม่ ในรูปแบบใด #!/usr/bin/env python หรือ #!/usr/local/bin/python เหล่านี้พกพาได้อย่างเท่าเทียมกัน? รูปแบบใดที่ใช้มากที่สุด หมายเหตุ:ทอร์นาโดโครงการใช้ shebang ในทางตรงกันข้ามโครงการ Djangoก็ทำไม่ได้

10
แทนที่หนึ่งซับสตริงสำหรับสตริงอื่นในเชลล์สคริปต์
ฉันมี "ฉันรัก Suzi และ Marry" และฉันต้องการเปลี่ยน "Suzi" เป็น "Sara" #!/bin/bash firstString="I love Suzi and Marry" secondString="Sara" # do something... ผลลัพธ์จะต้องเป็นดังนี้: firstString="I love Sara and Marry"
822 bash  shell 

19
รับชื่อไดเรกทอรีปัจจุบัน (ไม่มีพา ธ เต็ม) ในสคริปต์ Bash
ฉันจะได้รับเพียงแค่ชื่อไดเรกทอรีการทำงานปัจจุบันในสคริปต์ทุบตีหรือดีกว่าเพียงแค่คำสั่ง terminal pwdให้เส้นทางแบบเต็มของไดเรกทอรีการทำงานปัจจุบันเช่น/opt/local/binแต่ฉันต้องการเท่านั้นbin
819 bash  shell 

27
เชลล์คำสั่งไปยังไดเรกทอรี tar ยกเว้นไฟล์ / โฟลเดอร์บางอย่าง
มีคำสั่งเชลล์ / สคริปต์แบบธรรมดาที่สนับสนุนการแยกไฟล์ / โฟลเดอร์บางไฟล์ออกจากการเก็บถาวรหรือไม่? ฉันมีไดเรกทอรีที่ต้องเก็บถาวรด้วยไดเรกทอรีย่อยที่มีจำนวนไฟล์ที่มีขนาดใหญ่มากฉันไม่จำเป็นต้องสำรองข้อมูล ไม่ใช่วิธีแก้ปัญหา: tar --exclude=PATTERNคำสั่งตรงกับรูปแบบที่กำหนดและไม่รวมไฟล์เหล่านั้น แต่ฉันต้องการเฉพาะไฟล์และโฟลเดอร์ที่จะละเลย (เส้นทางของไฟล์เต็ม) มิฉะนั้นไฟล์ที่ถูกต้องอาจจะได้รับการยกเว้น ฉันยังสามารถใช้คำสั่ง find เพื่อสร้างรายการไฟล์และแยกไฟล์ที่ฉันไม่ต้องการเก็บถาวรและส่งต่อรายการให้ tar แต่ก็ใช้ได้กับไฟล์จำนวนเล็กน้อยเท่านั้น ฉันมีหมื่น ฉันเริ่มคิดว่าทางออกเดียวคือการสร้างไฟล์ที่มีรายการไฟล์ / โฟลเดอร์ที่จะแยกออกจากนั้นใช้ rsync ด้วย--exclude-from=fileเพื่อคัดลอกไฟล์ทั้งหมดไปยังไดเรกทอรี tmp แล้วใช้ tar เพื่อเก็บถาวรไดเรกทอรีนั้น ใครสามารถคิดวิธีที่ดีกว่า / มีประสิทธิภาพมากกว่านี้ได้ไหม แก้ไข: ทางออกของCharles Maทำงานได้ดี gotcha ขนาดใหญ่คือ--exclude='./folder' ต้องอยู่ที่จุดเริ่มต้นของคำสั่ง tar คำสั่งแบบเต็ม (cd ก่อนดังนั้นการสำรองข้อมูลจึงสัมพันธ์กับไดเรกทอรีนั้น): cd /folder_to_backup tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
810 linux  shell  archive  tar 

10
เมื่อกำหนดไดเรกทอรีต้นไม้สองต้นฉันจะค้นหาไฟล์ที่แตกต่างกันตามเนื้อหาได้อย่างไร
ถ้าฉันต้องการหาความแตกต่างระหว่างทรีไดเร็กตอรี่สองต้นฉันมักจะรัน: diff -r dir1/ dir2/ ผลลัพธ์นี้เป็นสิ่งที่แตกต่างกันระหว่างไฟล์ที่เกี่ยวข้อง ฉันสนใจที่จะรับรายการไฟล์ที่เกี่ยวข้องที่มีเนื้อหาแตกต่างกัน ฉันคิดว่านี่เป็นเพียงเรื่องของการส่งตัวเลือกบรรทัดคำสั่งไปdiffแต่ฉันไม่พบอะไรเลยในหน้า man ข้อเสนอแนะใด ๆ
786 linux  bash  shell  unix  diff 

22
ใช้ grep --exclude / - รวมไวยากรณ์เพื่อไม่ grep ผ่านไฟล์บางไฟล์
ฉันกำลังมองหาสตริงfoo=ในไฟล์ข้อความในแผนผังไดเรกทอรี มันเป็นเครื่อง Linux ทั่วไปฉันมี bash shell: grep -ircl "foo=" * ในไดเรกทอรีนี้ยังมีไฟล์ไบนารีจำนวนมากที่ตรงกับ "foo =" เนื่องจากผลลัพธ์เหล่านี้ไม่เกี่ยวข้องและทำให้การค้นหาช้าลงฉันต้องการ grep ข้ามการค้นหาไฟล์เหล่านี้ (ส่วนใหญ่เป็นรูป JPEG และ PNG) ฉันจะทำอย่างไร ฉันรู้ว่ามี--exclude=PATTERNและ--include=PATTERNตัวเลือก แต่รูปแบบรูปแบบคืออะไร หน้า man ของ grep พูดว่า: --include=PATTERN Recurse in directories only searching file matching PATTERN. --exclude=PATTERN Recurse in directories skip file matching PATTERN. ค้นหาgrep include , grep include …

30
ทำไม“ cd” ไม่ทำงานในเชลล์สคริปต์
ฉันกำลังพยายามเขียนสคริปต์ขนาดเล็กเพื่อเปลี่ยนไดเรกทอรีปัจจุบันเป็นไดเรกทอรีโครงการของฉัน: #!/bin/bash cd /home/tree/projects/java ฉันบันทึกแฟ้มนี้เป็น Proj เพิ่มผู้ได้รับอนุญาตมีและคัดลอกไปยังchmod /usr/binเมื่อฉันเรียกมันโดย: projมันไม่ทำอะไรเลย ผมทำอะไรผิดหรือเปล่า?
766 linux  shell 

13
นับจำนวนบรรทัดในที่เก็บ git
ฉันจะนับจำนวนบรรทัดทั้งหมดที่มีอยู่ในไฟล์ทั้งหมดในที่เก็บ git ได้อย่างไร git ls-files ให้รายการไฟล์ที่ติดตามโดย git ฉันกำลังมองหาคำสั่งcatไฟล์ทั้งหมดเหล่านั้น สิ่งที่ต้องการ git ls-files | [cat all these files] | wc -l
766 bash  git  shell  line-count 

16
เพิ่มตัวแบ่งบรรทัดไปที่ 'git commit -m' จากบรรทัดคำสั่ง
ฉันใช้ Git จากบรรทัดคำสั่งและกำลังพยายามเพิ่มตัวแบ่งบรรทัดในข้อความยืนยัน (ใช้git commit -m "") โดยไม่ต้องเข้าไปในกลุ่ม เป็นไปได้ไหม
746 git  bash  shell 


12
วิธีการ 'grep' สตรีมต่อเนื่อง
เป็นไปได้ไหมที่จะใช้grepในการสตรีมต่อเนื่อง? สิ่งที่ฉันหมายถึงคือการเรียงลำดับของtail -f <file>คำสั่ง แต่มีgrepในผลลัพธ์เพื่อเก็บเฉพาะบรรทัดที่ฉันสนใจ ฉันพยายามแล้วtail -f <file> | grep patternแต่ดูเหมือนว่าgrepจะสามารถดำเนินการได้เมื่อtailเสร็จสิ้นแล้วนั่นคือการพูดที่ไม่เคยทำ
729 linux  bash  shell  grep  tail 

21
แยกสตริงย่อยใน Bash
ให้ชื่อไฟล์ในรูปแบบsomeletters_12345_moreleters.extฉันต้องการแยก 5 หลักและใส่ลงในตัวแปร ดังนั้นเพื่อเน้นจุดนั้นฉันมีชื่อไฟล์ที่มีจำนวน x ตัวอักษรจากนั้นลำดับห้าหลักที่ล้อมรอบด้วยขีดล่างเดี่ยวด้านใดด้านหนึ่งแล้วอีกชุดของจำนวน x อักขระ ฉันต้องการที่จะนำตัวเลข 5 หลักและใส่ลงในตัวแปร ฉันสนใจมากในหลายวิธีที่สามารถทำได้
728 string  bash  shell  substring 

7
ชุด -e หมายถึงอะไรในสคริปต์ทุบตี?
ฉันกำลังศึกษาเนื้อหาของไฟล์preinstนี้ที่สคริปต์ดำเนินการก่อนแพ็กเกจนั้นจะถูกแตกจากไฟล์ Debian archive (.deb) สคริปต์มีรหัสต่อไปนี้: #!/bin/bash set -e # Automatically added by dh_installinit if [ "$1" = install ]; then if [ -d /usr/share/MyApplicationName ]; then echo "MyApplicationName is just installed" return 1 fi rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf rm -Rf $HOME/.local/share/file-manager/actions/* fi # End automatically added section ข้อความค้นหาแรกของฉันเกี่ยวกับบรรทัด: set -e ฉันคิดว่าสคริปต์ส่วนที่เหลือนั้นค่อนข้างเรียบง่าย: …
713 linux  bash  shell  sh 

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