Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

1
สัญลักษณ์แปลก ๆ บนหน้าจอเมื่อใช้ grep?
มีความคิดอะไรที่ทำให้เกิดสิ่งนี้ สิ่งเดียวที่แสดงคือรหัส ISO และพื้นที่ว่างโดยไม่ใช้ grep ซอฟต์แวร์ที่ใช้ คำสั่ง: ./trans --id --input /path/to/txt | grep ISO | grep [a-z] root@box /test # alias grep alias grep='grep --color=auto' root@box /test # type grep grep is aliased to `grep --color=auto' เอาท์พุทปกติ:

5
จะสร้างวลีพิเศษที่ขยายได้ใน bash ได้อย่างไร
ฉันพบว่าตัวเองทำ<command> --help | grep <feature>บ่อยมากทุกวัน ฉันสงสัยว่ามันเป็นไปได้ไหมที่จะทำสิ่ง^^ที่ขยายออกไป"--help | grep"จากนั้นฉันก็ทำสิ่งนี้: ls ^^ size ที่จะดำเนินการดังต่อไปนี้: ls --help | grep size

6
มีแนว shebang (การประกาศสคริปต์) มากเกินไป - วิธีใดที่จะลดจำนวนลงบ้าง
ฉันมีโครงการประกอบด้วย.shไฟล์ขนาดเล็กประมาณ 20 ไฟล์ ฉันตั้งชื่อ "เล็ก" เหล่านี้เพราะโดยทั่วไปไม่มีไฟล์ใดที่มีโค้ดเกิน 20 บรรทัด ฉันใช้แนวทางแบบแยกส่วนเพราะฉันภักดีต่อปรัชญา Unixและง่ายต่อการดูแลรักษาโครงการ ในการเริ่มต้นของแต่ละไฟล์ผมใส่.sh#!/bin/bash ฉันเข้าใจว่าการประกาศสคริปต์มีจุดประสงค์สองประการ: พวกเขาช่วยให้ผู้ใช้เรียกคืนสิ่งที่เชลล์ต้องการเพื่อเรียกใช้ไฟล์ (พูดหลังจากผ่านไปหลายปีโดยไม่ต้องใช้ไฟล์) พวกเขาให้แน่ใจว่าสคริปต์ทำงานเฉพาะกับเปลือกบางอย่าง (ทุบตีในกรณีนั้น) เพื่อป้องกันพฤติกรรมที่ไม่คาดคิดในกรณีที่ใช้เปลือกอื่น เมื่อโครงการเริ่มเติบโตจากไฟล์ 5 ไฟล์เป็น 20 ไฟล์หรือจาก 20 ไฟล์เป็น 50 ไฟล์ (ไม่ใช่กรณีนี้ แต่เพื่อสาธิต) เรามีการประกาศสคริปต์20 บรรทัดหรือ 50 บรรทัด ฉันยอมรับแม้ว่ามันอาจจะตลกสำหรับบางคน แต่ก็รู้สึกซ้ำซ้อนสำหรับฉันที่จะใช้ 20 หรือ 50 แทนที่จะพูดเพียง1 ต่อโครงการ (อาจเป็นไฟล์หลักของโครงการ) มีวิธีที่จะหลีกเลี่ยงความซ้ำซ้อนที่ถูกกล่าวหานี้ 20 หรือ 50 หรือจำนวนบรรทัดของการประกาศสคริปต์มากขึ้นโดยใช้การประกาศสคริปต์ "ทั่วโลก" ในไฟล์หลักบางไฟล์?

4
ทุบตีให้การสนับสนุนสำหรับการใช้ตัวชี้?
คำถามง่าย ๆ เปลือก bash มีการสนับสนุนการใช้พอยน์เตอร์เมื่อเขียนเชลล์สคริปต์หรือไม่? ฉันคุ้นเคยกับสัญกรณ์การขยายตัว${var[@]}เมื่อทำการวนซ้ำอาร์เรย์$varแต่ไม่ชัดเจนว่านี่เป็นการใช้พอยน์เตอร์เพื่อย้ำข้ามดัชนีอาร์เรย์ ทุบตีให้การเข้าถึงที่อยู่หน่วยความจำเช่นภาษาอื่น ๆ ? หาก bash ไม่สนับสนุนการใช้พอยน์เตอร์เชลล์อื่นจะทำอะไร?
12 bash 

