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

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

1
บันทึก“ คัดลอก” ล่าสุดจากคลิปบอร์ดไปยังไฟล์
ฉันสามารถคัดลอกข้อความจำนวนมาก แต่ไม่สามารถวางที่ใดก็ได้โดยไม่ต้องหยุดโปรแกรม ดังนั้นฉันสงสัยว่า: ฉันจะดึงข้อมูลจากคลิปบอร์ดผ่าน CLI และบันทึกเป็นไฟล์แทนได้อย่างไร ขอบคุณ!

5
ทำไม `ไฟล์ mv / dir` ไม่ย้ายไฟล์ไปยังไดเรกทอรีย่อยของไดเรกทอรีการทำงานปัจจุบัน?
ฉันอยู่ใน/etcไดเรกทอรีของฉันและพิมพ์คำสั่ง me@mylaptop:/etc$ sudo mv MyFile.conf /openvpn ฉันคิดว่าจะย้ายไฟล์ไปยังไดเรกทอรีopenvpnซึ่งเป็นไดเรกทอรีย่อยของ/etcไดเรกทอรี อย่างไรก็ตามนั่นไม่ได้เป็นสิ่งที่เกิดขึ้น ทั้งหมดที่ฉันสามารถยืนยันได้คือคำสั่งที่ได้ดำเนินการ

2
ตัวแปรไม่แยกวิเคราะห์เป็นสตริง
ปัญหา ฉันพยายามแยกระดับสัญญาณ wifi ในวิธีต่อไปนี้ในสคริปต์ทุบตี (คำพูดดูเหมือนจะไม่แตกต่างกัน): string="$(iwconfig wlan0 | grep -I Signal)" ถ้าฉันecho $stringฉันได้รับสิ่งที่ฉันคาดหวัง: Link Quality=63/70 Signal level=-47dBm แต่ถ้าฉันลองรับสายอักขระย่อยecho ${string:5}มันจะส่งคืนสิ่งเดียวกัน debuging: ถ้าฉันวางผลลัพธ์wconfig wlan0 | grep -I Signalโดยตรงลงในตัวแปร: string="Link Quality=63/70 Signal level=-47dBm"ทุกอย่างทำงานตามที่คาดไว้ echo $string # Link Quality=63/70 Signal level=-47dBm echo ${string:5} # Quality=63/70 Signal level=-47dBm คำถาม:ตามอินเทอร์เน็ตตัวแปรทุบตีทั้งหมดจะถูกเก็บเป็นสตริงอักขระ ดังนั้นผลลัพธ์การดีบักควรเหมือนกันกับปัญหาดั้งเดิมของฉัน มีเหตุผลบางอย่างที่ไม่แยกวิเคราะห์ข้อความในปัญหาดั้งเดิมหรือไม่?

