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

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

10
แบทช์เปลี่ยนชื่อไฟล์ด้วย Bash
Bash จะเปลี่ยนชื่อชุดแพ็กเกจเพื่อลบหมายเลขเวอร์ชันได้อย่างไร ฉันเคยเล่นกับทั้งสองexprและ%%ไม่มีประโยชน์ ตัวอย่าง: Xft2-2.1.13.pkg กลายเป็น Xft2.pkg jasper-1.900.1.pkg กลายเป็น jasper.pkg xorg-libXrandr-1.2.3.pkg กลายเป็น xorg-libXrandr.pkg
101 bash  shell  file-rename 

7
กด alt + numeric ใน bash แล้วคุณจะได้ (arg [numeric]) นั่นคืออะไร?
กด alt + numeric ใน bash แล้วคุณจะได้ (arg [numeric]) นั่นคืออะไร? (คำถามประเภทนี้เหมาะกว่าสำหรับการถามมนุษย์แทนที่จะพยายาม "เดา" คำศัพท์ที่ถูกต้องเพื่อค้นหาในเอกสารทางอินเทอร์เน็ต)

9
ใช้แมวอย่างไร้ประโยชน์?
นี่อาจเป็นคำถามที่พบบ่อยหลาย ๆ คำถาม - แทนที่จะใช้: cat file | command (ซึ่งเรียกว่าการใช้แมวอย่างไร้ประโยชน์) วิธีที่ถูกต้องควรจะเป็น: command < file ในวิธีที่ 2 "ถูกต้อง" - OS ไม่จำเป็นต้องสร้างกระบวนการเพิ่มเติม แม้จะรู้อย่างนั้น แต่ฉันก็ยังคงใช้แมวไร้ประโยชน์ต่อไปด้วยเหตุผล 2 ประการ สวยงามมากขึ้น - ฉันชอบเมื่อข้อมูลเคลื่อนจากซ้ายไปขวาอย่างสม่ำเสมอเท่านั้น และง่ายต่อการเปลี่ยนcatกับสิ่งอื่น ( gzcat, echo... ), เพิ่มไฟล์ที่ 2 หรือใส่กรองใหม่ ( pv, mbuffer, grep... ) ฉัน "รู้สึก" ว่ามันอาจเร็วกว่าในบางกรณี เร็วขึ้นเนื่องจากมี 2 กระบวนการขั้นตอนที่ 1 ( cat) ทำการอ่านและกระบวนการที่สองทำอะไรก็ได้ …
101 shell  command-line  cat 

10
รับบรรทัดเฉพาะจากไฟล์ข้อความโดยใช้เชลล์สคริปต์
ฉันกำลังพยายามหาบรรทัดเฉพาะจากไฟล์ข้อความ จนถึงตอนนี้ออนไลน์ฉันได้เห็นสิ่งต่างๆเช่น sed เท่านั้น (ฉันสามารถใช้ sh -not bash หรือ sed หรืออะไรก็ได้แบบนั้น) ฉันต้องทำสิ่งนี้โดยใช้เชลล์สคริปต์พื้นฐานเท่านั้น cat file | while read line do #do something done ฉันรู้วิธีการวนซ้ำตามบรรทัดดังที่แสดงด้านบน แต่ถ้าฉันต้องการรับเนื้อหาของบรรทัดใดบรรทัดหนึ่ง
101 linux  shell  unix  sh 

