Unix & Linux

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

3
การใช้ sed เพื่อระบายสีเอาต์พุตจากคำสั่งบน solaris
ฉันมีสคริปต์ ksh ที่ต้องทำงานกับทั้ง linux และ solaris ฉันกำลังพยายามระบายสีผลลัพธ์ของคำสั่งเฉพาะ ใช้งานได้กับ linux (โดยเฉพาะ RHEL6) แต่ไม่ใช้กับ Solaris (SunOS 5.10) คำสั่งบน linux (ผลลัพธ์ "test" เป็นสีแดงที่ถูกต้อง): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test คำสั่งเกี่ยวกับโซลาริส (ผลลัพธ์ "การทดสอบ" ไม่มีสี) [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m มีวิธีการสร้างคำสั่งนี้ว่าเอาท์พุทเป็นสีแดงโดยไม่ต้องรหัสดิบในการส่งออก? ฉันไม่สามารถเปลี่ยนคำสั่ง 'echo' ได้เพราะนั่นเป็นเพียงการกรอกคำสั่งที่ฉันใช้อยู่

3
`{{(ออก 1) อะไร ทางออก 1; }; } `หมายถึงอะไร
ผมยกมาข้อมูลโค้ดต่อไปจากที่สร้างขึ้นโดยconfig.statusconfigure if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi ในข้อมูลโค้ดจะ{ (exit 1); exit 1; };ทำอย่างไร จุดประสงค์ของการทำเพียงแค่exitใน subshell คืออะไร

3
วิธีการตั้งค่าการแสดงผล bash เป็นไม่แสดงข้อความเสียงเรียกเข้าหลังจากออก?
คำถามของฉันง่าย แต่ฉันพบว่ามันยากที่จะใส่เฟรม / อธิบายได้อย่างง่ายดาย ฉันเข้าสู่ระบบ Unix หลายกล่องด้วยบัญชีที่แตกต่างกัน ฉันเห็น 2 สิ่งที่แตกต่างกันuser1และuser2ในขณะที่แก้ไขไฟล์ข้อความเป็นกลุ่ม user1 เมื่อฉันพิมพ์vim filenameเสียงเรียกเข้าจะเปิดขึ้นและฉันแก้ไขไฟล์ เมื่อฉันปิดข้อความที่สมบูรณ์จากไฟล์จะหายไปและฉันเห็นคำสั่ง / เอาท์พุตของ Teminals ที่มีอยู่ก่อนหน้านี้ user2 เมื่อฉันพิมพ์vim filenameเสียงเรียกเข้าจะเปิดขึ้นและฉันแก้ไขไฟล์ เมื่อฉันปิดส่วนของไฟล์ที่ปรากฏบนหน้าจอในขณะที่ฉันvimยังคงปรากฏขึ้นที่จอแสดงผลและหน้าจอเทอร์มินัลก่อนหน้าทั้งหมดก็เลื่อนขึ้นมา แม้ว่าไฟล์จะเป็นเพียงแค่ 1 บรรทัดหลังจากออกเป็นกลุ่มแล้วหน้าจอจะแสดงบรรทัดแรกพร้อมที่เหลือทั้งหมด~และฉันเห็นพรอมต์คำสั่งที่ด้านล่างของหน้าจอ รายละเอียด $ bash --version GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. $ vim --version VIM - Vi IMproved 7.0 (2006 …
28 terminal  vim  display 

3
หน้าจอบูตของ Fedora แสดงทั้งโลโก้ Fedora และโลโก้ Lenovo ทำไมและอย่างไร
ฉันมี Lenovo เก่า IdeaPad 110-15ISK ที่ติดตั้ง Fedora 30 (และ SSD ที่เข้ารหัส LUKS เป็นที่จัดเก็บ) เมื่อฉันบูตเครื่องนี้: โลโก้ "Lenovo" (อันที่จริงเพียงแค่ข้อความ) จะปรากฏขึ้นโดยย่อ หน้าจอตัวจัดการการบูตจะแสดงขึ้นพร้อมเคอร์เนลที่เลือกได้ ฉันเลือกเคอร์เนล โลโก้ "Lenovo" จะปรากฏขึ้นโดยย่อ วิดเจ็ตป้อนข้อความรหัสผ่านจะแสดงพร้อมโลโก้ "fedora (∫)" ที่ด้านล่างของหน้าจอ ฉันป้อนรหัสผ่านเพื่อถอดรหัส SSD ของ LUKS-ified กระบวนการบู๊ตจะดำเนินต่อไปในขณะที่ข้อมูลต่อไปนี้ปรากฏขึ้น: โลโก้ "Lenovo" ที่อยู่ตรงกลางของหน้าจอและ โลโก้ "fedora (∫)" ที่ด้านล่างของหน้าจอ ในที่สุดหน้าจอเข้าสู่ระบบของ KDE ก็เข้ามาแทนที่ ทำไม (7) ถึงเกิดขึ้น? เป็นไปได้อย่างไรที่จะมี "การตอบโต้กับผู้ใช้โลโก้" ยกเว้นว่า Fedora มาพร้อมกับโลโก้ผู้ผลิตที่ได้รับการคัดสรรมาให้แสดงเป็นพิเศษ? …
28 fedora  boot 

1
เหตุใด / etc / passwd จึงถูกใช้ทุกครั้งที่มีคนดำเนินการคำสั่ง `ls -l`
อ่านจากAPUEเพียงแค่รู้สึกอยากรู้อยากเห็น: ไฟล์รหัสผ่านถูกใช้ทุกครั้งที่ผู้ใช้ล็อกอินเข้าสู่ระบบ UNIX และทุกครั้งที่มีคนดำเนินการls -lคำสั่ง
28 ls  passwd 

2
วิธีหลอกให้โปรแกรมคิดว่าไม่มีเซิร์ฟเวอร์ X ที่ทำงานอยู่
ฉันมีโปรแกรมนี้ที่สามารถรันได้ทั้งส่วนต่อประสานข้อความผู้ใช้และส่วนต่อประสานกราฟิกกับผู้ใช้ มันไม่มีสวิตช์บรรทัดคำสั่งใด ๆ ที่จะบังคับอย่างใดอย่างหนึ่ง แต่ฉันคิดว่ามันจะตรวจจับอัตโนมัติว่าเราอยู่ใน X หรือไม่ (เช่นถ้าฉันเรียกใช้จากเทอร์มินัลเสมือนมันเข้าสู่โหมดข้อความและถ้าฉันเรียกใช้จาก X terminal emulator จะเปิดหน้าต่างกราฟิกแยกต่างหาก) ฉันต้องการบังคับให้เข้าสู่โหมดข้อความและให้มันทำงานภายในเทอร์มินัล X ฉันจะทำยังไงต่อ
28 x11 


2
เอาท์พุทสีที่ไม่สอดคล้องกันจากคำสั่ง `ls '
ฉันสอนหลักสูตร Intro to UNIX / Linux ที่วิทยาลัยท้องถิ่นและนักเรียนคนหนึ่งของฉันถามคำถามต่อไปนี้: เหตุใดไฟล์บางไฟล์ในไดเรกทอรีของฉันจึงมีสีขาวและไฟล์อื่น ๆ เป็นสีเทา ไฟล์สีขาวเป็นไฟล์ที่ฉันสร้างวันนี้และไฟล์สีเทาเป็นไฟล์ที่มีอยู่หรือไม่ เมื่อฉันมองเข้าไปในนี้ฉันคิดว่าคำตอบแรกจะอยู่ในLS_COLORSตัวแปร แต่การตรวจสอบเพิ่มเติมพบว่ารายการสีแตกต่างกันเมื่อใช้-lสวิตช์กับ-alสวิตช์ด้วยlsคำสั่ง ดูภาพหน้าจอต่อไปนี้: การใช้ls -lไฟล์ชื่อ '3' จะแสดงเป็นสีขาว แต่ใช้-alสวิตช์ไฟล์เดียวกันจะแสดงเป็นสีเทา นี่เป็นข้อบกพร่องใน ls หรือไม่มีใครรู้ว่าทำไมสิ่งนี้ถึงเกิดขึ้น?

5
สิทธิ์ของไฟล์ทำงานอย่างไรสำหรับผู้ใช้“ root”
ฉันมีไฟล์ต่อไปนี้: ---------- 1 Steve Steve 341 2017-12-21 01:51 myFile.txt ฉันเปลี่ยนผู้ใช้rootเป็นเทอร์มินัลและฉันสังเกตเห็นพฤติกรรมดังต่อไปนี้: ฉันสามารถอ่านไฟล์นี้และเขียนมันได้ ฉันไม่สามารถเรียกใช้ไฟล์นี้ หากฉันตั้งค่าxบิตในสิทธิ์ผู้ใช้ ( ---x------) หรือสิทธิ์กลุ่ม ( ------x---) หรือสิทธิ์อื่น ๆ ( ---------x) ของไฟล์ดังนั้นฉันจะสามารถเรียกใช้ไฟล์นี้ได้ ใครสามารถอธิบายให้ฉันหรือชี้ให้ฉันไปที่บทช่วยสอนที่อธิบายกฎทั้งหมดที่ใช้บังคับเมื่อrootผู้ใช้จัดการกับไฟล์และไดเรกทอรี?

6
วิธีรันคำสั่ง ssh จนกว่าจะสำเร็จ
บางครั้งฉันรีสตาร์ทอุปกรณ์และจำเป็นต้องsshกลับเข้ามาใหม่เมื่อพร้อม ฉันต้องการเรียกใช้คำสั่ง ssh ทุก 5 วินาทีจนกระทั่งคำสั่งสำเร็จ ความพยายามครั้งแรกของฉัน: watch -n5 ssh me@device.local && exit 1 ฉันจะทำสิ่งนี้ได้อย่างไร
28 ssh  scripting  watch 

1
ทำไมถึงแนะนำให้ ext4 มากถึง 16 TB?
ในบทความ wiki ของ ext4ฉันได้เห็นว่าสามารถใช้ ext4 ได้สูงสุด 1 EiB แต่แนะนำให้ใช้มากถึง 16 TiB ทำไมเป็นเช่นนั้น ทำไม XFS แนะนำให้ใช้กับระบบไฟล์ขนาดใหญ่? (ELICS: อธิบายฉันเหมือนฉันเป็นนักเรียน CS แต่ไม่มีความรู้มากในระบบไฟล์)
28 filesystems  ext4  xfs 

8
ทำไมไม่มี ";" หลังจาก "ทำ" ในลูป sh
เหตุใดจึงไม่มี;ตัวอักษรdoในเชลล์วนเมื่อเขียนในบรรทัดเดียว นี่คือสิ่งที่ฉันหมายถึง เมื่อเขียนบนหลายบรรทัดforลูปจะมีลักษณะดังนี้: $ for i in $(jot 2) > do > echo $i > done และในบรรทัดเดียว: $ for i in $(jot 2); do echo $i; done บรรทัดที่ยุบทั้งหมดจะได้รับ;หลังจากนั้นยกเว้นสำหรับdoบรรทัดและหากคุณรวม;มันจะเป็นข้อผิดพลาด บางคนอาจเป็นคนที่ฉลาดกว่าฉันคิดว่านี่เป็นสิ่งที่ถูกต้องที่จะทำด้วยเหตุผล แต่ฉันไม่สามารถเข้าใจได้ว่าเหตุผลคืออะไร ดูเหมือนว่าจะไม่สอดคล้องกับฉัน เช่นเดียวกันกับwhileลูปเกินไป $ while something > do > anotherthing > done $ while something; do anotherthing; done
28 shell 

5
ทำไมฉันต้องวาง "ทำ" ในบรรทัดเดียวกันกับ "สำหรับ"
1. สรุป ผมไม่เข้าใจว่าทำไมฉันต้องกฎ bashate E010 2. รายละเอียด ฉันใช้bashateสำหรับการตัด.shไฟล์ กฎ E010: ทำไม่ได้อยู่ในสายเดียวกับสำหรับ for bashate: แก้ไข: #!/bin/bash for f in bash/*.sh; do sashacommand "$f" done ข้อผิดพลาด: #!/bin/bash for f in bash/*.sh do sashacommand "$f" done เหตุผลใดที่ฉันต้องการforและdoอยู่ในบรรทัดเดียวกัน 3. ไม่มีประโยชน์ ฉันไม่พบคำตอบสำหรับคำถามของฉันใน: Google บทความเกี่ยวกับแนวทางปฏิบัติในการเข้ารหัสที่ดีที่สุด ( ตัวอย่าง ) เอกสาร bashate ฉันพบเพียง : ชุดของกฎที่ช่วยให้สิ่งต่าง ๆ สอดคล้องกันในบล็อกควบคุม สิ่งเหล่านี้จะถูกมองข้ามบนเส้นยาวที่มีความต่อเนื่องเพราะการคลายตัวซึ่งเป็น“ …

1
อะไร; ทำใน SH
ถ้าฉันพยายามที่จะทำงานa;;bใน sh ฉันได้รับข้อผิดพลาดนี้: sh: <number>: Syntax error: ";;" unexpected หากฉันลองa;;;bฉันได้รับข้อผิดพลาดเดียวกันไม่ใช่;;;แทนที่จะเป็น;;ดังนั้นฉันคิดว่านั่น;;หมายถึงบางสิ่งบางอย่างแม้ว่าฉันจะไม่รู้ว่ามันหมายถึงอะไร นี่คือตัวอย่าง: $ echo A;;echo B sh: 1: Syntax error: ";;" unexpected $ echo A;;;echo B sh: 1: Syntax error: ";;" unexpected $ echo A; ;echo B sh: 1: Syntax error: ";" unexpected ที่นี่คุณจะเห็นว่าเมื่อฉันใช้; ;แทน;;ข้อผิดพลาดจะแตกต่างกันเกี่ยวกับความจริงที่ว่าฉันใช้;โดยไม่ต้องมีคำสั่งมาก่อน;;ดูเหมือนว่าจะเป็นโอเปอเรเตอร์ที่ต่างกันถึงแม้ว่าฉันจะไม่รู้ว่ามันใช้กับอะไร
28 shell 

11
เหตุใดเชลล์จึงไม่แก้ไข“ การใช้แมวที่ไร้ประโยชน์” โดยอัตโนมัติ? [ปิด]
หลายคนใช้ oneliners และสคริปต์ที่มีรหัสตามบรรทัด cat "$MYFILE" | command1 | command2 > "$OUTPUT" ครั้งแรกที่catมักจะเรียกว่า "การใช้ประโยชน์จากแมว" เพราะในทางเทคนิคมันต้องเริ่มต้นกระบวนการใหม่ (มัก/usr/bin/cat) ซึ่งสามารถหลีกเลี่ยงได้ถ้าคำสั่งได้รับ < "$MYFILE" command1 | command2 > "$OUTPUT" เพราะเชลล์จะต้องเริ่มcommand1และชี้stdinไปที่ไฟล์ที่กำหนดเท่านั้น เหตุใดเปลือกจึงไม่ทำการแปลงนี้โดยอัตโนมัติ ฉันรู้สึกว่าไวยากรณ์ "ใช้งานไร้ประโยชน์ของแมว" ง่ายต่อการอ่านและเชลล์ควรมีข้อมูลเพียงพอที่จะกำจัดแมวไร้ประโยชน์โดยอัตโนมัติ catถูกกำหนดไว้ในมาตรฐาน POSIX เพื่อให้เปลือกควรได้รับอนุญาตที่จะใช้มันภายในแทนการใช้ไบนารีในเส้นทาง เชลล์สามารถมีการนำไปใช้งานสำหรับอาร์กิวเมนต์หนึ่งรุ่นเท่านั้นและทางเลือกในการไบนารี

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