Некоторые команды 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
(не кБ
), МБ
, ГБ
для десятичных единиц; прочтите справочные страницы о командах, которые вы хотите использовать.
Ни одна команда, относящаяся к файловой системе, не использует размеры в битах. Они всегда в байтах.
Самый простой способ сделать это программным путем - записать во временный файл, а затем перезаписать существующий:
{ hostname; cat somefile; } > somefile.tmp &&
mv somefile.tmp somefile
Будет ли это работать при использовании 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
Вы отметили vi
, однако похоже, что вы ищете вариант интерфейса командной строки. В vi
вы можете использовать shift + O
, чтобы вставить выше и автоматически добавить новую строку и просто вставить свою строку прямо. Если вы не хотите использовать редактор, вы можете используйте sed
(здесь предполагается реализация GNU).
sudo sed -i '1iabcd555.india.com' /etc/hosts
Используйте команду vi
:0r !hostname
Или, в более длинной форме,
:0read !hostname
Вам нужно будет нажать Esc сначала, конечно.
Команда read
обычно берет имя файла и вставляет его содержимое под текущей строкой, но если вы укажете команду оболочки с помощью !
перед ним, он возьмет вывод этой команды и вставит , что под текущей строкой.
Однако мы не просто хотим вставить это куда-нибудь. Мы хотим вставить его в первую строку . Вот почему мы говорим 0r
. Ноль указывает номер строки, после которой будет помещен вывод команды (или файл).