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

Bash เป็นเชลล์ฟรีสำหรับระบบปฏิบัติการยูนิกซ์จากโครงการ GNU

4
ดำเนินการคำสั่งหาก Linux ไม่ได้ทำงานเป็นเวลา 5 นาที
ฉันต้องการรันคำสั่งเช่น notify-send 'a' หากเครื่อง Linux ของฉันไม่มีการใช้งานเป็นเวลา 5 นาที โดยที่ไม่ได้ใช้งานฉันหมายถึงสิ่งเดียวกันกับที่โปรแกรมรักษาหน้าจอที่เปิดใช้งานจะใช้เพื่อกำหนด "ว่าง"

2
คำนำหน้าสำหรับแต่ละเอาต์พุตของคำสั่งบนรันไทม์
ฉันกำลังพยายามสร้างสคริปต์แบบแยกส่วน ฉันมีหลายสคริปต์ / คำสั่งที่เรียกจากสคริปต์เดียว ฉันต้องการคำนำหน้าเอาต์พุตของแต่ละคำสั่งแยกกัน Examle: ไฟล์ของฉันคือallcommands.sh / command1.sh / command2.sh command1.shเอาต์พุต file exists file moved command2.shเอาต์พุต file copied file emptied allcommands.shรันสคริปต์command1.shและcommand2.sh ฉันต้องการคำนำหน้าแต่ละเอาต์พุตของสคริปต์ทั้งสองนี้: [command1] file exists [command1] file moved [command2] file copied [command2] file emptied

2
ชื่อไฟล์สีแดงแสดงด้วยพื้นหลังสีดำหมายความว่าอะไร
ฉันมีปัญหาการรวบรวมและเมื่อฉันตรวจสอบ lib / ไดเรกทอรีของฉันฉันได้รับผลลัพธ์จาก "ls": ชุดสีแดง / ดำหมายถึงอะไร ฉันตรวจสอบผลลัพธ์ของ "dircolors -p" ตามที่แนะนำไว้ที่นี่ (การแสดงชื่อไฟล์มีพื้นหลังสีแดงหมายความว่าอย่างไร ) แต่ฉันไม่พบคำตอบ นอกจากนี้คำถามที่ทำเครื่องหมายในสถานที่ของสิทธิ์ / ผู้ใช้ / ขนาด / เวลาประทับหมายถึงอะไร? ขอบคุณสำหรับความช่วยเหลือของคุณ
16 bash  shell  ls 

2
แก้ไขบรรทัดแรกของไฟล์ข้อความขนาดใหญ่
ฉันมีไฟล์ข้อความขนาดใหญ่มากเกินไปที่จะทำเพจทั้งหมดในหน่วยความจำ สิ่งที่ฉันต้องทำเกี่ยวกับไฟล์ข้อความนี้คือแก้ไขบรรทัดแรก (เป็นไฟล์ CSV และฉันต้องเปลี่ยนชื่อ) มีวิธีง่ายๆที่ฉันสามารถทำได้ในทุบตี?
16 linux  bash  grep  sed  textfiles 

5
จะใช้งานไฟล์มากกว่า 10 ล้านไฟล์ในไดเรกทอรีได้อย่างไร?
ฉันมีไดเรกทอรีที่มี 1,014,491 ไฟล์อยู่ในนั้น จนถึงตอนนี้ฉันได้ลองทำสิ่งต่อไปนี้: for f in ls; do sed -i -e 's/blah/blee/g' $f; done ชนเปลือกของฉันlsอยู่ในทิลด้า แต่ฉันไม่สามารถหาวิธีที่จะทำให้หนึ่ง ls | xargs -0 sed -i -e 's/blah/blee/g' มีจำนวนมากเกินไป sed find . -name "*.txt" -exec sed -i -e 's/blah/blee/g' {} \; ไม่สามารถแยกหน่วยความจำได้อีกแล้ว แนวคิดอื่น ๆ เกี่ยวกับวิธีสร้างคำสั่งชนิดนี้? ไฟล์ไม่จำเป็นต้องสื่อสารกัน ls | wc -lดูเหมือนว่าจะทำงาน (ช้ามาก) ดังนั้นจึงต้องเป็นไปได้
16 bash  find  xargs 

