My hope os that this environment variable with the password will not be accessible outside the context of process (b). Is that correct?
Нет, не стоит на это полагаться. Например, в Linux процесс, запущенный тем же пользователем, может иметь доступ к вашей среде через/proc/<pid>/environ
Попробуйте:
tr '\0' '\n' < /proc/$$/environ
(или с PID любого из ваших процессов)
Этот zsh-скрипт выберет два новейших (простых )файла в текущем каталоге, соберет отметку времени модификации самого последнего из них, преобразует эту отметку времени в формат ГГГГммдд, создаст каталог, затем скопирует эти два новейшие файлы в этот каталог:
#!/bin/zsh
newest2=( *(.om[1,2]) )
dsec=$( stat -c %Y "${newest2[1]}" )
dnam=$( date -d @"$dsec" +%Y%m%d )
mkdir "$dnam"
cp -- "${newest2[@]}" "$dnam"
Первая строка, присваивающая newest2
, расширяет подстановочный знак *
квалификатором (в скобках ). Квалификатор запрашивает:
.
--обычные файлы om
--упорядочено по времени модификации (от новейшего к старому набору)[1,2]
--разделите список, чтобы включить только элементы с 1 по 2 Затем мы запрашиваем stat
время модификации в секундах самого нового файла; эта дата передается в GNU date
, который возвращает имя каталога в нужном нам формате. После создания каталога команда cp
копирует два файла в этот каталог.
Здесь мы предполагаем, что вы хотите, чтобы имя папки было извлечено из первого файла:
dir="$(mkdir -p $(ls -ltp --full-time | grep -v / | awk '{print $6}' | sed -n '2p' | sed 's/-//g'))"
Список только файлов grep -v /
, отсортированных по времени lt
, показать полное время (, поэтому у нас есть дата)--full-time
.
ls -ltp --full-time | grep -v /
Выберите столбец дат
awk '{print $6}'
Получить вторую строку (первая строка показывает количество файлов ), которые соответствуют первому файлу, и удалить тире:
sed -n '2p' | sed 's/-//g'
cp $(ls -ltp --full-time | grep -v / | awk '{print $9}' | sed -n '2,3p' | tr '\n' ' ') "${dir}/"
Список только файлов grep -v /
, отсортированных по времени lt
, показать полное время (, поэтому у нас есть дата)--full-time
.
ls -ltp --full-time | grep -v /
Получить имена файлов:
awk '{print $9}'
Выберите первый и второй файл
sed -n '2,3p'
Замените пробел на новую строку, чтобы мы могли выполнить копирование в одну строку.
tr '\n' ' '
Команда будет выглядеть следующим образом
cp x z 20190924/