Как добавить имя хоста в первую строку файла

Некоторые команды LVM , такие как lvcreate , не делают разницы между единицами, заданными как строчные буквы, и единицами, заданными как прописные буквы. b или B означает байты, s или S означает сектора размером 512 байтов, k или K означает двоичные килобайты (2 ^ 10 = 1024 байта), m или M означает двоичные мегабайты (2 ^ 20 = 1 048 576 байтов), g или G означает двоичные гигабайты (2 ^ 30 = 1 073 741 824 байта), t или T означает двоичные терабайты (2 ^ 40 = 1 099 511 627 776 байт), p или P означает двоичные петабайты, а e или E означает двоичные эксабайты. Документировано в man lvcreate под опцией -L . В других командах LVM, таких как lvs , единицы нижнего регистра означают степень 2, а единицы верхнего регистра - степень 10.

Другие команды имеют другие соглашения. Например, dd хочет K , M , G для двоичных единиц и кБ (не KB ), MB , GB для десятичных единиц; du и df используют K , M , G для двоичных единиц и KB (не кБ ), МБ , ГБ для десятичных единиц; прочтите справочные страницы о командах, которые вы хотите использовать.

Ни одна команда, относящаяся к файловой системе, не использует размеры в битах. Они всегда в байтах.

1
27.06.2016, 17:37
4 ответа

Самый простой способ сделать это программным путем - записать во временный файл, а затем перезаписать существующий:

{ hostname; cat somefile; } > somefile.tmp &&
  mv somefile.tmp somefile
1
27.01.2020, 23:13

Будет ли это работать при использовании sed ?

Здесь предполагается, что GNU sed :

sed -i '1 i \' "$ HOSTNAME" file

Использование этого с файлом с именем test1 дает:

$ cat test1
one
two
three
four
five

Затем:

$ sed -i '1 i\'"$HOSTNAME" test1

приводит к:

$ cat test1
chris-dell
one
two
three
four
five
2
27.01.2020, 23:13

Вы отметили vi , однако похоже, что вы ищете вариант интерфейса командной строки. В vi вы можете использовать shift + O , чтобы вставить выше и автоматически добавить новую строку и просто вставить свою строку прямо. Если вы не хотите использовать редактор, вы можете используйте sed (здесь предполагается реализация GNU).

sudo sed -i '1iabcd555.india.com' /etc/hosts
1
27.01.2020, 23:13

Используйте команду vi

:0r !hostname

Или, в более длинной форме,

:0read !hostname

Вам нужно будет нажать Esc сначала, конечно.

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

Однако мы не просто хотим вставить это куда-нибудь. Мы хотим вставить его в первую строку . Вот почему мы говорим 0r . Ноль указывает номер строки, после которой будет помещен вывод команды (или файл).

3
27.01.2020, 23:13

Теги

Похожие вопросы