!
отрицает следующее условие, то есть -exec sh -c 'ls -1 "{}" | egrep -q "*.counts.txt"' \;
. Поскольку это -exec
условие, которое отрицается, мы должны помнить, что оно истинно, если выполняемая им команда возвращает статус 0 (и отрицание условия истинно, если статус не равен 0 ). -exec
не передаются в оболочку, а вместо этого выполняются напрямую, поэтому понятие канала отсутствует. Если бы вы поместили туда символ вертикальной черты, внешняя оболочка (, которая запустила поиск, )использовала бы его, и весь вывод из find пошёл бы в egrep. Документацию по аргументам !
и -exec
для find см. в man find
.
Вы можете поместить файлы журналов в зашифрованное хранилище вместо того, чтобы шифровать отдельные файлы.
Или, может быть, пусть script
записывает в fifo, читает этот fifo с помощью gpg, и пусть gpg выполняет шифрование и записывает его в файл.
Если вы используете bash
, вы можете использовать скрипт ~/.bash_logout
для шифрования файла журнала script
с помощью gpg или чего-то подобного.
.bash_logout
необходимо знать имя файла журнала. Например, вместо того, чтобы просто запустить script filename
, запустите функцию myscript
, определенную в вашем .bashrc
.
function myscript() {
# Very primitive option handling. This really needs to pass any script
# command-line options on to script.
# Left as an exercise for the reader and the getopts documentation :)
if [ -n "$1" ] ; then
SCRIPT_FILENAME="$1"
else
SCRIPT_FILENAME="$USER-$(tty)-$(date +%s)"
fi
readonly SCRIPT_FILENAME
export SCRIPT_FILENAME
script "$SCRIPT_FILENAME"
}
А затем в файле выхода.bash _:
if [ -n "$SCRIPT_FILENAME" ] && [ -e "$SCRIPT_FILENAME" ] ; then
gpg --batch --yes -r 'YOUR-EMAIL-OR-ID' -e "$SCRIPT_FILENAME"
shred "$SCRIPT_FILENAME" # or any other file secure-erase tool.
rm -f ""$SCRIPT_FILENAME"
fi
ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ:Это делает вашу систему уязвимой ко всему, (например. исходный сценарий ), который может установить переменную SCRIPT _FILENAME в среде вашей оболочки. Злоумышленник может установить его для любого файла, к которому у вашего идентификатора пользователя есть доступ для записи. (Конечно, злоумышленник может просто перезаписать этот файл, если он может запустить что-либо от вашего имени.)
Этого можно избежать, установив $SCRIPT_FILENAME
и сделав его доступным только для чтения в вашей ~/.bashrc
, а не в функции myscript
. Это сделало бы невозможным использование другого имени файла с функцией myscript.
Или вы можете хранить все свои машинописные тексты в одном каталоге (, например./home/username/typescripts/
). Затем сценарий выхода.bash _может проверить, что:
.gpg
../
перед шифрованием, измельчением и удалением.
ДРУГОЕ ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ:
ОСТОРОЖНО. НЕ ИСПОЛЬЗУЙТЕ ПРИМЕРЫ КОДА ДАЖЕ НА СОБСТВЕННЫЙ РИСК.МОИ ПРИМЕРЫ ТОЛЬКО ДЛЯ ИДЕИ.
В то время как небольшие части этого были протестированы по отдельности, это не было проверено как полная, функционирующая система. Этот ответ НЕ предназначен для предоставления полного решения. Он предназначен для того, чтобы предоставить вам идеи для самостоятельного изучения и реализации.