Занести введенную цифру в память и далее считать это значение

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
madesta
Сообщения: 2019
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#1

30 дек 2023, 18:18

В правом меню 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 ? Существует ли менее громоздкое решение?

Решение slant » 30 дек 2023, 19:06
В рамках bash - нет (во всяком случае - достаточно надежного). Но можно использовать файл на tmpfs - т.е. в на виртуальном диске, практически в памяти. В современных системах как минимум /run обычно является уже примонтированным используя tmpfs, а часто и /tmp - частично или полностью.
Для использования /run без прав root - нужно писать в каталог создаваемый для активного пользователя. Это будет /run/user/<UID>
Где UID - номер пользователя в системе, у первого созданного он обычно 1000 и т.д. Там в этом каталоге и так всегда есть времянки от всякого разного софта (пульса/pipewire как минимум), он гарантированно есть когда пользователь зашел в систему.

Перейти к ответу ➙

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#2

30 дек 2023, 19:06

В рамках bash - нет (во всяком случае - достаточно надежного). Но можно использовать файл на tmpfs - т.е. в на виртуальном диске, практически в памяти. В современных системах как минимум /run обычно является уже примонтированным используя tmpfs, а часто и /tmp - частично или полностью.
Для использования /run без прав root - нужно писать в каталог создаваемый для активного пользователя. Это будет /run/user/<UID>
Где UID - номер пользователя в системе, у первого созданного он обычно 1000 и т.д. Там в этом каталоге и так всегда есть времянки от всякого разного софта (пульса/pipewire как минимум), он гарантированно есть когда пользователь зашел в систему.

Аватара пользователя

vir0id
Сообщения: 2757
Зарегистрирован: 19 дек 2017, 18:48
Решено: 15
Откуда: Рига
Благодарил (а): 163 раза
Поблагодарили: 305 раз
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#3

30 дек 2023, 22:22

Что-то я не особо понял что именно подразумивается под
madesta писал(а):
30 дек 2023, 18:18
записать в оперативную память и далее считать его как значение
Обычное хранение в переменной этого не подразумивает разве?
madesta писал(а):
30 дек 2023, 18:18
из которого потом и считывается как значение "цифра"
В bash нету типов переменных, если ты хотел int на выходе получить.
madesta писал(а):
30 дек 2023, 18:18
Существует ли менее громоздкое решение?
Сделай еще один файл, в котором будет проверяться переданное значение из /tmp/proc....

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#4

30 дек 2023, 23:30

vir0id писал(а):
30 дек 2023, 22:22
Обычное хранение в переменной этого не подразумивает разве?
Я так понял, ему надо чтобы доступ к значению был из двух разных скриптов (один пишет, другой читает). В этом случае переменная bash разумеется не подходит - она же за пределами скрипта очищается.

Аватара пользователя

Автор темы
madesta
Сообщения: 2019
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#5

31 дек 2023, 11:40

vir0id писал(а):
30 дек 2023, 22:22
Сделай еще один файл, в котором будет проверяться переданное значение из /tmp/proc....
Уточняю вопрос, если оказалось, что сформулировал его неоднозначно. Хотелось бы избежать записи вводимого через zenity значения в файл на диске, помещая его в оперативную память и потом считывая его. Хотя сильно и не принципиально, думал, что имеется возможность, поскольку сам в программировании ни бум-бум и в состоянии использовать только какие-то заготовки или заимствованные куски команд на уровне "если то", "и", "или". Вопрос количества скриптов не принципиален, если имеется возможность реализовать это одним, то очень хорошо.
Общий смысл: запустить через ПКМ Thunar в терминале команду fbless %f -g n Вот n и является значением "цифра", которая вводится. Причём значение "цифра" каждый раз будет разным (по мере чтения книги, то есть при новом вызове команды, или открывая другие файлы fb2). Не знал как обеспечить её ввод, поэтому и сделал топорно через zenity с записью в файл на диске другим скриптом.

Аватара пользователя

rogoznik
Сообщения: 10050
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#6

31 дек 2023, 12:19

madesta, вот как сделал так и оставь
ИзображениеИзображение

Аватара пользователя

Автор темы
madesta
Сообщения: 2019
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#7

31 дек 2023, 14:04

Насколько я понял из ответа 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 не записан физически на диск, а "болтается в уме"? Или я ошибаюсь?

Аватара пользователя

rogoznik
Сообщения: 10050
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#8

31 дек 2023, 15:02

madesta писал(а):
31 дек 2023, 14:04
то это равносильно занесению в память без записи на диск
Не верно понял. Ты записал таким образом в файл, на файловую систему, расположенную в оперативной памяти.
Да такой файл на диск не пишется и стирается при перезагрузке
ИзображениеИзображение

Аватара пользователя

Автор темы
madesta
Сообщения: 2019
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Занести введенную цифру в память и далее считать это значение

#9

31 дек 2023, 16:13

rogoznik писал(а):
31 дек 2023, 15:02
Да такой файл на диск не пишется
Это то, что было желательно. Всем откликнувшимся спасибо за участие. С наступающим!

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость