Unix & Linux

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


2
วิธีการจับภาพสั่ง STDOUT / STDERR และเพิ่มการประทับเวลา / คำนำหน้า?
ฉันได้สำรวจคำถามที่คล้ายกันเกือบทั้งหมดที่ มีอยู่ แล้วเพื่อประโยชน์ ให้ฉันอธิบายปัญหาโดยละเอียด: ฉันรันสคริปต์ที่ไม่ต้องใส่ข้อมูลบางส่วนและสิ่งเหล่านี้สามารถสร้างเอาต์พุตมาตรฐานและบรรทัดข้อผิดพลาดมาตรฐานได้ฉันต้องการจับภาพพวกเขาตามลำดับที่ถูกต้องตามที่แสดงโดยเทอร์มินัลอีมูเลเตอร์แล้วเพิ่มคำนำหน้าเช่น "STDERR:" และ "STDOUT:" ฉันได้ลองใช้ไพพ์และแม้กระทั่งวิธีที่อิงจากพวกมันเพื่อประโยชน์แล้ว ฉันคิดว่าวิธีการแก้ปัญหาคือการใช้ pty แม้ว่าฉันจะไม่มีความเชี่ยวชาญในเรื่องนั้น ฉันได้แอบมองเข้าไปในซอร์สโค้ดของVTE ของ Gnomeแต่ก็ไม่ได้มีประโยชน์อะไรมาก เป็นการดีที่ฉันจะใช้Goแทน Bash เพื่อทำสิ่งนี้ แต่ฉันไม่สามารถทำได้ ดูเหมือนว่าท่อโดยอัตโนมัติห้ามการสั่งซื้อบรรทัดที่ถูกต้องเพราะบัฟเฟอร์ มีใครบางคนที่สามารถทำสิ่งที่คล้ายกันได้หรือไม่? หรือเป็นไปไม่ได้เลยเหรอ? ฉันคิดว่าถ้าเทอร์มินัลอีมูเลเตอร์สามารถทำได้มันอาจไม่ใช่ - โดยการสร้างโปรแกรม C ขนาดเล็กที่จัดการ PTY แตกต่างกันหรือไม่ นึกคิดฉันจะใช้อินพุตแบบอะซิงโครนัสเพื่ออ่านสตรีม 2 รายการ (STDOUT และ STDERR) จากนั้นพิมพ์อีกครั้งตามความต้องการของฉัน แต่ลำดับของอินพุตเป็นสิ่งสำคัญ! หมายเหตุ:ฉันทราบถึงstderredแต่มันไม่ได้ผลสำหรับฉันกับสคริปต์ Bash และไม่สามารถแก้ไขเพื่อเพิ่มคำนำหน้าได้อย่างง่ายดาย (เนื่องจากโดยทั่วไปแล้วจะมี syscalls มากมาย) อัปเดต:เพิ่มด้านล่างสองส่วน ตัวอย่างโปรแกรมที่สร้าง stdout ผสม / stderr ผลลัพธ์ที่คาดหวังจากโปรแกรมด้านบน …

4
ฉันจะปิดการใช้งานการคัดลอกไฮไลต์การเลือกโดยอัตโนมัติได้อย่างไร
ฉันได้ในที่สุดก็พบว่าตัวเองอยู่ที่บ้านในลินุกซ์ แต่ยังมีสิ่งหนึ่งที่ได้ใส่ใจฉันตั้งแต่เริ่มต้นและฉันไม่ได้พบวิธีการแก้ปัญหาจริง: ฉันจะปิดการใช้งานการคัดลอกโดยอัตโนมัติจากข้อความที่เน้นในสภาพแวดล้อมเดสก์ทอปลินุกซ์ ของฉันสก์ท็อป สภาพแวดล้อมคือ XFCE, Window Manager เป็น Openbox และทั้งหมดนี้จัดขึ้นโดย Archlinux แต่ฉันมีปัญหาเหล่านี้ในการแจกแจงอื่น ๆ ทุกครั้งที่ฉันไปแทนที่ส่วนของข้อความ I: เน้นแหล่งที่มาแล้วกดตามปกติCtrl- Cจากนั้นเลือกข้อความที่ฉันต้องการแทนที่และเนื่องจากการเน้นข้อความจะคัดลอกไปยังคลิปบอร์ดโดยอัตโนมัติเลือกตัวเลือกจากคลิปแมนใหม่ และวางไว้อย่างนั้น มันไม่มีประสิทธิภาพมาก ฉันใช้หมดหวังที่จะใช้ Windows สำหรับการแก้ไขแหล่งที่มา / เอกสารจำนวนมาก ฉันชอบที่จะมีสำเนาวางประจำเหมือนกันกับที่ Windows ใช้ที่เลือกใช้Ctrl- Cที่เลือกใช้-CtrlV แก้ไข ปัญหาคือความผิดของฉันมาตลอด ! ฉันวางข้อมูลautocutsel -selection PRIMARY -fork &ลงในบัญชีของฉันอย่างไม่ทราบ.xprofileสาเหตุทำให้ autocutsel ซิงค์ข้อมูลที่ฉันเลือกทั้งหมดไว้ในคลิปบอร์ดหลัก สำหรับข้อมูลเพิ่มเติม
25 x11  xfce  clipboard 

