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

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

8
มีวิธีการ 'uniq' โดยคอลัมน์หรือไม่
ฉันมีไฟล์. csv เช่นนี้: stack2@example.com,2009-11-27 01:05:47.893000000,example.net,127.0.0.1 overflow@example.com,2009-11-27 00:58:29.793000000,example.net,255.255.255.0 overflow@example.com,2009-11-27 00:58:29.646465785,example.net,256.255.255.0 ... ฉันต้องลบอีเมลที่ซ้ำกัน (ทั้งบรรทัด) จากไฟล์ (เช่นหนึ่งในบรรทัดที่มีoverflow@example.comในตัวอย่างข้างต้น) ฉันจะใช้งานuniqในฟิลด์ 1 เท่านั้น (คั่นด้วยเครื่องหมายจุลภาค) ได้อย่างไร ตามman, uniqไม่ได้มีตัวเลือกสำหรับคอลัมน์ ฉันลองบางอย่างด้วยsort | uniqแต่ใช้งานไม่ได้
195 linux  shell  sorting  uniq 

30
ฉันจะรวมตัวเลขทั้งหมดในไฟล์ได้อย่างรวดเร็วได้อย่างไร
ฉันมีไฟล์ที่มีหลายพันตัวเลขโดยแต่ละไฟล์เป็นของตัวเอง: 34 42 11 6 2 99 ... ฉันต้องการเขียนสคริปต์ซึ่งจะพิมพ์ผลรวมของตัวเลขทั้งหมดในไฟล์ ฉันมีวิธีแก้ปัญหาแล้ว แต่มันก็ไม่ได้มีประสิทธิภาพมากนัก (ใช้เวลาหลายนาทีในการทำงาน) ฉันกำลังมองหาโซลูชันที่มีประสิทธิภาพมากขึ้น ข้อเสนอแนะใด ๆ
195 linux  perl  bash  shell  awk 

12
ฉันจะได้รับการทุบตีเสร็จสิ้นเพื่อทำงานกับนามแฝงได้อย่างไร
กรณีในจุด: ฉันเป็น mac ที่มี bash v3.2.17 ฉันใช้ git ติดตั้งผ่าน macports กับตัวแปร bash_completion git checkout m<tab>เมื่อฉันพิมพ์ masterสำหรับตัวอย่างเช่นผมได้รับมันเสร็จสิ้นการ แต่ผมได้มีชื่อแทน,git checkout gcoเมื่อฉันพิมพ์gco m<tab>ฉันจะไม่ได้รับชื่อสาขาที่เติมข้อความอัตโนมัติ เป็นการดีที่ฉันต้องการการเติมข้อความอัตโนมัติเพื่อทำงานแทนนามแฝงทั้งหมดของฉันอย่างน่าอัศจรรย์ เป็นไปได้ไหม? ความล้มเหลวนั้นฉันต้องการกำหนดค่าด้วยตนเองสำหรับแต่ละนามแฝง ดังนั้นฉันจะไปเกี่ยวกับวิธีใด
195 git  bash  shell  unix  autocomplete 

13
ฉันจะฆ่ากระบวนการ / งานเบื้องหลังได้อย่างไรเมื่อเชลล์สคริปต์ออก
ฉันกำลังมองหาวิธีที่จะทำความสะอาดความยุ่งเหยิงเมื่อสคริปต์ระดับสูงของฉันออก โดยเฉพาะอย่างยิ่งถ้าฉันต้องการใช้set -eฉันหวังว่ากระบวนการพื้นหลังจะตายเมื่อสคริปต์ออก
194 shell 

19
ป้อนรหัสผ่าน SSH โดยอัตโนมัติด้วยสคริปต์
ฉันต้องสร้างสคริปต์ที่ป้อนรหัสผ่านโดยอัตโนมัติไปยังsshไคลเอนต์OpenSSH สมมติว่าฉันต้อง SSH เข้ากับรหัสผ่านmyname@somehosta1234b ฉันได้ลองแล้ว ... #~/bin/myssh.sh ssh myname@somehost a1234b ... แต่นี่ใช้ไม่ได้ ฉันจะนำฟังก์ชันนี้มาใช้เป็นสคริปต์ได้อย่างไร
194 linux  shell  ssh  openssh 

17
ฉันจะแยกไฟล์ YAML จากสคริปต์เชลล์ Linux ได้อย่างไร
ฉันต้องการให้ไฟล์การกำหนดค่าที่มีโครงสร้างซึ่งเป็นเรื่องง่ายที่สุดสำหรับผู้ใช้ที่ไม่ใช่ด้านเทคนิคในการแก้ไข (น่าเสียดายที่ต้องเป็นไฟล์) และดังนั้นฉันจึงต้องการใช้ YAML ฉันไม่พบวิธีการวิเคราะห์คำนี้จาก Unix shell script
193 shell  yaml 

