Если вы знакомы с Scientific Linux, ближе всего будет CentOS. Fedora находится на несколько шагов впереди в версиях программного обеспечения, поэтому может возникнуть проблема с настройкой.
Вы можете попробовать dnf list --installed
получить список установленных пакетов. Вам нужно будет отредактировать точные версии и сохранить архитектуры, чтобы иметь возможность использовать список для установки эквивалентных пакетов позже.
Мне приходилось переустанавливать поврежденные установки Fedora. Я сохранил конфигурацию (по существу /etc
), установил поверх системы (, стараясь не форматировать /home
), установил сохраненный список пакетов, восстановил учетные записи и такую форму сохранил /etc
. По крайней мере, я так это помню, это было довольно давно. И это не связано с различными дистрибутивами.
В Bash есть арифметическое расширение $((... ))
, которое может работать с шестнадцатеричными значениями напрямую, поэтому
decrement_file () {
number=$(( $(cat $1) - 1 ))
echo $number > $1
}
даст вам функцию, которая может работать с вашим файлом:
decrement_file test.txt
Конечно, вы также можете вручную выполнить эти два шага в командной строке.но было похоже на то, что имело смысл добавить функцию. Добавьте это определение функции в свой ~/.bashrc
, и вы сможете вызывать ее в любое время.
Небольшая проблема. :Ваши числа слишком велики, чтобы арифметика bash могла с ними работать напрямую. Итак, вам нужно полагаться на внешние инструменты (или написать библиотеку bigint в сценарии оболочки... эээ, нет ). Ответ Philippos зависит от bc
, я скажу, что в любом случае вероятность того, что он будет установлен на вашем компьютере, с меньшей вероятностью, чем у python, поэтому я, вероятно, вместо этого просто напишу скрипт python:
#!/usr/bin/env python3
import sys
value = -1
with open(sys.argv[1], "r", encoding="ascii") as file:
value += int(file.read())
with open(sys.argv[1], "w", encoding="ascii") as file:
file.write(str(value))
и сохраните его как «файл декремента _» где-нибудь в вашем пути, chmod a+x decrement_file
, чтобы сделать его исполняемым, а затем используйте его decrement_file test.txt
.
Действительно минимальным, единственным -решением всего этого было бы
VAL=$(python3 -c "print( int($(cat test.txt)) - 1)"); echo $VAL > test.txt
Одной командой в bash со строкой здесь и калькулятором (с постфиксной записью):
dc -e '16iAo?1-p' <<<$(<file) >file
16i
-ввод системы счисленияAo
-вывод системы счисления?
-читает строку1-
-вычесть единицуp
-отпечатки
Внимание :В вашем примере не указано. dc
Калькулятор принимает шестнадцатеричные цифры [ABCDEF] в верхнем регистре.
ГНУawk
gawk -M '{print strtonum($0)-1}' file
-M
(или--bignum
)для арифметики произвольной точности. strtonum($0)
принимает числовое значение записи, обрабатывая строку как шестнадцатеричное число, поскольку она начинается с 0x
. Используйте -i inplace
для редактирования входного файла в -.