После удаления kde-full
,
apt autoremove
или
apt-get autoremove
(apt autoremove
будет доступно в Debian 9)
должен удалить все пакеты, которые были установлены автоматически вместе с kde-full
. Позаботьтесь о том, чтобы просмотреть список пакетов, которые будут удалены, прежде чем подтверждать удаление.
Другие пакеты могут быть помечены как не, устанавливаемые автоматически, , например. kdeartwork
в вашем случае (по какой-то причине). Вам нужно удалить эти пакеты и повторно запустить autoremove
. Чтобы определить все пакеты, которые необходимо удалить, найдите пакеты с автоматическим флагом или запустите aptitude Why
для пакетов, которые устанавливаются автоматически, и найдите пакеты без A
на выходе. После нескольких итераций вам удастся избавиться от всех нежелательных пакетов.
Дано,
var0=a
var1=b
var2=c
с ksh93 или bash 4.3 или новее вы можете использовать nameref для указания на отдельные переменные:
for i in 0 1 2; do
typeset -n p="var$i"
echo "$p"
done
Но если вам явно не нужны переменные как отдельные скаляры (, например, потому что вы передавали их через среду )и используете не строго стандартную оболочку, а Bash или ksh, вы должны вместо этого использовать массив:
#!/bin/bash
a=(a b c)
for i in 0 1 2; do
echo "${a[i]}"
done
Или игнорирование индексов:
for x in "${a[@]}"; do
echo "$x"
done
(В Zsh, конечно, тоже есть массивы, он просто начинает индексацию с 1 по умолчанию, так что первый не работает напрямую.)
Для этого можно использовать eval:
$ var1='< 1 >'; var2='< 2 >'; var3='< 3 >'
$ for i in 1 2 3; do eval echo \$var$i; done
$ for i in 1 2 3; do eval "echo \$var$i"; done
$ for i in 1 2 3; do eval 'echo $var'$i; done
$ for i in 1 2 3; do eval "v=\$var$i"; echo "$v"; done
Будьте осторожны с цитированием и экранированием. Если значения содержат пробелы или подстановочные символы, первые три будут разделять значения по пробелам, а затем расширять любые имена файлов, соответствующие подстановочным знакам. Это может быть или не быть тем, что вы хотите. Например:
$ var1='< x >' var2='< * >' $ for i in 1 2; do eval echo \$var$i; done < x > < [list of filenames in current directory] >
(Обратите внимание, что двойные пробелы вокруг x
были свернуты в одиночные пробелы, поскольку echo
получил <
, x
и >
в качестве отдельных аргументов.)
Чтобы обойти это, вам нужно убедиться, что расширение переменной заключено в кавычки в eval
, например.:
$ for i in 1 2; do eval echo \"\$var"$i"\"; done
< x >
< * >
(также укажите $i
, как указано выше, если только вы не знаете, что IFS
не содержит цифр.)