7
ส่งผ่านตัวแปรทั้งหมดจากเชลล์สคริปต์หนึ่งไปยังอีกเชลล์หรือไม่
ให้บอกว่าฉันมีเชลล์ / ทุบตีสคริปต์ชื่อtest.shด้วย: #!/bin/bash TESTVARIABLE=hellohelloheloo ./test2.sh test2.shหน้าตาของฉันเป็นแบบนี้: #!/bin/bash echo ${TESTVARIABLE} สิ่งนี้ใช้ไม่ได้ ฉันไม่ต้องการที่จะผ่านตัวแปรทั้งหมดเป็นพารามิเตอร์ตั้งแต่ imho นี้เป็น overkill มีวิธีอื่นไหม
193 bash  shell 

7
แก้ไขการใช้อักษรตัวพิมพ์ใหญ่ของตัวแปรสคริปต์ Bash และ shell
ฉันใช้เชลล์สคริปต์จำนวนมากที่มีตัวแปรในตัวพิมพ์ใหญ่ทั้งหมดและฉันคิดเสมอว่ามีความเข้าใจผิดที่รุนแรง ความเข้าใจของฉันคือว่าโดยการประชุม (และอาจจำเป็นนานแล้ว) ตัวแปรสภาพแวดล้อมอยู่ในตัวพิมพ์ใหญ่ทั้งหมด แต่ในสภาพแวดล้อมที่มีการเขียนสคริปต์ที่ทันสมัยเช่นทุบตีฉันได้ต้องการเสมอประชุมของชื่อกรณีที่ต่ำกว่าสำหรับตัวแปรชั่วคราวและคนบนกรณีเฉพาะสำหรับการส่งออกตัวแปร (เช่นสภาพแวดล้อม) ตัวอย่างเช่น: #!/usr/bin/env bash year=`date +%Y` echo "It is $year." export JAVA_HOME="$HOME/java" นั่นเป็นสิ่งที่ฉันทำ มีแหล่งข้อมูลที่เชื่อถือได้ซึ่งเห็นด้วยหรือไม่เห็นด้วยกับวิธีการนี้หรือเป็นเรื่องของสไตล์อย่างหมดจดหรือไม่?

6
คุ้มค่าที่จะเปลี่ยนเป็น zsh เพื่อการใช้งานทั่วไป [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน8 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เชลล์เริ่มต้นใน Mac OS X คือbashซึ่งโดยทั่วไปฉันยินดีที่จะใช้ ฉันแค่เอามันไปให้ มันจะดีจริงๆถ้ามันเติมข้อมูลให้โดยอัตโนมัติและฉันก็ได้ยินเรื่องดีๆzshในเรื่องนี้ แต่ฉันไม่มีความชอบที่จะใช้เวลาหลายชั่วโมงกับการตั้งค่าเพื่อปรับปรุงการใช้บรรทัดคำสั่งของฉันด้วยจำนวนเล็กน้อยเนื่องจากชีวิตของฉันในบรรทัดคำสั่งนั้นไม่เลวเลย (ตามที่ฉันเข้าใจมันbashสามารถกำหนดค่าให้เติมข้อมูลอัตโนมัติได้อย่างชาญฉลาดยิ่งขึ้นนี่คือการกำหนดค่าที่ฉันไม่ได้สนใจทั้งหมด) การเปลี่ยนไปใช้zshแม้ในกรณีจำนวนน้อยจะทำให้ชีวิตของฉันง่ายขึ้นหรือไม่ หรือเป็นเพียงเปลือกหอยที่ดีกว่าถ้าคุณใส่ในเวลาที่จะเรียนรู้ว่าทำไมมันถึงดีกว่า? (ตัวอย่างจะดีเช่นกัน:)) @ Rodney Amato & @ Vulcan Eager ให้เหตุผลสองข้อที่ดีในการติดbashและเปลี่ยนไปตามลำดับzshและสลับไปดูเหมือนว่าฉันจะต้องตรวจสอบทั้งสองอย่าง! โอ้ดี:) มีใครบ้างที่มีความเห็นจากทั้งสองด้านของการโต้แย้ง?
192 bash  shell  zsh 

11
วิธีลบไดเรกทอรี. svn ทั้งหมดออกจากไดเรกทอรีแอปพลิเคชันของฉัน
หนึ่งในภารกิจของเครื่องมือส่งออกที่ฉันมีในแอปพลิเคชันของฉันคือการล้าง.svnไดเรกทอรีทั้งหมดจากแผนผังไดเรกทอรีแอปพลิเคชันของฉัน ฉันกำลังมองหาคำสั่งแบบเรียกซ้ำในเชลล์ลินุกซ์ที่จะสำรวจทรีทั้งต้นและลบ.svnไฟล์ ฉันไม่ได้ใช้การส่งออกเนื่องจากสคริปต์นี้จะใช้กับชื่อไฟล์ / ไดเรกทอรีอื่นซึ่งไม่เกี่ยวข้องกับ SVN ฉันลองทำสิ่งที่ชอบ: find . -name .svn | rm -fr มันไม่ทำงาน ...
192 linux  shell 

