การสร้างไฟล์ข้อความใน vi จะเปลี่ยนคอมพิวเตอร์ของฉันหรือไม่


9

ฉันรู้ว่า Linux เป็นระบบปฏิบัติการที่สร้างขึ้นในไฟล์ข้อความ สิ่งที่ฉันอยากทำคือสร้างไฟล์โดยใช้viคำสั่งต่าง ๆ ทั้งหมดที่ฉันได้เรียนรู้ วิธีการที่ฉันสามารถหาแต่ละคำสั่งของแต่ละบุคคลได้อย่างง่ายดายมากใช้ใน/ viแต่ฉันต้องการทำสิ่งนี้หากไม่เปลี่ยนวิธีการทำงานของคอมพิวเตอร์ของฉัน นี่เป็นความคิดที่ดีไหม


12
ใช่มันจะมีไฟล์ข้อความเพิ่มเติมที่ไหนสักแห่ง ;-) (ล้อเล่น) จริง ๆ แล้วไฟล์เป็นไฟล์ ก็เหมือนกับถามว่าการเพิ่มรูปถ่ายในโฟลเดอร์หรือสร้างเอกสารคำใหม่จะเปลี่ยนคอมพิวเตอร์ของคุณ ใช่! ฉันจะ; คุณมีอีกหนึ่งภาพ / เอกสารที่นั่น อะไรก็ตามคำตอบที่คุณได้รับส่วนใหญ่จะถูกต้อง
Rmano

ทำไมคุณคิดว่ามันจะทำ?
Braiam

2
ไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดย "ระบบปฏิบัติการที่สร้างขึ้นบนไฟล์ข้อความ" แต่ลินุกซ์ไม่ได้แตกต่างจาก Windows เมื่อพูดถึงไฟล์ข้อความ Windows มีไฟล์. ini และ. bat หากเป็นสิ่งที่คุณคิด
ไฮด์

นอกจากนี้คุณคิดว่ามีอะไรพิเศษเกี่ยวกับvi(เมื่อเทียบกับพูดgedit) หรือคุณแค่หมายถึง "โปรแกรมแก้ไขข้อความ"?
นาย Lister

1
@BJsgoodlife ไฟล์ข้อความบางไฟล์ควบคุมระบบ sudoพวกเขากำลังใส่ในสถานที่พิเศษและโดยทั่วไปจะไม่สามารถแก้ไขได้โดยไม่ต้อง
cpast

คำตอบ:


34

การเขียนไฟล์ข้อความจะไม่ "เปลี่ยนวิธีการทำงานของคอมพิวเตอร์ของคุณ"

โดยเฉพาะอย่างยิ่งในการทำสิ่งนั้นคุณต้องทำอย่างใดอย่างหนึ่ง

  • เขียนทับไฟล์สำคัญบางไฟล์
  • เขียนไฟล์ของคุณไปยังตำแหน่งที่มีการป้องกันพิเศษเช่นไดเร็กทอรี * .d ใน / etc; คุณจะไม่ได้รับอนุญาตให้ทำเช่นนี้
  • ทำเครื่องหมายไฟล์ที่เรียกใช้งานได้และวางไว้ในพา ธ ของคุณ

เนื่องจากคุณจะไม่ทำสิ่งนี้อย่างชัดเจนจึงไม่มีอะไรต้องกังวล โดยเฉพาะอย่างยิ่งคำตอบอื่น ๆ จะมีความยาวที่ไม่จำเป็นโดยการแนะนำไฟล์ข้อความของคุณต้องเริ่มต้นด้วยการแฮชในทุกบรรทัด แน่นอนพวกเขาทำไม่ได้ เพียงแค่การจัดเก็บไฟล์ข้อความไว้ในไดเรกทอรีภายในบ้านทั่วไปจะไม่ทำอะไรเลย


3
ฉันแนะนำให้ใส่#เพื่อไม่ให้มีโอกาสเกิดขึ้นโดยไม่ได้ตั้งใจ ฉันคิดว่ามันจะดีกว่าเสมอในด้านความปลอดภัย
heemayl

