Хорошо, оказывается, что в моем конкретном случае такие сценарии плавления должны интерпретироваться строго как аргументы командной строки; так что только один sed
в ОП не совсем режет его (плюс есть другие вещи, как профили, которые можно установить). Итак, вот что я в итоге сделал - вероятно, может служить вдохновением в других случаях, которые название ОП охватывало бы.
Я в конечном итоге остановился на использовании этого: создать файл test.shmelt
, который фактически является сценарием bash
, который содержит мой комментированный код плавкого
сценария; сделать этот файл исполняемым chmod + x test.shmelt
; после редактирования сценария запустите его как ./test.shmelt
.
При запуске он создаст файл test.melt
в /tmp
и вызовет плавление
в этом файле. Поскольку плавка
обычно продолжает работать в терминале после окончания его программы, с помощью ловушки на SIGINT этот временный файл может быть очищен при нажатии Ctrl-C (но не обязательно).
Таким образом, у меня все еще есть комментарии; может быстро редактироваться в исходном файле и выполнять плавку и просматривать результаты; и у меня есть файл, «очищенный» от комментариев, который я могу использовать позже.
Вот код test.shmelt
:
#!/bin/bash
# call with: ./test.shmelt
#TMLTFILE="test.melt" # for final export
TMLTFILE="${0%%.shmelt}.melt" # for final export
function finished() { echo ; } ; # use this when testing or montaging to keep exported (tmp) .melt file; uncomment the below to remove the tmp file
#~ function finished() { rm /tmp/"$TMLTFILE"; echo "fin1 $0" ; } ; trap finished SIGINT ;
echo 'Remember `pulseaudio --start` to hear audio with `melt`!'
pulseaudio --check
if [ $? -ne 0 ]; then
pulseaudio --start
fi
DIRNAME=$(readlink -f $(dirname $0))
PROFILE="square_ntsc"
echo "
# the profile doesn't work from here;
# still has to be specified on command line
# but including it here so the path is saved for testing
#~ -profile
#~ ${PROFILE}
-video-track
# can avoid pixmap: here, but that s the producer;
# qimage: also works
# NB it is NOT '-out 1645'; but 'out=1645'!!
/media/myimg/%05d.bmp
in=0
out=1645
#~ length=1645
#~ loop=0
#~ eof=stop
-audio-track
/media/mysnd/snd.wav
in=0
out=1645
#~ loop=0
#~ eof=stop
#-consumer xml # doesn't work here
" | sed -e 's/#.*$//' -e 's/^[[:space:]]*//' -e '/^[[:space:]]*$/d' -e 's/[[:blank:]]*$//' > ${TMLTFILE}
# the sed: remove comments; remove indents; remove empty lines; remove spaces at end of line
# eof: one of: stop, loop, continue or pause (eof=stop)
# to loop, use `melt eof=loop ...` (but make sure first,
# that the edit as a whole stops - use xml to check!)
# due to caching issues, preview pieces (up to ~300 frames) like this:
melt eof=loop -profile ${PROFILE} ${TMLTFILE} in=200 out=400
# must have profile here, for checking w/ -consumer xml (else segfault)
# this command may add additional producers to the xml!:
## melt -profile ${PROFILE} ${TMLTFILE} -consumer xml
# use this to generate xml if needed:
#melt -profile ${PROFILE} $(cat ${TMLTFILE} | tr '\n' ' ') -consumer xml
# if exited normally, cleanup:
finished
-121--55563-
Может быть лучшим способом, но
tmux list-panes | wc -l
работает.
-121--100647-
Можно использовать то, что DevNull предлагал, какие rsynks периодически. Лично я бы использовал inotify . Это жалкий инструмент, который вы можете дать папку для просмотра. Он настраивает часы и уведомляет о каждом изменении файловой системы. Затем можно запустить rsync на основе триггера из inotify
.
Для конкретного случая, о котором вы говорите в конце, вы можете использовать триггер от inotify, чтобы увидеть, что произошло, а затем написать простой сценарий bash, чтобы проверить, является ли это застежка -молния, который был добавлен в папку A, и если он есть, то вы можете просто распаковать его в папку B (или что бы вы ни хотели сделать) вместо того, чтобы просто копировать застежка -молния.
Попробуйте заставить систему выполнить проверку диска. Linux использует fsck для проверки диска, диск не может быть смонтирован в это время.
попробуйте запустить linux OS в режиме восстановления (в консоли, а не на gui), затем root или с помощью sudo (не уверен, что это возможно с Mint) выполните
# shutdown -rF now
это заставит систему перезагрузиться с запуском fsck
. Грязный хак
Если вы используете уровень запуска 5, то перед каждым сценарием запуска (который, скорее всего, будет в /etc/init.d/rc5.d) печатайте метка времени во временном файле с именем сценария.
После загрузки машины вы можете выяснить, какой сценарий отнимает много времени. Затем вы можете предпринять соответствующие действия
Имейте в виду, я называю это грязным взломом , потому что эти изменения напрямую влияют на систему.