Основываясь на ответах всех и учитывая установленные утилиты на target
, я нашел решение, которое работает, выполняя скрипт только из source
. Сценарий выглядит следующим образом:
dest="/dev/$(dmesg | grep "now attached to ttyUSB" | awk '{print$NF}' | tail -1)"
cat binfile | gzip | base64 > binfile.64.gz
md5=$(md5sum binfile | awk '{print $1}')
printf "\necho \"[ \\\$(md5sum /binfile | awk '{print \\\$1}') == %s ] &&\\
\" > /flash.sh\n" \
"$md5" \
> "$dest"
printf " echo \"%s\" | base64 -d | gunzip > /binfile &&\\
/bin/sh /flash.sh
" "$(cat binfile.64.gz)" \
> "$dest"
Он отправляет программу прошивки, которая проверяет, совпадают ли контрольные суммы исходного и целевого bin-файлов
сжимает и кодирует bin-файл,
посылает его,
и использует программу прошивки для прошивки карты. Если что-то сломается при кодировании/декодировании, оно не должно прошивать цель. Любая другая проблема вряд ли вызовет проблемы в системе, поскольку простая перезагрузка вернет ее в состояние по умолчанию.
Вот ссылка на мою полную реализацию этого процесса:
https://github.com/Soulthym/cycloneV-serial-flasher
В эти выходные я сидел с точно таким же вопросом, искал ответы, как сумасшедший, и наткнулся на этот пост. После того, как я, наконец, понял это сам, я теперь возвращаюсь сюда, создавая учетную запись, чтобы ответить на этот вопрос, если у кого-то еще может возникнуть такой же вопрос.
Как и многое другое, это на самом деле довольно просто. Вам необходимо установить программу exifprobe, частью которой является exifgrep.
sudo apt-get install exifprobe
Команда --info выполняет команду в оболочке, поэтому для ее работы необходимо установить exifprobe. Сборка exifprobe/exifgrep не работает в оболочке. С информацией --вы можете получить ее для печати любого вывода команды, напримерfeh --info 'echo "this will be printet on the image"'./
Когда exifprobe установлен, вы можете запустить следующую команду feh и получить нужную информацию о дате. Команда вырезания из примера просто удаляет часть текста, отображаемого рядом с датой, чтобы вы могли добавить его самостоятельно, если хотите.
feh --info "exifgrep 'DateTimeOriginal' %F"
На самом деле я нашел для себя другое решение. Понимаете,exifgrep не может обрабатывать пробелы в имени пути , поэтому, если у вас есть путь с именем "~/Photos/My Favorit Cats/cat.jpg"
, он не будет работать, и независимо от того, что я пытался избежать, имя пути просто сломалось.
Вместо этого я наконец нашел exiftool
, который можно установить, написав
sudo apt-get install exiftool
exiftool
правильно обрабатывает пробелы и может делать много интересных вещей, взгляните на руководство. Наиболее важно для вас, вероятно, перечислить все теги фотографии, если вы хотите больше, чем просто дату, написав следующее.
exiftool -s "~/Photos/My Favorit Cats/cat.jpg"
-s предназначен для получения фактических имен тегов, без него вы получите удобочитаемые имена.
Затем с помощью этого инструмента я получил следующую команду. Обратите внимание на косую черту в конце, это просто означает показать все фотографии в этой папке. Команда cut снова предназначена для удаления имени тега, которое стоит перед фактической датой в строковом выводе.
feh --info 'exiftool -DateTimeOriginal %F | cut -d : -f 2-'./
Я надеюсь, что это будет полезно другим, ищущим ту же проблему.