2
ทำไมสคริปต์ของฉันชื่อ“ killl” ล้มเหลว แต่หลังจากการเปลี่ยนชื่อทำงานได้อย่างสมบูรณ์
สคริปต์ที่มีปัญหายุติกระบวนการล่าสุดในพอร์ต localhost ของฉัน 8080 #!/bin/bash x=$(lsof -i:8080 | tail -1 | awk '{print $2}') kill -9 $x มันใช้งานไม่ได้ถ้าสคริปต์ชื่อ 'killl' (หาได้หรือไม่ Kill ล่าสุด?) มันให้ฉันพร้อมท์สำหรับการcmdsubst> เปลี่ยนชื่อสคริปต์เป็น 'asdf' ทุกอย่างทำงานได้ มีคำอธิบายสำหรับพฤติกรรมนี้หรือไม่? ฉันใช้ MacOS El Capitán
12 shell-script  osx 

6
ในบางเวลาจากนี้ทำบางสิ่งบางอย่าง (และอาจแสดงผลลัพธ์ในคอนโซล)
ฉันใช้เซิร์ฟเวอร์ Ubuntu 16.04 และฉันต้องการที่จะใช้ยูทิลิตี้atในเซสชันปัจจุบันของฉันเพื่อทำบางสิ่งบางอย่าง 1 นาทีนับจากนี้ (พูด, echo) โดยไม่ต้องระบุวันที่และเวลา - เพียง 1 นาทีล่วงหน้าจากเวลาปัจจุบัน สิ่งนี้ล้มเหลว: echo 'hi' | at 1m เหตุผลที่ฉันเลือกatมากกว่าsleepเพราะช่วงพักการนอนหลับเป็นช่วงปัจจุบันและเหมาะสำหรับการชะลอคำสั่งในเซสชันอื่นมากกว่าที่เราทำงานด้วยเวลาส่วนใหญ่ AFAIR atไม่ทำงานในลักษณะนี้และจะไม่ทำให้เสียเวลาของฉัน Update_1 โดยคำตอบของ Pied Piper ฉันได้ลอง: (sleep 1m; echo 'hi') & ฉันมีปัญหากับวิธีนี้: กระแสข้อมูล "สวัสดี" ถูกพิมพ์ภายในพรอมต์หลักของฉันและเพิ่มพรอมต์รองว่างเปล่า ( _) ทันทีภายใต้พรอมต์หลักที่มีให้ดู: USER@:~# (sleep 1m; echo 'hi') & [1] 22731 USER@:~# hi ^C …
12 console  stdout  at  sleep  delay 

6
การเติมช่องว่างที่ต่อท้ายในสตริงด้วยอักขระอื่น
ฉันต้องการส่งออกhello worldมากกว่า 20 ตัวอักษร printf "%-20s :\n\n" 'hello world!!' # Actual output hello world!! : # Wanted output hello world!!========: อย่างไรก็ตามฉันไม่ต้องการใช้ช่องว่าง แต่ใช้ " = " แทน ฉันจะทำอย่างไร
12 bash  shell  string  printf 

2
วิธีการป้องกันไม่ให้งาน cron ทำงานในบางช่วงเวลาใน Debian? (a 'gaming' / 'โหมดประสิทธิภาพ')
ดูเหมือนว่าฉันได้ตั้งค่า logcheck เป็นงาน cron และเมื่อใดก็ตามที่กระบวนการทำงานgrepโดยlogcheckใช้เวลาประมาณ CPU ของ CPU ของฉัน ตอนนี้ฉันมีบางช่วงเวลาที่ฉันต้องการ CPU เต็มความจุและให้ระบบของฉันใช้ทรัพยากรน้อยที่สุดเท่าที่จะทำได้ยกเว้นเฉพาะกระบวนการ / (ซึ่งฉันอาจระบุได้) เป็นไปได้ไหมที่จะตั้งค่า Debian 9.1 ด้วยเครื่อง KDE เป็นโหมดประสิทธิภาพบางอย่าง (หรือ 'โหมดการเล่นเกม') ที่ป้องกันกระบวนการที่ผู้ใช้ไม่ได้เริ่มต้นอย่างชัดเจนจากการใช้ทรัพยากรระบบจำนวนมากลดภาระของกระบวนการพื้นหลังและที่สำคัญที่สุด : ล่าช้างาน cron จนกว่าโหมดนั้นจะหยุดอีกครั้ง?


1
วิธีการกรองตามชื่อโฮสต์ใน Wireshark
ตัวกรองการแสดงผลในรูปแบบip.src_host eq my.host.name.comไม่ได้แพ็กเก็ตที่ตรงกัน แต่มีทราฟฟิกไปยังและมาจากโฮสต์นี้ ชื่อ DNS ได้รับการแก้ไขแล้วและตัวกรองที่ใช้ที่อยู่ IP เช่นip.src eq 123.210.123.210งานตามที่คาดไว้

