Pochwal się swoim projektem/skryptem

Jeśli ktoś programuje lub pisze jakieś ciekawe skrypty i chciałby się pochwalić swoim dziełem, to tu jest właściwe miejsce.

Na początek ja :smiley:

Quoter to prosty skrypcik losujący cytat (aczkolwiek troszkę bardziej rozbudowany niż tylko proste losowanie z zadanej bazy). Ma zarówno wersję konsolową jak i graficzną (z wykorzystaniem kdialog). Jako bonus dorobiłem jeszcze przechwytywanie komunikatów dla błędnie wpisanych komend – działa to na tej samej zasadzie co być może znany niektórym bash-insulter – tylko z tą różnicą, że zamiast obrażać, drukuje losowy cytat. Jeśli ktoś jest zainteresowany, to zapraszam do testów i modyfikacji:

PS. Jak macie pomysły co by tu jeszcze dodać lub poprawić to śmiało, piszcie :wink:

1 polubienie

Bardzo prosty skrypcik podający podstawowe informacje o systemie.
myfetch.sh

#!/bin/bash
clear
yellow='\e[1;33m'
red='\e[1;31m'
blinkRed='\e[05;31m'
white='\e[1;37m'
zielony='\e[1;32m'

# PRZYTNIJ WSZYSTKIE SPACJE Z CIĄGÓW I OBCINAJ SPACJE # 
function trim_all() {
    # Usage: trim_all "   example   string    "
    set -f
    set -- $*
    printf '%s\n' "$*"
    set +f
}

