Изменение и настройка обоев для входа в Kali 2.0 - это трехэтапный процесс. I Я не уверен, что это полезно для пользователей Kali 1.0. Попав в терминал
Найдите разрешение текущего образа входа в систему. Для этого вы можете использовать следующую команду.
eog /usr/share/gnome-shell/theme/KaliLogin.png
В средстве просмотра изображений посмотрите на нижний левый угол, чтобы увидеть разрешение.
Как только вы получите разрешение, убедитесь, что ваше замещающее изображение имеет этот размер и, что более важно, в формате png. Затем переместите изображение, чтобы заменить существующее изображение, используя команду ниже.
mv /path/to/your/image/image_name.png /usr/share/gnome-shell/theme/KaliLogin.png
Это необязательный шаг. Перезагрузите компьютер, чтобы убедиться, что новое изображение идеально вписывается в экран входа в систему. Если нет, запустите приведенную ниже команду в терминале
gnome /usr/share/gnome-shell/theme/gnome-shell.css
Это откроет (в текстовом редакторе) таблицу стилей каскада, которая поможет вам установить настройки фонового изображения для экрана входа в систему. В этом файле найдите следующие строки
#lockDialogGroup {
background: # 2e3436 url (KaliLogin.png);
background-repeat: no-repeat;
background- size: cover;
}
Измените размер фона
на , содержащий
. Сохраните и закройте файл css и перезагрузите компьютер.
Попробуйте:
sed 's/^/hello there is /' file1.txt > final.sh
Или если вам нужно использовать переменную:
printf '%s\n' "$var" | sed 's/^/hello there is /' > final.sh
Если вы не возражаете против потери пустых строк, вы также можете сделать:
IFS='
' # split on newline
set -o noglob # disable glob
printf 'hello there is %s\n' $var > final.sh # invoke split+glob
По вашей актуальной проблеме:
sed "s/.*/UPDATE ownership SET library_id = 'u-wl' where doc_id = '&';/" < file1.txt |
sqlite "$PLAY_DB_DIR/library.db"
(обратите внимание, что предполагается, что записи в файлах не содержат '
или других специальных последовательностей байтов в языке sqlite. Если вы не можете получить эту гарантию, в лучшем случае это будет уязвимость внедрения sqlite ).
Или если вам нужно вывести шелл-код для последующего выполнения:
{
echo 'sqlite "$PLAY_DB_DIR/library.db" << "EOF"'
sed "s/.*/UPDATE ownership SET library_id = 'u-wl' where doc_id = '&';/" < file1.txt
echo EOF
} > final.sh
Что на вашем образце дает:
sqlite "$PLAY_DB_DIR/library.db" << "EOF"
UPDATE ownership SET library_id = 'u-wl' where doc_id = 'bibi.toto';
UPDATE ownership SET library_id = 'u-wl' where doc_id = 'jaja.bubu';
UPDATE ownership SET library_id = 'u-wl' where doc_id = 'vrtegbvtr.rvgtbtdtbvtd';
EOF
Или если у вас есть для запуска одной sqlite
команды на запрос:
repl=$(cat << "EOF"
sqlite "$PLAY_DB_DIR/library.db" 'UPDATE ownership SET library_id = '\\''u-wl'\\'' where doc_id = '\\''&'\\'';'
EOF
)
sed "s@.*@$repl@" < file1.txt > final.sh
(на этот раз в дополнение к уязвимости внедрения sqlite,это становится уязвимостью выполнения произвольной команды, если файл может содержать символы одинарной кавычки ).
На вашем образце это дает:
sqlite "$PLAY_DB_DIR/library.db" 'UPDATE ownership SET library_id = '\''u-wl'\'' where doc_id = '\''bibi.toto'\'';'
sqlite "$PLAY_DB_DIR/library.db" 'UPDATE ownership SET library_id = '\''u-wl'\'' where doc_id = '\''jaja.bubu'\'';'
sqlite "$PLAY_DB_DIR/library.db" 'UPDATE ownership SET library_id = '\''u-wl'\'' where doc_id = '\''vrtegbvtr.rvgtbtdtbvtd'\'';'
Как насчет
$ readarray -t X <file
$ IFS=$'\n'
$ echo "${X[*]/#/hello there is }"
hello there is bibi.toto
hello there is jaja.bubu
hello there is vrtegbvtr.rvgtbtdtbvtd
пр1:
for i in $ (cat file.txt ); делать; echo "привет, есть $i"; сделано
привет есть биби.тото
привет есть jaja.bubu
привет есть vrtegbvtr.rvgtbtdtbvtd.
вот пример с циклом for!
пр2:
при чтении linha; do echo "привет, это $linha"; сделано < файл.txt
привет есть bibi.toto
привет есть jaja.bubu
привет есть vrtegbvtr.rvgtbtdtbvtd
поэтому он получает каждую строку файла file.txt
Спасибо всем за помощь, особенно @Stéphane Chazelas и @noob. Мой вопрос можно закрыть, команда Стефана в основном работает, но оболочка, в которой должен работать скрипт, довольно странная (проблема с EOF )...
Поскольку первый пример команды от noob немного прост, он работает. Я так использовал свои вары:
for i in $(cat $file1); do echo "text blabla $i blabla" >> $file2; done
Еще раз всем спасибо.
while read -r var; do echo hello this is $var; done < file1.txt > final.sh
должен делать то, что вы хотите. Это предполагает оболочку ash
, которая, как я полагаю, находится в busybox. При этом используется встроенная функция read
для чтения файла построчно в var
.
Эквивалентная bash
реализация будет выглядеть так
while read -r; do echo hello this is ${REPLY}; done < file1.txt > final.sh
, который использует встроенную функцию bash
read
.