Чи змінить текстовий файл in vi змінить мій комп'ютер?


9

Я знаю, що Linux - це операційна система, побудована на текстових файлах. Що я хотів би зробити, це створити файл, використовуючи viвсі різні команди, які я вивчив. Таким чином я міг легко знайти кожну окрему команду за допомогою /in vi. Але я хочу це зробити, лише якщо це не змінить спосіб функціонування мого комп'ютера. Це було б гарною ідеєю?


12
Так, текстовий файл десь матиме більше. ;-) (Жарт) Дійсно, файл - це файл. Це як запитати, чи додавання фотографії до папки чи створення нового документа в Word змінить ваш комп'ютер. Так, буде; у вас є ще одна фотографія / документ. Як би там не було, відповіді, які ви отримали, здебільшого вірні.
Рмано

Чому ви думаєте, що це зробить?
Брайам

2
Не впевнений, що ви маєте на увазі під "операційною системою, побудованою на текстових файлах", але Linux насправді не відрізняється від, скажімо, Windows, коли мова йде про текстові файли. У Windows, наприклад, є файли .ini та .bat, якщо ви так думаєте.
Гайд

Крім того, чи вважаєте ви, що є щось особливе vi(порівняно з, скажімо, gedit) чи ви просто мали на увазі "текстовий редактор"?
Містер Лістер,

1
@BJsgoodlife Деякі текстові файли керують системою. Вони розміщуються в спеціальних місцях і, як правило, без них неможливо змінити sudo.
cpast

Відповіді:


34

Введення текстового файлу не буде "змінювати спосіб функціонування комп'ютера".

Зокрема, для того, щоб зробити щось подібне, вам доведеться зробити один із них

  • перезаписати важливий файл
  • запишіть свій файл у спеціальне захищене місце, наприклад у каталог * .d у / etc; у вас не буде дозволу на це
  • позначте файл виконуваним і поставте його на свій шлях

Оскільки явно ви не збираєтесь робити щось подібне, турбуватися немає про що. Зокрема, інша відповідь стосується зайвої довжини, пропонуючи ваші текстові файли починати з хешів у кожному рядку. Звичайно, ні. Просто зберігання текстового файлу десь у звичайному домашньому каталозі нічого не робитиме.


3
Я запропонував #зробити так, щоб випадково нічого не було зроблено випадково. Я думаю, що завжди краще бути на безпечнішому боці.
heemayl

8
Я думаю, що не завжди краще бути на безпечнішому боці. Безпека має вартість, і є момент, коли знижений ризик вже не варто витрачати. Наприклад, коли вона перевищує значення речі, яку ви намагаєтесь захистити (у контекстах, де цей аргумент має сенс). Про інформаційну безпеку ви можете знайти багато відповідей, які обговорюють, наскільки правильна безпека є компромісом, і єдина повністю захищена система також абсолютно марна, тому було б дурно наполягати на ідеальній безпеці у всіх випадках.
David Z

9
Як - то окреме питання, я вважаю , що найбільш важливий момент , щоб вивести (що ця відповідь робить, а інший не робить), що створює довільний файл не збирається нічого робити , щоб змінити систему. Ви можете вплинути на систему лише створивши файл, який шукає якийсь інший процес, або виконавши створений вами файл, якщо він містить код, який впливає на систему - але це підпадає під загальну пораду щодо не запуску абсолютно невідомих команд оболонки , що розумно, працюєте ви з файлами чи ні.
David Z

2
зроби мені бутерброд. You won't have permission to do this. Судо зроби мені сендвіч. Aye, aye, sir!
Лежати Райан

2
@heemayl чому б просто не зробити перший рядок у файлі exit?
Випадково832

15

Ви можете зберегти всі команди, які ви вивчили у файлі, але деякі важливі моменти, які слід зазначити:

  • Не робіть файл виконуваним
  • Ніколи sourceфайл
  • Найкращим способом було б помістити #на початку всіх команд, щоб прокоментувати всі команди, щоб вони не були виконані випадково. Таким чином, ви можете фактично шукати потрібну вам команду, а також буде без ризику. Ви можете додати #на початку кожного рядка за допомогою наступної команди:

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

EDIT: Я поставив третій пункт як надзвичайний захід безпеки, оскільки "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Я не зовсім впевнений, чи це має бути серйозна пропозиція чи жарт. Мій детектор сарказму сьогодні зірвав мене.
Лежати Райан

Слово, якому потрібно надати важливе значення, - це «випадково» .. Користувач може випадково зберегти файл десь небезпечним як виконуваним .... тут я просто не
ризикую

4
Чи не міг він просто поставити "вихід" чи щось подібне на початку файлу, а не коментувати кожен рядок?
o0 '.

Можливо, він мав на увазі #! - тобто інтерпретатор встановлюється на нуль, щоб він не запускався.
Джошуа

1
@BJsgoodlife, ні #!- просто exit; таким чином ви також захищені, від sh yourfileчого недійсний шебанг не допоможе.
Чарльз Даффі

7

neon_overload має дуже гарну відповідь.

Я трохи розкрию певний аспект вашого запитання - я б зробив це зауваженням, але мені тут недостатньо репутації.

Linux, як операційна система, НЕ базується на текстових файлах. Однак, я можу побачити, звідки ви родом. Для зовнішнього спостерігача триває досить небагато редагування та запуску «текстових» файлів, особливо порівняно з Windows.

Це має кілька причин, деякі з яких:

  • У Linux немає системи реєстру, як це є в Windows. Тому додатки звичайно зберігають свої настройки у текстових файлах, і вам буде доручено редагувати їх, а не редагувати реєстр, як у Windows.
  • Linux дуже широко використовується як серверна система, і багато хто з тих, хто використовує його на робочих столах, працюють з серверними системами. На відміну від Windows Server, сервери Linux, як правило, працюють без графічного інтерфейсу. Тому продукти, які, як очікується, будуть працювати на серверах Linux, і, власне, їх користувачі та адміністратори, повинні працювати без графічного інтерфейсу. Продукти (та функції системи, варто сказати), які, як очікується, працюватимуть у Windows, як правило, більш орієнтовані на графічний інтерфейс (наприклад, MS SQL)
  • Система сценаріїв Linux дещо поширеніша і прозоріша, ніж Windows. Ви б бачили сценарії в Windows - але вони будуть називатися something.vbs або else.bat. Ви не обов'язково розумієте, що це текстові файли - але, враховуючи те, що є в моєму другому пункті, в Linux набагато частіше буває проглядати .sh файли.
  • Нарешті, багато користувачів Linux звикли працювати без графічного інтерфейсу, і для багатьох речей вони скоріше редагують файли безпосередньо так, як це було б без графічного інтерфейсу, а не метушилися за допомогою графічних інструментів. Я знаю, що коли я хочу зробити щось глибше в системі, я просто запускаю термінал, і так роблять багато моїх колег.

"У Linux немає системи реєстру", але є dconf ( en.wikipedia.org/wiki/Dconf ). Не всі системи, які працюють з ядром Linux, матимуть його, і не все, що система Windows налаштувала б у реєстрі, буде налаштовано там.
Даніель Ландау

1

Коротка відповідь - ні, ви не зміните свій комп’ютер , створивши текстовий файл in vi. Однак якщо ви не будете обережні, створення першого текстового файлу просто може змінити ваше життя . Вивчення способу Unix може бути глибоко корисною практикою.


0

viє текстовим редактором , тому, якщо все, що ви хочете, - це просто зберегти кілька текстових фрагментів у текстовому файлі та здійснити пошук через нього, тоді ви можете зробити все це безпосередньо з терміналу за допомогою вбудованих команд.

  1. Напишіть примітку до текстового файлу (створить файл, якщо його не існувало):

    ехо-примітка з важливими даними >> info.txt

ВАЖЛИВО: Слідкуйте за одинарними та подвійними котируваннями та додайте їх до косої риси, якщо ви хочете, щоб вони були включені

  1. Знайдіть у файлі текст (наприклад important):

    grep --кольоровий - важливий info.txt

Щоб уникнути введення тексту, --color -iяке має бути псевдонімом у вашому ~/.bashrc.

Ви також можете додати багаторядковий текст до існуючих або неіснуючих текстових файлів:

cat >> info2.txt

потім введіть або вставте текст, а по завершенні натисніть CTR+Z

Що стосується зміни системи, ні, це не змінить спосіб роботи вашої системи, поки ви створюєте файли у власній домашній папці та не виконуєте їх (ви можете виконати файл, навіть якщо він не виконується, наприклад, за допомогою bash myFile) . Також переконайтеся, що ви користуєтесь кореневими привілеями лише тоді, коли вони вам потрібні.

І нарешті, ваша інтерпретація файлової системи вас дещо ввела в оману: у більшості операційних систем є файли, які зберігають важливі параметри, які глибоко впливають на функціонування системи, але вони розташовані у заздалегідь визначених місцях і, як правило, захищені від модифікації звичайними користувачами.

Наприклад, можна легко застрелити себе в ногу, наприклад, якщо в якості постійного користувача у вас є локальна папка "виконується", яку ви додали PATH, і якщо в цій папці у вас є виконавчі файли, які мають такі ж назви, як і вбудовані -в загальних утиліт або Баш ключових слів, таких , як test, echo, cat, for, cutі т.д.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.