Как с помощью Tar превратить мой абсолютный путь в относительный?

Расширение решения jlliagre (и полезно, если у вас нет доступной команды ascii):

awk 'BEGIN {for (i = 32; i < 127; i++) printf "%3d 0x%02x %c\n", i, i, i}'

Вы также можете направить вышеуказанное на pr -t6 -w78, чтобы получить вывод на одну страницу:

 32 0x20      48 0x30 0    64 0x40 @    80 0x50 P    96 0x60 `   112 0x70 p
 33 0x21 !    49 0x31 1    65 0x41 A    81 0x51 Q    97 0x61 a   113 0x71 q
 34 0x22 "    50 0x32 2    66 0x42 B    82 0x52 R    98 0x62 b   114 0x72 r
 35 0x23 #    51 0x33 3    67 0x43 C    83 0x53 S    99 0x63 c   115 0x73 s
 36 0x24 $    52 0x34 4    68 0x44 D    84 0x54 T   100 0x64 d   116 0x74 t
 37 0x25 %    53 0x35 5    69 0x45 E    85 0x55 U   101 0x65 e   117 0x75 u
 38 0x26 &    54 0x36 6    70 0x46 F    86 0x56 V   102 0x66 f   118 0x76 v
 39 0x27 '    55 0x37 7    71 0x47 G    87 0x57 W   103 0x67 g   119 0x77 w
 40 0x28 (    56 0x38 8    72 0x48 H    88 0x58 X   104 0x68 h   120 0x78 x
 41 0x29 )    57 0x39 9    73 0x49 I    89 0x59 Y   105 0x69 i   121 0x79 y
 42 0x2a *    58 0x3a :    74 0x4a J    90 0x5a Z   106 0x6a j   122 0x7a z
 43 0x2b +    59 0x3b ;    75 0x4b K    91 0x5b [   107 0x6b k   123 0x7b {
 44 0x2c,    60 0x3c <    76 0x4c L    92 0x5c \   108 0x6c l   124 0x7c |
 45 0x2d -    61 0x3d =    77 0x4d M    93 0x5d ]   109 0x6d m   125 0x7d }
 46 0x2e.    62 0x3e >    78 0x4e N    94 0x5e ^   110 0x6e n   126 0x7e ~
 47 0x2f /    63 0x3f ?    79 0x4f O    95 0x5f _   111 0x6f o

В моей ОС -есть независимый сценарий запуска:

command -v ascii &> /dev/null || function ascii { awk 'BEGIN {for (i = 32; i < 127; i++) printf "%3d 0x%02x %c\n", i, i, i}' | pr -t6 -w78; }

(обратите внимание на ;перед закрытием функции})

Особая благодарность Стефану Шазеласу за часть pr -t6.

1
29.04.2020, 05:32
2 ответа

Используйте параметр -Cдля tar, чтобы перейти в соответствующий рабочий каталог и указать файлы по имени:

tar -C /home/melwhitesastonia -cvzf archive.tar.gz file.txt filee.txt fileee.txt

Обратите внимание, что вы можете указать абсолютный путь к архиву (, например, $PWD/archive.tar.gz), если вы не хотите, чтобы он находился в том же каталоге. Также обратите внимание, что вам не нужно сжимать его с помощью gzip, потому что флаг -zдля tar уже делает это.

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

1
28.04.2021, 23:17

С аргументом --transformвы могли бы сделать что-то подобное

tar -czv --transform 's:home/melwhiteastonia/::g' -f archive.tar.gz \
    /home/melwhiteastonia/file.txt \
    /home/melwhiteastonia/filee.txt \
    /home/melwhiteastonia/fileee.txt

Регулярное выражение равно home/melwhiteastonia/, потому что tarв любом случае удаляет ведущее /.

1
28.04.2021, 23:17

Теги

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