2
จะเกิดอะไรขึ้นกับกระบวนการที่ทำงานอยู่เมื่อฉันสูญเสียการเชื่อมต่อระยะไกลไปยังกล่อง * nix
ฉันสูญเสียการเชื่อมต่อ SSH ระยะไกลเป็นครั้งคราวกับ VPS ของฉัน ฉันใช้screenสำหรับกระบวนการที่ใช้เวลานาน แต่ฉันสงสัยว่าจะเกิดอะไรขึ้นกับกระบวนการที่ฉันทำงานนอกเหนือจากการทำงานเหล่านั้นภายในscreenเซสชันหากฉันขาดการเชื่อมต่อกับกล่อง เมื่อฉันสร้างการเชื่อมต่อกับกล่องอีกครั้งเกิดอะไรขึ้นกับกระบวนการ bash และ sshd ที่ทำงานเมื่อฉันขาดการเชื่อมต่อ วันนี้ฉันขาดการเชื่อมต่อซ้ำ ๆ และสังเกตเห็นกระบวนการ bash และ sshd อีกมากมายกว่าปกติ หากมีกระบวนการแขวนอยู่รอบ ๆ ฉันต้องฆ่าพวกเขาหรือไม่ ฉันจะทราบได้อย่างไรว่ากระบวนการใดถูกทอดทิ้งจากเซสชันก่อนหน้าของฉัน ขอบคุณสำหรับคำตอบใด ๆ !

3
เปลี่ยนการเข้ารหัสไฟล์ txt
เมื่อฉันเขียน: file file1.txt ฉันมีเอาท์พุทนี้: ข้อความ Unicode UTF-16 แบบ Little-endian พร้อมตัวต่อสาย CR ถ้าฉันจะเขียน: file file2.txt ฉันมี: ข้อความ ASCII file2.txt ถูกสร้างโดยการสร้าง: echo $var > "file2.txt" ฉันต้องการ file2.txt มีการเข้ารหัสแบบเดียวกันกับ file1.txt ฉันจะทำสิ่งนั้นได้อย่างไร
16 bash  encoding  echo 

6
ไม่คาดหวังจุดสิ้นสุดไฟล์ ไฟล์บีบอัด Gzip
ฉันกำลังบ้ากับไฟล์ gzip ฉันสามารถขยายไฟล์ใน Windows โดยใช้ WinRAR แต่มันเป็นไปไม่ได้ในระบบปฏิบัติการ UNIX ไฟล์น่าจะโอเค ถ้าฉันทำ file the_name_of_the_file.gz ฉันเข้าใจ: the_name_of_the_file.gz: gzip compressed data, from Unix, last modified: Sun Jan 30 14:10:21 2011 แต่ถ้าฉันทำ gunzip -f the_name_of_the_file.gz ฉันได้รับ: gzip: the_name_of_the_file.gz: unexpected end of file ปัญหาเดียวกันนี้เกิดขึ้นเมื่อฉันพยายามแตกไฟล์โดยใช้เครื่องมือ GUI ใน Ubuntu หรือ MacOSX ความคิดใด ๆ
16 linux  bash  gzip 

1
รายการไฟล์ที่มีหมายเลขในช่วงที่ระบุ
ฉันมีชุดของไฟล์ในไดเรกทอรีที่มีหมายเลขดังนี้: file1.txt file2.txt ... file30.txt ... ตอนนี้ฉันต้องการเรียกใช้คำสั่งในช่วงของไฟล์ที่เฉพาะเจาะจงให้บอกว่า 18 ถึง 31 จนถึงตอนนี้ฉันได้ใช้วิธีดังต่อไปนี้ สามข้อโต้แย้ง command file1[8-9].txt file2[0-9].txt file3[0-1].txt ทีนี้สมมติว่าฉันต้องการเลขทุกตัว ห่วง for i in `jot - 18 31 2`; do echo file${i}.txt; done | xargs command ดูเหมือนว่าจะเป็นการวนซ้ำที่เชื่อถือได้มากขึ้น (การเว้นวรรคทำงาน) for i in `jot - 18 31 2`; do echo "\"file${i}.txt\" "; done | xargs …
16 bash  range 