8
ฉันคิดว่ามันไม่ได้ดีกว่าเสมอไปที่จะปลอดภัยกว่า ความปลอดภัยมีค่าใช้จ่ายและมีจุดที่ความเสี่ยงลดลงไม่คุ้มค่าอีกต่อไป ตัวอย่างเช่นเมื่อเกินมูลค่าของสิ่งที่คุณพยายามรักษาความปลอดภัย (ในบริบทที่อาร์กิวเมนต์นี้มีเหตุผล) มากกว่าความปลอดภัยของข้อมูลคุณสามารถหาคำตอบมากมายเกี่ยวกับการรักษาความปลอดภัยที่เหมาะสมและระบบรักษาความปลอดภัยที่สมบูรณ์แบบเพียงอย่างเดียวก็ไร้ประโยชน์อย่างสมบูรณ์ดังนั้นจึงเป็นการโง่ที่จะยืนยันความปลอดภัยที่สมบูรณ์แบบในทุกกรณี
David Z

9
ในฐานะที่เป็นปัญหาที่ค่อนข้างแยกกันฉันคิดว่าจุดสำคัญที่สุดที่จะนำมาใช้ (ซึ่งคำตอบนี้ทำและสิ่งอื่นไม่ได้) คือการสร้างไฟล์โดยพลการจะไม่ทำอะไรเพื่อเปลี่ยนแปลงระบบ คุณสามารถส่งผลกระทบต่อระบบโดยการสร้างไฟล์ที่กระบวนการอื่นกำลังมองหาหรือโดยการดำเนินการไฟล์ที่คุณสร้างถ้ามันมีรหัสที่จะส่งผลกระทบต่อระบบ - แต่ที่อยู่ภายใต้คำแนะนำทั่วไปของคำสั่งเชลล์ที่ไม่รู้จักทั้งหมด ซึ่งฉลาดไม่ว่าคุณจะทำงานกับไฟล์หรือไม่
David Z

2
ทำให้ฉันแซนวิช You won't have permission to do this. sudo ทำให้ฉันเป็นแซนด์วิช Aye, aye, sir!
โกหกไรอัน

2
@heemayl ทำไมไม่เพียงแค่ทำให้บรรทัดแรกในไฟล์exit?
Random832

15

คุณสามารถบันทึกคำสั่งทั้งหมดที่คุณได้เรียนรู้ในไฟล์ แต่มีจุดสำคัญที่ควรทราบ:

  • อย่าทำให้ไฟล์ปฏิบัติการ
  • ไม่ต้องsourceใช้ไฟล์
  • วิธีที่ดีที่สุดคือการใส่#คำสั่งเริ่มต้นของคำสั่งทั้งหมดเพื่อคอมเม้นต์คำสั่งทั้งหมดเพื่อไม่ให้ดำเนินการโดยไม่ตั้งใจ วิธีนี้คุณสามารถค้นหาคำสั่งที่คุณต้องการและจะไม่มีความเสี่ยง คุณสามารถเพิ่ม#ที่จุดเริ่มต้นของแต่ละบรรทัดโดยใช้คำสั่งต่อไปนี้:

    sed -i 's/^/#/' <file_name>

แก้ไข:ฉันได้ให้จุดที่สามเป็นมาตรการรักษาความปลอดภัยที่รุนแรงเช่น "neon_overload" และ "David Z" ชี้ให้เห็นว่าการใส่แฮชในทุกบรรทัดนั้นกว้างขวางเกินไปและไม่จำเป็นต้องใช้ฉันจะเป็นอันดับสองในบริบทนี้ เช่นเดียวกับที่ชี้ให้เห็นโดย "random832" ทางเลือกที่ดีกว่าสำหรับจุดที่สามของฉันก็คือการเริ่มต้นไฟล์ด้วยexitเนื่องจากจะไม่มีคำสั่งในภายหลัง

EDIT-2: "Rinzwind" ได้กล่าวถึงจุดสำคัญสองประการ:

  • อย่าเขียนทับไฟล์ที่มีอยู่

  • เก็บไฟล์ไว้ในโฮมไดเร็กตอรี่ของผู้ใช้ ( /home/$USER/)