3
ฉันจะ sftp ไปยังเซิร์ฟเวอร์ได้อย่างไรหากชื่อผู้ใช้มีสัญลักษณ์ @
ฉันต้อง sftp ไปยังเซิร์ฟเวอร์ไปยังพอร์ตเฉพาะ แต่ชื่อผู้ใช้มีสัญลักษณ์ @ สมมติว่าผู้ใช้คือ "user@example.com" และเซิร์ฟเวอร์ ftp เป็นเพียง "example.com" ฉันจะจบด้วย sftp -oPort:8777 user@example.com@example.com สิ่งที่เห็นได้ชัดจะไม่ทำงานอย่างที่ฉันได้ทดสอบ มือสมัครเล่นประเภทใดที่สร้างชื่อผู้ใช้ด้วย @ โอเคเจ้านายของฉันทำ ฉันจะแก้ปัญหาอย่างไร
25 ssh  users  sftp 

2
ความแตกต่างระหว่างตัวดำเนินการ >> และ> \>?
RHEL 6 มีความแตกต่างระหว่าง>>และ>\>ผู้ประกอบการหรือไม่ ฉันอ่านข้อความต่อไปนี้ในหนังสือการฝึกอบรม RHEL: คุณสามารถเพิ่มเอาต์พุตมาตรฐานไปยังจุดสิ้นสุดไฟล์ที่มีอยู่ด้วยลูกศรเปลี่ยนเส้นทางสองครั้งพร้อมกับคำสั่งเช่น ls >\> filelist ฉันคุ้นเคยกับ>>โอเปอเรเตอร์มากกว่าและเมื่อฉันลองทั้งคู่ฉันจะได้ผลลัพธ์ที่แตกต่างกัน การใช้>>ดูเหมือนจะผนวกเอาต์พุตไปยังไฟล์ที่ตามมา (ตามที่คาดไว้) การใช้>\>ดูเหมือนจะผนวกเอาต์พุตไปยังไฟล์ที่ชื่อแท้จริง> นี่เป็นข้อผิดพลาดในหนังสือที่ฉันอ่านหรือไม่? หรือฉันพลาดจุดของผู้เขียน
25 bash  rhel 

1
EXT4 FS ต้องการการกู้คืนเจอร์นัล สิ่งนี้หมายความว่า?
$ sudo file -s /dev/sdb1 /dev/sdb1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files) "ต้องการกู้คืนบันทึกประจำวัน" หมายความว่าอย่างไร ฉันต้องทำอะไรบางอย่าง? ฉันสามารถตรวจสอบอะไรอีก

2
Negate ในขณะที่เงื่อนไขวนในทุบตี
ในส่วนของสคริปต์ที่ฉันใช้งานอยู่ฉันต้องการตรวจสอบว่าที่อยู่ IP ที่ป้อนเข้านั้นอยู่ในรูปแบบที่ถูกต้อง ฉันต้องการวนรอบในขณะที่รูปแบบอินพุตไม่ถูกต้อง ข้อมูลต่อไปนี้ใช้สำหรับการวนซ้ำในขณะที่การจัดรูปแบบถูกต้อง while [[ $range =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]] do ฉันจะหมุนสิ่งนี้เพื่อบอกว่าไม่เหมาะกับรูปแบบ ฉันหวังว่า!=~จะได้ผล แต่ฉันได้รับข้อผิดพลาดทางไวยากรณ์
25 bash 