5
ฉันจะยังเห็นข้อความ 'man' หลังจากที่ฉันเลิกไปได้อย่างไร
ฉันมักจะใช้ tcsh หรือ bash และมักต้องการใช้ 'man' เพื่อตรวจสอบตัวเลือกของคำสั่ง ขณะนี้เมื่อฉันออกจาก man หรือ ctrl-C ข้อความ man จะหายไปและฉันเห็น scrollback buffer ที่อยู่ที่นั่นก่อนที่ฉันจะใช้คำสั่ง 'man' ฉันยังต้องการเห็นข้อความ 'man' ที่ฉันดูเป็นข้อมูลอ้างอิงในขณะที่ฉันพิมพ์คำสั่งที่ command prompt โดยไม่ต้องเปิดหน้าต่างที่สองฉันจะทำอย่างไร

7
unix - แยกไฟล์. gz ขนาดใหญ่ทีละบรรทัด
ฉันแน่ใจว่าบางคนมีความต้องการด้านล่างสิ่งที่เป็นวิธีที่รวดเร็วในการแยกไฟล์. gz ขนาดใหญ่ทีละบรรทัด? ไฟล์ข้อความต้นแบบมี 120 ล้านแถว ฉันมีพื้นที่ว่างในดิสก์ไม่เพียงพอที่จะ gunzip ไฟล์ทั้งหมดในครั้งเดียวดังนั้นฉันจึงสงสัยว่ามีบางคนรู้ว่าสคริปต์หรือเครื่องมือทุบตี / perl ที่สามารถแยกไฟล์ได้ . เช่นเรียกมันว่า: bash splitter.sh hugefile.txt.gz 4000000 1 would get lines 1 to 40 mn bash splitter.sh hugefile.txt.gz 4000000 2 would get lines 40mn to 80 mn bash splitter.sh hugefile.txt.gz 4000000 3 would get lines 80mn to 120 mn …
16 linux  perl  bash  shell  unix 

1
xargs -I replace-str ตัวเลือกที่แตกต่าง
จากความเข้าใจของฉันต่อไปนี้ควรมีความหมายเหมือนกันทุกประการ: ls -1 | xargs file {} ls -1 | xargs -I{} file {} หากไม่ได้ระบุตัวเลือก -I ไว้ค่าเริ่มต้นคือ -I {} ฉันต้องการแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันและเรียกใช้fileคำสั่งในแต่ละไฟล์ บางแห่งมีช่องว่างในชื่อ อย่างไรก็ตามฉันสังเกตเห็นความแตกต่าง ดูด้านล่าง: $ ls -1 Hello World $ ls -1 | xargs file {} {}: ERROR: cannot open `{}' (No such file or directory) Hello: ERROR: cannot open `Hello' …
16 bash  xargs 

3
ls แบบเรียกซ้ำพร้อมเงื่อนไข
เหตุใดฉันจึงไม่สามารถใช้คำสั่งเช่นนี้เพื่อค้นหาไฟล์ pdf ทั้งหมดในไดเรกทอรีและไดเรกทอรีย่อย ฉันต้องทำอย่างไร? (ฉันใช้ทุบตีใน Ubuntu) ls -R *.pdf แก้ไข ฉันจะลบไฟล์เหล่านี้ได้อย่างไร
16 ubuntu  bash  ls  recursive 

4
วางไข่หน้าต่าง Cygwin ใหม่จากภายใน Cygwin
ฉันไม่สามารถหาวิธีเปิดเซสชัน Cygwin ใหม่จากภายใน Cygwin ได้เหมือนกับการเปิดตัวเทอร์มินัลใหม่จากภายใน bash ด้วย: gnome-terminal มันอาจจะง่าย แต่ฉันขาดอะไรไป ความคิดใด ๆ
16 bash  terminal  cygwin 

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