14
Git กล่าวว่า“ คำเตือน: เพิ่มอย่างถาวรในรายการโฮสต์ที่รู้จัก”
ทุกครั้งที่ฉันใช้ git เพื่อโต้ตอบกับรีโมทเช่นเมื่อดึงหรือดันฉันจะแสดงข้อความต่อไปนี้: คำเตือน: เพิ่ม '... ' (RSA) ลงในรายการโฮสต์ที่รู้จักอย่างถาวร ฉันจะป้องกันข้อความที่น่ารำคาญนี้ไม่ให้แสดงได้อย่างไร มันเป็นเพียงความรำคาญ - ทุกอย่างทำงานได้อย่างถูกต้อง

16
วิธีการใช้งาน XPath one-liners จาก shell?
มีแพ็คเกจออกมาสำหรับ Ubuntu และ / หรือ CentOS ที่มีเครื่องมือบรรทัดคำสั่งที่สามารถใช้ XPath แบบหนึ่งบรรทัดเหมือนfoo //element@attribute filename.xmlหรือfoo //element@attribute < filename.xmlและส่งคืนผลลัพธ์ทีละบรรทัดได้หรือไม่ ฉันกำลังมองหาบางสิ่งบางอย่างที่จะทำให้ฉันเป็นapt-get install fooหรือแค่yum install fooนั้นก็ทำงานนอกกรอบไม่มีการห่อหุ้มหรือการดัดแปลงอื่น ๆ ที่จำเป็น นี่คือตัวอย่างของสิ่งที่เข้ามาใกล้: Nokogiri ถ้าฉันเขียน wrapper นี้ฉันสามารถเรียก wrapper ตามวิธีที่อธิบายไว้ข้างต้น: #!/usr/bin/ruby require 'nokogiri' Nokogiri::XML(STDIN).xpath(ARGV[0]).each do |row| puts row end XML :: XPath จะทำงานกับ wrapper นี้: #!/usr/bin/perl use strict; use warnings; use XML::XPath; …

11
เชลล์สคริปต์“ for” ไวยากรณ์วนซ้ำ
ฉันได้งานต่อไปนี้แล้ว: for i in {2..10} do echo "output: $i" done มันผลิตเส้นจำนวนoutput: 2มากoutput: 3และอื่น ๆ อย่างไรก็ตามพยายามที่จะเรียกใช้ต่อไปนี้: max=10 for i in {2..$max} do echo "$i" done ผลิตดังต่อไปนี้: output: {2..10} ฉันจะให้คอมไพเลอร์รู้ได้อย่างไรว่ามันควรจะให้ $ max เป็นส่วนท้ายของอาร์เรย์และไม่ใช่ส่วนหนึ่งของสตริง
191 unix  syntax  shell 

4
วิธีสร้างไดเรกทอรีย่อยที่ไม่มีอยู่ซ้ำโดยใช้ Bash
ฉันกำลังสร้างสคริปต์สำรองอย่างรวดเร็วที่จะถ่ายโอนฐานข้อมูลบางส่วนไปยังโครงสร้างไดเรกทอรีที่ดี / เรียบร้อยและฉันรู้ว่าฉันต้องทดสอบเพื่อให้แน่ใจว่าไดเรกทอรีมีอยู่ก่อนที่ฉันจะสร้างพวกเขา รหัสที่ฉันใช้งานได้ แต่ดูเหมือนว่ามีวิธีที่ดีกว่าที่จะทำ ข้อเสนอแนะใด ๆ [ -d "$BACKUP_DIR" ] || mkdir "$BACKUP_DIR" [ -d "$BACKUP_DIR/$client" ] || mkdir "$BACKUP_DIR/$client" [ -d "$BACKUP_DIR/$client/$year" ] || mkdir "$BACKUP_DIR/$client/$year" [ -d "$BACKUP_DIR/$client/$year/$month" ] || mkdir "$BACKUP_DIR/$client/$year/$month" [ -d "$BACKUP_DIR/$client/$year/$month/$day" ] || mkdir "$BACKUP_DIR/$client/$year/$month/$day"

23
เห็นตัวละครในการหลบหนีเมื่อกดปุ่มลูกศรในเปลือกหลาม
ในเชลล์เช่นเชลล์ Python แบบโต้ตอบโดยปกติคุณสามารถใช้ปุ่มลูกศรเพื่อเลื่อนไปมาในบรรทัดปัจจุบันหรือรับคำสั่งก่อนหน้า (พร้อมลูกศรขึ้น) เป็นต้น แต่หลังจากที่ฉันไปที่เครื่องอื่นและเริ่มต้นที่pythonนั่นฉันได้รับเซสชันเช่น: >>> import os >>> ^[[A อักขระตัวสุดท้ายมาจากลูกศรขึ้น หรือใช้ลูกศรซ้าย: >>> impor^[[D ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ในการทุบตีปกติปุ่มลูกศรทำงานได้ดี พฤติกรรมแปลก ๆ นั้นอยู่ในเปลือกของหลาม (หรือเพิร์ลเป็นต้น) แบบโต้ตอบ
191 python  shell  ssh  arrow-keys 

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