9
การเขียนเอาต์พุตไปยังล็อกไฟล์และคอนโซล
ใน Unix shell ฉันมีไฟล์ env (ไฟล์env กำหนดพารามิเตอร์ที่จำเป็นสำหรับการรันสคริปต์ผู้ใช้เช่นชื่อไฟล์บันทึกและเส้นทางเอาต์พุตการเปลี่ยนเส้นทางและข้อผิดพลาดไปยังไฟล์บันทึกรายละเอียดการเชื่อมต่อฐานข้อมูล ฯลฯ ) ซึ่งเปลี่ยนทิศทางเอาต์พุตทั้งหมด ( ข้อความสะท้อน ) และข้อผิดพลาดกับไฟล์บันทึกจากสคริปต์ที่เรียกใช้งานโดยใช้รหัสต่อไปนี้: exec 1>>${LOG_FILE} exec 2>>${LOG_FILE} ไฟล์ env ถูกเรียกใช้ที่จุดเริ่มต้นของแต่ละสคริปต์ เนื่องจากโค้ดด้านบนในไฟล์ env เอาต์พุตคอนโซลทั้งหมดที่อาจเป็นเอาต์พุตของผู้ใช้หรือข้อผิดพลาดจะถูกส่งออกไปยังไฟล์บันทึกโดยตรงซึ่งเป็นสิ่งที่ฉันต้องการจริงๆ แต่มีเอาต์พุตของผู้ใช้ที่เลือกซึ่งฉันต้องการให้แสดงทั้งในคอนโซลและล็อกไฟล์ แต่เนื่องจากรหัสด้านบนฉันไม่สามารถทำได้ ฉันรู้ว่าถ้าฉันลบโค้ดด้านบนฉันจะได้ผลลัพธ์ที่ต้องการสำหรับกรณีนี้ แต่ฉันจะต้องเขียนผลลัพธ์อื่น ๆ ทั้งหมดลงในไฟล์บันทึกด้วยตนเองซึ่งไม่ใช่เรื่องง่าย มีวิธีรับเอาต์พุตทั้งในคอนโซลและล็อกไฟล์โดยไม่ต้องลบโค้ดด้านบนหรือไม่
101 bash  shell  redirect  logging 

14
คำสั่ง Linux / Unix เพื่อตรวจสอบว่ากระบวนการทำงานอยู่หรือไม่?
ฉันต้องการคำสั่งเชลล์ / bash ที่เป็นอิสระจากแพลตฟอร์ม (Linux / Unix | OSX) ซึ่งจะพิจารณาว่ามีกระบวนการใดกำลังทำงานอยู่หรือไม่ เช่นmysqld, httpd... เป็นวิธีที่คำสั่ง / ง่ายที่สุดในการทำเช่นนี้คืออะไร?
100 linux  bash  shell  unix  process 

7
ฉันจะใช้ตัวเลือก grep --include สำหรับไฟล์หลายประเภทได้อย่างไร
เมื่อฉันต้องการ grep ไฟล์ html ทั้งหมดในบางไดเร็กทอรีฉันทำสิ่งต่อไปนี้ grep --include="*.html" pattern -R /some/path ซึ่งทำงานได้ดี ปัญหาคือจะ grep ไฟล์ html, htm, php ทั้งหมดในบางไดเร็กทอรีได้อย่างไร? จากสิ่งนี้Use grep --exclude / - include syntax to not grep through some filesดูเหมือนว่าฉันสามารถทำสิ่งต่อไปนี้ได้ grep --include="*.{html,php,htm}" pattern -R /some/path แต่น่าเศร้าที่มันไม่ได้ผลสำหรับฉัน FYI เวอร์ชัน grep ของฉันคือ 2.5.1
100 shell  grep 

