Изменит ли мой компьютер создание текстового файла в vi?


9

Я знаю, что Linux - это операционная система, построенная на текстовых файлах. То, что я хотел бы сделать, это создать файл, используя viвсе различные команды, которые я изучил. Таким образом, я мог легко найти каждую отдельную команду, используя /in vi. Но я хочу сделать это только в том случае, если это не изменит способ работы моего компьютера. Это было бы хорошей идеей?


12
Да, это будет текстовый файл где-то еще. ;-) (Шучу) Действительно, файл - это файл. Это все равно что спросить, изменит ли ваш компьютер добавление фотографии в папку или создание нового текстового документа. Да, это будет; у вас есть еще одна фотография / документ там. Как бы то ни было, ответы, которые вы получили, в основном правильные.
Rmano

Почему вы думаете, что это будет делать?
Брайам

2
Не уверен, что вы подразумеваете под «операционной системой, построенной на текстовых файлах», но Linux не сильно отличается от, скажем, Windows, когда речь идет о текстовых файлах. Например, в Windows есть файлы .ini и .bat, если вы об этом думаете.
Hyde

Кроме того, вы думаете, что есть что-то особенное vi(по сравнению, скажем, с gedit), или вы просто имели в виду «текстовый редактор»?
Мистер Листер

1
@BJsgoodlife Некоторые текстовые файлы управляют системой. Они помещены в специальные места и обычно не могут быть изменены без sudo.
cpast

Ответы:


34

Написание текстового файла не "изменит способ работы вашего компьютера".

В частности, чтобы сделать что-то подобное, вам нужно будет сделать один из

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

Поскольку вы не собираетесь явно делать что-то подобное, беспокоиться не о чем. В частности, другой ответ идет на ненужную длину, предлагая начинать текстовые файлы с хэшей в каждой строке. Конечно, нет. Хранение текстового файла в обычном домашнем каталоге ничего не даст.


3
Я предложил поставить #так, чтобы ничего непреднамеренного не было выполнено случайно. Я думаю, что всегда лучше быть на более безопасной стороне.
Heemayl

8
Я думаю, что не всегда лучше быть на более безопасной стороне. Безопасность имеет стоимость, и есть момент, когда сниженный риск больше не стоит затрат. Например, когда он превышает ценность вещи, которую вы пытаетесь сохранить (в контексте, где этот аргумент имеет смысл). В разделе « Информационная безопасность» вы можете найти множество ответов, в которых обсуждается, как обеспечить должную безопасность, и единственная полностью безопасная система также совершенно бесполезна, поэтому было бы глупо настаивать на идеальной безопасности во всех случаях.
Дэвид Z

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

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

2
@heemayl почему бы просто не сделать первую строку в файле exit?
Random832 20.02.15

15

Вы можете сохранить все выученные команды в файле, но некоторые важные моменты, на которые следует обратить внимание:

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

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

РЕДАКТИРОВАТЬ: я дал третий пункт в качестве крайней меры безопасности, поскольку "neon_overload" и "David Z" указали, что размещение хешей во всех строках слишком обширно и, следовательно, не нужно, я хотел бы поддержать их в этом контексте. Также, как указывает "random832", гораздо лучшей альтернативой моему третьему пункту было бы начать с файла exit, так как никакие более поздние команды не будут выполняться.

РЕДАКТИРОВАТЬ-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
Разве он не мог просто поместить «выход» или что-то подобное в начало файла вместо того, чтобы комментировать каждую строку?
о0 '.

Может быть, он имел в виду #! - это устанавливает интерпретатор на ноль, чтобы он не работал.
Джошуа

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

7

neon_overload имеет очень хороший ответ.

Я немного расширю некоторые аспекты вашего вопроса - я бы сделал это комментарием, но у меня здесь недостаточно репутации.

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

Это имеет несколько причин, некоторые из которых:

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

«В Linux нет системы регистрации», но есть dconf ( en.wikipedia.org/wiki/Dconf ). Не все системы, в которых работает ядро ​​Linux, будут иметь его, и не все, что система Windows будет настраивать в реестре, будут настроены там.
Даниэль Ландау

1

Краткий ответ: нет, вы не измените свой компьютер , создав текстовый файл в vi. Однако, если вы не будете осторожны, создание этого первого текстового файла может просто изменить вашу жизнь . Изучение пути Unix может быть очень полезной практикой.


0

viэто текстовый редактор , поэтому, если все, что вам нужно, это просто сохранить некоторые текстовые фрагменты в текстовом файле и выполнить поиск по нему, то вы можете делать все это прямо из терминала с помощью встроенных команд.

  1. Запишите примечание в текстовый файл (создайте файл, если он не существует):

    эхо-заметка с важными данными >> info.txt

ВАЖНО: следите за одинарными и двойными кавычками и ставьте перед ними косую черту, если хотите, чтобы они были включены.

  1. Найдите в файле какой-нибудь текст (например important):

    grep --color -i важная информация.txt

Для того, чтобы избежать повторного ввода , --color -iкоторое должно быть в вашем псевдониме ~/.bashrc.

Вы также можете добавить многострочный текст в существующие или несуществующие текстовые файлы:

cat >> info2.txt

затем введите или вставьте текст, а когда закончите, нажмите CTR+Z

Что касается изменения системы, то нет, это не изменит способ работы вашей системы, если вы создаете файлы в своей домашней папке и не выполняете их (вы можете выполнить файл, даже если он не исполняется, например, с помощью bash myFile) , Также убедитесь, что вы используете привилегии root только тогда, когда они вам нужны.

И, наконец, ваша интерпретация файловой системы в некоторой степени ввела вас в заблуждение: в большинстве операционных систем есть файлы, в которых хранятся важные настройки, которые сильно влияют на работу системы, но они расположены в заранее определенных местах и ​​обычно защищены от изменений обычными пользователями.

Однако можно легко выстрелить себе в ногу, например, если у обычного пользователя у вас есть локальная «исполняемая» папка, к которой вы добавили PATH, и если в этой папке у вас есть исполняемые файлы с такими же именами, как встроенные -в общих утилит или Баш ключевых слов, таких , как test, echo, cat, for, cutи т.д.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.