Опция -t
просто удаляет предпочтения пиннинга apt и устанавливает выбранный выпуск с приоритетом 990, эквивалентным этому:
Package: *
Pin: release a=testing # for testing
Pin-Priority: 900
Этот приоритет недостаточен, чтобы заставить пакет опуститься. Для принудительного понижения рейтинга пакета вам нужно 1000 или более приоритетов для выпуска, который вы пытаетесь понизить до, или -1 или менее для пакета, версия которого пришла из выпуска, который вы хотите удалить.
package/release
делает что-то совершенно другое. Она выбирает последнюю версию в архиве пакета, если их несколько, и устанавливает только этот пакет. Эквивалент:
apt-get download package=version
dpkg -i --force-downgrade package.deb
В общем, и -t
, и package/release
следуют разной процедуре, и единственные команды, способные понизить рейтинги пакетов из apt - это явные селекторы версий: package=version
and package/release
.
Я думаю, что если вы дадите шаблоны в качестве ввода в GREP
, используя stdin
, это будет Раздатные результаты для всех шаблонов. Поэтому AFAIK единственный способ преодолеть эту проблему, состоит в том, чтобы вызвать новый экземпляр GREP для каждого шаблона.
Этот скрипт будет работать в этом случае
for animalName in $(ls -1 ~/animals | cut -d. -f1);
do
echo "$animalName: $(grep -R -h -c $animalName ~/people | paste -sd+ | bc)";
done
Это на линии того, что вы пытались с некоторыми незначительными изменениями. Во-первых, -H
опция в GREP
подавляет печать имен файлов. Во-вторых, сразу GREP
, вывод для шаблона будет похож
1
0
3
2
, мы хотим добавить все эти номера. Команда
присоединяется к этим линиям с помощью +
, а затем проходит образоваенную строку в BC
для расчета результата.
Примечание. Если имена ваших животных содержат Newlines или любые специальные символы (в какой-то странной земле), не рекомендуется разбирать выход Ls
.
Почему-то мой ~/.Xauthority
не принадлежит пользователю debian
. Изменение владельца позволило мне войти в систему:
chown -R debian /home/debian/.Xauthority
-121--185878- Я думаю, что если вы дадите узоры в качестве ввода в grep
с помощью stdin
, это объединит результаты для всех узоров. Таким образом, AFAIK единственный способ преодолеть эту проблему - вызвать новый экземпляр grep для каждого образца.
Этот сценарий будет работать в данном случае
for animalName in $(ls -1 ~/animals | cut -d. -f1);
do
echo "$animalName: $(grep -R -h -c $animalName ~/people | paste -sd+ | bc)";
done
Это на линии того, что вы пытались с некоторыми незначительными изменениями. Во-первых, опция -h
в grep
подавляет печать имен файлов. Во-вторых, с помощью grep
вывод для образца будет похож на
1
0
3
2
Мы хотим добавить все эти числа. Команда paste
соединяет эти строки с +
и затем передает сформированный ряд в bc
для вычисления результата.
ПРИМЕЧАНИЕ: Если ваши имена животных содержат новые строки или какие-либо специальные символы (в какой-то странной стране), не рекомендуется анализировать выходные данные ls
.
Вот способ получения нужных результатов с помощью GNU awk
:
awk '
BEGINFILE {
if (FILENAME ~ "^animals/" || FILENAME ~ "/animals/") {
this_name = substr(FILENAME, index(FILENAME,"animals/")+length("animals/"))
i = index(this_name, ".")
if (i > 0) this_name = substr(this_name, 1, i-1)
critter[++num] = this_name
critter_count[num] = 0
nextfile
}
}
{
for (i = 1; i <= num; i++) {
if ($0 ~ critter[i]) critter_count[i]++
}
}
END {
for (i = 1; i <= num; i++) print critter[i] ": " critter_count[i]
}
' animals/* people/*
При запуске нового файла ( BEGINFILE
),
проверьте, начинается ли его название с animals/
или содержит /animals/
.
Это позволяет говорить животные/*
, ./животные/*
или ~/животные/*
.
Если это так,
животных/
. .
; в случае обнаружения извлеките подстроку слева от нее. crester []
,
и инициализировать соответствующий счетчик _
для 0. ☛ Обратите внимание, что BEGINFILE
и nextfile
недоступны в POSIX awk.
people
),
петля через имена животных ( твари
)
и подсчитать соответствующие строки. END
всех входных данных,
сообщить имена животных
которые были извлечены из имен файлов животных
,
и подсчеты того, как часто каждый из них появлялся в файле people
. Рекурсивный поиск в каталоге people
не выполняется;
Я не видел в вопросе никаких утверждений о том, что это желательно.