3
การขยายด้วย * .txt ในเชลล์ไม่ทำงานหากไม่มีไฟล์. txt อยู่
ฉันกำลังเล่นกับการขยายตัวและฉันสังเกตเห็นพฤติกรรมที่แปลกประหลาด ฉันพยายามทำ: echo ./*.txt และฉันไม่มีไฟล์. txt ใด ๆ ในไดเรกทอรีปัจจุบันของฉัน ผลลัพธ์ที่ฉันได้รับคือ: ./*.txt ฉันแค่อยากรู้อยากเห็น: ทำไมฉันถึงได้รับนี้ ฉันคาดหวังว่าจะไม่ได้รับผลลัพธ์ใด ๆ PS: เมื่อฉันมี.txtไฟล์การขยายถูกตีความอย่างถูกต้อง กล่าวอีกนัยหนึ่งว่าฉันมีไฟล์smthn.txtเสียงสะท้อนจริงcurrent_directory/smthn.txtๆ

6
จะลบโคลอนแรก ':' ออกจากเวลาได้อย่างไร
ฉันใหม่กับการเขียนโปรแกรม !! ทุกคนสามารถช่วยในการลบ:ที่ตำแหน่งแรกในการประทับเวลา::29.06.2019 23:03:17 ปัจจุบันฉันพยายามทำโดยใช้คำสั่ง awk / cut ดังที่แสดงด้านล่าง: TDS="$(grep 'Logfile started' process.log | awk '{print $3,$4}' | cut -d: -f2)" echo "$TDS" 29.06.2019 23 และผลลัพธ์ไม่ใช่สิ่งที่ฉันต้องการ! 29.06.2019 23:03:17ฉันต้องการพิมพ์เป็น

2
ฉันสามารถกำหนดค่า bash / readline เพื่อแปลง NBSP เป็นพื้นที่ปกติได้หรือไม่
ฉันใช้รูปแบบแป้นพิมพ์ภาษาฟินแลนด์ซึ่งแผนที่AltGr+ Spaceไปยังพื้นที่ที่ไม่ทำลาย (NBSP, U + 00A0) ฉันมีความสุขกับสิ่งนี้โดยทั่วไป แต่ฉันพบว่าฉันมักจะเขียน NBSP โดยไม่ได้ตั้งใจแทนพื้นที่ว่างหลัง|สัญลักษณ์ "" (เขียนด้วยAltGr+ <ด้วยรูปแบบแป้นพิมพ์ภาษาฟินแลนด์) ขณะใช้บรรทัดคำสั่ง bash ฉันเดาว่ามันเกิดจากความจริงที่ว่าฉันต้องกดค้างไว้AltGrในขณะที่พิมพ์ไปป์และปล่อยมันก่อนที่จะกดปุ่มพื้นที่ และเมื่อฉันมีเวลาไม่ดีสำหรับการเปิดตัวของAltGrฉันฉันก็จบลงด้วยการพิมพ์ผิดที่มองไม่เห็นในบรรทัดคำสั่งและข้อความผิดพลาดเช่น grep: command not found ซึ่งมีลักษณะคล้ายกับ grep: command not found ซึ่งทำให้ปัญหานี้เล็กน้อยยากที่จะสังเกตเห็นในครั้งแรก ฉันรู้ว่าฉันสามารถปิดการใช้งาน NBSP ได้แต่ฉันต้องการปิดการใช้งาน (โดยมีAltGr+ Spaceเพื่อสร้างพื้นที่ปกติ) เฉพาะหลังจากที่ไปป์ไลน์หรือหากไม่สามารถทำได้ให้ใช้คำสั่ง bash หรือreadlineระดับบรรทัดเสมอ มีวิธีง่ายๆในการทำเช่นนี้โดยไม่ต้องแก้ไขซอร์สโค้ดของ bash readlineหรือเทอร์มินัลอีมูเลเตอร์ของฉัน ( gnome-terminal)? อีกวิธีที่ดีคือการกำหนดค่า NBSP ให้ปรากฏบนบรรทัดคำสั่งอย่างใดอย่างหนึ่งเช่นแทนที่ด้วยอักขระอื่น (พูด U + 2423 ␣) สำหรับการเรนเดอร์เท่านั้น

1
ลบโดยไม่ตั้งใจ / var / lib / apt /
ฉันลบเนื้อหาของ / var / lib / apt ด้วยคำสั่งด้านล่างโดยไม่ตั้งใจ: sudo rm -rf /var/lib/apt/* สิ่งที่ฉันควรทำตอนนี้? ฉันจะเรียกคืนได้หรือไม่ จำเป็นหรือไม่

4
ฉันจะป้องกันคำสั่ง 'cd' จากการไปที่โฮมไดเร็กตอรี่ได้อย่างไร?
สิ่งนั้นคือบางครั้งฉันพิมพ์cdโดยไม่ได้ตั้งใจและพาฉันไปที่โฮมไดเร็กตอรี่ เช่นฉันอยู่ในไดเรกทอรีที่มีไดเรกทอรีที่ซ่อนอยู่และไดเรกทอรีที่มองเห็นได้ฉันกดcd+ tabและพาฉันไปที่ไดเรกทอรีบ้าน

2
การอ้างชื่อไฟล์มีความปลอดภัยเพียงพอหรือไม่ในการใช้งาน `xargs sudo rm -rf`?
ฉันเขียนสคริปต์ที่ลบทั้งหมดยกเว้นไฟล์สองไฟล์สุดท้ายในโฟลเดอร์: #!/bin/bash ls -1 --quoting-style=shell-always /path/to/some/folder \ | head -n -2 \ | xargs printf -- "'/path/to/some/folder/%s'\n" \ | xargs sudo rm -rf สคริปต์นี้จะถูกเรียกใช้เป็นงาน cron ทุกวัน เหตุผลมีดังนี้: รับรายการไฟล์ทั้งหมดโดยใช้ls -1(เพื่อให้ได้หนึ่งไฟล์ต่อบรรทัด); นำสองคนสุดท้ายจากรายการใช้head -n -2; ตั้งแต่lsพิมพ์พา ธ ที่สัมพันธ์กันให้ใช้xargs printfสิ่งต่าง ๆ เพื่อผนวกเส้นทางโฟลเดอร์และทำให้เป็นพา ธ สัมบูรณ์ ส่งพวกเขาไปใช้sudo rm -rfxargs ทุกคนสามารถเข้าถึงโฟลเดอร์นี้เพื่อให้ทุกคนสามารถสร้างและลบไฟล์ใด ๆ ในโฟลเดอร์นี้ ปัญหาคือ: sudo rm -rfน่ากลัว …

2
คัดลอกและวางกลุ่มของไฟล์ด้วยชื่ออื่น
ฉันมีไฟล์ข้อความจำนวนมากที่มีชื่อ foo_bar_abc_1_01_geh_original.in foo_bar_abc_1_02_geh_original.in foo_bar_abc_1_03_geh_original.in ... ... foo_bar_abc_1_1000_geh_original.in ฉันต้องการคัดลอก (และเก็บไฟล์ต้นฉบับ) แต่ละไฟล์และวางในชื่อต่าง ๆ (ในโฟลเดอร์เดียวกัน) เช่น foo_bar_abc_1_01_geh_copy.in foo_bar_abc_1_02_geh_copy.in foo_bar_abc_1_03_geh_copy.in ... ... foo_bar_abc_1_1000_geh_copy.in ฉันจะทำสิ่งนี้โดยใช้สคริปต์อย่างง่ายได้อย่างไร

1
มีวิธีใดบ้างในการตรวจสอบประวัติของเซสชันปัจจุบันเท่านั้น?
ฉันต้องการทราบว่ามีคำสั่งใด ๆ หรือวิธีอื่นใดที่ฉันสามารถตรวจสอบประวัติคำสั่งของฉันเฉพาะในเซสชันปัจจุบัน

2
หลีกเลี่ยงการแทนที่ช่องว่างเมื่อเปลี่ยนชื่อไฟล์
ฉันพยายามเปลี่ยนชื่อไฟล์เช่นนี้: for file in *; do mv -i "$file" "$(echo "$file" | sed -e 's/[^A-Za-z0-9._-]/_/g')"; done แต่คำสั่งแทนที่ช่องว่างทั้งหมดที่มีsed_ ฉันจะแก้ไขsedคำสั่งเพื่อทำให้เป็นช่องว่างพร้อมกับอักขระที่ระบุได้อย่างไร ฉันลองใช้\sแล้วแต่ไม่ได้ผล ... แก้ไข: ตัวอย่างเช่นไฟล์trip: hill, ควรจะเปลี่ยนชื่อ: แต่คำสั่งดังกล่าวทำให้มันtrip_ hilltrip__hill

5
ตัดคำสั่งด้วยคำเป็นตัวคั่น
มีคำสั่งตัดให้ตัดตามคำเช่น: 171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27 ฉันต้องการผลลัพธ์เป็น: 171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. วิธีการเข้าใกล้

3
ฉันจะสร้าง CLI Web Spider ที่ใช้คำหลักและตัวกรองเนื้อหาได้อย่างไร
ฉันอยากพบบทความของฉันภายใน (เก่า) ฟอรั่มเลิกวรรณกรรมe-bane.net โมดูลฟอรัมบางส่วนถูกปิดใช้งานและฉันไม่สามารถรับรายการบทความโดยผู้เขียน นอกจากนี้เว็บไซต์ยังไม่ได้จัดทำดัชนีโดยเครื่องมือค้นหาเช่น Google, Yndex เป็นต้น วิธีเดียวในการค้นหาบทความของฉันทั้งหมดคือการเปิดหน้าเก็บถาวรของเว็บไซต์ (รูปที่ 1) จากนั้นฉันจะต้องเลือกปีและเดือนที่แน่นอน - เช่นมกราคม 2013 (รูปที่ 1) และจากนั้นฉันต้องตรวจสอบแต่ละบทความ (รูปที่ 2) ไม่ว่าในตอนแรกจะเขียนชื่อเล่นของฉัน - pa4080 (รูปที่ 3) แต่มีไม่กี่พันบทความ ฉันได้อ่านหัวข้อดังต่อไปนี้ แต่ไม่มีวิธีใดที่ตรงกับความต้องการของฉัน: ใยแมงมุมสำหรับ Ubuntu วิธีเขียน Web spider บนระบบ Linux รับรายการ URL จากเว็บไซต์ ผมจะโพสต์วิธีการแก้ปัญหาของตัวเอง แต่สำหรับฉันมันน่าสนใจ: มีวิธีที่สง่างามกว่านี้ในการแก้ไขงานนี้หรือไม่?

3
ทำไมชื่อฟังก์ชั่นตัวเลขไม่ได้รับอนุญาต
พิจารณาสิ่งต่อไปนี้: $ ksh -c '1(){ echo hi;};1' ksh: 1: invalid function name $ dash -c '1(){ echo hi;};1' dash: 1: Syntax error: Bad function name $ bash -c '1(){ echo hi;};1' bash: `1': not a valid identifier bash: 1: command not found $ mksh -c '1(){ echo hi;};1' hi โดยทั่วไปผมพยายามที่จะประกาศฟังก์ชั่น1และ0ซึ่งจะเป็น …

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