Вы можете оставить файл открытым:
exec 3< file
cat <&3
sleep 3600
echo After one hour, these records were added:
cat <&3
Это означает, что это должен быть тот же процесс, вызывающий те cat
одночасовые апартаменты.
Если в файловой системе включено время доступа, и ваш сценарий - единственное, что читает этот файл, вы также можете прочитать строки, метка времени которых соответствует дате последнего доступа. В системе GNU:
awk -v last_access="$(find file -prune -printf %AFT%AT)" '
$0 > last_access' < file
Предполагается, что -04: 00
в файле журнала соответствует текущему смещению часового пояса.
Другой подход - записать текущую позицию файла где-нибудь, например, в file.pos
:
{
if [ -e file.pos ]; then
pos=$(cat file.pos)
else
pos=0
fi
tail -c +"$((pos+1))"
perl -le 'print tell STDIN' > file.pos
} < file
Или с ksh93
{
if [ -e file.pos ]; then
pos=$(<file.pos)
else
pos=0
fi
cat <#((pos))
exec <#((pos=CUR))
echo "$pos" > file.pos
} < file
Или с zsh
:
zmodload zsh/system
{
if [ -e file.pos ]; then
pos=$(<file.pos)
else
pos=0
fi
sysseek $pos
cat
echo "$((systell(0)))" > file.pos
} < file
Я обнаружил, что способ добавления строк в разные конфиги x11 в моем случае оказался неэффективным. В качестве альтернативы я создал сценарий bash, который автоматически применяет мои настройки при входе в систему. Проще говоря, я просто взял то, что я изменил из сохраненного файла xconf
, что, по сути, приводит нас к желаемому концу. Это не самый элегантный метод, но он работает...
В приведенном ниже файле указаны мои настройки для моих мониторов, вам нужно будет поместить свою информацию поверх моей.
Лично я решил добавить эти строки прямо в.bashrc
:
nvidia-settings --load-config-only
nvidia-settings --assign CurrentMetaMode="DVI-I-1: nvidia-auto-select +0+54, HDMI-0: nvidia-auto-select +1600+0 {viewportout=1792x1008+65+30}"
Мой первоначальный и действительный ответ был отредактирован, чтобы предложить поместить его в отдельный файл и вместо вызова файла в .bashrc
. Оба действительны. Однако я хотел, чтобы ответ отражал оба метода.
Пример сценария bash:
# Save this to some script.sh
nvidia-settings --load-config-only
nvidia-settings --assign CurrentMetaMode="DVI-I-1: nvidia-auto-select +0+54, HDMI-0: nvidia-auto-select +1600+0 {viewportout=1792x1008+65+30}"
Затем отредактируйте .bashrc
или.bash_profile
(в зависимости от ваших предпочтений )и добавьте туда свой сценарий, чтобы он запускался автоматически при входе в систему.
Наконец, сделайте ваш скрипт исполняемым с помощьюchmod +x script.sh