Создайте алфавитный указатель с буквами, повторяющими

У меня такая же повторяющаяся проблема, которую я решил, сделав :

rm -rfv /var/log/{*.[0-9],*.[0-9].gz}
for i in `find /var/log/ -type f`; do
        if [ -f $i ] && [ -s $i ]; then
                echo "" > $i
        fi
done

Это я взял из : https://serverfault.com/questions/350891/how-to-delete-all-debian-squeeze-logs?rq=1 и перезагрузкой НО Я не понимаю ПОЧЕМУ!

Я прекратил это повторение, удалив эти файлы, найденные "подозрительными" моим антивирусом ClamTk :

/home/daniel/.cache/chromium/Default/Cache/f_03b482 PUA.JS.Xored
/home/daniel/.cache/chromium/Default/Cache/f_03b53f PUA.HTML.Infected.WebPage-1
/home/daniel/.cache/chromium/Default/Cache/f_03b547 PUA.Phishing.Bank
/home/daniel/.cache/chromium/Default/Cache/f_03b61d PUA.JS.Xored
/home/daniel/.cache/chromium/Default/Cache/f_03b65a PUA.Script.Packed-2

Это были файлы в кэше одного из моих веб-браузеров. И я помню, что эта проблема началась в период, когда мой брандмауэр "Firestarter" остановил кучу входящих соединений, и я использовал Chromium.

Помог ли кому-нибудь мой случай ?

2
16.10.2018, 00:11
3 ответа

Вы могли бы сделать:

$ printf '%s ' {a..z}; echo
a b c d e f g h i j k l m n o p q r s t u v w x y z

$ printf '%s%s ' {a..z}{,}; echo
aa bb cc dd ee ff gg hh... ss tt uu vv ww xx yy zz 

$ printf '%s%s%s ' {a..z}{,,}
aaa bbb ccc ddd eee... ttt uuu vvv www xxx yyy zzz

Объяснение :Расширение фигурной скобки создаст один аргумент для каждого значения, разделенного запятой (и начальной строкой ):

.
$ echo A{d,u,j}
Ad Au Aj

Но если значение пустое, будет просто повторяться начальная строка:

$ echo A{,,}
A A A

Если ведущая строка сама является расширением фигурной скобки, все ее строки будут повторяться:

$ echo {one,two}{,,}
one one one two two two

Затем printf (и замыкающее эхо )используются для форматирования вывода:

$ printf '%s%s%s ' {one,two}{,,}; echo
oneoneone twotwotwo

Однобуквенные значения:

$ printf '%s%s%s ' {a..d}{,,}; echo
aaa bbb ccc ddd
4
27.01.2020, 21:55

Насколько я знаю, вы не можете сделать это, просто заставив bashиспользовать магию расширения. Но вы всегда можете использовать

for c in {a..z}; do echo $c$c; done
for c in {a..z}; do echo $c$c$c; done
...
1
27.01.2020, 21:55

Вот еще один вариант в Bash.

index=$(echo -n {a..z})
num=2
until ((num>5)); do
    for c in {a..z}; do
        case "$num" in
            2 ) index=$(echo -n "$index $c$c") ;;
            3 ) index=$(echo -n "$index $c$c$c") ;;
            4 ) index=$(echo -n "$index $c$c$c$c") ;;
            5 ) index=$(echo -n "$index $c$c$c$c$c") ;;
        esac
    done
((num++))
done
echo "$index"
  1. Добавьте первый набор в index.
  2. Повторите четыре раза для оставшихся четырех подходов.
  3. Запустить цикл forдля каждой буквы.
  4. Оператор caseв цикле forопределяет, сколько раз каждая буква добавляется в индекс.
0
27.01.2020, 21:55

Теги

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