4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyฉันไม่ค่อยแน่ใจว่าควรจะเป็นคำแนะนำที่จริงจังหรือเป็นเรื่องตลก เครื่องตรวจการเสียดสีของฉันทำให้ฉันล้มเหลวในวันนี้
โกหกไรอัน

คำที่คุณต้องให้ความสำคัญคือ 'ตั้งใจ' .. ผู้ใช้อาจเผลอเก็บไฟล์ไว้ในที่ที่ไม่ปลอดภัยว่าจะเป็นแฟ้มที่ปฏิบัติการได้ ... ที่นี่ฉันเพิ่งจะไม่มีโอกาส .. หวังว่าคุณจะชัดเจนตอนนี้ ..
heemayl

4
เขาไม่สามารถใส่ "ทางออก" หรืออะไรทำนองนั้นที่จุดเริ่มต้นของไฟล์แทนที่จะแสดงความคิดเห็นทุกบรรทัดหรือไม่
o0 '

บางทีเขาอาจหมายถึง #! - ที่ถูกตั้งค่าล่ามเป็นโมฆะจึงไม่ทำงาน
Joshua

1
@BJsgoodlife ไม่#!- เพียงแค่exit; ด้วยวิธีนี้คุณจะได้รับการปกป้องsh yourfileเช่นกันซึ่ง shebang ที่ไม่ถูกต้องจะไม่ช่วยเหลือ
ชาร์ลส์ดัฟฟี่

7

neon_overload มีคำตอบที่ดีมาก

ฉันจะขยายขอบเขตของคำถามของคุณสักหน่อย - ฉันจะแสดงความคิดเห็น แต่ฉันไม่มีชื่อเสียงเพียงพอที่นี่

ลินุกซ์ซึ่งเป็นระบบปฏิบัติการนั้นไม่ได้ขึ้นอยู่กับไฟล์ข้อความ ที่กล่าวว่าฉันสามารถดูว่าคุณมาจากไหน สำหรับผู้สังเกตการณ์ภายนอกมีความเป็นไปได้ค่อนข้างมากในการแก้ไขและเปิดไฟล์ "text" โดยเฉพาะเมื่อเทียบกับ Windows

เรื่องนี้มีสาเหตุหลายประการบางอย่างคือ:

  • ไม่มีระบบรีจิสทรีใน Linux เช่นเดียวกับใน Windows ดังนั้นจึงเป็นเรื่องธรรมดาสำหรับแอปพลิเคชันในการจัดเก็บการตั้งค่าของพวกเขาใน textfiles และคุณจะได้รับคำแนะนำให้แก้ไขแทนที่จะแก้ไขรีจิสทรีเช่นใน Windows
  • ลีนุกซ์ใช้กันอย่างแพร่หลายในฐานะระบบเซิร์ฟเวอร์, และส่วนมาก, ซึ่งใช้งานบนเดสก์ท็อปสามารถทำงานกับระบบเซิร์ฟเวอร์ได้. ซึ่งแตกต่างจาก Windows Server เซิร์ฟเวอร์ Linux มักจะทำงานโดยไม่มีส่วนต่อประสานกราฟิก ดังนั้นผลิตภัณฑ์ที่คาดว่าจะทำงานบนเซิร์ฟเวอร์ Linux และแน่นอนว่าผู้ใช้และผู้ดูแลระบบของพวกเขาคาดว่าจะทำงานโดยไม่ต้องมีส่วนต่อประสานกราฟิก ผลิตภัณฑ์ (และคุณสมบัติของระบบคุ้มค่าที่จะพูด) ที่คาดว่าจะเรียกใช้บน Windows มักจะเป็น GUI ที่อยู่ตรงกลาง (เช่นพูด MS SQL)
  • ระบบสคริปต์ลินุกซ์ค่อนข้างธรรมดาและโปร่งใสกว่า Windows คุณจะเห็นสคริปต์บน Windows - แต่พวกเขาจะถูกเรียกว่า something.vbs หรือ else.bat คุณจะไม่รู้ตัวเลยว่ามันเป็นไฟล์ข้อความ - แต่เมื่อพิจารณาถึงสิ่งที่อยู่ในจุดที่สองของฉันมันเป็นเรื่องธรรมดามากในลีนุกซ์ที่จะไปสอดแนมไฟล์. sh
  • สุดท้ายผู้ใช้ Linux หลายคนคุ้นเคยกับการทำงานโดยไม่ต้องมีส่วนต่อประสานกราฟิกและจะแก้ไขสิ่งต่าง ๆ ได้โดยตรงเช่นเดียวกับที่ไม่มี GUI แทนการคลำไปรอบ ๆ ด้วยเครื่องมือกราฟิก ฉันรู้ว่าเมื่อฉันต้องการทำสิ่งที่ลึกลงไปในระบบฉันเพิ่งเริ่มต้นเทอร์มินัลและทำเพื่อนร่วมงานของฉันหลายคน

