คำถามติดแท็ก command-line

คำถามเกี่ยวกับการใช้อินเตอร์เฟสบรรทัดคำสั่ง (CLI)

6
สร้างไดเรกทอรีที่มีชื่อจากไฟล์ txt ซึ่งมีอักขระ '/'
ฉันมีไฟล์. txt ที่มีข้อความเช่นนี้ A1/B1/C1 A2/B2/C2 A3/B3/C3 ฉันต้องการสคริปต์ที่อ่านไฟล์. txt สำหรับแต่ละบรรทัดจากนั้นสร้างไดเรกทอรีตามคำแรก (A1, A2, A3) ฉันได้สร้างสคริปต์เช่นนี้: file="test.txt" while IFS='' read -r line do name="line" mkdir -p $line done <"$file" ในขณะที่ฉันเรียกใช้มันสร้างไดเรกทอรี A1 จากนั้นสร้างไดเรกทอรีย่อย B1 และ C1 เกิดขึ้นเหมือนกันสำหรับอีกบรรทัด (A2 * และ A3 *) ฉันควรทำอย่างไรเพื่อสร้างไดเรกทอรี A1, A2, A3 เท่านั้น ฉันไม่ต้องการตั้งชื่อเช่น A1 / B1 / C1 ด้วยอักขระ …

2
จำกัด เอาต์พุต grep เป็นบรรทัดสั้น ๆ
ฉันมักใช้ grep เพื่อค้นหาไฟล์ที่มีรายการบางรายการเช่นนี้: grep -R 'MyClassName' สิ่งที่ดีคือมันคืนไฟล์เนื้อหาและทำเครื่องหมายสตริงที่พบเป็นสีแดง สิ่งที่ไม่ดีคือฉันยังมีไฟล์ขนาดใหญ่ที่เขียนข้อความทั้งหมดในบรรทัดเดียวขนาดใหญ่ ตอนนี้ grep เอาต์พุตมากเกินไปเมื่อค้นหาข้อความภายในไฟล์ขนาดใหญ่เหล่านั้น มีวิธี จำกัด ผลลัพธ์ให้เช่น 5 คำไปทางซ้ายและไปทางขวาหรือไม่ หรืออาจ จำกัด ผลลัพธ์ให้เหลือ 30 ตัวอักษรไปทางซ้ายและไปทางขวา?

4
วิธีดึงข้อมูลหลายบิตที่ปรากฏบนบรรทัดต่าง ๆ ภายในไฟล์ข้อความเดียวกัน
ฉันพยายามที่จะแยก ID ลำดับและหมายเลขคลัสเตอร์ที่เกิดขึ้นในบรรทัดที่แตกต่างกันภายในไฟล์ข้อความเดียวกัน อินพุตดูเหมือนว่า >Cluster 72 0 319aa, >O311_01007... * >Cluster 73 0 318aa, >1494_00753... * 1 318aa, >1621_00002... at 99.69% 2 318aa, >1622_00575... at 99.37% 3 318aa, >1633_00422... at 99.37% 4 318aa, >O136_00307... at 99.69% >Cluster 74 0 318aa, >O139_01028... * 1 318aa, >O142_00961... at 99.69% >Cluster 75 0 …

3
เปลี่ยนคีย์บอร์ดกลับเป็นภาษาอังกฤษในบรรทัดคำสั่งจาก Cyrillic
ฉันเปลี่ยนเป็นแป้นพิมพ์ภาษารัสเซียผ่านloadkeys ruคำสั่งและตอนนี้ไม่สามารถสลับกลับได้ ไดเรกทอรีและไฟล์ที่ตามมาที่ฉันมีชื่อเป็นตัวอักษรซิริลลิกและฉันพยายามที่จะไปถึงพวกเขาโดยการรวมคำสั่งในตัวอักษรละตินและซิริลลิก จนถึงตอนนี้ฉันติดอยู่กับ Cyrillic ไม่มีใครรู้วิธีเปลี่ยนกลับหากฉันมีเฉพาะอักขระซิริลลิกเท่านั้น?

2
ฉันจะดึงรูปภาพจากช่วงเวลาหนึ่งของวิดีโอใน Xubuntu 16.04 ได้อย่างไร?
ฉันกำลังมองหาตัวเลือกบรรทัดคำสั่ง ตัวอย่างเช่นหากฉันมีวิดีโอsample-video.mp4และฉันต้องการสร้างไฟล์ภาพsample-image.jpgจากวิดีโอในเวลา 00:00:26 ฉันควรจะให้คำสั่งอะไร นอกจากนี้มันจะมีประโยชน์มากหากคุณสามารถอธิบายโดยละเอียดว่าฟังก์ชันของอาร์กิวเมนต์ทุกคำสั่งคืออะไร

2
ใช้การเปลี่ยนชื่อรักษาส่วนหนึ่งของ regex การค้นหา
เช้า โครงการปัจจุบันที่ฉันต้องทำงานมีรูปแบบการตั้งชื่อก่อนหน้านี้ที่รบกวนฉัน ... Base.v2.c Base.v2a.c Slider.v4a.h Area.v2a.2.h ฉันได้รับการบอกว่า "a" ในเวอร์ชันนี้คือการระบุ "อัลฟา" ที่จำเป็นต้องใช้งานมากกว่านี้ ในขั้นตอนนี้ฉันสามารถลบ "a" และแทนที่ด้วย ".1" (v2a -> v2.1) มีไฟล์จำนวนมากเกินกว่าที่ฉันจะทำเอง ฉันรู้ว่าฉันสามารถใช้คำสั่ง rename เพื่อเปลี่ยนชื่อไฟล์ทั้งหมดในครั้งเดียว แต่ฉันพบปัญหาเกี่ยวกับวิธีการทำเช่นนั้น ถ้าฉันใช้สิ่งที่ชอบ: rename 's/[0-9]a/.1/' * จากนั้นฉันจะสูญเสียตัวเลขหลักสุดท้ายของหมายเลขเวอร์ชัน มีวิธีการเปลี่ยนชื่อ (หรือเครื่องมือบรรทัดคำสั่งอื่น) จำส่วนหนึ่งของ regex ที่ใช้ในการค้นหาไฟล์หรือไม่ ดังนั้น '[0-9] a' ถึง '[0-9] .1' จะเปลี่ยน 1a เป็น 1.1 และ 4a เป็น 4.1 เป็นต้น

3
คำสั่งที่จะพิมพ์ค่าเพียงครั้งเดียวแม้ว่ามันจะปรากฏขึ้นหลายครั้ง
ฉันมีไฟล์ txt ขนาดใหญ่ซึ่งมีค่าซ้ำหลายครั้ง มีคำสั่งที่ฉันสามารถใช้ที่จะผ่านไฟล์และหากค่าหนึ่งปรากฏครั้งเดียวไม่ทำซ้ำอีกครั้ง? SO4 HOH CL BME HOH SO4 HOH CL BME HOH SO4 HOH SO4 HOH CL BME HOH SO4 HOH CL BME HOH CL ดังนั้นควรมีลักษณะดังนี้: S04 HOH CL BME สิ่งนี้คือฉันมีค่าแตกต่างกันจำนวนมากดังนั้นฉันไม่สามารถทำมันเองแบบนี้ได้

3
ฉันจะแก้ไขตัวแปรในเชลล์ที่ทำงานอยู่ได้อย่างไร?
ฉันกำลังแก้ไขพรอมต์ PS1 ของฉันและฉันไม่ต้องการให้ bashrc ของฉันทำการอัปเดตต่อไป (เนื่องจาก bashrc ของฉันรีเซ็ตสิ่งอื่นด้วยเช่นกัน) ฉันไม่ต้องการคัดลอกและวางมันซ้ำแล้วซ้ำอีก มีวิธีแก้ไขตัวแปรแบบโต้ตอบเช่นใช้nano(แก้ไขเริ่มต้นของฉัน) หรือไม่ PS1 ส่วนใหญ่เป็นตัวอย่างเพราะฉันต้องการทำสิ่งเดียวกันกับ vars อื่น ๆ เหตุผลที่ฉันต้องการทำแบบโต้ตอบก็คือตัวแปรนั้นมีความยาวและฉันต้องแก้ไขตัวละครสองสามตัวในนั้น และฉันแค่ต้องการเปลี่ยนมันในเปลือกปัจจุบัน

3
เอาต์พุตโดยตรงจากคำสั่งไปยังไฟล์รวมถึงคำสั่งดั้งเดิมและพิมพ์ในเทอร์มินัล
เมื่อเรียกใช้การทดสอบฉันต้องเรียกใช้ชุดคำสั่ง มันจะมีประโยชน์มากสำหรับฉันและช่วยฉันได้มากถ้ามีวิธีที่จะทำสิ่งเหล่านี้ทั้งหมด: เรียกใช้คำสั่งที่ฉันต้องการเรียกใช้ เปลี่ยนทิศทางเอาต์พุตทั้งหมดจากคำสั่งไปยังไฟล์ที่ระบุ รวมคำสั่งดั้งเดิมในไฟล์ที่ระบุ พิมพ์เอาต์พุตจากคำสั่งดั้งเดิมในเทอร์มินัล มีคนแนะนำให้ใช้ทีออฟให้ฉันซึ่งทำงานได้ยอดเยี่ยมในการพิมพ์ไปยังเทอร์มินัลเช่นเดียวกับการส่งไฟล์ แต่ไม่มีคำสั่งดั้งเดิม สิ่งที่ฉันต้องการท้ายคือไฟล์ที่บรรทัดแรกคือคำสั่งที่ฉันวิ่งแล้วด้านล่างนั่นคือผลลัพธ์จากคำสั่ง มีคนแนะนำสิ่งนี้: echo "ls -l" | xargs -I{} bash -c "echo >> output.file; eval {} >> output.file" แต่สิ่งนี้จะไม่พิมพ์เอาต์พุตในเทอร์มินัลหรือรวมคำสั่งดั้งเดิมไว้ในไฟล์ ฉันขอขอบคุณแนวคิดใด ๆ

