- Linux
- OpenBSD
- FreeBSD
- Solaris
- bash/shell
- » ab
- » arp
- » arping
- » awk
- » bzip2, bunzip2, bzip2re...
- » chcase
- » chkconfig
- » chmod
- » chown
- » comm
- » convert
- » cat
- » cp
- » cpio
- » cryptsetup
- » curl
- » date
- » diff
- » dig
- » dumpe2fs
- » e2fsck(fsck.{ext2,ext3})
- » eval
- » exportfs
- » file
- » find
- » ftp
- » fuser
- » getfacl
- » grep, egrep, fgrep
- » grub
- » gzip, gunzip
- » hdparm
- » head
- » host
- » ifconfig
- » ifenslave
- » import
- » ionice
- » ip
- » ipcs, ipcrm
- » kill
- » ldconfig
- » ld
- » ldd
- » less
- » locale
- » locate
- » losetup
- » ls
- » lsmod
- » lsof
- » man
- » mke2fs(mkfs.{ext2,ext3})
- » mkinitrd
- » mknod
- » mkswap
- » modinfo
- » modprobe
- » mount
- » mtr
- » mv
- » mysql
- » mysqladmin
- » mysqldump
- » netstat
- » netstat-nat
- » nice
- » nc
- » nm
- » nslookup
- » objdump
- » openssl
- » parted
- » patch
- » perl
- » pg_dump
- » pidof
- » ping
- » pkg-config
- » ps
- » psql
- » rar
- » readelf
- » renice
- » rm
- » rmmod
- » route
- » rpcinfo
- » rpm
- » rsync
- » screen
- » sed
- » sendmail
- » seq
- » setfacl
- » sfdisk
- » showmount
- » shred
- » smartctl
- » smbclient
- » smbget
- » smbpasswd
- » socat
- » sort
- » sox
- » split
- » ssh
- » ssh-keygen
- » stat
- » stdbuf
- » strace
- » svn, svnadmin
- » systool
- » tail
- » tar
- » tcpdump
- » top
- » tr
- » tracepath
- » traceroute
- » tune2fs
- » udevcontrol, udevadm
- » unclutter
- » uniq
- » unzip
- » uuencode, uudecode
- » vim
- » vncviewer
- » vnstat
- » wc
- » wget
- » wput
- » xargs
- » xhost
- » xprop
- » xrandr
- » xwd
- » xxd
- » yum
- » zip, zip{cloak,note,split}
- KDE
- GTK
CONTENT
- CHANGES
Szukaj
#top bash/shell¶
- bash/shell
- BASH / EMACS - skróty klawiaturowe
- Przesuwanie
- Kasowanie
- Przesuwanie (visual)
- ENVIRONMENT
- HISTCONTROL
- HISTSIZE
- HISTFILE
- HISTFILESIZE
- HISTIGNORE
- HOSTFILE
- prompt
- display environment variables
- builtins command
- trap
- eval
- set
- special variables
- __FILE__ + __LINE__
- process pid current (mypid)
- process pid in background
- process exit status
- app exit status
- app call self
- app args all
- app args count
- app args get
- app args parse
- app args validate
- app args options
- read lines from stdin
- IF - warunki
- test - check file types and compare values
- value operations
- arithmetic
- floating points aritmetic
- string
- colors
- arrays
#top BASH / EMACS - skróty klawiaturowe¶
CTRL + R
- reverse search (przeszukiwanie w historii poleceń: wpisujemy litery i wyszukujemy polecenie pasujące do wpisanych liter)CTRL + A
- przesunięcie kursora na początek liniiCTRL + B
- przesunięcie kursora o jeden znak w lewoCTRL + D
- usunięcie znaku z pozycji kursora (jak klawisz DELETE)CTRL + H
- usunięcie znaku na lewo od kursora (jak klawisz BACKSPACE)CTRL + V
- używany do wprowadzania znaków kontrolnych informujących powłokę że następny znak jest literą, a nie poleceniemCTRL + K
- usunięcie znaków z pozycji kursora do końca linii, usuwane znaki kopiowane sa do bufora skąd moga być póżniej wklejaneCTRL + U
- usunięcie znaków przed kursorem, od początu linii, usuwane znaki kopiowane są do buforaCTRL + E
- przesunięcie kursora na koniec liniiCTRL + W
- usunięcie słowa na lewo od kursoraCTRL + Y
- wstawienie znaków z bufora (tak jak polecenie yank)ESC + <
- wyświetlenie pierwszej pozycji z bufora poleceńESC + >
- wyświetlenie ostatniej linii z pozycji buforan poleceńESC + b
- przesunięcie kursora o jedno słowo w lewoESC + d
- usunięcie słowa na prawo od kursoraESC + f
- przesunięcie kursora o jedno słowo w prawo###(not working)
ESC + DEL
- usunięcie słowa na lewo od kursora#top Przesuwanie¶
CTRL+A | CTRL+E - początek | koniec ALT+B | ALT+F - słowo w lewo | słowo w prawo
#top Kasowanie¶
CTRL+D | ALT+D - znak | słowo CTRL+U | CTRL+K - znaki po lewej | znaki po prawej CTRL+H | CTRL+W - znak po lewej | słowo po lewej
#top Przesuwanie (visual)¶
========== ========== ========== ========== | | || | | CTRL+A ALT+B ALT+F CTRL+E +---------------------+-------------------+ | | | +---------------------+-------------------+
#top ENVIRONMENT¶
#top HISTCONTROL¶
HISTCONTROL="ignoredups"
Jeżeli posiada wartość ignorespace, to wiersze rozpoczynające się od znaku spacji nie są wprowadzane do listy historii. Jeśli posiada wartość ignoredups, to wiersze pasujące do ostatniego wiersza historii nie są wprowadzane. Wartość ignoreboth łączy obie te możliwości.
#top HISTSIZE¶
HISTSIZE="10000"
Liczba poleceń do zapamiętania w historii poleceń (zobacz HISTORIA poniżej). Wartością domyślną jest 500.
#top HISTFILE¶
HISTFILE=~/.bash_history
Nazwa pliku, w którym zachowywana jest historia poleceń (zobacz HISTORIA poniżej). Wartością domyślną jest ~/.bash_history. Jeśli ustawienie tej zmiennej zostanie skasowane, to historia poleceń nie będzie zachowana po zakończeniu pracy powłoki interaktywnej.
#top HISTFILESIZE¶
HISTFILESIZE=500
Maksymalna liczba wierszy zawartych w pliku historii. Podczas przypisywania wartości tej zmiennej, jeżeli jest to niezbędne, plik historii jest obcinany tak, by nie zawierał więcej wierszy. Domyślną wartością jest 500. Plik historii jest także obcinany do tego rozmiaru po zapisaniu go w czasie kończenia pracy przez powłokę interaktywną.
#top HISTIGNORE¶
HISTIGNORE
Lista rozdzielonych dwukropkami wzorców służących do decydowania, jakie wiersze poleceń powinny być zachowane w liście historii. Każdy z wzorców zakotwiczony jest na początku wiersza i musi pasować do całego wiersza (nie jest dodawane żadne niejawne '*'). Każdy z wzorców sprawdzany jest z bieżącym wierszem po wykonaniu kontroli określonych przez HISTCONTROL. Oprócz zwykłych znaków dopasowywania wzorców używanych przez powłokę, '&' dopasowuje poprzedni wiersz historii. Literał '&' można uzyskać poprzedzając go odwrotnym ukośnikiem; odwrotny ukośnik jest usuwany przed próbą dopasowania. Druga i kolejne wiersze złożonego polecenia wielowierszowego nie są sprawdzane i są dodawane do historii bez względu na wartość HISTIGNORE.
#top HOSTFILE¶
HOSTFILE=/etc/hosts
Zawiera nazwę pliku o tym samym formacie co /etc/hosts który pownien być czytany, gdy powłoka potrzebuje uzupełnić nazwę hosta. Listę możliwych uzupełnień można zmieniać podczas pracy powłoki. Następnym razem, gdy wykonywana jest próba uzupełnienia nazwy hosta bash dodaje zawartość nowego pliku do już istniejącej listy. Jeżeli HOSTFILE jest ustawione, ale nie posiada wartości, bash usiłuje uzyskać listę możliwych uzupełnień nazw hostów czytając /etc/hosts Gdy HOSTFILE jest unieważniane, lista hostów jest czyszczona.
example usage:
export HOSTFILE=/etc/hosts
ssh login@ <[press-tab-key-twice-to-see-sugest]>
scp login@ <[press-tab-key-twice-to-see-sugest]>
rsync login@ <[press-tab-key-twice-to-see-sugest]>
#top prompt¶
prompt - PROMPTING
When executing interactively, bash displays the primary prompt
PS1
when it is ready to read a command, and the secondary prompt PS2
when it needs more input to complete a command.Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
\a
an ASCII bell character (07)\d
the date in "Weekday Month Date" format (e.g., "Tue May 26")\D{format}
the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required\e
an ASCII escape character (033)\h
the hostname up to the first '.'\H
the hostname\j
the number of jobs currently managed by the shell\l
the basename of the shell's terminal device name\n
newline\r
carriage return\s
the name of the shell, the basename of $0 (the portion following the final slash)\t
the current time in 24-hour HH:MM:SS format\T
the current time in 12-hour HH:MM:SS format\@
the current time in 12-hour am/pm format\A
the current time in 24-hour HH:MM format\u
the username of the current user\v
the version of bash (e.g., 2.00)\V
the release of bash, version + patch level (e.g., 2.00.0)\w
the current working directory, with $HOME abbreviated with a tilde\W
the basename of the current working directory, with $HOME abbreviated with a tilde\!
the history number of this command\#
the command number of this command\$
if the effective UID is 0, a #, otherwise a $\nnn
the character corresponding to the octal number nnn\\
a backslash\[
begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt\]
end a sequence of non-printing charactersThe command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the history file (see HISTORY below), while the command number is the position in the sequence of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject to the value of the promptvars shell option (see the description of the shopt command under SHELL BUILTIN COMMANDS below).
default PS1 on RedHat family system: PS1="[\u@\H \W]\$ "
#top display environment variables¶
set env export
#top builtins command¶
#top trap¶
Więcej informacji w analogicznym zagadnieniu: os / bash / trap
#top eval¶
Więcej informacji w analogicznym zagadnieniu: os / bash / eval
#top set¶
Więcej informacji w analogicznym zagadnieniu: os / bash / set
#top special variables¶
#top __FILE__ + __LINE__¶
Equivalent of __FILE__, __LINE__
# FILE=/path/to/shell.sh (absolute path) # FILE=./shell.sh (found in PWD) # FILE=shell.sh (found in PATH) echo FILE=$0 echo LINE=$LINENO # line number echo FILE=${0##*/} # basename
#top process pid current (mypid)¶
pid=$$ # kill self (i.e. bash) kill -9 $$
#top process pid in background¶
ping -W 10 127.0.0.1 >/dev/null & pid=$! echo $pid sleep 5 kill $pid
#top process exit status¶
test - zwraca kod zakończenia 0 (prawda) lub 1 (fałsz) zależnie od wyniku ewaluacji wyrażenia warunkowego
Przykład:
test -e /dev/test; ret=$?; echo "ret=$ret";
ret=1
Przykład:
test -f /dev/null; ret=$?; echo "ret=$ret";
ret=1
Przykład:
test -c /dev/null; ret=$?; echo "ret=$ret";
ret=0
Przykład:
test -b /dev/sda; ret=$?; echo "ret=$ret";
ret=0
#top app exit status¶
Przykład: zawartość pliku
app-status-exit1.sh
. /etc/init.d/functions test -e /dev/zero RETVAL=$? if [ $RETVAL -ne 0 ]; then failure else success fi echo
Sposób wywołania:
sh app-status-exit1.sh

