Страница 1 из 1
Занести введенную цифру в память и далее считать это значение
Добавлено: 30 дек 2023, 18:18
madesta
В правом меню xfce имеется команда, открывающая файл fb2 программой fbless на указанном % содержания файла.
xfce4-terminal -H -x sh -c "fbless %f -g $(/home/minter/Tools/scripts/modules/fbless-proc.sh && cat /tmp/proc.txt); exec bash"
Ввод % числом указывается через fbless-proc.sh и записывается в файл /tmp/proc.txt , из которого потом и считывается как значение "цифра" (fbless %f -g цифра). Содержание fbless-proc.sh:
zenity --width=100 --title "Где открыть" --entry --text "Ввести значение цифрой:" > /tmp/proc.txt
Можно ли результат ввода fbless-proc.sh записать в оперативную память и далее считать его как значение, не записывая его в промежуточный файл на диске /tmp/proc.txt ? Существует ли менее громоздкое решение?
Занести введенную цифру в память и далее считать это значение
Добавлено: 30 дек 2023, 19:06
slant
В рамках bash - нет (во всяком случае - достаточно надежного). Но можно использовать файл на tmpfs - т.е. в на виртуальном диске, практически в памяти. В современных системах как минимум /run обычно является уже примонтированным используя tmpfs, а часто и /tmp - частично или полностью.
Для использования /run без прав root - нужно писать в каталог создаваемый для активного пользователя. Это будет /run/user/<UID>
Где UID - номер пользователя в системе, у первого созданного он обычно 1000 и т.д. Там в этом каталоге и так всегда есть времянки от всякого разного софта (пульса/pipewire как минимум), он гарантированно есть когда пользователь зашел в систему.
Занести введенную цифру в память и далее считать это значение
Добавлено: 30 дек 2023, 22:22
vir0id
Что-то я не особо понял что именно подразумивается под
madesta писал(а): ↑30 дек 2023, 18:18
записать в оперативную память и далее считать его как значение
Обычное хранение в переменной этого не подразумивает разве?
madesta писал(а): ↑30 дек 2023, 18:18
из которого потом и считывается как значение "цифра"
В bash нету типов переменных, если ты хотел int на выходе получить.
madesta писал(а): ↑30 дек 2023, 18:18
Существует ли менее громоздкое решение?
Сделай еще один файл, в котором будет проверяться переданное значение из /tmp/proc....
Занести введенную цифру в память и далее считать это значение
Добавлено: 30 дек 2023, 23:30
slant
vir0id писал(а): ↑30 дек 2023, 22:22
Обычное хранение в переменной этого не подразумивает разве?
Я так понял, ему надо чтобы доступ к значению был из двух разных скриптов (один пишет, другой читает). В этом случае переменная bash разумеется не подходит - она же за пределами скрипта очищается.
Занести введенную цифру в память и далее считать это значение
Добавлено: 31 дек 2023, 11:40
madesta
vir0id писал(а): ↑30 дек 2023, 22:22
Сделай еще один файл, в котором будет проверяться переданное значение из /tmp/proc....
Уточняю вопрос, если оказалось, что сформулировал его неоднозначно. Хотелось бы избежать записи вводимого через zenity значения в файл на диске, помещая его в оперативную память и потом считывая его. Хотя сильно и не принципиально, думал, что имеется возможность, поскольку сам в программировании ни бум-бум и в состоянии использовать только какие-то заготовки или заимствованные куски команд на уровне "если то", "и", "или". Вопрос количества скриптов не принципиален, если имеется возможность реализовать это одним, то очень хорошо.
Общий смысл: запустить через ПКМ Thunar в терминале команду
fbless %f -g n
Вот
n и является значением "цифра", которая вводится. Причём значение "цифра" каждый раз будет разным (по мере чтения книги, то есть при новом вызове команды, или открывая другие файлы fb2). Не знал как обеспечить её ввод, поэтому и сделал топорно через zenity с записью в файл на диске другим скриптом.
Занести введенную цифру в память и далее считать это значение
Добавлено: 31 дек 2023, 12:19
rogoznik
madesta, вот как сделал так и оставь
Занести введенную цифру в память и далее считать это значение
Добавлено: 31 дек 2023, 14:04
madesta
Насколько я понял из
ответа slant, если результат ввода записать так
zenity --width=100 --title "Где открыть" --entry --text "Ввести значение цифрой:" > /run/user/1000/proc
, то это равносильно занесению в память без записи на диск. По крайней мере, функциональность вызова через ПКМ при использовании
cat /run/user/1000/proc
не изменилась. fstab не трогал, он пока по дефолту. При
df -T
получил результат:
tmpfs tmpfs 365836 1172 364664 1% /run
/dev/sda2 ext4 479564280 205883968 249246352 46% /
tmpfs tmpfs 1829176 24228 1804948 2% /dev/shm
tmpfs tmpfs 5120 4 5116 1% /run/lock
/dev/sda1 vfat 33232 6186 27047 19% /boot/efi
tmpfs tmpfs 365832 80 365752 1% /run/user/1000
Будет верным предположение, что мой файл
/run/user/1000/proc не записан физически на диск, а "болтается в уме"? Или я ошибаюсь?
Занести введенную цифру в память и далее считать это значение
Добавлено: 31 дек 2023, 15:02
rogoznik
madesta писал(а): ↑31 дек 2023, 14:04
то это равносильно занесению в память без записи на диск
Не верно понял. Ты записал таким образом в файл, на файловую систему, расположенную в оперативной памяти.
Да такой файл на диск не пишется и стирается при перезагрузке
Занести введенную цифру в память и далее считать это значение
Добавлено: 31 дек 2023, 16:13
madesta
rogoznik писал(а): ↑31 дек 2023, 15:02
Да такой файл на диск не пишется
Это то, что было желательно. Всем откликнувшимся спасибо за участие. С наступающим!