5
สำหรับไฟล์ในไดเร็กทอรีเฉพาะชื่อไฟล์ echo (ไม่มีพา ธ )
ฉันจะไปเกี่ยวกับการสะท้อนเฉพาะชื่อไฟล์ของไฟล์ได้อย่างไรหากฉันวนซ้ำไดเร็กทอรีด้วย for loop for filename in /home/user/* do echo $filename done; จะดึงเส้นทางแบบเต็มพร้อมชื่อไฟล์ ฉันต้องการแค่ชื่อไฟล์
100 bash  shell 

8
ไฟล์แบตช์ - จำนวนอาร์กิวเมนต์บรรทัดคำสั่ง
เพียงแค่แปลงเชลล์สคริปต์บางส่วนเป็นไฟล์แบตช์และมีสิ่งหนึ่งที่ดูเหมือนว่าฉันไม่สามารถหาได้ ... และนั่นคือการนับจำนวนอาร์กิวเมนต์บรรทัดคำสั่งง่ายๆ เช่น. ถ้าคุณมี: myapp foo bar ในเชลล์: $ # -> 2 $ * -> แถบ foo $ 0 -> myapp $ 1 -> ฟู $ 2 -> บาร์ ในชุด ?? -> 2 <---- คำสั่งอะไร?! % * -> แถบฟู % 0 -> myapp % 1 -> ฟู % 2 …

5
จำลองการกดแป้น ENTER ในสคริปต์ทุบตี
ฉันได้สร้างสคริปต์ทุบตีที่เรียบง่ายซึ่งรันคำสั่งไม่กี่คำสั่ง หนึ่งในคำสั่งเหล่านี้ต้องการอินพุตของผู้ใช้ระหว่างรันไทม์ กล่าวคือถามผู้ใช้ว่า "do you want to blah blah blah?" ฉันต้องการเพียงแค่ส่งปุ่ม Enter ไปที่สิ่งนี้เพื่อให้สคริปต์เป็นไปโดยอัตโนมัติ ฉันไม่ต้องรออินพุตหรืออะไรเลยในระหว่างรันไทม์มันเพียงพอที่จะส่งการกดแป้นและบัฟเฟอร์อินพุตจะจัดการส่วนที่เหลือ
100 linux  bash  ubuntu  shell 

8
การระบุและลบอักขระว่างใน UNIX
ฉันมีไฟล์ข้อความที่มีอักขระว่างที่ไม่ต้องการ (ASCII NUL, \0) เมื่อฉันพยายามเปิดดูในviฉันเห็น^@สัญลักษณ์แทรกอยู่ในข้อความปกติ ฉันสามารถ: ระบุว่าบรรทัดใดในไฟล์มีอักขระ null? ฉันได้ลองใช้ grepping \0และ\x0แต่ไม่ได้ผล ลบอักขระว่าง? การทำงานstringsบนไฟล์จะล้างข้อมูล แต่ฉันแค่สงสัยว่านี่เป็นวิธีที่ดีที่สุดหรือไม่?

6
ทดสอบว่าตัวแปรถูกตั้งค่าเป็น bash หรือไม่เมื่อใช้“ set -o nounset”
รหัสต่อไปนี้ออกพร้อมกับข้อผิดพลาดตัวแปร unbound จะแก้ไขได้อย่างไรในขณะที่ยังใช้set -oตัวเลือก nounset อยู่ #!/bin/bash set -o nounset if [ ! -z ${WHATEVER} ]; then echo "yo" fi echo "whatever"
100 bash  shell  unix 

9
วิธีการกรองไฟล์เมื่อใช้ scp เพื่อคัดลอก dir แบบวนซ้ำ?
ฉันต้องการคัดลอกไฟล์. class ทั้งหมดจากเซิร์ฟเวอร์ไปยังโลคัลโดยสงวนลิขสิทธิ์ทั้งหมด เช่นserver:/usr/some/unknown/number/of/sub/folders/me.classจะเป็น/usr/project/backup/some/unknown/number/of/sub/folders/me.classปัญหาคือมีไฟล์ไร้ประโยชน์อื่น ๆ อีกมากมายเช่นไฟล์. svn-base ที่ฉันไม่ต้องการ ฉันจะกรองไฟล์เหล่านี้เพื่อให้มี แต่scpไฟล์. class ได้อย่างไร
99 file  shell  filter  directory  scp 

4
การสร้าง ZSH default Shell ใน MacOSX [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันติดตั้ง zsh บน Mac ของฉัน และตอนนี้ฉันต้องการทำให้เป็นเชลล์เริ่มต้นแทนที่จะเป็น Bash แต่ดูเหมือนว่าฉันจะพบข้อผิดพลาดต่อไปนี้: $ echo $SHELL /bin/bash $ chsh -s /usr/bin/zsh Changing shell for harshamv. Password for harshamv: chsh: /usr/bin/zsh: non-standard shell
99 bash  shell  zsh 

9
เขียนเชลล์สคริปต์เพื่อ ssh ไปยังเครื่องระยะไกลและดำเนินการคำสั่ง
ฉันมีสองคำถาม: มีเครื่องลินุกซ์ระยะไกลหลายเครื่องและฉันต้องเขียนเชลล์สคริปต์ซึ่งจะดำเนินการชุดคำสั่งเดียวกันในแต่ละเครื่อง (รวมถึงการดำเนินการ sudo บางอย่าง) วิธีนี้สามารถทำได้โดยใช้เชลล์สคริปต์? เมื่อส่งไปยังเครื่องระยะไกลวิธีจัดการเมื่อมีข้อความแจ้งให้ตรวจสอบลายนิ้วมือ RSA เครื่องระยะไกลคือ VM ที่สร้างขึ้นในขณะทำงานและฉันมี IP ของพวกเขา ดังนั้นฉันจึงไม่สามารถวางไฟล์สคริปต์ล่วงหน้าในเครื่องเหล่านั้นและเรียกใช้งานจากเครื่องของฉันได้
99 linux  shell  ssh 

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