Почему файл «два» также получает их?
потому что ln (1)
делают жесткие ссылки по умолчанию, а «два» является жесткой ссылкой «одного», согласно man page:
Жесткая ссылка на файл неотличима от исходной записи каталога; любые изменения в файле фактически не зависят от имени, используемого для ссылки на файл.
Если я сделаю ls -l, я вижу, что файлы один и два имеют 28 байт, в то время как файл три имеет только 3 байта (может быть, для шести). В чем причина этого?
, потому что содержимое файла имеет 28 байт, например:
$ wc -c <<<'one two three four five six'
28
, за исключением нового символа строки, замененного космосом.
для файла «три» это символьная ссылка. ссылка на символ содержит имя файла, с которым он связан. так что «» три «» будут иметь размер имени файла «» один «», и это будет 3 байта.
Теперь, если я удалю файл 'один', я вижу, что три все еще показаны как связанные с одним, но я не могу выбрать три и получить ошибку, что файл не существует. Но почему он отображается в команде ls?
Если удалить файл 'one', 'three' становится разорванной ссылкой символа. Связи с символами относятся к определенному типу файлов, если их явно не удалить, они не исчезнут при удалении файла, с которым они связаны.
-121--209421- Вы можете сделать это (предполагая, что GNU sed
):
:%!sed 's/;/, /6g'
Заменить 6-е и последнее ;
на ,
.
С помощью vim
, использующих операторы обратного обзора:
:%s/\v((;.*){5})@<=;/, /g
(то есть заменить ;
s, которым предшествуют по крайней мере 5 ;
s).
Другой способ в vim
:
:g/^/call feedkeys("nnnnna") | s/;/, /gc
Функция feedkeys ()
использует последовательность nnnna
, как если бы мы набирали их на клавиатуре, s
ubsitation с gc
флагами, указывающими vim
на
Здесь мы просто проигнорировали сначала 5 вхождения nnnnn
, затем a
подтвердить все остальные.
Команда g/^/
была применена ко всем строкам.
Используйте командуklogd -f /var/log/kernel.log. Недавно не пользовался, но должно работать.