Es un delimitador alternativo para el comando sed
sustituto (s
). Por lo general, se usa la barra inclinada, como en s/pattern/replacement/
, pero sed
permite usar casi cualquier carácter.
La razón principal para usar otro delimitador que no sea /
en la expresión de sustitución sed
es cuando la expresión actuará sobre caracteres literales /
.
Por ejemplo, para sustituir la ruta /some/path/here
por /other/path/now
, se puede hacer
s/\/some\/path\/here/\/other\/path\/now/
Esto sufre de lo que generalmente se conoce como "síndrome del palillo inclinado" , lo que significa que es difícil de leer y mantener adecuadamente.
En cambio,se nos permite usar otro delimitador de expresión:
s#/some/path/here#/other/path/now#
Usar ~
es solo otro ejemplo de un delimitador de expresión de sustitución válido.
Tu expresión
s~ ~~g
es lo mismo que
s/ //g
y eliminará todos los espacios de la entrada. En este caso, no es necesario usar otro delimitador que no sea /
ya que ni el patrón ni el reemplazo contienen /
.
Otra forma de hacer lo mismo es
tr -d ' ' outfile
См.https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#The_Contents_of_inode.i_block
«Файловые флаги :524288» — это 0x80000 в шестнадцатеричном формате, поэтому это флаг «экстентов». Таким образом, хотя ваш extundelete
интерпретировал блок inode.i
как прямые/косвенные/двойные косвенные/тройные косвенные указатели блоков, это неверно. Но мы все еще можем расшифровать это сами.
Первое число в поле «Прямые блоки» — 62218, что равно 0xF30A в шестнадцатеричном формате -магическое число для режима экстентного дерева (eh_magic
), подтверждающее значение «Флаги файлов». Поскольку старые указатели блоков в стиле -имеют порядок следования байтов -32 -бит, а магическое число режима экстента — 16 -бит, мы знаем, что поле eh_entries
отображалось бы как часть первый номер "Прямых блоков". Поскольку это не испортило отображаемое магическое число, eh_entries
должно быть равно нулю.
Аналогично, второе число в «Прямых блоках» равно 4, что декодируется в два 16 -битовых числа :4 для eh_max
и 0 для eh_depth
. Остальная часть блока inode.i
кажется нулевой.
Итак, вот содержимое блока inode.i
, интерпретируемое в соответствии с режимом экстента:
eh_magic
= 62218, верно. eh_entries
= 0, после заголовка нет допустимых записей. eh_max
= 4, максимум 4 записи в inode.i
. eh_depth
= 0, этот узел экстента будет указывать непосредственно на блоки данных eh_generation
= 0 (не используется стандартомext4
)Остальная часть inode.i
состоит из нулей, поэтому здесь нет допустимых узлов struct ext4_extent
и struct ext4_extent_idx
, что подтверждает значение eh_entries
равное 0.
Так что, к сожалению, похоже, что таблица экстентов была обнулена как часть операции удаления, а фактические указатели, указывающие расположение блоков файла на диске, исчезли. Так что вы правы, это действительно просто заглушка.