"ไม่มีระบบรีจิสทรีใน Linux" แต่มี dconf ( en.wikipedia.org/wiki/Dconf ) ไม่ใช่ทุกระบบที่ใช้งานเคอร์เนลของลินุกซ์และมีทุกสิ่งที่ระบบ Windows จะกำหนดค่าในรีจิสทรีจะถูกตั้งค่าไว้ที่นั่น
Daniel Landau

1

คำตอบสั้น ๆ คือไม่คุณจะไม่เปลี่ยนคอมพิวเตอร์ด้วยการสร้างไฟล์ข้อความใน vi อย่างไรก็ตามหากคุณไม่ระวังการสร้างไฟล์ข้อความไฟล์แรกอาจเปลี่ยนชีวิตคุณได้ การเรียนรู้วิธี Unix อาจเป็นการฝึกที่ให้รางวัลอย่างล้ำลึก


0

viเป็นตัวแก้ไขข้อความดังนั้นหากคุณต้องการเพียงแค่เก็บตัวอย่างข้อความในไฟล์ข้อความและค้นหามันคุณสามารถทำได้ทั้งหมดจากเทอร์มินัลโดยตรงด้วยคำสั่งในตัว

  1. เขียนบันทึกลงในไฟล์ข้อความ (จะสร้างไฟล์หากไม่มีอยู่):

    echo note พร้อมข้อมูลสำคัญ >> info.txt

สิ่งสำคัญ: ระวังคำพูดเดี่ยวและคู่และนำหน้าด้วยเครื่องหมายทับหากคุณต้องการรวมไว้

  1. ค้นหาไฟล์สำหรับข้อความ (เช่นimportant):

    grep --color -i info.txt สำคัญ

เพื่อหลีกเลี่ยงการพิมพ์ที่ควรจะใช้นามแฝงในของคุณ--color -i~/.bashrc

คุณยังสามารถเพิ่มข้อความหลายบรรทัดไปยังไฟล์ข้อความที่มีอยู่หรือที่ไม่มีอยู่:

cat >> info2.txt

จากนั้นพิมพ์หรือวางข้อความและเมื่อเสร็จแล้วให้กดCTR+Z

สำหรับการเปลี่ยนระบบไม่มันจะไม่เปลี่ยนวิธีการทำงานของระบบของคุณตราบใดที่คุณสร้างไฟล์ในโฮมโฟลเดอร์ของคุณเองและไม่เรียกใช้งาน (คุณสามารถเรียกใช้ไฟล์แม้ว่าจะไม่สามารถใช้งานได้เช่นกับbash myFile) . ตรวจสอบให้แน่ใจว่าคุณใช้สิทธิ์ของรูทอย่างเคร่งครัดเมื่อคุณต้องการเท่านั้น

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

เป็นไปได้ที่จะถ่ายภาพตัวเองอย่างง่ายดายตัวอย่างเช่นหากในฐานะผู้ใช้ทั่วไปคุณมีโฟลเดอร์ 'ปฏิบัติการ' ที่คุณเพิ่มเข้าไปPATHและถ้าอยู่ในโฟลเดอร์นั้นคุณจะมีไฟล์ปฏิบัติการที่มีชื่อเดียวกับที่สร้างขึ้น -in สาธารณูปโภคทั่วไปหรือคำหลักทุบตีเช่นtest, echo, cat, for, cutฯลฯ

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