Przykład: zawartość pliku
app-status-exit2.sh
. /etc/init.d/functions test -e /dev/not_existet_dev RETVAL=$? if [ $RETVAL -ne 0 ]; then failure else success fi echo
Sposób wywołania:
sh app-status-exit2.sh

#top app call self¶
Przykład: zawartość pliku
app-call-self.sh
echo $0 echo "$0"
Sposób wywołania:
sh app-call-self.sh
app-call-self.sh app-call-self.sh
Sposób wywołania:
/home/user/app-call-self.sh
/home/user/app-call-self.sh /home/user/app-call-self.sh
#top app args all¶
Przykład: zawartość pliku
app-args-all.sh
echo "\$*=$*" echo "\$@=$@"
Sposób wywołania:
sh app-args-all.sh a b c
$*=a b c $@=a b c
#top app args count¶
Przykład: zawartość pliku
app-args-count.sh
echo $# echo "$#"
Sposób wywołania:
sh app-args-count.sh a b c
3 3
#top app args get¶
Przykład: zawartość pliku
app-args-get.sh
val1=$1 shift val2=$1 shift val3=$1 shift
Sposób wywołania:
sh app-args-get.sh a b c
val1=a val2=b val3=c
#top app args parse¶
Przykład: zawartość pliku
app-args-parse.sh
val1= val2= val3= while [ $# -gt 0 ];do case "$1" in -a) shift val1=$1 shift ;; -b) shift val2=$1 shift ;; -c) shift val3=$1 shift ;; *) break; ;; esac done echo "val1=$val1" echo "val2=$val2" echo "val3=$val3"
Sposób wywołania:
sh app-args-parse.sh -a a b
val1=a val2= val3=
#top app args validate¶
Przykład: zawartość pliku
app-args-validate.sh
val1= val2= val3= while [ $# -gt 0 ];do case "$1" in -a) [ -z "$2" ] && echo "$0 option -a need value" && exit val1=$2 shift shift ;; -b) [ -z "$2" ] && echo "$0 option -b need value" && exit val2=$2 shift shift ;; -c) [ -z "$2" ] && echo "$0 option -c need value" && exit val3=$2 shift shift ;; esac done echo "val1=$val1" echo "val2=$val2" echo "val3=$val3"
Sposób wywołania:
sh app-args-validate.sh -a a -b b -c c
val1=a val2=b val3=c
Sposób wywołania:
sh app-args-validate.sh -a a -b b -c
app-args-validate.sh option -c need value
#top app args options¶
Przykład: zawartość pliku
app-args-options.sh
#!/bin/sh OPTA= OPTB= OPTC= while getopts "a:b:c:" OPTION do echo "OPTION=$OPTION OPTARG=$OPTARG" case "$OPTION" in a) OPTA=$OPTARG ;; b) OPTB=$OPTARG ;; c) OPTC=$OPTARG ;; esac done echo OPTA=$OPTA echo OPTB=$OPTB echo OPTC=$OPTC
Sposób wywołania:
sh app-args-options.sh
OPTA= OPTB= OPTC=
Sposób wywołania:
sh app-args-options.sh -a aaa
OPTION=a OPTARG=aaa OPTA=aaa OPTB= OPTC=
Sposób wywołania:
sh app-args-options.sh -b bbb
OPTION=b OPTARG=bbb OPTA= OPTB=bbb OPTC=
Sposób wywołania:
sh app-args-options.sh -c ccc
OPTION=c OPTARG=ccc OPTA= OPTB= OPTC=ccc
Sposób wywołania:
sh app-args-options.sh -a aaa -b bbb -c ccc
OPTION=a OPTARG=aaa OPTION=b OPTARG=bbb OPTION=c OPTARG=ccc OPTA=aaa OPTB=bbb OPTC=ccc
#top read lines from stdin¶
Przykład:
echo -en "val1\nval2\nval3\n" | while read line;do echo "line=|$line|"; done
line=|val1| line=|val2| line=|val3|
Przykład:
echo -en " val1\nval2 \n val3 \n" | while read line;do echo "line=|$line|"; done
line=|val1| line=|val2| line=|val3|
Przykład:
echo -en " val1\nval2 \n val3 \n" | while IFS='\n' read line;do echo "line=|$line|"; done
line=| val1| line=|val2 | line=| val3 |
Przykład:
echo -en "val1\nval2\nval3\n" | while read;do line=$REPLY; echo "line=|$line|"; done
line=|val1| line=|val2| line=|val3|
Przykład:
echo -en " val1\nval2 \n val3 \n" | while read;do line=$REPLY; echo "line=|$line|"; done
line=| val1| line=|val2 | line=| val3 |
Przykład:
while read line;do echo "line=$line"; done <<< "val1 val2 val3"
line=val1 val2 val3
Przykład:
while read line;do echo "line=$line"; done <<< "val1\nval2\nval3"
line=val1nval2nval3
#top IF - warunki¶
test === [ - man test
Przykład:
val1=value1 val2=value2
Test sprawdzający czy długość łańcucha znaków jest równa zero (pusty ciąg znaków).
if [ -z "$val1" ];then echo "val1=$val1" fi
Test sprawdzający czy długość łańcucha znaków jest większa od zera (nie pusty ciąg znaków).
if [ -n "$val1" ];then echo "val1=$val1" fi
Dwie alternatywne składnie iloczynu
AND
warunków logicznych:if [ -n "$val1" -a -n "$val2" ];then echo "IF&IF:val1=$val1" echo "IF&IF:val2=$val2" fi
if [ -n "$val1" ] && [ -n "$val2" ];then echo "IF&IF:val1=$val1" echo "IF&IF:val2=$val2" fi
Dwie alternatywne składnie sumy
OR
warunków logicznych:if [ -n "$val1" -o -n "$val2" ];then echo "IF|IF:val1=$val1" echo "IF|IF:val2=$val2" fi
if [ -n "$val1" ] || [ -n "$val2" ];then echo "IF|IF:val1=$val1" echo "IF|IF:val2=$val2" fi
Konstrukcja: IF:ELSE
if [ -n "$val1" ];then echo "IFIF:val1=$val1" else echo "ELSE:empty val1" fi
Konstrukcja: IF:ELSE+IF:ELSE
if [ -n "$val3" ];then echo "IFIF:val3=$val3" elif [ -n "$val2" ];then echo "ELIF:val2=$val2" elif [ -n "$val1" ];then echo "ELIF:val1=$val1" else echo "ELSE:empty" fi
#top test - check file types and compare values¶
( EXPRESSION )
- EXPRESSION is true! EXPRESSION
- EXPRESSION is falseEXPRESSION1 -a EXPRESSION2
- both EXPRESSION1 and EXPRESSION2 are trueEXPRESSION1 -o EXPRESSION2
- either EXPRESSION1 or EXPRESSION2 is true-n STRING
- the length of STRING is nonzero, STRING equivalent to -n STRING-z STRING
- the length of STRING is zeroSTRING1 = STRING2
- the strings are equalSTRING1 != STRING2
- the strings are not equalINTEGER1 -eq INTEGER2
- INTEGER1 is equal to INTEGER2INTEGER1 -ge INTEGER2
- INTEGER1 is greater than or equal to INTEGER2INTEGER1 -gt INTEGER2
- INTEGER1 is greater than INTEGER2INTEGER1 -le INTEGER2
- INTEGER1 is less than or equal to INTEGER2INTEGER1 -lt INTEGER2
- INTEGER1 is less than INTEGER2INTEGER1 -ne INTEGER2
- INTEGER1 is not equal to INTEGER2FILE1 -ef FILE2
- FILE1 and FILE2 have the same device and inode numbersFILE1 -nt FILE2
- FILE1 is newer (modification date) than FILE2FILE1 -ot FILE2
- FILE1 is older than FILE2-b FILE
- FILE exists and is block special-c FILE
- FILE exists and is character special-d FILE
- FILE exists and is a directory-e FILE
- FILE exists-f FILE
- FILE exists and is a regular file-g FILE
- FILE exists and is set-group-ID-G FILE
- FILE exists and is owned by the effective group ID-h FILE
- FILE exists and is a symbolic link (same as -L)-k FILE
- FILE exists and has its sticky bit set-L FILE
- FILE exists and is a symbolic link (same as -h)-O FILE
- FILE exists and is owned by the effective user ID-p FILE
- FILE exists and is a named pipe-r FILE
- FILE exists and read permission is granted-s FILE
- FILE exists and has a size greater than zero-S FILE
- FILE exists and is a socket-t FD
- file descriptor FD is opened on a terminal-u FILE
- FILE exists and its set-user-ID bit is set-w FILE
- FILE exists and write permission is granted-x FILE
- FILE exists and execute (or search) permission is granted#top value operations¶
#top arithmetic¶
Przykład:
# Syntax for Arithmetic value=20; let "value = $value + 4"; echo "value=$value"; # 24 value=20; let "value = $value - 4"; echo "value=$value"; # 16 value=20; let "value = $value * 4"; echo "value=$value"; # 80 value=20; let "value = $value / 4"; echo "value=$value"; # 5 value=20; let "value = $value % 4"; echo "value=$value"; # 0 value=20; let "value = $value / 3"; echo "value=$value"; # 6 value=20; let "value = $value % 3"; echo "value=$value"; # 2 value=20; let "value++"; echo "value=$value"; # 21 value=20; let "value--"; echo "value=$value"; # 19 value=20; let "value += 4"; echo "value=$value"; # 24 value=20; let "value -= 4"; echo "value=$value"; # 16 value=20; let "value *= 4"; echo "value=$value"; # 80 value=20; let "value /= 4"; echo "value=$value"; # 5
Przykład:
# Alternative Syntax for Arithmetic value=20; value=$(( value=$value + 4 )); echo "value=$value"; # 24 value=20; value=$(( value=$value - 4 )); echo "value=$value"; # 16 value=20; value=$(( value=$value * 4 )); echo "value=$value"; # 80 value=20; value=$(( value=$value / 4 )); echo "value=$value"; # 5 value=20; value=$(( value=$value % 4 )); echo "value=$value"; # 0 value=20; value=$(( value=$value / 3 )); echo "value=$value"; # 6 value=20; value=$(( value=$value % 3 )); echo "value=$value"; # 2 value=20; value=$(( value++ )); echo "value=$value"; # 20 value=20; value=$(( value-- )); echo "value=$value"; # 20 value=20; value=$(( value+=4 )); echo "value=$value"; # 24 value=20; value=$(( value-=4 )); echo "value=$value"; # 16 value=20; value=$(( value*=4 )); echo "value=$value"; # 80 value=20; value=$(( value/=4 )); echo "value=$value"; # 5
Przykład:
# Alternative Syntax for Arithmetic # which expr # /usr/bin/expr # rpm -qf /usr/bin/expr # coreutils-5.97-19.el5 value=20; value=`expr $value + 4`; echo "value=$value"; # 24 value=20; value=`expr $value - 4`; echo "value=$value"; # 16 value=20; value=`expr $value \* 4`; echo "value=$value"; # 80 value=20; value=`expr $value / 4`; echo "value=$value"; # 5 value=20; value=`expr $value % 4`; echo "value=$value"; # 0 value=20; value=`expr $value / 3`; echo "value=$value"; # 6 value=20; value=`expr $value % 3`; echo "value=$value"; # 2
Przykład:
# condition ? value-if-true : value-if-false value=12; let "result = (value < 15) ? 1 : 0"; echo "value=$value result=$result"; # value=12 result=1 value=18; let "result = (value < 15) ? 1 : 0"; echo "value=$value result=$result"; # value=18 result=0 value=12; let "result = (value > 15) ? 1 : 0"; echo "value=$value result=$result"; # value=12 result=0 value=18; let "result = (value > 15) ? 1 : 0"; echo "value=$value result=$result"; # value=18 result=1 value=12; let "result = (value == 15) ? 1 : 0"; echo "value=$value result=$result"; # value=18 result=1 value=15; let "result = (value == 15) ? 1 : 0"; echo "value=$value result=$result"; # value=15 result=1 value=18; let "result = (value == 15) ? 1 : 0"; echo "value=$value result=$result"; # value=18 result=0
#top floating points aritmetic¶
Przykład:
# floating points aritmetic # which bc # /usr/bin/bc # rpm -qf /usr/bin/bc # bc-1.06-21 echo "36.0 + 1.5" | bc # 37.5 echo "36.0 - 1.5" | bc # 34.5 echo "36.0 * 1.5" | bc # 54.0 echo "36.0 / 1.5" | bc # 21 echo "36.0 % 5" | bc # 1.0 echo "38.0 % 5" | bc # 3.0
#top string¶
Przykład:
# basename NAME=`basename $0` echo $NAME NAME=${0##*/} echo $NAME
bash
Przykład:
# Find the name of the script NAME=`basename $0` if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ] then NAME=${NAME:3} fi echo $NAME
bash
Przykład:
Definicja znajdująca się w skrypcie startowym w pliku
/etc/rc.d/init.d/functions
:# returns OK if $1 contains $2 strstr() { [ "${1#*$2*}" = "$1" ] && return 1 return 0 }
sh -c ' strstr() { [ "${1#*$2*}" = "$1" ] && return 1; return 0; }; if strstr "ro root=LABEL=/" "ro" ;then echo "OK"; else echo "NOK"; fi ' sh -c ' strstr() { [ "${1#*$2*}" = "$1" ] && return 1; return 0; }; if strstr "ro root=LABEL=/" "rw" ;then echo "OK"; else echo "NOK"; fi '
OK NOK
Przykład:
# substr NAME=S12syslog echo ${NAME:3} # syslog echo ${NAME:0:1} # S
syslog S
Przykład:
# regexp: cut patter at the begin NAME=S12syslog echo ${NAME#S12} # syslog NAME=/etc/rc5.d/S12syslog echo ${NAME#/etc/rc5.d/} # S12syslog echo ${NAME#/etc/rc*.d/} # S12syslog echo ${NAME##*/} # S12syslog
syslog S12syslog S12syslog S12syslog
Przykład:
# regexp: cut pattern at the end NAME=ip6tables echo ${NAME%tables} # ip6 NAME=iptables echo ${NAME%tables} # ip # regexp: cut from pattern to end NAME=ip6tables echo ${NAME%tab*} # ip6 NAME=iptables echo ${NAME%tab*} # ip
ip6 ip ip6 ip
Przykład:
DBCONN="10.41.0.50" DBCONN="$DBCONN:" DBHOST=${DBCONN%:*} DBHOST=${DBHOST%:*} DBPORT=${DBCONN#*:} DBPORT=${DBPORT%*:} DBPORT=${DBPORT:-3306}; echo $DBPORT echo "DBHOST=$DBHOST DBPORT=$DBPORT" # DBHOST=10.41.0.50 DBPORT=3306 DBCONN="10.41.0.50:" DBCONN="$DBCONN:" DBHOST=${DBCONN%:*} DBHOST=${DBHOST%:*} DBPORT=${DBCONN#*:} DBPORT=${DBPORT%*:} DBPORT=${DBPORT:-3306} echo "DBHOST=$DBHOST DBPORT=$DBPORT" # DBHOST=10.41.0.50 DBPORT=3306 DBCONN="10.41.0.50:1234" DBCONN="$DBCONN:" DBHOST=${DBCONN%:*} DBHOST=${DBHOST%:*} DBPORT=${DBCONN#*:} DBPORT=${DBPORT%*:} DBPORT=${DBPORT:-3306} echo "DBHOST=$DBHOST DBPORT=$DBPORT" # DBHOST=10.41.0.50 DBPORT=1234
DBHOST=10.41.0.50 DBPORT=3306 DBHOST=10.41.0.50 DBPORT=3306 DBHOST=10.41.0.50 DBPORT=1234
Przykład:
# str_replace NAME=S12syslog echo ${NAME/[0-9]*/00} # S00 echo ${NAME//[0-9]/} # Ssyslog echo ${NAME//[0-9]/0} # S00syslog echo ${NAME/[0-9][0-9]/01} # S01syslog # str_replace NAME=$HOSTNAME echo ${NAME/./_} # xnd_nat.wbcd.pl - replaces only 1st instance in a line echo ${NAME//./_} # xnd_nat_wbcd_pl - replaces ALL instances in a line
S00 Ssyslog S00syslog S01syslog xnd_nat.wbcd.pl xnd_nat_wbcd_pl
Przykład:
NAME= NAME=${NAME:-default} echo $NAME # default
default
Przykład:
unset NAME name=${NAME-empty} echo $name # empty
empty
Przykład:
# replace NAME= echo ${NAME+bash} # bash NAME=bash echo ${NAME+bash} # bash NAME= echo ${NAME+shell} # shell NAME=bash echo ${NAME+shell} # shell
bash bash shell shell
#top colors¶
Przykład:
MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING="echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \\033[0;39m" echo -n "[ ";${SETCOLOR_SUCCESS};echo -n "OK";${SETCOLOR_NORMAL};echo -n " ]";echo echo -n "[ ";${SETCOLOR_FAILURE};echo -n "NOK";${SETCOLOR_NORMAL};echo -n " ]";echo echo -n "[ ";${SETCOLOR_WARNING};echo -n "WARN";${SETCOLOR_NORMAL};echo -n " ]";echo

Przykład:
SUCCESS_COLOR="\\033[1;32m" FAILURE_COLOR="\\033[1;31m" WARNING_COLOR="\\033[1;33m" NORMAL_COLOR="\\033[0;39m" echo -e "[ ${SUCCESS_COLOR} OK ${NORMAL_COLOR} ]" echo -e "[ ${FAILURE_COLOR} NOK ${NORMAL_COLOR} ]" echo -e "[ ${WARNING_COLOR} WARN ${NORMAL_COLOR} ]"

#top arrays¶
ARRAY=( "cow:moo" "dinosaur:roar" "bird:chirp" "bash:rock" ) echo "rows[@] =${ARRAY[@]}" echo "keys[@] =${ARRAY[@]%%:*}" echo "values[@]=${ARRAY[@]##*:}" for row in ${ARRAY[@]} ; do KEY=${row%%:*} VALUE=${row##*:} echo "$KEY=$VALUE" done
equal as below
ARRAY=() ARRAY[0]="cow:moo" ARRAY[1]="dinosaur:roar" ARRAY[2]="bird:chirp" ARRAY[3]="bash:rock" echo "rows[@] =${ARRAY[@]}" echo "keys[@] =${ARRAY[@]%%:*}" echo "values[@]=${ARRAY[@]##*:}" for row in ${ARRAY[@]} ; do KEY=${row%%:*} VALUE=${row##*:} echo "$KEY=$VALUE" done
Zmodyfikowany ostatnio: 2017/12/02 14:58:50 (7 lat temu),
textsize: 26,8 kB,
htmlsize: 59,7 kB
Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników