различное дерево мерзавца-r - резюме 1.0 2.0
должно сделать это.
Вы также можете просто разделить список деревьев:
diff <(git ls-tree -r --name-only 1.0) <(git ls-tree -r --name-only 2.0)
-121--128425- Хотя это решение может выглядеть длиннее, оно на самом деле намного меньше кода и легко тестируется. Часть проблемы заключается в том, что вы начали с некачественного сценария. Обычно конвейеры с несколькими командами awk
могут использовать усовершенствование. Я не знаю, лучше ли следующее для вашей ситуации, но я надеюсь, что это даст больше понимания одного способа решения этой проблемы.
Чтобы получить целое значение из потока xml, можно использовать awk
так:
awk '
/<key>bootHow<\/key>/ {
getline
gsub("[^0-9]*integer[^0-9]*", "");
print;
}
'
/< key > bootHow <\/key >/
обращается к строке, которая будет изменена действиями внутри фигурных скобок {...}
. getline
считывает следующую строку ввода в $0. Следующая строка должна содержать целочисленный код. gsub
удаляет все нецифровые данные из строки. напечатайте
строку. awk
не печатает строки по умолчанию. Включив это в функцию и записав другую функцию для преобразования целого значения в последовательность описание, мы можем придумать что-то вроде протестированного кода ниже.
Функция boothow
инкапсулирует сценарий awk
, описанный выше.
Функция dfstatus
считывает коды bootHow из стандартных входных данных и распечатывает соответствующие последовательности состояния df на стандартных выходных данных.
Сценарий в настоящее время настроен для тестирования. Выполнение этого теста позволит выполнить некоторые тестовые данные. Строка, вызывающая deepfreeze
, комментируется:
#!/bin/sh
deepfreeze_status() {
deepfreeze=/Library/Application\ Support/Faronics/Deep\ Freeze/deepfreeze
if [ ! -x "$deepfreeze" ]
then
status="DeepFreeze not installed"
else
status=$(
DFXPSWD=password "$deepfreeze" -u user -p status -x |
boothow |
dfstatus
)
fi
echo "<result>$status</result>"
}
test_boothow() {
# test boothow and dfstatus functions:
dfdata='
<integer>a</integer>
<key>other1</key>
<integer>b</integer>
<key>bootHow</key>
<integer>1</integer>
<key>other2</key>
<integer>c</integer>
'
echo "$dfdata" | boothow | dfstatus
}
boothow() {
awk '
/<key>bootHow<\/key>/ {
getline
gsub("[^0-9]*", "");
print;
}
'
}
dfstatus() {
while read bhow
do
case $bhow in
0) echo "frozen" ;;
1) echo "boot thawed for next x reboots" ;;
2) echo "boot thawed" ;;
*) echo "unknown status '$bhow'"; return 1 ;;
esac
done
}
test_boothow
#deepfreeze_status
В следующей расшифровке сценарий был сохранен как ./myscript.sh
.
При запуске ./myscript.sh
(обратите внимание на одиночный .
), интерактивная оболочка считывает и выполняет сценарий в текущем процессе оболочки . Функции будут существовать и доступны как команды в текущей оболочке.
$ . ./myscript.sh
boot thawed for next x reboots
Теперь в текущей оболочке доступны команды boothow
и dfstatus
и test _ boothow
и deepfreeze _ status
. Протестируйте команду boothow
:
$ boothow
<key>bootHow</key>
<integer>2</integer>
2
$ printf '<key>bootHow</key>\n<integer>2</integer>\n' | boothow
2
Проверьте команду dfstatus
, включая код состояния выхода ( $?
):
$ dfstatus
0
frozen
1
boot thawed for next x reboots
2
boot thawed
3
unknown status '3'
$ echo $?
1
$
$ echo 1 | dfstatus
boot thawed for next x reboots
$ echo $?
0
$ echo 1 1 | dfstatus
unknown status '1 1'
$ echo $?
1
$
-121--195013- Сохраняет ли она данные непосредственно в файле с помощью команды -w или сохраняет их при остановке?
По умолчанию Эти буферы обычно имеют 4K или 8K байт, поэтому каждые 4K или 8K байт они записывают данные в файл. Когда он остановлен, он записывает все, что еще не написал.
В более новых версиях tcpdump (построенных с более новыми версиями libpcap) может использоваться флаг -U
; он сообщает tcpdump записывать каждый пакет по мере его получения, даже если буфер еще не заполнен.
Так что если это было письмо на usbstick,Можно я просто демонтирую его, и это просто сохранит все данные на палке.
Нет. Сначала следует остановить tcpdump, а затем отключить USB-накопитель, если вы хотите, чтобы все данные были там.
Кроме того, если вы не сделаете принудительное отключение, система может отказаться разрешить вам демонтировать USB палку, пока tcpdump пишет в файл на этой палке. Принудительное отключение может привести к потере данных в tcpdump и , возможно, к потере данных в буферах файловой системы ядра.
Есть ли возможность просто отключить его и записать на него данные.
При отключении USB-накопителя во время работы tcpdump будут потеряны данные в tcpdump и, возможно, данные в буферах файловой системы ядра.
Если вы работаете с -U
, то единственные данные, которые вы потеряете в tcpdump, это любые данные, которые находятся в середине записи, когда вы демонтируете или отключите USB-накопитель, но вы все равно потеряете все данные, которые находятся в буфере файловой системы ядра и еще не записаны на USB-накопитель.