mRar.sh 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. #!/bin/bash
  2. #===================================================================================
  3. fRarCommands()
  4. {
  5. trap 'echo -en "\ec"; stty sane; exit' SIGINT
  6. aa=0
  7. A(){ for b in $(seq 0 21);do E${b};done; }
  8. B()
  9. {
  10. local c
  11. IFS= read -s -n1 c 2>/dev/null >&2
  12. if [[ $c = $(echo -en "\e") ]]; then
  13. read -s -n1 c 2>/dev/null >&2
  14. if [[ $c = \[ ]]; then
  15. read -s -n1 c 2>/dev/null >&2
  16. case $c in
  17. A) echo d ;;
  18. B) echo e ;;
  19. C) echo f ;;
  20. D) echo g ;;
  21. esac
  22. fi
  23. elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
  24. echo enter
  25. fi
  26. }
  27. C()
  28. {
  29. if [[ $i == d ]];then ((aa--));fi
  30. if [[ $i == e ]];then ((aa++));fi
  31. if [[ $aa -lt 0 ]];then aa=21;fi
  32. if [[ $aa -gt 21 ]];then aa=0;fi;
  33. }
  34. D()
  35. {
  36. j1=$((aa+1)); k1=$((aa-1))
  37. if [[ $k1 -lt 0 ]];then k1=21;fi
  38. if [[ $j1 -gt 21 ]];then j1=0;fi
  39. if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
  40. if [[ $j1 -eq 0 ]] || [ $k1 -eq 21 ];then
  41. echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
  42. }
  43. TXa()
  44. {
  45. for (( a=2; a<=26; a++ ))
  46. do
  47. echo -e "\e[${a};1H\e[90m\xE2\x94\x82 \xE2\x94\x82\e[0m"
  48. done
  49. echo -en "\e[1;1H\e[90m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
  50. echo -en "\e[2;2H Команды \e[36m COMMANDS\e[0m";
  51. echo -en "\e[3;1H\e[90m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  52. echo -en "\e[25;1H\e[90m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
  53. echo -en "\e[27;1H\e[90m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
  54. }
  55. E0(){ echo -en "\e[4;2H Add files to archive \e[32m a \e[0m";}
  56. E1(){ echo -en "\e[5;2H Добавить комментарий к архиву \e[32m c \e[0m";}
  57. E2(){ echo -en "\e[6;2H Изменить параметры архива \e[32m ch \e[0m";}
  58. E3(){ echo -en "\e[7;2H Записать архивный комментарий в указанный файл \e[32m cw \e[0m";}
  59. E4(){ echo -en "\e[8;2H Удалить файлы из архива \e[32m d \e[0m";}
  60. E5(){ echo -en "\e[9;2H Извлечь файлы в текущий каталог. Не создает никаких подкаталогов \e[32m e \e[0m";}
  61. E6(){ echo -en "\e[10;2H Освежить файлы в архиве \e[32m f \e[0m";}
  62. E7(){ echo -en "\e[11;2H Заблокировать архив \e[32m k \e[0m";}
  63. E8(){ echo -en "\e[12;2H Список содержимого архива [техническое[все], голое] \e[32m l[t[a],b] \e[0m";}
  64. E9(){ echo -en "\e[13;2H Переместить в архив [только файлы] \e[32m m[f] \e[0m";}
  65. E10(){ echo -en "\e[14;2H Print file to stdout \e[32m p \e[0m";}
  66. E11(){ echo -en "\e[15;2H Repair archive \e[32m r \e[0m";}
  67. E12(){ echo -en "\e[16;2H Восстановите отсутствующие тома, используя тома для восстановления \e[32m rc \e[0m";}
  68. E13(){ echo -en "\e[17;2H Rename archived files \e[32m rn \e[0m";}
  69. E14(){ echo -en "\e[18;2H Добавьте запись восстановления данных \e[32m rr[N] \e[0m";}
  70. E15(){ echo -en "\e[19;2H Создайте тома для восстановления (файлы .rev) \e[32m rv[N] \e[0m";}
  71. E16(){ echo -en "\e[20;2H Преобразование архива в или из SFX \e[32m s[name|-] \e[0m";}
  72. E17(){ echo -en "\e[21;2H Test archive files \e[32m t \e[0m";}
  73. E18(){ echo -en "\e[22;2H Обновите файлы в архиве \e[32m u \e[0m";}
  74. E19(){ echo -en "\e[23;2H Verbosely list archive [technical] \e[32m v[t[a],b] \e[0m";}
  75. E20(){ echo -en "\e[24;2H Extract files with full path \e[32m x \e[0m";}
  76. E21(){ echo -en "\e[26;2H \e[90m Exit \e[0m";}
  77. INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
  78. while [[ "$l1" != " " ]]; do case $aa in
  79. 0)D;echo -en "\e[1;90m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  80. Добавить файлы в архив:
  81. \e[32m rar a archive.rar file\e[0m
  82. #
  83. \e[32m rar a archive.rar file1 file2 dir\e[0m
  84. #
  85. \e[32m rar a archive.rar *\e[0m
  86. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  87. 1)D;echo -en "\e[1;90m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  88. Добавить комментарий к архиву. Длина комментария ограничена 256 КБ
  89. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  90. 2)D;echo -en "\e[1;90m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  91. Изменить параметры архива.
  92. Может использоваться с большинством опций модификации архива.
  93. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  94. 3)D;echo -en "\e[1;90m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  95. Записать архивный комментарий в указанный файл
  96. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  97. 4)D;echo -en "\e[1;90m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  98. удалить из архива можно ключом d:
  99. \e[32m rar d archive.rar file\e[0m
  100. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  101. 5)D;echo -en "\e[1;90m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  102. 6)D;echo -en "\e[1;90m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  103. Освежить файлы в архиве.
  104. Обновления этих файлов изменились, так как они были запакованы в архив.
  105. Эта команда не будет добавлять новые файлы в архив.
  106. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  107. 7)D;echo -en "\e[1;90m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  108. Заблокировать архив.
  109. Любая команда, намеревающаяся изменить архив, будет проигнорирована.
  110. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  111. 8)D;echo -en "\e[1;90m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  112. Список содержимого архива [техническое[все], голое]
  113. [technical [all], bare ]
  114. 'lt' отображает подробную информацию о файле в многострочном режиме.
  115. Команды 'lt', 'lta' и 'lb'
  116. равны соответственно 'vt', 'vta' и 'vb'.
  117. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  118. 9)D;echo -en "\e[1;90m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  119. Переместить в архив [только файлы].
  120. Каталоги не будут удалены, если используется модификатор 'f'
  121. и/или применяется переключатель '-ed'.
  122. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  123. 10)D;echo -en "\e[1;90m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  124. Распечатать файл на стандартный вывод:
  125. \e[32m \e[0m
  126. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  127. 11)D;echo -en "\e[1;90m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  128. Архив ремонта. Подробности смотрите в rar.txt
  129. \e[32m \e[0m
  130. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  131. 12)D;echo -en "\e[1;90m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  132. Восстановите отсутствующие тома, используя тома для восстановления (файлы .rev).
  133. В качестве имени архива необходимо указать любой существующий том, например,
  134. \e[32m rar rc backup.part03.rar\e[0m
  135. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  136. 13)D;echo -en "\e[1;90m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  137. Переименовать заархивированные файлы
  138. \e[32m \e[0m
  139. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  140. 14)D;echo -en "\e[1;90m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  141. Добавьте запись восстановления данных.
  142. Дополнительно в архив может быть добавлена избыточная информация
  143. (запись восстановления).
  144. \e[32m \e[0m
  145. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  146. 15)D;echo -en "\e[1;90m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  147. Создайте тома для восстановления (файлы .rev),
  148. которые впоследствии можно будет использовать для восстановления отсутствующих
  149. файлов в наборе томов. Эта команда имеет смысл только для многотомных архивов.
  150. Подробности смотрите в rar.txt.
  151. \e[32m \e[0m
  152. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  153. 16)D;echo -en "\e[1;90m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  154. Преобразование архива в или из SFX.
  155. Архив сливается с SFX-модулем в домашней директории пользователя.
  156. \e[32m \e[0m
  157. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  158. 17)D;echo -en "\e[1;90m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  159. Тестовые архивные файлы
  160. \e[32m \e[0m
  161. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  162. 18)D;echo -en "\e[1;90m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  163. Обновите файлы в архиве.
  164. Добавляет файлы, которых еще нет в архиве, и обновляет файлы,
  165. измененные с момента их упаковки в архив.
  166. \e[32m rar u archive.rar file\e[0m
  167. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  168. 19)D;echo -en "\e[1;90m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  169. Подробно перечислить архив [технический]
  170. \e[32m \e[0m
  171. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  172. 20)D;echo -en "\e[1;90m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  173. Извлечь файлы с полным путем:
  174. \e[32m rar x file.rar\e[0m
  175. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  176. 21)D;echo -en "\e[1;90m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRar;fi;;
  177. esac;C;done
  178. }
  179. #===================================================================================
  180. #===================================================================================
  181. fRarOptionsA()
  182. {
  183. trap 'echo -en "\ec"; stty sane; exit' SIGINT
  184. aa=0
  185. A(){ for b in $(seq 0 30);do E${b};done; }
  186. B()
  187. {
  188. local c
  189. IFS= read -s -n1 c 2>/dev/null >&2
  190. if [[ $c = $(echo -en "\e") ]]; then
  191. read -s -n1 c 2>/dev/null >&2
  192. if [[ $c = \[ ]]; then
  193. read -s -n1 c 2>/dev/null >&2
  194. case $c in
  195. A) echo d ;;
  196. B) echo e ;;
  197. C) echo f ;;
  198. D) echo g ;;
  199. esac
  200. fi
  201. elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
  202. echo enter
  203. fi
  204. }
  205. C()
  206. {
  207. if [[ $i == d ]];then ((aa--));fi
  208. if [[ $i == e ]];then ((aa++));fi
  209. if [[ $aa -lt 0 ]];then aa=30;fi
  210. if [[ $aa -gt 30 ]];then aa=0;fi;
  211. }
  212. D()
  213. {
  214. j1=$((aa+1)); k1=$((aa-1))
  215. if [[ $k1 -lt 0 ]];then k1=30;fi
  216. if [[ $j1 -gt 30 ]];then j1=0;fi
  217. if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
  218. if [[ $j1 -eq 0 ]] || [ $k1 -eq 30 ];then
  219. echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
  220. }
  221. TXa()
  222. {
  223. for (( a=2; a<=35; a++ ))
  224. do
  225. echo -e "\e[${a};1H\e[90m\xE2\x94\x82 \xE2\x94\x82\e[0m"
  226. done
  227. echo -en "\e[1;1H\e[90m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
  228. echo -en "\e[2;2HОпции ( A - I ) \e[36m OPTIONS\e[0m";
  229. echo -en "\e[3;1H\e[90m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  230. echo -en "\e[34;1H\e[90m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
  231. echo -en "\e[36;1H\e[90m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
  232. }
  233. E0(){ echo -en "\e[4;2H Display help on commands and switches \e[32m -? \e[0m";}
  234. E1(){ echo -en "\e[5;2H Этот переключатель сообщает RAR, что в терминале нет переключателей \e[32m -- \e[0m";}
  235. E2(){ echo -en "\e[6;2H Добавить имя архива к пути назначения \e[32m -ad \e[0m";}
  236. E3(){ echo -en "\e[7;2H Создайте имя архива, используя текущую дату и время \e[32m -ag[format] \e[0m";}
  237. E4(){ echo -en "\e[8;2H Ignore file attributes \e[32m -ai \e[0m";}
  238. E5(){ echo -en "\e[9;2H Установить путь внутри архива \e[32m -ap<path> \e[0m";}
  239. E6(){ echo -en "\e[10;2H Синхронизируйте содержимое архива \e[32m -as \e[0m";}
  240. E7(){ echo -en "\e[11;2H Disable reading configuration and environment \e[32m -cfg- \e[0m";}
  241. E8(){ echo -en "\e[12;2H Convert file names to lower case \e[32m -cl \e[0m";}
  242. E9(){ echo -en "\e[13;2H Convert file names to upper case \e[32m -cu \e[0m";}
  243. E10(){ echo -en "\e[14;2H Disable showing comments \e[32m -c- \e[0m";}
  244. E11(){ echo -en "\e[15;2H Удалите файлы после архивации \e[32m -df \e[0m";}
  245. E12(){ echo -en "\e[16;2H Open shared files \e[32m -dh \e[0m";}
  246. E13(){ echo -en "\e[17;2H Do not sort files while adding to a solid archive \e[32m -ds \e[0m";}
  247. E14(){ echo -en "\e[18;2H Wipe files after archiving \e[32m -dw \e[0m";}
  248. E15(){ echo -en "\e[19;2H Do not add empty directories \e[32m -ed \e[0m";}
  249. E16(){ echo -en "\e[20;2H Do not add 'end of archive' block \e[32m -en \e[0m";}
  250. E17(){ echo -en "\e[21;2H Exclude paths from names \e[32m -ep \e[0m";}
  251. E18(){ echo -en "\e[22;2H Exclude base dir from names \e[32m -ep1 \e[0m";}
  252. E19(){ echo -en "\e[23;2H Expand paths to full \e[32m -ep2 \e[0m";}
  253. E20(){ echo -en "\e[24;2H Set file exclude [or include] attributes \e[32m -e[+]<attr> \e[0m";}
  254. E21(){ echo -en "\e[25;2H Freshen files \e[32m -f \e[0m";}
  255. E22(){ echo -en "\e[26;2H Encrypt as file data \e[32m -hp [password] \e[0m";}
  256. E23(){ echo -en "\e[27;2H Select hash type [BLAKE2,CRC32] for file checksum \e[32m -ht[b|c] \e[0m";}
  257. E24(){ echo -en "\e[28;2H Disable messages \e[32m -id[c,d,p,q] \e[0m";}
  258. E25(){ echo -en "\e[29;2H Send all messages to stderr \e[32m -ierr \e[0m";}
  259. E26(){ echo -en "\e[30;2H Log errors to file (registered versions only) \e[32m -ilog[name] \e[0m";}
  260. E27(){ echo -en "\e[31;2H Disable all messages \e[32m -inul \e[0m";}
  261. E28(){ echo -en "\e[32;2H Enable sound \e[32m -isnd \e[0m";}
  262. E29(){ echo -en "\e[33;2H Display the version number \e[32m -iver \e[0m";}
  263. E30(){ echo -en "\e[35;2H \e[90m Exit \e[0m";}
  264. INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
  265. while [[ "$l1" != " " ]]; do case $aa in
  266. 0)D;echo -en "\e[1;90m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  267. Показать справку по командам и переключателям.
  268. То же, что и при вводе недопустимого параметра командной строки:
  269. \e[32m rar -?\e[0m
  270. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  271. 1)D;echo -en "\e[1;90m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  272. Этот переключатель сообщает RAR, что в командной строке больше нет переключателей.
  273. Это может быть полезно, если имя архива или файла начинается с '-' характер.
  274. Без переключателя '--' такое имя будет рассматриваться как переключатель.
  275. \e[32m \e[0m
  276. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  277. 2)D;echo -en "\e[1;90m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  278. Добавить имя архива к пути назначения
  279. \e[32m \e[0m
  280. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  281. 3)D;echo -en "\e[1;90m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  282. Создайте имя архива, используя текущую дату и время.
  283. Добавляет текущую строку даты к имени архива при создании архива.
  284. Полезно для ежедневного резервного копирования.
  285. Подробности смотрите в rar.txt
  286. \e[32m \e[0m
  287. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  288. 4)D;echo -en "\e[1;90m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  289. Игнорировать атрибуты файла:
  290. \e[32m \e[0m
  291. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  292. 5)D;echo -en "\e[1;90m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  293. Установить путь внутри архива.
  294. Этот путь объединяется с именами файлов при добавлении файлов в архив
  295. и удаляется из имен файлов при извлечении:
  296. \e[32m \e[0m
  297. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  298. 6)D;echo -en "\e[1;90m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  299. Синхронизируйте содержимое архива.
  300. Если этот переключатель используется при архивировании, то те архивные файлы,
  301. которых нет в списке текущих добавленных файлов, будут удалены из архива.
  302. Этот ключ удобно использовать в сочетании с -u (обновление)
  303. для синхронизации содержимого архива и каталога архивации:
  304. \e[32m \e[0m
  305. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  306. 7)D;echo -en "\e[1;90m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  307. Отключить конфигурацию и среду чтения:\e[32m \e[0m
  308. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  309. 8)D;echo -en "\e[1;90m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  310. Преобразование имен файлов в нижний регистр\e[32m \e[0m
  311. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  312. 9)D;echo -en "\e[1;90m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  313. Преобразование имен файлов в верхний регистр:\e[32m \e[0m
  314. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  315. 10)D;echo -en "\e[1;90m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  316. Отключить показ комментариев:\e[32m \e[0m
  317. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  318. 11)D;echo -en "\e[1;90m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  319. Удалите файлы после архивации.
  320. Этот переключатель в сочетании с командой «a»
  321. выполняет то же действие, что и команда «m»:\e[32m \e[0m
  322. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  323. 12)D;echo -en "\e[1;90m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  324. Открывайте общие файлы:\e[32m \e[0m
  325. Позволяет обрабатывать файлы, открытые другими приложениями, для записи.
  326. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  327. 13)D;echo -en "\e[1;90m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  328. Не сортируйте файлы при добавлении в цельный архив:\e[32m \e[0m
  329. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  330. 14)D;echo -en "\e[1;90m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  331. Стереть файлы после архивации:\e[32m \e[0m
  332. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  333. 15)D;echo -en "\e[1;90m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  334. Не добавляйте пустые каталоги:\e[32m \e[0m
  335. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  336. 16)D;echo -en "\e[1;90m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  337. Не добавляйте блок «конец архива».
  338. Этот переключатель нельзя использовать с томами, потому что конец блока архива
  339. содержит информацию, важную для правильной обработки тома:\e[32m \e[0m
  340. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  341. 17)D;echo -en "\e[1;90m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  342. Исключить пути из имен:\e[32m \e[0m
  343. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  344. 18)D;echo -en "\e[1;90m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  345. Исключить базовый каталог из имен:\e[32m \e[0m
  346. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  347. 19)D;echo -en "\e[1;90m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  348. Расширьте пути до полного.
  349. Сохраняйте полные пути к файлам
  350. (кроме буквы диска и начального разделителя пути) при архивировании:\e[32m \e[0m
  351. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  352. 20)D;echo -en "\e[1;90m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  353. Установить файл для исключения [или включения] атрибутов:\e[32m \e[0m
  354. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  355. 21)D;echo -en "\e[1;90m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  356. Освежить файлы. Может использоваться при извлечении или создании архива:\e[32m \e[0m
  357. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  358. 22)D;echo -en "\e[1;90m";(E22);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  359. Шифруйте как данные файла, так и заголовки. Пароль чувствителен к регистру.
  360. Если вы опустите пароль в командной строке,
  361. вам будет предложено сообщение «Введите пароль»:
  362. \e[32m rar a -hp archive.rar file.png\e[0m
  363. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  364. 23)D;echo -en "\e[1;90m";(E23);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  365. Выберите тип хэша [BLAKE2,CRC32] для контрольной суммы файла:\e[32m \e[0m
  366. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  367. 24)D;echo -en "\e[1;90m";(E24);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  368. Отключить сообщения:\e[32m \e[0m
  369. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  370. 25)D;echo -en "\e[1;90m";(E25);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  371. Отправлять все сообщения на stderr:\e[32m \e[0m
  372. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  373. 26)D;echo -en "\e[1;90m";(E26);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  374. Записывать ошибки в файл (только для зарегистрированных версий):\e[32m \e[0m
  375. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  376. 27)D;echo -en "\e[1;90m";(E27);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  377. Отключить все сообщения:\e[32m \e[0m
  378. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  379. 28)D;echo -en "\e[1;90m";(E28);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  380. Включить звук:\e[32m \e[0m
  381. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  382. 29)D;echo -en "\e[1;90m";(E29);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  383. Показать номер версии:
  384. \e[32m rar -iver\e[0m
  385. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  386. 30)D;echo -en "\e[1;90m";(E30);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRar;fi;;
  387. esac;C;done
  388. }
  389. #===================================================================================
  390. #===================================================================================
  391. #===================================================================================
  392. fRarOptionsB()
  393. {
  394. trap 'echo -en "\ec"; stty sane; exit' SIGINT
  395. aa=0
  396. A(){ for b in $(seq 0 30);do E${b};done; }
  397. B()
  398. {
  399. local c
  400. IFS= read -s -n1 c 2>/dev/null >&2
  401. if [[ $c = $(echo -en "\e") ]]; then
  402. read -s -n1 c 2>/dev/null >&2
  403. if [[ $c = \[ ]]; then
  404. read -s -n1 c 2>/dev/null >&2
  405. case $c in
  406. A) echo d ;;
  407. B) echo e ;;
  408. C) echo f ;;
  409. D) echo g ;;
  410. esac
  411. fi
  412. elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
  413. echo enter
  414. fi
  415. }
  416. C()
  417. {
  418. if [[ $i == d ]];then ((aa--));fi
  419. if [[ $i == e ]];then ((aa++));fi
  420. if [[ $aa -lt 0 ]];then aa=30;fi
  421. if [[ $aa -gt 30 ]];then aa=0;fi;
  422. }
  423. D()
  424. {
  425. j1=$((aa+1)); k1=$((aa-1))
  426. if [[ $k1 -lt 0 ]];then k1=30;fi
  427. if [[ $j1 -gt 30 ]];then j1=0;fi
  428. if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
  429. if [[ $j1 -eq 0 ]] || [ $k1 -eq 30 ];then
  430. echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
  431. }
  432. TXa()
  433. {
  434. for (( a=2; a<=35; a++ ))
  435. do
  436. echo -e "\e[${a};1H\e[90m\xE2\x94\x82 \xE2\x94\x82\e[0m"
  437. done
  438. echo -en "\e[1;1H\e[90m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
  439. echo -en "\e[2;2HОпции ( K - S ) \e[36m OPTIONS\e[0m";
  440. echo -en "\e[3;1H\e[90m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  441. echo -en "\e[34;1H\e[90m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
  442. echo -en "\e[36;1H\e[90m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
  443. }
  444. E0(){ echo -en "\e[4;2H Lock archive \e[32m -k \e[0m";}
  445. E1(){ echo -en "\e[5;2H Keep broken extracted files \e[32m -kb \e[0m";}
  446. E2(){ echo -en "\e[6;2H Write names to log file \e[32m -log[f][=name] \e[0m";}
  447. E3(){ echo -en "\e[7;2H Set compression level (0-store...3-default...5-best) \e[32m -m<0..5> \e[0m";}
  448. E4(){ echo -en "\e[8;2H Specify a version of archiving format \e[32m -ma[4|5] \e[0m";}
  449. E5(){ echo -en "\e[9;2H Set advanced compression parameters \e[32m -mc<par> \e[0m";}
  450. E6(){ echo -en "\e[10;2H Set dictionary size in KB, MB or GB \e[32m -md<size>[k,m,g] \e[0m";}
  451. E7(){ echo -en "\e[11;2H Specify file types (extensions) to store \e[32m -ms[ext;ext] \e[0m";}
  452. E8(){ echo -en "\e[12;2H Set the number of threads \e[32m -mt<threads> \e[0m";}
  453. E9(){ echo -en "\e[13;2H Additionally filter included files \e[32m -n<file> \e[0m";}
  454. E10(){ echo -en "\e[14;2H Read additional filter masks from stdin \e[32m -n@ \e[0m";}
  455. E11(){ echo -en "\e[15;2H Read additional filter masks from list file \e[32m -n@<list> \e[0m";}
  456. E12(){ echo -en "\e[16;2H Overwrite existing files \e[32m -o+ \e[0m";}
  457. E13(){ echo -en "\e[17;2H Do not overwrite existing files \e[32m -o- \e[0m";}
  458. E14(){ echo -en "\e[18;2H Save hard links as the link instead of the file \e[32m -oh \e[0m";}
  459. E15(){ echo -en "\e[19;2H Save identical files as references \e[32m -oi[0-4][:min] \e[0m";}
  460. E16(){ echo -en "\e[20;2H Process symbolic links as the link [absolute paths] \e[32m -ol[a] \e[0m";}
  461. E17(){ echo -en "\e[21;2H Rename files automatically \e[32m -or \e[0m";}
  462. E18(){ echo -en "\e[22;2H Save or restore file owner and group \e[32m -ow \e[0m";}
  463. E19(){ echo -en "\e[23;2H Encrypt files with the given string as password while archiving\e[32m -p[password] \e[0m";}
  464. E20(){ echo -en "\e[24;2H Do not query password \e[32m -p- \e[0m";}
  465. E21(){ echo -en "\e[25;2H Add quick open information [none|force] \e[32m -qo[-|+] \e[0m";}
  466. E22(){ echo -en "\e[26;2H Recurse subdirectories \e[32m -r \e[0m";}
  467. E23(){ echo -en "\e[27;2H Disable recursion \e[32m -r- \e[0m";}
  468. E24(){ echo -en "\e[28;2H Similar to -r, but when used with the commands 'a', 'u', 'f', 'm' \e[32m -r0 \e[0m";}
  469. E25(){ echo -en "\e[29;2H Add data recovery record \e[32m -rr[N] \e[0m";}
  470. E26(){ echo -en "\e[30;2H Create recovery volumes \e[32m -rv[N] \e[0m";}
  471. E27(){ echo -en "\e[31;2H Create solid groups using file count \e[32m -s<N> \e[0m";}
  472. E28(){ echo -en "\e[32;2H Create solid groups using extension \e[32m -se \e[0m";}
  473. E29(){ echo -en "\e[33;2H Create independent solid volumes \e[32m -sv \e[0m";}
  474. E30(){ echo -en "\e[35;2H \e[90m Exit \e[0m";}
  475. INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
  476. while [[ "$l1" != " " ]]; do case $aa in
  477. 0)D;echo -en "\e[1;90m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  478. Заблокировать архив:\e[32m \e[0m
  479. Любая команда, намеревающаяся изменить архив, будет проигнорирована.
  480. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  481. 1)D;echo -en "\e[1;90m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  482. Сохраняйте поврежденные извлеченные файлы:\e[32m \e[0m
  483. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  484. 2)D;echo -en "\e[1;90m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  485. Записать имена в файл журнала:\e[32m \e[0m
  486. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  487. 3)D;echo -en "\e[1;90m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  488. Установить уровень сжатия (0-сохранить...3-по умолчанию...5-наилучший).
  489. По умолчанию rar использует метод -m3 (обычное сжатие):
  490. \e[32m rar a -m5 archive.rar file\e[0m
  491. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  492. 4)D;echo -en "\e[1;90m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  493. Укажите версию формата архивации:\e[32m \e[0m
  494. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  495. 5)D;echo -en "\e[1;90m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  496. Установите расширенные параметры сжатия:\e[32m \e[0m
  497. Подробности смотрите в rar.txt
  498. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  499. 6)D;echo -en "\e[1;90m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  500. Установите размер словаря в КБ, МБ или ГБ:\e[32m \e[0m
  501. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  502. 7)D;echo -en "\e[1;90m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  503. Укажите типы файлов (расширения) для хранения:\e[32m \e[0m
  504. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  505. 8)D;echo -en "\e[1;90m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  506. Установите количество потоков.
  507. Если этот переключатель не указан, RAR попытается определить количество доступных
  508. процессоров и автоматически выберет оптимальное количество потоков:\e[32m \e[0m
  509. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  510. 9)D;echo -en "\e[1;90m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  511. Дополнительно фильтровать включенные файлы:\e[32m \e[0m
  512. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  513. 10)D;echo -en "\e[1;90m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  514. Чтение дополнительных масок фильтров из стандартного ввода:\e[32m \e[0m
  515. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  516. 11)D;echo -en "\e[1;90m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  517. Чтение дополнительных масок фильтров из файла списка:\e[32m \e[0m
  518. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  519. 12)D;echo -en "\e[1;90m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  520. Перезаписать существующие файлы:\e[32m \e[0m
  521. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  522. 13)D;echo -en "\e[1;90m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  523. Не перезаписывать существующие файлы:\e[32m \e[0m
  524. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  525. 14)D;echo -en "\e[1;90m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  526. Сохраняйте жесткие ссылки как ссылку вместо файла:\e[32m \e[0m
  527. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  528. 15)D;echo -en "\e[1;90m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  529. Сохраняйте идентичные файлы в качестве ссылок:\e[32m \e[0m
  530. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  531. 16)D;echo -en "\e[1;90m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  532. Обрабатывать символические ссылки как ссылки [абсолютные пути]:\e[32m \e[0m
  533. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  534. 17)D;echo -en "\e[1;90m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  535. Автоматически переименовывать файлы:\e[32m \e[0m
  536. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  537. 18)D;echo -en "\e[1;90m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  538. Сохранить или восстановить владельца файла и группу:\e[32m \e[0m
  539. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  540. 19)D;echo -en "\e[1;90m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  541. Шифровать файлы с заданной строкой в качестве пароля при архивировании.
  542. Пароль чувствителен к регистру. Если вы опустите пароль в командной строке,
  543. вам будет предложено сообщение «Введите пароль»:\e[32m \e[0m
  544. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  545. 20)D;echo -en "\e[1;90m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  546. Не запрашивать пароль:\e[32m \e[0m
  547. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  548. 21)D;echo -en "\e[1;90m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  549. Добавить информацию для быстрого открытия [none|force]:\e[32m \e[0m
  550. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  551. 22)D;echo -en "\e[1;90m";(E22);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  552. Создать архив директории dir01 рекурсивно:
  553. \e[32m rar -r a archive.rar dir\e[0m
  554. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  555. 23)D;echo -en "\e[1;90m";(E23);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  556. Отключить рекурсию:\e[32m \e[0m
  557. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  558. 24)D;echo -en "\e[1;90m";(E24);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  559. Аналогичен -r, но при использовании с командами\e[32m a\e[0m,\e[32m u\e[0m,\e[32m f\e[0m,\e[32m m\e[0m подкаталоги будут
  560. рекурсивно выполняться только для имен с подстановочными знаками:
  561. \e[32m \e[0m
  562. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  563. 25)D;echo -en "\e[1;90m";(E25);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  564. Добавить запись восстановления данных:\e[32m \e[0m
  565. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  566. 26)D;echo -en "\e[1;90m";(E26);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  567. Создайте тома восстановления:
  568. \e[32m \e[0m -s Создать сплошной архив
  569. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  570. 27)D;echo -en "\e[1;90m";(E27);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  571. Создавайте сплошные группы, используя количество файлов.
  572. Аналогичен -s, но сбрасывает твердую статистику после сжатия <N> файлов:
  573. \e[32m \e[0m
  574. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  575. 28)D;echo -en "\e[1;90m";(E28);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  576. Создавайте сплошные группы, используя расширение.
  577. Аналогичен -s, но сбрасывает твердую статистику, если расширение файла изменено:
  578. \e[32m \e[0m
  579. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  580. 29)D;echo -en "\e[1;90m";(E29);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  581. Создавайте независимые твердые тома.
  582. Аналогичен -s, но сбрасывает твердую статистику
  583. как можно быстрее при запуске нового тома:
  584. \e[32m \e[0m
  585. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  586. 30)D;echo -en "\e[1;90m";(E30);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRar;fi;;
  587. esac;C;done
  588. }
  589. #===================================================================================
  590. #===================================================================================
  591. #===================================================================================
  592. #===================================================================================
  593. fRarOptionsC()
  594. {
  595. trap 'echo -en "\ec"; stty sane; exit' SIGINT
  596. aa=0
  597. A(){ for b in $(seq 0 25);do E${b};done; }
  598. B()
  599. {
  600. local c
  601. IFS= read -s -n1 c 2>/dev/null >&2
  602. if [[ $c = $(echo -en "\e") ]]; then
  603. read -s -n1 c 2>/dev/null >&2
  604. if [[ $c = \[ ]]; then
  605. read -s -n1 c 2>/dev/null >&2
  606. case $c in
  607. A) echo d ;;
  608. B) echo e ;;
  609. C) echo f ;;
  610. D) echo g ;;
  611. esac
  612. fi
  613. elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
  614. echo enter
  615. fi
  616. }
  617. C()
  618. {
  619. if [[ $i == d ]];then ((aa--));fi
  620. if [[ $i == e ]];then ((aa++));fi
  621. if [[ $aa -lt 0 ]];then aa=25;fi
  622. if [[ $aa -gt 25 ]];then aa=0;fi;
  623. }
  624. D()
  625. {
  626. j1=$((aa+1)); k1=$((aa-1))
  627. if [[ $k1 -lt 0 ]];then k1=25;fi
  628. if [[ $j1 -gt 25 ]];then j1=0;fi
  629. if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
  630. if [[ $j1 -eq 0 ]] || [ $k1 -eq 25 ];then
  631. echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
  632. }
  633. TXa()
  634. {
  635. for (( a=2; a<=30; a++ ))
  636. do
  637. echo -e "\e[${a};1H\e[90m\xE2\x94\x82 \xE2\x94\x82\e[0m"
  638. done
  639. echo -en "\e[1;1H\e[90m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
  640. echo -en "\e[2;2H Опции ( S - Z ) \e[36m OPTIONS\e[0m";
  641. echo -en "\e[3;1H\e[90m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
  642. echo -en "\e[29;1H\e[90m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
  643. echo -en "\e[31;1H\e[90m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
  644. }
  645. E0(){ echo -en "\e[4;2H Create dependent solid volumes \e[32m -sv- \e[0m";}
  646. E1(){ echo -en "\e[5;2H Disable solid archiving \e[32m -s- \e[0m";}
  647. E2(){ echo -en "\e[6;2H Specify the character set \e[32m -sc<chr>[obj] \e[0m";}
  648. E3(){ echo -en "\e[7;2H Create SFX archives \e[32m -sfx[name] \e[0m";}
  649. E4(){ echo -en "\e[8;2H Read data from standard input (stdin) \e[32m -si[name] \e[0m";}
  650. E5(){ echo -en "\e[9;2H Process files with size less than specified \e[32m -sl<size> \e[0m";}
  651. E6(){ echo -en "\e[10;2H Process files with size more than specified \e[32m -sm<size> \e[0m";}
  652. E7(){ echo -en "\e[11;2H Test files after archiving \e[32m -t \e[0m";}
  653. E8(){ echo -en "\e[12;2H Process files modified after <date> in YYYYMMDDHHMMSS format \e[32m -ta<date> \e[0m";}
  654. E9(){ echo -en "\e[13;2H Process files modified before <date> in YYYYMMDDHHMMSS format \e[32m -tb<date> \e[0m";}
  655. E10(){ echo -en "\e[14;2H Keep original archive time \e[32m -tk \e[0m";}
  656. E11(){ echo -en "\e[15;2H Set archive time to latest file \e[32m -tl \e[0m";}
  657. E12(){ echo -en "\e[16;2H Process files newer than <time> \e[32m -tn<time> \e[0m";}
  658. E13(){ echo -en "\e[17;2H Process files older than <time> \e[32m -to<time> \e[0m";}
  659. E14(){ echo -en "\e[18;2H Save or restore file time (modification, creation, access) \e[32m -ts[m|c|a] \e[0m";}
  660. E15(){ echo -en "\e[19;2H Update files \e[32m -u \e[0m";}
  661. E16(){ echo -en "\e[20;2H Create volumes with size=<size>*1000 [*1024, *1] bytes \e[32m -v<size>[k|b] \e[0m";}
  662. E17(){ echo -en "\e[21;2H File version control \e[32m -ver[n] \e[0m";}
  663. E18(){ echo -en "\e[22;2H Use the old style volume naming scheme \e[32m -vn \e[0m";}
  664. E19(){ echo -en "\e[23;2H Pause before each volume \e[32m -vp \e[0m";}
  665. E20(){ echo -en "\e[24;2H Assign work directory \e[32m -w<path> \e[0m";}
  666. E21(){ echo -en "\e[25;2H Exclude specified file \e[32m -x<file> \e[0m";}
  667. E22(){ echo -en "\e[26;2H Exclude files in specified list file \e[32m -x@<list> \e[0m";}
  668. E23(){ echo -en "\e[27;2H Read file names to exclude from stdin \e[32m -x@ \e[0m";}
  669. E24(){ echo -en "\e[28;2H Assume Yes on all queries \e[32m -y \e[0m";}
  670. E25(){ echo -en "\e[30;2H \e[90m Exit \e[0m";}
  671. INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
  672. while [[ "$l1" != " " ]]; do case $aa in
  673. 0)D;echo -en "\e[1;90m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  674. Создание зависимых твердых объемов.
  675. Аналогичен -s, но сброс твердой статистики отключен:\e[32m \e[0m
  676. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  677. 1)D;echo -en "\e[1;90m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  678. Отключить сплошное архивирование:\e[32m \e[0m
  679. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  680. 2)D;echo -en "\e[1;90m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  681. Укажите набор символов:\e[32m \e[0m
  682. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  683. 3)D;echo -en "\e[1;90m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  684. Создавайте SFX-архивы.
  685. Архив объединяется с именем SFX-модуля в домашней директории пользователя.
  686. Модуль по умолчанию взят из \e[32m/usr/lib/default.sfx\e[0m
  687. Имейте в виду, что вы должны сопровождать результат файлом
  688. \e[32m /usr/share/doc/rar/acknow.txt\e[0m при распространении,
  689. который содержит лицензии третьих сторон, применимые к default.sfx:
  690. \e[32m \e[0m
  691. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  692. 4)D;echo -en "\e[1;90m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  693. Чтение данных из стандартного ввода (stdin):\e[32m \e[0m
  694. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  695. 5)D;echo -en "\e[1;90m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  696. Обрабатывать файлы с размером меньше указанного:\e[32m \e[0m
  697. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  698. 6)D;echo -en "\e[1;90m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  699. Обрабатывать файлы с размером больше указанного:\e[32m \e[0m
  700. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  701. 7)D;echo -en "\e[1;90m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  702. Тестовые файлы после архивации:\e[32m \e[0m
  703. Этот переключатель особенно полезен в сочетании с командой перемещения,
  704. поэтому файлы будут удалены только в том случае, если архив успешно протестирован.
  705. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  706. 8)D;echo -en "\e[1;90m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  707. Обрабатывать файлы, измененные после <date> в YYYYMMDDHHMMSS:\e[32m \e[0m
  708. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  709. 9)D;echo -en "\e[1;90m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  710. Обрабатывать файлы, измененные до <даты>, в формате ГГГГММДДЧЧММСС:\e[32m \e[0m
  711. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  712. 10)D;echo -en "\e[1;90m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  713. Сохраняйте исходное время архива.
  714. Запрещает rar изменять дату архива при изменении архива:\e[32m \e[0m
  715. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  716. 11)D;echo -en "\e[1;90m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  717. Установите время архивации на последний файл.
  718. Заставляет rar устанавливать дату измененного архива на дату самого нового файла
  719. в архиве:\e[32m \e[0m
  720. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  721. 12)D;echo -en "\e[1;90m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  722. Обрабатывать файлы новее, чем <время>:\e[32m \e[0m
  723. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  724. 13)D;echo -en "\e[1;90m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  725. Обрабатывать файлы старше <время>:\e[32m \e[0m
  726. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  727. 14)D;echo -en "\e[1;90m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  728. Сохранить или восстановить время файла (модификация, создание, доступ).
  729. (modification, creation, access).
  730. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  731. 15)D;echo -en "\e[1;90m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  732. Обновить файлы. Добавить файлы в архив можно с помощью ключа -u:\e[32m\e[0m
  733. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  734. 16)D;echo -en "\e[1;90m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  735. Создайте тома с size=<size>*1000 [*1024, *1] байт
  736. Create volumes with size=<size>*1000 [*1024, *1] bytes
  737. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  738. 17)D;echo -en "\e[1;90m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  739. Контроль версий файлов:\e[32m \e[0m
  740. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  741. 18)D;echo -en "\e[1;90m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  742. Используйте старую схему именования томов:\e[32m \e[0m
  743. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  744. 19)D;echo -en "\e[1;90m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  745. Пауза перед каждым томом:\e[32m \e[0m
  746. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  747. 20)D;echo -en "\e[1;90m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  748. Назначить рабочий каталог:\e[32m \e[0m
  749. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  750. 21)D;echo -en "\e[1;90m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  751. Исключить указанный файл.
  752. Можно использовать подстановочные знаки,
  753. и вы можете указать переключатель «-x» несколько раз:
  754. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  755. 22)D;echo -en "\e[1;90m";(E22);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  756. Исключить файлы из указанного списка файлов:\e[32m \e[0m
  757. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  758. 23)D;echo -en "\e[1;90m";(E23);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  759. Чтение имен файлов для исключения из стандартного ввода:\e[32m \e[0m
  760. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  761. 24)D;echo -en "\e[1;90m";(E24);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  762. Предположим, что Да во всех запросах:\e[32m \e[0m
  763. ";echo -en "\e[1;90m ENTER = main menu ";read;INI;fi;;
  764. 25)D;echo -en "\e[1;90m";(E25);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRar;fi;;
  765. esac;C;done
  766. }
  767. #===================================================================================
  768. #===================================================================================
  769. #===================================================================================
  770. #===================================================================================
  771. fRar()
  772. {
  773. trap 'echo -en "\ec"; stty sane; exit' SIGINT
  774. aa=0
  775. A(){ for b in $(seq 0 12);do E${b};done; }
  776. B()
  777. {
  778. local c
  779. IFS= read -s -n1 c 2>/dev/null >&2
  780. if [[ $c = $(echo -en "\e") ]]; then
  781. read -s -n1 c 2>/dev/null >&2
  782. if [[ $c = \[ ]]; then
  783. read -s -n1 c 2>/dev/null >&2
  784. case $c in
  785. A) echo d ;;
  786. B) echo e ;;
  787. C) echo f ;;
  788. D) echo g ;;
  789. esac
  790. fi
  791. elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
  792. echo enter
  793. fi
  794. }
  795. C()
  796. {
  797. if [[ $i == d ]];then ((aa--));fi
  798. if [[ $i == e ]];then ((aa++));fi
  799. if [[ $aa -lt 0 ]];then aa=12;fi
  800. if [[ $aa -gt 12 ]];then aa=0;fi;
  801. }
  802. D()
  803. {
  804. j1=$((aa+1)); k1=$((aa-1))
  805. if [[ $k1 -lt 0 ]];then k1=12;fi
  806. if [[ $j1 -gt 12 ]];then j1=0;fi
  807. if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
  808. if [[ $j1 -eq 0 ]] || [ $k1 -eq 12 ];then
  809. echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
  810. }
  811. TXa()
  812. {
  813. for (( a=2; a<=31; a++ ))
  814. do
  815. echo -e "\e[${a};1H\e[47;30m│\e[0m \e[47;30m│\e[0m"
  816. done
  817. echo -en "\e[1;1H\033[0m\e[47;30m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
  818. echo -en "\e[3;3H\e[1m *** rar ***\e[0m";
  819. echo -en "\e[4;3H\e[2m archive files with compression\e[0m";
  820. echo -en "\e[5;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  821. echo -en "\e[11;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  822. echo -en "\e[12;3H Команды \e[36m COMMANDS\e[0m";
  823. echo -en "\e[13;3H \e[2m После имени программы следует команда, а затем необязательные переключатели\e[0m";
  824. echo -en "\e[14;3H \e[2m с тире перед ними. Краткое описание команд приведено ниже.\e[0m";
  825. echo -en "\e[15;3H \e[2m Для полного описания запустите rar-?\e[0m";
  826. echo -en "\e[17;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  827. echo -en "\e[18;3H Опции \e[36m OPTIONS\e[0m";
  828. echo -en "\e[19;3H \e[2m Каждый переключатель должен быть разделен пробелом. Их нельзя совмещать. \e[0m";
  829. echo -en "\e[23;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  830. echo -en "\e[25;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  831. echo -en "\e[27;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  832. echo -en "\e[29;1H\e[47;30m├\e[0m─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  833. echo -en "\e[32;1H\e[0m\033[47;30m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
  834. }
  835. E0(){ echo -en "\e[6;3H Установка \e[32m INSTALL \e[0m";}
  836. E1(){ echo -en "\e[7;3H Kраткий обзор \e[32m SYNOPSIS \e[0m";}
  837. E2(){ echo -en "\e[8;3H Описание \e[32m DESCRIPTION \e[0m";}
  838. E3(){ echo -en "\e[9;3H Смотрите также \e[32m SEE ALSO \e[0m";}
  839. E4(){ echo -en "\e[10;3H Авторы \e[32m AUTHORS \e[0m";}
  840. E5(){ echo -en "\e[16;3H Команды \e[32m COMMANDS \e[0m";}
  841. E6(){ echo -en "\e[20;3H Опции ( A - I ) \e[32m OPTIONS \e[0m";}
  842. E7(){ echo -en "\e[21;3H Опции ( K - S ) \e[32m OPTIONS \e[0m";}
  843. E8(){ echo -en "\e[22;3H Опции ( S - Z ) \e[32m OPTIONS \e[0m";}
  844. E9(){ echo -en "\e[24;3H Для распаковки может использоваться утилита unrar \e[32m unrar \e[0m";}
  845. E10(){ echo -en "\e[26;3H \e[32m RARJPEG \e[0m";}
  846. E11(){ echo -en "\e[28;3H \e[36m Git \e[0m";}
  847. E12(){ echo -en "\e[30;3H Exit ";}
  848. INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
  849. while [[ "$l1" != " " ]]; do case $aa in
  850. 0)D;echo -en "\e[47;30m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  851. Установить архиватор можно средствами стандартного пакетного менеджера вашей
  852. операционной системы:
  853. \e[32m sudo apt install rar\e[0m или\e[32m sudo apt install unar\e[0m
  854. Однако, для установки последней актуальной версии воспользуемся другим способом.
  855. Скачиваем с официального сайта архив с бинарными файлами и извлекаем из него файлы
  856. rar и unrar, далее копируем их, например, в /usr/bin/, либо производим установку:
  857. \e[36m wget https://www.rarlab.com/rar/rarlinux-x64-612.tar.gz\e[0m\e[32m
  858. tar xzf rarlinux-x64-612.tar.gz
  859. cd rar
  860. make install\e[0m
  861. Команда make install
  862. выполнит следующие действия согласно содержимому файла makefile:\e[32m
  863. mkdir -p /usr/local/bin
  864. mkdir -p /usr/local/lib
  865. cp rar unrar /usr/local/bin
  866. cp rarfiles.lst /etc
  867. cp default.sfx /usr/local/lib
  868. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  869. 1)D;echo -en "\e[47;30m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "\e[32m
  870. rar <command> [-<switch 1> -<switch N>]
  871. archive [files...] [@list‐files...] [path_to_extract]
  872. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  873. 2)D;echo -en "\e[47;30m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  874. Эта страница руководства кратко описывает архиватор rar.
  875. Эта справочная страница была написана для дистрибутива Debian GNU/Linux,
  876. поскольку исходная программа не имеет справочной страницы.
  877. Описанные здесь команды и параметры относятся к версии rar 5.50.
  878. rar — это программа для создания и управления архивами .rar
  879. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  880. 3)D;echo -en "\e[47;30m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  881. Программа полностью задокументирована в файле rar.txt, который вы найдете в
  882. \e[32m /usr/share/doc/rar\e[0m
  883. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  884. 4)D;echo -en "\e[47;30m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  885. Эта страница руководства была написана Петром Чехом\e[36m cech@debian.org\e[0m
  886. согласно \"rar -?\" для системы Debian GNU/Linux (но может использоваться другими).
  887. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  888. 5)D;echo -en "\e[47;30m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRarCommands;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  889. 6)D;echo -en "\e[47;30m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRarOptionsA;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  890. 7)D;echo -en "\e[47;30m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRarOptionsB;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  891. 8)D;echo -en "\e[47;30m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fRarOptionsC;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  892. 9)D;echo -en "\e[47;30m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  893. Для распаковки RAR-архивов используется утилита unrar. Распаковать архив:
  894. \e[32m unrar x archive.rar\e[0m
  895. Распаковать архив в определенную директорию:
  896. \e[32m unrar x archive.rar ./dir\e[0m
  897. Проверить, что архив целый:
  898. \e[32m unrar t archive.rar\e[0m
  899. Просмотреть список файлов в архиве:
  900. \e[32m unrar l archive.rar\e[0m
  901. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  902. 10)D;echo -en "\e[47;30m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  903. RARJPEG — особый вид файлового контейнера: иллюстрация JPEG, к которой встык
  904. (в тот же файл) дописан архив RAR. В зависимости от расширения такой файл может
  905. восприниматься различными программами и как иллюстрация JPEG, и как архив RAR.
  906. Это обстоятельство позволяет, например, использовать имиджборды (принимающие
  907. только иллюстрации) в качестве анонимных файловых хостингов для архивов.
  908. Тот же метод может использоваться и для некоторых других форматов: к
  909. иллюстрациям JPEG, GIF, PNG или ко звукозаписям WAV могут быть дописаны архивы
  910. RAR или ZIP или звукозаписи MP3. Впрочем, для открытия RAR-архивов и особенно
  911. ZIP-архивов из такого файла сгодится далеко не всякий архиватор — WinRAR,
  912. впрочем, справляется.
  913. Технологически сей метод основан на том, что программа, читающая первый файл,
  914. игнорирует все данные, следующие за логическим концом его (и оттого игнорирует
  915. весь второй файл), а программа, читающая второй файл, настойчиво разыскивает
  916. его заголовок и игнорирует всё, что заголовку предшествует (и тем самым
  917. способна сперва пропустить весь первый файл, ничуть им не смущаясь, после чего
  918. начать чтение сразу со второго).
  919. В *nix-подобных системах сия операция проделывается следующим образом:
  920. \e[32m cat file1.jpg file2.rar > result.jpg\e[0m
  921. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  922. 11)D;echo -en "\e[47;30m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  923. Di 12 Jul 2021 16:42:14 CEST
  924. mRar Описание утилиты rar. Archive files with compression.
  925. Asciinema: \e[36m https://asciinema.org/a/653423\e[0m
  926. Codeberg: \e[36m https://codeberg.org/Grannik/mRar\e[0m
  927. Github: \e[36m https://github.com/Grannik/mRar\e[0m
  928. Gitlab: \e[36m https://gitlab.com/grannik/mrar\e[0m
  929. Sourceforge:\e[36m \e[0m
  930. Notabug: \e[36m \e[0m
  931. Bitbucket: \e[36m \e[0m
  932. Framagit: \e[36m \e[0m
  933. GFogs: \e[36m \e[0m
  934. Gitea \e[36m \e[0m
  935. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  936. 12)D;echo -en "\e[47;30m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;exit 0;fi;;
  937. esac;C;done
  938. }
  939. fRar