Potrzebuję zbudować jakiś mini programik bądź skrypt do terminala który będzie w pełni zautomatyzowany.
Potrzebuję czegoś typu KLIKAM IKONKĘ i wszystko z automatu się wykonuje.
Chciałbym stworzyć paczkę która podmieniałaby pliki systemowe a także "coś dziwnego".
Zacznę od plików systemowych czyli sprawa nr.1...
- jest sobie folder o nazwie PLIKI
- w środku znajdują się pliki przede wszytkim graficzne: svg, png, jpg, gif
Chciałbym napisać prosty skrypt do terminala który po uruchomieniu:
- dałby dostęp do roota (po podaniu hasła)
- podebrałby pliki z folderu PLIKI
- skopiowałby te pliki w ściśle określone miejsca (np. /usr/share/icons albo /usr/share/themes)
- wykonałby inne instrukcje jak update-icon-cache, upadte-grub oraz reboot
Powyższe to jedno a ta wcześniej opisana "dziwna rzecz" to:
sprawa nr. 2
Wytłumaczę na przykładzie pliku fstab o co mi chodzi...
Jest sobie fstab w którym widnieją przykładowe wpisy:
UUID=D061-E445 /boot/efi vfat umask=0077 0 2
UUID=e538e50a-5b3e-4d4f-aeec-26a7c201fed3 / ext4 defaults,noatime,discard 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Chciałbym zbudować jakiś zautomatyzowany skrypt do terminala, który po uruchomieniu:
- otworzy edytor tekstu z prawami roota
- doda enter na końcu dowolnego wpisu dowolnym pliku
- dopisze do pliku wcześniej zaprogramowany zestaw znaków
- zapisze wyedytowany plik
i w efekcie końcowym powstanie coś takiego:
UUID=D061-E445 /boot/efi vfat umask=0077 0 2
UUID=e538e50a-5b3e-4d4f-aeec-26a7c201fed3 / ext4 defaults,noatime,discard 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
myramdisk /tmp/ramdisk tmpfs defaults,size=4096m,x-gvfs-show 0 0
Powyższe to tylko przykład lecz chciałbym nauczyć się edycji plików za pomocą zautomatyzowanych skryptów a potem połączyć to wszystko z "pierwszą sprawą". Chodzi mi o zbudowanie zestawu takich niby to programików które bardzo szybko umożliwią konfigurację konkretnego systemu, np. instalujemy czystego Debiana, Ubuntu, Fedorę czy Manjaro a następnie po użyciu W/W mamy szybciuteńko przekonfigurowany system.
Może faktycznie jest coś w twojej " plaźmie " nie dopracowane.
1. System się nie powinien zepsuć z powodu braku ikonek.
1.1 Albo się nie wyświetla ikonka,
1.2 Albo pojawia się ikonka zastępcza --> czarne okienko sugerujące Tobie że coś jest nie tak z ikonkami.
2. Zakładam że już przejrzałeś kody wszystkie potrzebne kody źródłowe jak to jest zbudowane.
Bo w KDE / plaźmie to może trochę się różnić do mojego środowiska Mate.
Żeby wszystko działało, konstrukcja musi być taka sama jak tych instalowane domyślnie w KDE / plaźmie.
3. Do własnego użytku nie potrzebujesz przerabiać ikonek na różne rozdzielczości ekranu.
Próbuj, bo ktoś testować musi i czasami na błędach też trzeba się uczyć, najwyżej rozwalisz system na Virtualboxie ;-)
Ale rady także weź pod uwagę.
Powinno wystarczyć wspomniane przez Ciebie .svg ( Chyba że coś w plaźmie jest nie tak )
Dlatego że nowszy typ czyli .svg ( choć nie jest bez wad, mniej / bardziej ) to potrafi się skalować.
Dla innych, lepiej przygotować .png lub co tam jest.
4. Do testów można ikony instalować w katalogu domowym
Pewnie wiesz, ale jak coś możesz poczytać.
https://forum.linux.pl/index.php/topic,25598.msg137619.html#msg137619
https://forum.linux.pl/index.php/topic,24122.msg130606.html#msg130606
5. Skrypt. Pewnie tez znasz, ale jak coś masz.
Tam jest w bashu napisany https://github.com/tele1/UplosLinux/blob/main/WIKI/Create.own.icons.md
Może Ci sie przyda. Sam poradnik może się różnić od tego na plazmę.
6. Główne forum KDE
Na głównym forum powinno być coś więcej. https://forum.kde.org/index.php?sid=1ebe151c01e79c3ad1f971174e9f271b
Przepraszam, nie siedzę tam, to nie pomogę.
W razie czego masz translatory on-line i słowniki.
Nasze społeczeństwo jest / pokolenia są w trakcie transformacji językowej z rosyjskiego na angielski.
Cieszmy się że dokumentacja nie jest po chińsku lub hiszpańsku których zazwyczaj nie znamy.
https://pl.wikipedia.org/wiki/Lista_najcz%C4%99%C5%9Bciej_u%C5%BCywanych_j%C4%99zyk%C3%B3w_%C5%9Bwiata
7. Ciekawostka: Idea debugowania w KDE
https://forum.kde.org/viewtopic.php?f=14&t=38828
8. Skrypt automatyzujący
To napisz. Porady w https://forum.linux.pl/index.php/topic,26148.0.html
może Ci wystarczą.
8.1 " otworzy edytor tekstu z prawami roota ".
Jeśli większość komend wymaga uprawnień root,
to po prostu uruchom skrypt z prawami root, bez bawienia się w komendy sudo lub su w skrypcie.
8.2. Mam nadzieję że nie chodzi Ci o automatyczne edytowanie pliku przy pomocy edytora.
To zbyt skomplikowane. Można prościej, z terminala edytować plik i wyświetlić.
Do automatycznego klikania to służą różne auto-klikery które były pisane w Pythonie kiedyś i pod Linuxem teraz ciężko znaleźć.
Można też wymusić klikanie przy pomocy komendy xdotool, tylko wspomniałem że do edycji pliku to zbędne.
8.3 Zanim zaczniesz używać skryptu bash z root to polecam stworzyć sobie folder np. dev lub test
i tam skopiować plik konfiguracyjny i na nim testować.
Może taki przykład
#!/bin/bash
ECHO_ZIELONE(){
echo " "
echo -e "\e[0;32m $@ \e[0m"
echo " "
}
PLIK_GRUBA=$(cat /etc/default/grub)
ECHO_ZIELONE "Tu zobaczysz zawartosc starego pliku:"
while read LINIA ; do
# Wyswietli nam dana linie.
echo "$LINIA"
# Edytujemy linie do własnych potrzeb i zapisujemy do zmiennej "NOWA_LINIA"
if [[ "$LINIA" == 'GRUB_TIMEOUT=10' ]] ; then
NOWA_LINIA="GRUB_TIMEOUT=15"
else
NOWA_LINIA=$(echo "$LINIA")
fi
# Zapisujemy pojawiajace sie nowe linie do zmiennej NOWE_LINIE
NOWE_LINIE=$(echo -e "${NOWE_LINIE}\n${NOWA_LINIA}")
done <<< "$PLIK_GRUBA"
# Usuniecie pustej linii na poczatku
NOWE_LINIE=$(grep -v -e '^$' <<< "$NOWE_LINIE")
echo " "
echo "========="
ECHO_ZIELONE "Tu zobaczysz zawartosc nowego nie zapisanego pliku:"
echo "$NOWE_LINIE"
i powodzenia ! :D
Edytowane.
I staraj się warunkować polecenia np.
Najpierw sprawdzić czy plik istnieje i zakończyć skrypt błędem jeśli plik nie istnieje.
żeby nie okazało się że coś nie działa, a skrypt wykonuje się dalej i nie wiadomo co robi.
Można też użyć sed do edycji plików
przykład
#!/bin/bash
ECHO_ZIELONE(){
echo " "
echo -e "\e[0;32m $@ \e[0m"
echo " "
}
PLIK_GRUBA=$(cat /etc/default/grub)
ECHO_ZIELONE "Tu zobaczysz zawartosc starego pliku:"
echo "$PLIK_GRUBA"
echo " "
echo "========="
ECHO_ZIELONE "Tu zobaczysz zawartosc nowego nie zapisanego pliku:"
echo "$PLIK_GRUBA" | sed 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=15/g'
Lub sed z opcją " i " żeby od razu podmienić wartość w pliku.
Ale to zamieni wszystkie wystąpienia słowa " GRUB_TIMEOUT=10 "
sed -i 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=15/g' nazwa_pliku
Większe możliwości daje
- użycie pętli " while " we wcześniejszym przykładzie w celu dotarcia do konkretnej linii ( bezpieczniejsze )
- lub użycie wyrażeń regularnych, http://mediologia.pl/wyrazenia-regularne/8-1-wyrazenia-regularne-polecenia-grep-sed-find