1
เหตุใดการจับคู่สตริง 1250 กับรูปแบบ 90k จึงช้า
สตริงของฉันเป็นเส้นทางไฟล์เช่นs/14/11/13/15/n7ce49B_235_25ed2d70.jpg; รูปแบบของฉันค่อนข้างเรียบง่ายเหมือนn7ce49B_.+กันหมด ฉันทำงานGNU grep 2.6.3ภายใต้Debian 6.0.10บนเซิร์ฟเวอร์Dell DL360G7 (ฉันพูดถึงเพียงให้ความรู้สึกของเครื่องนี้เต็มประสิทธิภาพ) ด้วย HDD 15k และคำสั่งนี้: time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_fileไม่สามารถทำให้เสร็จสมบูรณ์ - เซิร์ฟเวอร์แลกเปลี่ยนไม่ดีเกินไป ด้วยรูปแบบ 20k ใช้เวลานานกว่า 3 ชั่วโมง ดูเหมือนว่าไม่มีเหตุผลสำหรับฉัน ตามคำขอความคิดเห็นมีไฟล์: รูปแบบไฟล์เส้นทาง 20k หนึ่งอาจทดสอบและปรับจำนวนบรรทัดอินพุตและรูปแบบด้วย: xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold …
12 linux  grep 

4
bash: การใช้โพรซีเดอร์ find-select ที่ปลอดภัยแบบ whitespace ปลอดภัย
รับชื่อไฟล์เหล่านี้: $ ls -1 file file name otherfile bash ตัวเองทำดีกับช่องว่างที่ฝังตัว: $ for file in *; do echo "$file"; done file file name otherfile $ select file in *; do echo "$file"; done 1) file 2) file name 3) otherfile #? อย่างไรก็ตามบางครั้งฉันอาจไม่ต้องการทำงานกับไฟล์ทุกไฟล์หรือแม้กระทั่งในที่เข้มงวด$PWDซึ่งเป็นที่findมาซึ่งยังจัดการกับช่องว่างในนาม: $ find -type f -name file\* ./file ./file name …

5
ปิดใช้งานอีเมล cron เว้นแต่มีข้อผิดพลาดหรือไม่
ฉันจะรับอีเมลจาก cron ได้ก็ต่อเมื่อมีข้อผิดพลาดเท่านั้น ในกรณีส่วนใหญ่ที่โด่งดังงานจะทำงานได้ดี - และฉันไม่สนใจเกี่ยวกับผลลัพธ์ เป็นเพียงในกรณีที่หายากของความล้มเหลวที่ฉันต้องการ / จำเป็นต้องรู้ ฉันมีprocmailพร้อมใช้งาน - แต่ฉันไม่แน่ใจว่าสิ่งที่ฉันกำลังอธิบายเป็นไปได้ที่จะจัดการ cron ภายนอก "ถูกต้อง"

1
จะ chmod 000 / dev / stdin ปิดการใช้งานสถานีตลอดไป?
ฉันทำงานผ่านคำถามจากUnix The Textbook (บทที่ 8, # 16, หน้า 207) : ให้chmodบรรทัดคำสั่งที่ทำงานเดียวกันกับที่mesg nและmesg yคำสั่งทำ (คำแนะนำ: อุปกรณ์ฮาร์ดแวร์ทุกชิ้นรวมถึงเทอร์มินัลของคุณมีไฟล์ที่เกี่ยวข้องใน/devไดเรกทอรี) ฉันเชื่อว่าคำตอบคือ: mesg n = chmod 770 /dev/stdout mesg y = chmod 777 /dev/stdout แต่ผมสงสัยว่าเกิดอะไรขึ้นถ้าคุณใช้chmod 000 /dev/stdin? คุณถูกล็อคไม่ให้ป้อนคำสั่งในเทอร์มินัลหรือไม่?

1
วิธีคัดลอกไฟล์ทั้งหมดในโฟลเดอร์โดยไม่รวมไฟล์ที่กำลังเขียนอยู่?
ผมดาวน์โหลดไฟล์หลายไฟล์ไปยังโฟลเดอร์ที่downloadingผ่านHTTPie สคริปต์ทุบตีมีจุดประสงค์เพื่อประมวลผลไฟล์ที่ดาวน์โหลดมาและฉันพยายามคัดลอกไฟล์ที่ดาวน์โหลดไปยังโฟลเดอร์อื่นเช่น find /folder/downloading -type f -exec mv '{}' /folder/downloaded \; แต่ยังคัดลอกไฟล์ซึ่งยังไม่เสร็จ ฉันพยายาม จำกัด การถ่ายโอนไปยังไฟล์เก่าโดยเพิ่ม-mmin +5ไปยังคำสั่ง คำสั่งที่มีประสิทธิภาพในการปล่อยให้ไฟล์กำลังถูกเขียนและโอนย้ายไฟล์ที่ดาวน์โหลดมาเท่านั้น?

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