LINUX.ORG.RU

Как писать путь относительно файла bash-скрипта?

 


0

2

Написал костыль, чтобы подсветка регулировалась с клавиатуры. Два файла (один прибавляет, другой убавляет) привязал к нужным хоткеям. И текущее значение сохраняю в файл.

Вот убавляющий:

#!/bin/bash
step=5 #шаг подсветки
current=$(</home/k0ttee/Костыли/backlight-fix/cache.txt) #читаем сколько сейчас
let new=$current-$step #вычитаем один шаг
xrandr --output eDP1 --brightness 0.$new #меняем подсветку
cp /dev/null /home/k0ttee/Костыли/backlight-fix/cache.txt #выпилить старое из файла
echo $new >> /home/k0ttee/Костыли/backlight-fix/cache.txt #новое значение в файл

Как писать, чтобы пути были относительными?



Последнее исправление: k0ttee (всего исправлений: 1)

xbacklight не работает?

А по теме: $(dirname $0)

bj
()

Не надо устраивать из файловой системы файловую свалку.

Это значиение же имеет смысл только в от включения машинки до вылкичения, так? Тогда ему место в /tmp/.

Два файла (один прибавляет, другой убавляет)...

А одним никак не обойтись? Позиционный параметр, не?

cp /dev/null /home/k0ttee/Костыли/backlight-fix/cache.txt #выпилить старое из файла
echo $new >> /home/k0ttee/Костыли/backlight-fix/cache.txt #новое значение в файл

Вы знаете про >>, но позабыли про >?

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)
 cp /dev/null /home/k0ttee/Костыли/backlight-fix/cache.txt #выпилить старое из файла
echo $new >> /home/k0ttee/Костыли/backlight-fix/cache.txt #новое значение в файл

Благородный дон не знает про

>
?

Для относительности пути можно использовать dirname.

wlan ★★
()
$(dirname $(readlink -f "$0"))

PS:

cp /dev/null /home/k0ttee/Костыли/backlight-fix/cache.txt

:>/home/k0ttee/Костыли/backlight-fix/cache.txt

emulek
()
Последнее исправление: emulek (всего исправлений: 1)

В неэкзотических случаях достаточно

cd ${0%/*}
Но нужно убедиться, что есть понимание о том, когда это не сработает.

unterwulf
()
Ответ на: комментарий от unterwulf

${BASH_SOURCE[0]%/*} или $(dirname "${BASH_SOURCE[0]}"). Последний вариант должен работать везде.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Для подобных временных файлов есть /tmp/

Сохранять туда правильнее и надёжнее, чем вычислять относительный путь.

shell-script ★★★★★
()

На первый взгляд текущее значение яркости можно вытащить обратно из xrandr. Это выглядит более правильным, т.к. исключает рассинхронизацию значения сохранённого в файле с реальным (например, из-за установки значения по умолчанию после перезагрузки).

current=$(xrandr --verbose | awk '$2 == "connected" { out = $1; next } $1 == "Brightness:" && out == "eDP1" { print $2; exit }')

unterwulf
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.