Użytkownik:Borzole/manr

Z Fedora Wiki

#!/bin/bash
 
# manr - lista stron man z paczki rpm 
# wersja: 2010.01.22
# by borzole.one.pl
#
# użycie: 
# 		manr --help
# ------------------------------------------------------------------------------
# nazwa programu
NAME="${0##*/}"
# czcionka (E) normalna, (B) bold
E="\e[0m" 
B="\e[1;38m" 
# ------------------------------------------------------------------------------
# jakaś pomoc
usage(){
	echo -e "${B}${NAME}${E} - spis stron man wybranej paczki rpm
${B}PARAMETRY:${E}
	${B}<polecenie>${E}
		po wpisaniu dowolnego polecenia wylistuje wszystkie polecenia z paczki RPM
		a po wybraniu numeru wyświtli stronę man
		${B}UWAGA:${E} nie wszystkie polecenia posiadają stronę man
	${B}-r, --rpm <paczka>${E}	
		po wpisaniu dowolnej paczki RPM wylistuje z niej wszystkie strony man
	${B}-h, --help${E}
		wypisuje tę pomoc
${B}PRZYKŁADY:${E}
	${B}${NAME} cp${E}
	${B}${NAME} fdisk${E}
	${B}${NAME} ldd${E}
	${B}${NAME} -r shadow-utils${E}
	${B}${NAME} -r binutils${E}
	${B}${NAME} --rpm yum-utils${E}
	${B}${NAME} --rpm xorg-x11-server-utils${E}	
	${B}${NAME} --rpm xorg-x11-utils${E}	
	${B}${NAME} --rpm xdg-utils${E}			
 
ps. takie molochy jak GNOME, KDE zazwyczaj nie używają już stron man :)"
	exit 0
}
# ------------------------------------------------------------------------------
# rysuje linię
_linia(){
	# domyślnie jest "_", ale może rysować linię ze znaku podanego jako parametr
	znak=${1:-_}
	for i in {1..80}; do echo -en ${znak}; done ; echo
}
# ------------------------------------------------------------------------------
# gdy parametrem jest polecenie
_cmd(){
	CMD=$1
	# z tej paczki poczytamy manuale
	RPM=`rpm -qf $(which $CMD)`	
	_cli
}
# ------------------------------------------------------------------------------
# gdy parametrem jest paczka rpm
_rpm(){
	# z tej paczki poczytamy manuale
	RPM=$1
	_cli
}
# ------------------------------------------------------------------------------
# funkcja główna wyświetlająca spis stron man
_cli(){
	clear
	echo -e "Miłego czytania stron man z paczki ${B} $RPM ${E}"
	_linia \~
	PS3=":: ctrl+d :: wybierz stronę man ::"
	select p in $(rpm -ql $RPM |grep bin/ | awk -F"bin/" '{printf $2 "\n"}' | sort -u ) ; do 
	# to samo ale wyświetla pełne ścieżki do poleceń (nie wiem czemu)
	# select p in `rpm -ql $RPM |grep bin/ `; do
		man $p
	done	
}
# ------------------------------------------------------------------------------
# gdy brak parametrów:
[ $# -eq 0 ] && usage
# obsługa parametrów
if [ $# -gt 0 ]; then
	case "$1" in
		--help | -h )
			usage
			;;
		--rpm | -r )
			_rpm $2
			;;
		*)
			_cmd $1
			;;
   esac
fi
# kod wyjścia ostatniego polecenia
exit $?