1
ฉันจะตรวจสอบระดับสัญญาณไร้สายและความถี่และบันทึกในรูปแบบ csv ได้อย่างไร
ฉันต้องการรันคำสั่งiw dev wlan0 linkอย่างต่อเนื่องทุกวินาทีและบันทึกผลลัพธ์ลงในcsvไฟล์ ฉันกำลังใช้คำสั่งต่อไปนี้: while sleep 1; do iw dev wlan0 link | grep 'freq:\|signal' | awk '{printf "%s ", $2, $3}' >> log.csv done แต่เอาต์พุตจะถูกบันทึกlog.csvด้วยวิธีต่อไปนี้: 2412 -41 2412 -42 2412 -45 2412 -43 ฉันต้องการให้บันทึกผลลัพธ์ในวิธีที่ทั้งสองเขตข้อมูลคั่นด้วยเครื่องหมายจุลภาค (ดังนั้นพวกเขาจะปรากฏในคอลัมน์แยกต่างหากในโปรแกรมแก้ไขเช่น MS Excel) และแต่ละคนทำงานในบรรทัดใหม่ log.csvจะมีลักษณะเช่นนี้ (คุณสามารถละเว้นฉลากพวกเขาเป็นเพียงคำอธิบาย): Signal Frequency -41 2412 -42 2412 -45 2412 …

4
วิ่งผ่านสองฉากในหนึ่งวง
ฉันพยายามที่จะทำงานผ่านสองลำดับในวงเดียวกันในเปลือกของฉันเช่นด้านล่าง: #!/bin/bash for i in (1..15) and (20..25) ; do echo $i ...... .....other process done ความคิดใดที่ฉันสามารถบรรลุสิ่งนี้
8 command-line  bash  sh 


5
จะตัดผลลัพธ์ของ speedtest-cli ให้ส่งออกเฉพาะความเร็วในการดาวน์โหลดได้อย่างไร
ผมอยากจะเป็นระยะแสดงผลความเร็วในการดาวน์โหลดของฉัน Speedtest ในตัวบ่งชี้ sysmonitor speedtest-cli มีเอาต์พุตที่ถูกตัดออกบ้างหากคุณรัน $ speedtest-cli --simple Ping: 50.808 ms Download: 10.87 Mbit/s Upload: 4.47 Mbit/s มีวิธีใดในการตัดแต่งเอาต์พุตให้มากขึ้นลงไปที่ตัวเลขความเร็วในการดาวน์โหลด?

1
วิธีการใช้งานเทอร์มินัลต่อไปหลังจากออกคำสั่ง“ หยุดชั่วคราว”?
ฉันพิมพ์suspendในเทอร์มินัลและมันหยุดการทำงานชั่วคราว ฉันจะกลับไปใช้งานเทอร์มินัลปกติได้อย่างไร ฉันได้ลองCtrl+ C, Ctrl+ D, Ctrl+ Q( ตามที่แนะนำไว้ที่นี่ ) และCtrl+ Zแต่ไม่ได้ผล แน่นอนฉันสามารถปิดเทอร์มินัลแล้วเปิดใหม่ได้ แต่ไม่มีวิธีใดที่จะ "กลับมาทำงาน" ในเทอร์มินัลต่อไปได้? ฉันใช้ Ubuntu GNOME 16.04 โดยมีเชลล์เริ่มต้น (ทุบตี)

2
โฟลเดอร์ย่อย chown พร้อมเจ้าของและกลุ่มโฟลเดอร์ปัจจุบัน
ในสคริปต์ทุบตีฉันต้องการเรียกใช้โฟลเดอร์ย่อยซ้ำทั้งหมดของโฟลเดอร์ตามอำเภอใจกับผู้ใช้และเจ้าของกลุ่มของโฟลเดอร์ที่กำหนด วิธีการของฉันเป็นสิ่งที่ต้องการใช้ stat -c "%U %G" . แต่นั่นกลับเป็นเพียงรูปแบบของ username[whitespace]groupname แน่นอนฉันสามารถลองใช้เครื่องมือต่าง ๆ เพื่อแทนที่ช่องว่างด้วย:แต่ฉันต้องการใช้วิธี "เพิ่มเติม" ในตัวถ้ามีอย่างใดอย่างหนึ่งเพื่อใช้ความเป็นเจ้าของปัจจุบันกับโฟลเดอร์ย่อย

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