2
วิธีการหลีกเลี่ยงการโหลด apache เมื่อหมุนบันทึก?
ฉันใช้ logrotate เพื่อหมุน Apache access-, error- และ rewrite-logs ไฟล์ปรับแต่งของฉันมีลักษณะเช่นนี้: /apache/*log { compress dateext rotate 365 size=+300M olddir /log/old/apache notifempty missingok lastaction /bin/apache reload endscript } ปัญหาของฉันคือเมื่อใดก็ตามที่มีการหมุนเกิดขึ้น Apache จะต้องโหลดซ้ำเพราะ Apache ไม่ได้เขียนอะไรเพิ่มเติมในไฟล์บันทึกที่เพิ่งหมุน มีวิธีการหลีกเลี่ยง Apache reloads ทุกครั้งที่ logrotate หมุนหรือไม่?

4
สร้างไดเรกทอรีเป้าหมายเมื่อทำการแยก tarball
เป็นไปได้ไหมที่จะสร้างไดเรกทอรีเป้าหมายคล้ายกับmkdir -pที่ฉันสามารถกำหนดไดเรกทอรีเป้าหมายที่ไม่มีอยู่ภายในคำสั่ง tar ของฉันและ tar จะสร้างไดเรกทอรีให้ฉัน ฉันรู้ว่าฉันสามารถเปลี่ยนเส้นทางการส่งออกไปยังไดเรกทอรีที่ใช้tar -C /target/dirแต่ไม่ได้ผลหากไดเรกทอรีเป้าหมายไม่มีอยู่จริง
25 directory  tar 

3
ทุบตีรองรับการฟอร์กคล้ายกับส้อมของ C หรือไม่?
ฉันมีสคริปต์ที่ฉันต้องการแยกไว้ที่จุดหนึ่งเพื่อให้สคริปต์เดียวกันทำงานสองชุด ตัวอย่างเช่นฉันต้องการสคริปต์ทุบตีต่อไปนี้: echo $$ do_fork() echo $$ หากสคริปต์ทุบตีนี้มีอยู่จริงผลลัพธ์ที่คาดหวังจะเป็น: <ProcessA PID> <ProcessB PID> <ProcessA PID> หรือ <ProcessA PID> <ProcessA PID> <ProcessB PID> มีบางอย่างที่ฉันสามารถแทนที่ "do_fork ()" เพื่อรับเอาต์พุตชนิดนี้หรือทำให้สคริปต์ทุบตีทำส้อม C-like ได้หรือไม่
25 shell  fork 

6
ฉันจะ grep สำหรับบรรทัดที่มีคำใดคำหนึ่งในสองคำ แต่ไม่ใช่ทั้งสองคำได้อย่างไร
ฉันพยายามใช้grepเพื่อแสดงเฉพาะบรรทัดที่มีคำใดคำหนึ่งในสองคำหากมีเพียงคำเดียวที่ปรากฏในบรรทัด แต่ไม่ใช่หากอยู่ในบรรทัดเดียวกัน จนถึงตอนนี้ฉันพยายามแล้ว grep pattern1 | grep pattern2 | ...แต่ไม่ได้ผลลัพธ์ที่ฉันคาดไว้
25 grep 

1
เทอร์มินัล Linux และฟอนต์โอเพนซอร์สใด ๆ รองรับภาษาหรือไม่?
PragmataPro อักษรมีตัวอย่างบางส่วนฆาตกรจริงๆที่พวกเขาทำให้==เป็นตัวเดียวและทำความสะอาดมากของสิ่งอื่น ๆ เทอร์มินัล Linux ใด ๆ ที่สนับสนุนสิ่งนี้หรือไม่ และมีทางเลือกอื่นในการ PragmataPro หรือไม่?

1
openssh: มีปุ่มเพิ่ม ssh ไปยังเอเจนต์ตามต้องการ
เมื่อฉัน ssh เข้าสู่เซิร์ฟเวอร์และคีย์ของฉันไม่ได้โหลดในเอเจนต์ฉันต้องยกเลิกจากนั้นเรียกใช้ ssh-add เพื่อรับกุญแจของฉันเข้าสู่เอเจนต์ ฉันต้องการให้คำสั่ง ssh เพิ่มคีย์โดยอัตโนมัติหากไม่มีอยู่ เป็นไปได้ไหม

6
Cygwin บน Windows: ไม่สามารถเปิดจอแสดงผล
ฉันใช้งาน Windows 10 บน Surface Pro 3 ฉันติดตั้ง Cygwin และเพิ่มแพ็คเกจที่มีประโยชน์ (gvim, nedit, emacs, vim, g ++) อย่างไรก็ตามเมื่อฉันเรียกใช้ gvim ฉันได้รับ "ไม่สามารถเปิดจอแสดงผล" สิ่งเดียวกันเกิดขึ้นกับ nedit เมื่อฉันทำ echo $ DISPLAY ฉันไม่พบอะไรเลยดังนั้นฉันจึงตั้งค่า DISPLAY เป็น: 0.0 ฉันยังคงได้รับ "ไม่สามารถเปิดจอแสดงผล" ฉันพยายามลบ cygwin และติดตั้งใหม่ แต่ฉันพบปัญหาเดียวกัน

3
การลบ ~ / .cache ปลอดภัยหรือไม่
เมื่อฉันสแกน$HOMEไดเรกทอรีด้วยbaobab(ตัววิเคราะห์การใช้งานดิสก์) ฉันพบว่า~/.cacheใช้เนื้อที่ประมาณครึ่ง GB ฉันพยายามรีสตาร์ทและตรวจสอบขนาดอีกครั้ง แต่ก็ไม่ต่างกัน rm -rf ~/.cacheดังนั้นฉันวางแผนที่จะ บอกให้ฉันรู้ว่ามันปลอดภัย~/.cacheหรือไม่
25 cache  trisquel 

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