function system() {
	sys_info=$(inxi -S);
	
	system_op=${sys_info#*Distro:};
	
	system_op=${system_op:1:7};
 
	if [ $(trim_all "$system_op") == "Manjaro" ]; then
		system="Manjaro";
	fi
	
	if [ $(trim_all "$system_op") == "Ubuntu" ]; then
		system="Ubuntu";
	fi
	
}

# Sytemyetemie operacyjny
function system_info() {
	system;
	sys_info=$(inxi -S);
	system_op=${sys_info#*Distro:};
	
	if [ $system == "Manjaro" ]; then
		sys_info=$(lsb_release -a);
		versja=${sys_info#*Release:};
		versja=${versja:1:7};
		sys_info=$(lsb_release -a);
		nazwa=${sys_info#*Codename:};
	else
		versja="";
		nazwa="";
	fi
	
	echo -ne "$system_op $versja $nazwa";
}

# Środowisko graficzne 
function xwindows() {
	sys_info=$(inxi -S);
	ixy=${sys_info#*Desktop:};
	ixy=${ixy:1:17};
	echo -ne "$ixy";
}

# CPU - procesor
function cpu() {
	# Polecenie podające pełną informacje o systemie operacyjnym
	sys_info=$(inxi -C);
	word="b";
	# Ustalenie pozycji (indexu) (word) 
	pozycja=$(expr index "$sys_info" "$word");
	# Wycięcie ciągu począwszy od litery (word - 2 znaki)
	cpu=${sys_info:1:pozycja - 2};

	sys_info=$(inxi -C);
	speed=${sys_info#*Speed:};
	speed=${speed:1:31};
	
	echo -ne "C$cpu $speed";
}

# GPU - katra graficzna
function gpu() {
	gpu=$(inxi -Gy 1 | grep "Device-1:" | cut -f2 -d:);
	echo -ne "$gpu";
}

# Rodzdzielczość ekranu 
function res() {
	sys_info=$(inxi -G);
	res=${sys_info#*resolution:};
	res=${res:1:17};
	echo -ne "$res";
}

# Dyski twarde
function dysk() {
	sys_info=$(inxi -d);
	word="I";
	pozycja=$(expr index "$sys_info" "$word")
	dysk=${sys_info:1:pozycja - 4};
	echo -ne "D$dysk";
}

# Swap
function swap() {
	if [ -n "$(swapon --show)" ]; then
		sys_info=$(inxi -j);
		swap=${sys_info#*size:};
		swap=${swap:1:100};
		echo -ne "Size: $swap";
	fi
}

# Inrerfejsy śieciowe - IP LAN i WAN
function lan_wan() {
	sys_info=$(inxi -i);
	lan=${sys_info#*v4:};
	lan=${lan:1:16};

	wan=${sys_info#*WAN IP:};
	wan=${wan:1:16};
	echo -ne "LAN: $lan WAN: $wan";
}

# Pamięć RAM
function ram() {
	sys_info=$(inxi -m);
	ram=${sys_info#*Memory:};
	ram=${ram:1:50};
	echo -ne "$ram";
}

# Temperatura płyty
function temp() {
	sys_info=$(sensors);
	temp=${sys_info#*temp1:};
	temp=${temp:1:50};
	echo -ne "PCI adapter $temp";
}

# Zużywana moc
function power() {
	sys_info=$(sensors);
	power=${sys_info#*power1:};
	power=${power:1:32};
	echo -ne "$power";
}

echo  -e "\r"
echo -ne "${red} Dzisiaj jest:		${zielony}" $(date)
echo  -e "\r"
echo -ne "${red} Czas pracy:		${zielony}" $(uptime -p)
echo  -e "\r"
echo -ne "${red} Nazwa hosta (komputera):${zielony}$USER${yellow}@${zielony}${HOSTNAME:-$(hostname)}"
echo  -e "\r"
echo -ne "${red} Sytem operacyjny:	${zielony}$OSTYPE" $(system_info)
echo  -e "\r"
echo -ne "${red} Jądro:			${zielony}" $(uname -r)
echo  -e "\r"
echo -ne "${red} Wersja powłki:		${zielony}$BASH ${BASH_VERSINFO[@]}"
echo  -e "\r"
echo -ne "${red} Architektóra komputera:${zielony}$HOSTTYPE"
echo  -e "\r"
echo -ne "${red} Środowisko graficzne:	${zielony}" $(xwindows)
echo  -e "\r"
echo -ne "${red} CPU:			${zielony}" $(cpu)
echo  -e "\r"
echo -ne "${red} GPU:			${zielony}" $(gpu)
echo  -e "\r"
echo -ne "${red} Rodzdzielczość:	${zielony}" $(res)
echo  -e "\r"
echo -ne "${red} Użycie dysków:		${zielony}" $(dysk)
echo  -e "\r"
if [ -n "$(swapon --show)"  ]; then
	echo -ne "${red} Użycie swap:		${zielony}" $(swap)
	echo  -e "\r"
fi
echo -ne "${red} Pamięć:		${zielony}" $(ram)
echo  -e "\r"
echo -ne "${red} IP adres:		${zielony}" $(lan_wan)
echo  -e "\r"
echo -ne "${red} Temperatura:		${zielony}" $(temp)
echo  -e "\r"
echo -ne "${red} Używana moc:		${zielony}" $(power)
echo  -e "\r"
echo -ne "${red} Bierzący latalog:	${zielony}$PWD"
echo  -e "\r"
echo -ne "${red} Ten sktypt:		${yellow}\"${0##*/}\" "
echo  -e "\r"

echo -e "\e[m" # Resetowanie ustawień kolorów

Fajny skrypcik, choć ja bym to rozwiązał trochę inaczej, na przykład info o karcie graficznej (i pozostałe informacje z inxi) wyciągnąłbym w ten sposób:

[tomek@tomek ~]$ inxi -Gy 1 | grep "Device-1:" | cut -f2 -d:
 Intel 4th Gen Core Processor Integrated Graphics

Twój skrypt ucina na d w Integrated, więc niestety całej nazwy nie pokazuje. Przydałoby się też dorobić kilka warunków, żeby pomijał wyświetlanie informacji, których nie ma (albo dodawał jakąś adnotację), ja np. nie korzystam ze swapu i z twojego skryptu wyciągam taką dziwną informację:

 Użycie swap:            Size: wap: Alert: No Swap data was found.

Poza tym na zsh skrypt pokazuje, że korzystam z basha, należy to poprawić i zmienić

$BASH ${BASH_VERSINFO[@]}

na

$($SHELL --version)

Gdybyś to uwzględnił skrypt byłby znacznie bardziej uniwersalny :wink:

Dzięki za sugestie, z pewnością je uwzględnię. Programuję w bash-u stosunkowo od nie dawna i ciągle się uczę.

Poprawki wprowadzone

To ja cię zaskoczę, bo też nie mam w tym dużego doświadczenia :slight_smile: Quoter to chyba mój pierwszy skrypt dłuższy niż kilkanaście linijek.

forum.manjaro.pl - polskie wsparcie Manjaro. Hostowane przez: vpsadmin - hosting Discourse