Распечатать дату и сумму sha512 в файл?

  • Do I need to install these dependencies by source (also)? or if they are already installed by package manager, that could also work?

Если они уже установлены менеджером пакетов, это будет работать, если установленная версия соответствует требованиям исходного кода, который вы пытаетесь собрать.

Обратите внимание, что вам потребуются пакеты разработки, а не только пакеты библиотек; таким образом, для libsigc++ вам нужно libsigc++-2.0-dev. Зависимости сборки пакета gtkmm помогут вам начать работу :

.
sudo apt build-dep gtkmm3.0

Для статической компоновки вам, вероятно, потребуется собрать все из исходного кода; большинство пакетов разработки в Debian не поставляются с библиотеками для статической компоновки.

  • How can I check if these packages are installed by the package manager?

dpkg -lили, если вы ищете конкретный файл, dpkg -S.

  • Also, if the dependencies are installed by source, where should those be installed?

Исходный код можно разместить где угодно. Артефакты сборки обычно должны быть установлены в /usr/local, что является расположением по умолчанию, используемым в большинстве проектов.

1
23.04.2021, 12:01
2 ответа

Ваш код использует temp3в качестве команды. Иногда кажется, что код оболочки смешивается с чем-то, что может быть Python. Оболочка не выполняет конкатенацию с +. Вы также не можете помещать имена файлов в строковую переменную, а затем извлекать их из этой строки, не ограничивая строго поддерживаемые типы имен. Лучше использовать реальную переменную массива для списков вещей.

Предполагая, что вам нужен обычный выходной формат sha256sumдля ваших файлов, и каждый префикс (в той же строке )с выводомdate:

#!/bin/bash

files=(
    blocklists/blocklist.txt
    whitelists/whitelist.txt
)

now=$(date)

for filepath in "${files[@]}"; do
    printf '%s\n' "$now" |
    paste -d : - <( sha256sum -- "$filepath" )
done >sha256.md

Здесь используется массив для файлов (это позволяет использовать все возможные имена файлов, а также имена файлов с пробелами, символами новой строки и подстановочными символами ), и он использует pasteдля создания двух столбцов с выводом dateв первом столбце и вывод sha256sumв другом. Два столбца разделены :.

Изменение этого скрипта для запуска под любыми именами, которые вы укажете в командной строке скрипта, и запись вывода в стандартный вывод:

#!/bin/bash

now=$(date)

for filepath do
    printf '%s\n' "$now" |
    paste -d : - <( sha256sum -- "$filepath" )
done

Вы бы использовали это вот так:

$./myscript blocklists/blocklist.txt whitelists/whitelist.txt >sha256.md

Или,вы можете избавиться от необходимости зацикливания и просто вызвать sha256sumсо всеми заданными путями:

#!/bin/bash

sha256sum "$@" |
awk -v now="$(date)" -v OFS=: '{ print now, $0 }'
1
28.04.2021, 22:51

Эта строка не делает ничего полезного в синтаксисе bash:

temp3 + " : " + temp2 >> sha512.md

Это означает «взять строку temp3и запустить ее как команду, передав ее + " : " + temp2в качестве аргументов и добавить вывод в файл sha512.md». Вот рабочая версия вашего скрипта:

#! /usr/bin/env bash
FILES="
blocklists/blocklist.txt
whitelists/whitelist.txt
"
main() {
    echo "sha512"
    func_sha512sum
    cat sha512.md
}

func_sha512sum() {
    for file in $FILES
    do
      printf '%s : %s\n' \
            "$(date)" \
            "$(sha512sum -- "$file")"  >> sha512.md
    done
}
main

Лично я бы избегал жесткого кодирования имен файлов, так как это сильно ограничивает сценарий. Просто возьмите файлы из аргументов и выведите на стандартный вывод:

#! /usr/bin/env bash

for file in "$@"; do
  printf '%s : %s\n' \
        "$(date)" \
        "$(sha512sum -- "$file")"  
done 

Затем вы запустите его следующим образом:

$ foo.sh whitelists/whitelist.txt blocklists/blocklist.txt 
Fri Apr 23 10:11:10 AM BST 2021 : a61788166e55f4fbac36f7c9b5a35b80d79eaee684e247caa1e3985a0b78a0edd2c04cacad017b077250c91ced64894d3ae17204df684e09020d7d2569414c5c  blocklists/blocklist.txt
Fri Apr 23 10:11:10 AM BST 2021 : 6b29fcb04c0c19abda792b6efb41f317d8a6af63daad74c0eb82ac7dee7be88d87242fb36b56c63581f109d8cb50969b519935d23b9c5223af1c69a4e3ac5ef5  whitelists/whitelist.txt
1
28.04.2021, 22:51

Теги

Похожие вопросы