0% Status

bash

Z Wikibooks, biblioteki wolnych podręczników.
(Przekierowano z BASH)
Przejdź do nawigacji Przejdź do wyszukiwania

Wstęp[edytuj]

odmiany[edytuj]

  • POSIX shell (sh)
  • Bourne shell (sh)
  • Korn shell (ksh)
  • Bourne Again shell (bash)
  • Z shell (zsh)
  • Debian Almquist shell (dash)

Dokumentacja[edytuj]

Za pomocą polecenia:[1]

man bash

uzyskamy wersję dokumentacji:

  • aktualną (odpowiednią dla zainstalowanej wersji Basha)
  • nie wymagającą dostępu do sieci (ang. offline)

Online:

  • explainshell [2]
  • dokumentacja w3cub[3]

Metaznaki[edytuj]

Metaznaki basha: [4][5]

  • ;
  • &
  • (
  • )
  • |
  • <
  • >
  • nl (nowa linia)
  • spacja (odstęp)
  • TAB
  • \ ( backslash)

Backslash[edytuj]

Ma dwa znaczenia

  • zapobiega interpretacji następnego znaku (ang. escape character). Jest to jedna z 3 metod [6]
  • pozwala na dzielenie długiego polecenia na kilka linii (ang. a line continuation character ). Składnia : <backslash><newline>
$       echo "continuation"\
>       "lines"
continuation lines

Wyrażenie regularne[edytuj]

wyrażenia regularne Bash ( Bash Regular Expressions = BRE)



Klasy znaków ( character classes) wyrażeń regularnych Bash ( Bash Regular Expressions = BRE)[7]

  • [[:alpha:]] - matches any alphabetic character written in upper or lower case.
  • [[:alnum:]]- matches any alphanumeric character - namely, the characters in the range 0-9, A-Z, a-z.
  • [[:blank:]] - matches a space and a tab character.
  • [[:digit:]]- any numeric character from 0to 9.
  • [[:upper:]]- uppercase alphabetic characters - A-Z.
  • [[:lower:]]- alphabetic characters in lower case - a-z.
  • [[:print:]] - matches any printable character.
  • [[:punct:]] - matches punctuation marks.
  • [[:space:]]- whitespace, in particular - a space, a tab character, characters NL, FF, VT, CR.

wersja[edytuj]

Sprawdzamy wersję BASH'a:

 /bin/bash --version
 GNU bash, version 4.2.8(1)-release (x86_64-pc-linux-gnu)
 Copyright (C) 2011 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

 This is free software; you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.

lub:

dpkg -s bash | grep Version

wynik:

Version: 4.2-5ubuntu3

Bezpieczeństwo[edytuj]

Sprawdzamy czy nasza wersja jest nieodporna na CVE-2014-6271: [8]

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

Argumenty[edytuj]


Przekazywanie argumentów ( ang. command substitution)[9]

 sudo apt install linux-headers-$(uname -r)

lub

 $ sudo apt install linux-headers-'uname -r'

Opcje[edytuj]

Opcje Basha [10].

Dodanie flagi "-x" pozwala zobaczyć co dokładnie skrypt robi:

   #!/bin/bash -x

Polecenie shopt drukuje ustawienia[11]

 shopt -o

zmienne[edytuj]

Wymień wszystkie zadeklarowane zmienne, ich atrybuty i ich wartości

 declare -p

Przykładowy wynik

declare -- BASH="/usr/bin/bash"
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:progcomp:promptvars:sourcepath"
declare -i BASHPID
declare -A BASH_ALIASES=()
declare -a BASH_ARGC=([0]="0")
declare -a BASH_ARGV=()
declare -- BASH_ARGV0
declare -A BASH_CMDS=()
declare -- BASH_COMMAND
declare -a BASH_COMPLETION_VERSINFO=([0]="2" [1]="11")
declare -a BASH_LINENO=()
declare -a BASH_SOURCE=()
declare -- BASH_SUBSHELL
declare -ar BASH_VERSINFO=([0]="5" [1]="1" [2]="8" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
declare -- BASH_VERSION="5.1.8(1)-release"
declare -x COLORTERM="truecolor"
declare -- COLUMNS="282"
declare -- COMP_WORDBREAKS
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x DESKTOP_SESSION="ubuntu"
declare -a DIRSTACK=()
declare -x DISPLAY=":1"
declare -- EPOCHREALTIME
declare -- EPOCHSECONDS
declare -ir EUID="1000"
declare -a FUNCNAME
declare -x GDMSESSION="ubuntu"
declare -x GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
declare -x GNOME_SHELL_SESSION_MODE="ubuntu"
declare -x GNOME_TERMINAL_SCREEN="/org/gnome/Terminal/screen/0d475444_f264_4d18_b211_b17d05380607"
declare -x GNOME_TERMINAL_SERVICE=":1.222"
declare -x GPG_AGENT_INFO="/run/user/1000/gnupg/S.gpg-agent:0:1"
declare -a GROUPS=()
declare -x GTK_MODULES="gail:atk-bridge"
declare -x G_ENABLE_DIAGNOSTIC="0"
declare -i HISTCMD
declare -- HISTCONTROL="ignoreboth"
declare -- HISTFILE="/home/a/.bash_history"
declare -- HISTFILESIZE="2000"
declare -- HISTSIZE="1000"
declare -x HOME="/home/a"
declare -- HOSTNAME="zalman"
declare -- HOSTTYPE="x86_64"
declare -- IFS=" 	
"
declare -x IM_CONFIG_PHASE="1"
declare -x INVOCATION_ID="bad815f656bd47a98d70b4503a7ac633"
declare -x JOURNAL_STREAM="8:183513"
declare -x LANG="pl_PL.UTF-8"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -- LINENO
declare -- LINES="75"
declare -x LOGNAME="a"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"
declare -- MACHTYPE="x86_64-pc-linux-gnu"
declare -i MAILCHECK="60"
declare -x MANAGERPID="1694"
declare -x OLDPWD
declare -- OPTERR="1"
declare -i OPTIND="1"
declare -- OSTYPE="linux-gnu"
declare -x PATH="/home/a/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin"
declare -a PIPESTATUS=([0]="0")
declare -ir PPID="51393"
declare -- PS1="\\[\\e]0;\\u@\\h: \\w\\a\\]\${debian_chroot:+(\$debian_chroot)}\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\\$ "
declare -- PS2="> "
declare -- PS4="+ "
declare -x PWD="/home/a/Dokumenty/mandelbrot_planes/temp/l0"
declare -x QT_ACCESSIBILITY="1"
declare -x QT_IM_MODULE="ibus"
declare -i RANDOM
declare -- SECONDS
declare -x SESSION_MANAGER="local/zalman:@/tmp/.ICE-unix/1906,unix/zalman:/tmp/.ICE-unix/1906"
declare -x SHELL="/bin/bash"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -x SHLVL="1"
declare -i SRANDOM
declare -x SSH_AGENT_LAUNCHER="gnome-keyring"
declare -x SSH_AUTH_SOCK="/run/user/1000/keyring/ssh"
declare -x SYSTEMD_EXEC_PID="51393"
declare -x TERM="xterm-256color"
declare -ir UID="1000"
declare -x USER="a"
declare -x USERNAME="a"
declare -x VTE_VERSION="6402"
declare -x WINDOWPATH="2"
declare -x XAUTHORITY="/run/user/1000/gdm/Xauthority"
declare -x XDG_CONFIG_DIRS="/etc/xdg/xdg-ubuntu:/etc/xdg"
declare -x XDG_CURRENT_DESKTOP="ubuntu:GNOME"
declare -x XDG_DATA_DIRS="/usr/share/ubuntu:/home/a/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop"
declare -x XDG_MENU_PREFIX="gnome-"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_CLASS="user"
declare -x XDG_SESSION_DESKTOP="ubuntu"
declare -x XDG_SESSION_TYPE="x11"
declare -x XMODIFIERS="@im=ibus"
declare -- _="sorted_files"
declare -- __git_printf_supports_v="yes"
declare -- _backup_glob="@(#*#|*@(~|.@(bak|orig|rej|swp|dpkg*|rpm@(orig|new|save))))"
declare -A _xspecs=([tex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [freeamp]="!*.@(mp3|og[ag]|pls|m3u)" [gqmpeg]="!*.@(mp3|og[ag]|pls|m3u)" [texi2html]="!*.texi*" [hbpp]="!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [lowriter]="!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)" [rpm2cpio]="!*.[rs]pm" [localc]="!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)" [hbrun]="!*.[Hh][Rr][Bb]" [vi]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [latex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [view]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [madplay]="!*.mp3" [compress]="*.Z" [pdfjadetex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [pbunzip2]="!*.?(t)bz?(2)" [lrunzip]="!*.lrz" [gunzip]="!*.@(Z|[gGd]z|t[ag]z)" [oowriter]="!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)" [epiphany]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [acroread]="!*.[pf]df" [znew]="*.Z" [kwrite]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [xemacs]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [gview]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [lzfgrep]="!*.@(tlz|lzma)" [lzless]="!*.@(tlz|lzma)" [cdiff]="!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))" [zipinfo]="!*.@(zip|[aegjswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl)" [pdflatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [portecle]="!@(*.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|p7b|pkipath|pem|p10|csr|crl)|cacerts)" [modplugplay]="!*.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)" [lokalize]="!*.po" [lbzcat]="!*.?(t)bz?(2)" [qiv]="!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)" [totem]="!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))" [ps2pdfwr]="!*.@(?(e)ps|pdf)" [dvitype]="!*.dvi" [unpigz]="!*.@(Z|[gGdz]z|t[ag]z)" [mozilla]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [pdfunite]="!*.pdf" [gpdf]="!*.[pf]df" [texi2dvi]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [bunzip2]="!*.?(t)bz?(2)" [zathura]="!*.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)" [kaffeine]="!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))" [mpg123]="!*.mp3" [lzegrep]="!*.@(tlz|lzma)" [xv]="!*.@(gif|jp?(e)g?(2)|j2[ck]|jp[2f]|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|?(e)ps)" [xdvi]="!*.@(dvi|DVI)?(.@(gz|Z|bz2))" [xfig]="!*.fig" [xpdf]="!*.@(pdf|fdf)?(.@(gz|GZ|bz2|BZ2|Z))" [oobase]="!*.odb" [xelatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [gharbour]="!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [bzcat]="!*.?(t)bz?(2)" [dragon]="!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))" [xanim]="!*.@(mpg|mpeg|avi|mov|qt)" [lualatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [rgview]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [rvim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [xetex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lomath]="!*.@(sxm|smf|mml|odf)" [zcat]="!*.@(Z|[gGd]z|t[ag]z)" [lynx]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [uncompress]="!*.Z" [xzcat]="!*.@(?(t)xz|tlz|lzma)" [vim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [loimpress]="!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)" [dvipdf]="!*.dvi" [mpg321]="!*.mp3" [jadetex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lobase]="!*.odb" [epdfview]="!*.pdf" [ps2pdf14]="!*.@(?(e)ps|pdf)" [ps2pdf13]="!*.@(?(e)ps|pdf)" [ps2pdf12]="!*.@(?(e)ps|pdf)" [poedit]="!*.po" [luatex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [kbabel]="!*.po" [bzme]="!*.@(zip|z|gz|tgz)" [dviselect]="!*.dvi" [realplay]="!*.@(rm?(j)|ra?(m)|smi?(l))" [kdvi]="!*.@(dvi|DVI)?(.@(gz|Z|bz2))" [elinks]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [kghostview]="!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [gtranslator]="!*.po" [unzip]="!*.@(zip|[aegjswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl)" [ggv]="!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [oomath]="!*.@(sxm|smf|mml|odf)" [dvipdfmx]="!*.dvi" [makeinfo]="!*.texi*" [okular]="!*.@(okular|@(?(e|x)ps|?(E|X)PS|[pf]df|[PF]DF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb?(2)|FB?(2)|mobi|MOBI|g3|G3|chm|CHM)?(.?(gz|GZ|bz2|BZ2|xz|XZ)))" [sxemacs]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [aviplay]="!*.@(avi|asf|wmv)" [rgvim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [dvipdfm]="!*.dvi" [ly2dvi]="!*.ly" [oodraw]="!*.@(sxd|std|sda|sdd|?(f)odg|otg)" [kpdf]="!*.@(?(e)ps|pdf)" [bibtex]="!*.aux" [netscape]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [emacs]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [rview]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [galeon]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [dillo]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [fbxine]="!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))" [oocalc]="!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)" [harbour]="!*.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [lodraw]="!*.@(sxd|std|sda|sdd|?(f)odg|otg)" [dvips]="!*.dvi" [ps2pdf]="!*.@(?(e)ps|pdf)" [kate]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [kid3-qt]="!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)" [pdftex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [gvim]="*.@([ao]|so|so.!(conf|*/*)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [timidity]="!*.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)" [ogg123]="!*.@(og[ag]|m3u|flac|spx)" [lzgrep]="!*.@(tlz|lzma)" [ee]="!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)" [unlzma]="!*.@(tlz|lzma)" [lbunzip2]="!*.?(t)bz?(2)" [ooimpress]="!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)" [xine]="!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))" [amaya]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [gv]="!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [kid3]="!*.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)" [lilypond]="!*.ly" [modplug123]="!*.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)" [pbzcat]="!*.?(t)bz?(2)" [unxz]="!*.@(?(t)xz|tlz|lzma)" [playmidi]="!*.@(mid?(i)|cmf)" [lzcat]="!*.@(tlz|lzma)" [slitex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [aaxine]="!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))" [advi]="!*.dvi" [lzmore]="!*.@(tlz|lzma)" )



Zmienne środowiskowe[edytuj]

Opis [12][13]

Wyświetlamy:

printenv

przykładowy wynik:


XDG_VTNR=7
SSH_AGENT_PID=1385
XDG_SESSION_ID=c1
GEDIT_CURRENT_DOCUMENT_TYPE=text/plain
CLUTTER_IM_MODULE=xim
SESSION=ubuntu
GPG_AGENT_INFO=/run/user/1000/keyring-iaC4kY/gpg:0:1
TERM=xterm
VTE_VERSION=3406
XDG_MENU_PREFIX=gnome-
GEDIT_DOCUMENTS_PATH=/home/a/drop.sh /home/a/Pobrane/maximus-book/code/bin/mandelbrot_external_ray_out.c /home/a/Pobrane/maximus-book/code/README
SHELL=/bin/bash
GEDIT_CURRENT_LINE=text `echo       "-0.75  0.01"| ./rescale 53 53 $view 0` -0.75+0.01i
WINDOWID=71303676
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/1295
GNOME_KEYRING_CONTROL=/run/user/1000/keyring-iaC4kY
GTK_MODULES=overlay-scrollbar:unity-gtk-module
GEDIT_CURRENT_DOCUMENT_SCHEME=file
USER=a
JRE_HOME=/usr/local/java/jre1.7.0_45
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/run/user/1000/keyring-iaC4kY/ssh
GEDIT_CURRENT_DOCUMENT_NAME=README
SESSION_MANAGER=local/zalman:@/tmp/.ICE-unix/1437,unix/zalman:/tmp/.ICE-unix/1437
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
GEDIT_CURRENT_WORD=i
DESKTOP_SESSION=ubuntu
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/a/bin:/usr/local/java/jdk1.7.0_45/bin:/home/a/bin:/usr/local/java/jre1.7.0_45/bin
GEDIT_CURRENT_DOCUMENT_DIR=/home/a/Pobrane/maximus-book/code
PWD=/home/a/Pobrane/maximus-book/code
JOB=dbus
XMODIFIERS=@im=ibus
JAVA_HOME=/usr/local/java/jdk1.7.0_45
LANG=pl_PL.UTF-8
GDM_LANG=pl
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
GEDIT_CURRENT_LINE_NUMBER=13
UBUNTU_MENUPROXY=1
COMPIZ_CONFIG_PROFILE=ubuntu
IM_CONFIG_PHASE=1
GDMSESSION=ubuntu
SESSIONTYPE=gnome-session
SHLVL=1
HOME=/home/a
XDG_SEAT=seat0
LANGUAGE=pl
GEDIT_CURRENT_DOCUMENT_PATH=/home/a/Pobrane/maximus-book/code/README
GEDIT_CWD=/home/a
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
UPSTART_INSTANCE=
UPSTART_EVENTS=started xsession
LOGNAME=a
COMPIZ_BIN_PATH=/usr/bin/
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-2xmczCQuFO
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/
QT4_IM_MODULE=xim
LESSOPEN=| /usr/bin/lesspipe %s
GEDIT_CURRENT_DOCUMENT_URI=file:///home/a/Pobrane/maximus-book/code/README
INSTANCE=
TEXTDOMAIN=im-config
UPSTART_JOB=gnome-session
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0.0
GEDIT_DOCUMENTS_URI=file:///home/a/drop.sh file:///home/a/Pobrane/maximus-book/code/bin/mandelbrot_external_ray_out.c file:///home/a/Pobrane/maximus-book/code/README
XDG_CURRENT_DESKTOP=Unity
GTK_IM_MODULE=ibus
LESSCLOSE=/usr/bin/lesspipe %s %s
TEXTDOMAINDIR=/usr/share/locale/
XAUTHORITY=/home/a/.Xauthority
COLORTERM=gnome-terminal
_=/usr/bin/printenv

Różne sposoby zmiany wartości:[14]

 name=value
export name=value
name=value program
env name=value program



EDITOR[edytuj]

Nie jest stałą zmienną[15], czasem jest używany odnośnik symboliczny. Sprawdzamy to:



which editor

przykładowy wynik:

/usr/bin/editor

Sprawdzamy efekt:

editor

i uruchamia się ...

LANG[edytuj]

Wartość tej zmiennej ma wpływ na:


Sprawdzamy aktualną wartość:

echo $LANG
pl_PL.UTF-8

Dopuszczale wartości znajdujemy za pomocą polecenia:[17][18]


locale -a

przykładowy wynik:

C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
pl_PL.utf8
POSIX


lub w pliku /usr/share/i18n/supported:[19]

# This file names the currently supported and somewhat tested locales.
# If you have any additions please file a glibc bug report.
aa_DJ.UTF-8 UTF-8
aa_DJ ISO-8859-1
aa_ER UTF-8
aa_ER@saaho UTF-8
aa_ET UTF-8
...
pap_AN UTF-8
pl_PL.UTF-8 UTF-8
pl_PL ISO-8859-2
ps_AF UTF-8
pt_BR.UTF-8 UTF-8
pt_BR ISO-8859-1
...


Czasowa zmiana wartości:

export LANG=en_GB.utf8
LANG=en_us_8859_1

lub setlocale[20]

LC_NUMERIC[edytuj]

Sprawdzamy wartość:

locale | grep NUM
LC_NUMERIC="pl_PL.UTF-8"


wpływa na dziłanie printf[21]

LIBRARY_PATH[edytuj]

 LIBRARY_PATH 

jest sprawdzana w czasie kompilacji (linkowania)

PATH[edytuj]

Ścieżka dostępu do plików wykonywalnych = PATH

Wyświetlamy wartość zmiennej PATH:

echo $PATH

Zmieniamy wartość zmiennej PATH:

PATH="$HOME/.cabal/bin:$PATH"

Zmiana działa:

  • tylko w tym terminalu
  • tylko na czas działania w tym terminalu

W celu stałej zmiany wartości zmiennej PATH dla danego użytkownika należy powyższą instrukcję dodać do swojego pliku

~/.profile 

lub

~/.bash_profile 

lub

~/.bash_login 

Edycja pliku jest możliwa po otwarciu go w trybie administratora.



Położenie pliku w zależności od klasy użytkowników [22]
Klasa użytkowników plik
aktualny $HOME/.bash_profile
wszyscy oprócz su /etc/profile
su (root) /root/.bash_profile

LD_LIBRARY_PATH[edytuj]

  • Ścieżka dostępu do bibliotek skompilowanych [23]
  • jest sprawdzana w czasie wykonywania programu.
  • jest to lista katalogów rozdzielonych dwukropkiem (ang. colon) podobnie jak PATH
  • katalogi zawierają prawidłowo skompilowane i zlinkowane biblioteki

złe ustawienie zmiennej powoduje błąd:[24]

  error while loading shared libraries: lib***.so: cannot open shared object file: No such file or directory


Wyświetlamy

 echo $LD_LIBRARY_PATH

Sprawdzamy lokalizację nieznalezionej biblioteki (jeśli jest zainstalowana):

 sudo updatedb
 locate libgmp

zmieniamy czasowo:

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/


lub na stałe przez:

  • wpis (jako root) w pliku /etc/ld.so.conf.d/*.conf
  • ldconfig
  • dodanie do ~/.bashrc
  • /etc/environment w Ubuntu[25]
 echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc


 sudo ldconfig


Jeśli biblioteka nie jest zainstalowana to:

 apt-cache search <libraryname>

specjalne zmienne[edytuj]

Zmienne specjalne ( ang. Bash Special Variables)[26]

Sposoby pracy[edytuj]

  • debugowanie skryptów [27]

Ręczne wpisywanie poleceń[edytuj]

W konsoli wpisujemy:

which bash

otrzymujemy odpowiedź gdzie jest program obsługujący wiersz poleceń naszej powłoki:

/bin/bash

Skrypty[edytuj]

Polecenia możemy

  • zapisać do pliku tekstowego zwanego skryptem , np. g (uwaga: często skrypty powłoki mają rozszerzenie sh)
  • plik powinien rozpoczynać się od magicznych znaków [28]):
#!/bin/bash

lub:

awk
  • nadać mu atrybut wykonywalności (g oznacza tutaj przykładową nazwę pliku):
chmod +x g
  • uruchomić plik znajdujący się w aktualnym katalogu:
./g

shebang[edytuj]

Shebang jest dwu bajtową magiczną liczbą (ang. magic number) oznaczającą typ pliku. Więcej o magicznej liczbie:

man magic

Po Shebangu następuje ścieżka do programu wykonującego polecenia skryptu.

Lokalizacja skryptu[edytuj]

Skrypt może być:

  • w dowolnym katalogu,
    • uruchamiany z tego katalogu ./nazwa
  • w katalogu ~/bin/ [29]

Sprawdzanie skryptu[edytuj]

  • online [30]
  • debugowanie [31]: #!/bin/bash -x
  • sprawdzanie wyjścia skryptu: echo $?

Heredoc[edytuj]

Opis[32]:

  • kilka poleceń zostanie wykonanych, a treść ich jest przekierowana na stdin programu [33]

Składnia: [34]

program <<LimitString
command #1
command #2
...
LimitString


Przykłady: [35]

Zapisywanie kilku linii tekstu do pliku a.txt z użyciem cat: [36]

cat > a.txt << EOF 
--------------------------
The quick brown fox 
jumped over the lazy dog 
--------------------------
EOF

Języki skryptowe[edytuj]

język nagłówek przenośny nagłówek
bash #!/bin/bash #!/usr/bin/env bash
php #!/usr/bin/php
sed
awk
perl #!/usr/bin/perl #!/usr/bin/env perl
python #!/usr/bin/python #! /usr/bin/env python

Skróty klawiaturowe[edytuj]

Polecenia BASH'a Skrót klawiszowy Opis polecenia
SIGTSTP Ctrl-Z zatrzymuje (kończy) proces
SIGINT Ctrl-C zawiesza proces (pauza)

Wejście i wyjście[edytuj]

Potok

Przykład:

 ./pseudo-de <mandel.kfb >pde.pgm


Pliki[edytuj]

Prawa dostępu[edytuj]

Sprawdzanie praw dostępu[edytuj]

setfacl
ls -l


zmienianaie praw dostępu[edytuj]

getfacl

Ile mamy plików na dysku ?[edytuj]

find / -type f | wc -l


Tworzenie animowanego gifa[edytuj]

Przykładowy skrypt uruchamiający polecenia z biblioteki ImageMagic tworzące z plików pgm animowany gif:


#!/bin/bash

# script file for BASH 
# which bash
# save this file as g
# chmod +x g
# ./g

i=0
# for all pgm files in this directory
for file in *.pgm ; do
  # b is name of file without extension
  b=$(basename $file .pgm)
  # change file name to integers and count files
  ((i= i+1))
  # convert from pgm to gif and add text ( level ) using ImageMagic
  convert $file -pointsize 50 -annotate +10+100 $b ${i}.gif
  echo $file
done
 
echo convert all gif files to one animated gif_file
convert -delay 50   -loop 1 %d.gif[1-$i] aa${i}.gif
# convert -delay 50 -loop 0 %d.gif[1-$i] b${i}.mpg # it needs ffmpeg
# ffmpeg2theora %d.gif --framerate 12 --videoquality 9  -o output129.ogv

 
echo b${i} OK
# end



lub inna wersja z konwersją z svg:[37]


for i in ??.svg
do
  rsvg $i ${i%svg}png
  convert ${i%svg}png ${i%svg}gif
done
gifsicle --delay 4 --loop --optimize ??.gif > out.gif

Zmiana nazwy plików[edytuj]

Możemy wykorzystać polecenia:

lub skrypt:


#!/bin/bash
 
# script file for BASH
# which bash
# save this file as r
# chmod +x r
# ./r
# for all pgm files in this directory
# for all pgm files in this directory
for file in *.pgm ; do
  # remove first 3 chars from old file name
  newfile=${file:3}
  # change name of file
  mv $file $newfile
  echo $newfile
done

echo OK
# end

Kopiowanie plików[edytuj]

Chcemy skopiować: [38][39]

  • tylko pliki z rozszerzeniem c
  • z katalogu ~/c
  • do katalogu ~/temp
  • tak aby zachować podkatalogi

Możemy użyć:

find  ~/c -maxdepth 7 -name "*.c" -exec cp {} -R ~/temp \;

ale w katalogu docelowym nie ma podkatalogów

Inna opcja:

cp -R ~/c  ~/temp

Kopiuje z podkatalogami ale wszystkie pliki.

Działające polecenia:

  • z użyciem find i tar
(cd ~/c ; find  -maxdepth 7 -name "*.c" |tar -T - -c) |tar -C ~/temp -x 
  • z użyciem rsync:
rsync -a --include='*.c' --include='*/' --exclude='*' ~/c/ ~/temp/

Łaty i różnice[edytuj]

Łańcuchy,znaki i tekst[edytuj]

Definicje:

  • łańcuch (ang. string) inaczej napis czyli ciąg znaków
  • znak



nadawanie wartości[edytuj]

Są trzy różne sposoby [40]

przetwarzanie tekstu[edytuj]

Liczby[edytuj]

Całkowite[edytuj]

Rozkład na liczby pierwsze: (zobacz man factor):

factor 27417
27417: 3 13 19 37

ale już:

time factor 237142198758023568227473377297792835283496928595231875152809132048206089502588927
factor: „237142198758023568227473377297792835283496928595231875152809132048206089502588927” jest za duża
real	0m0.001s
user	0m0.000s
sys	0m0.000s

Sekwencje:


seq -w 0 11

wynik:

00
01
02
03
04
05
06
07
08
09
10
11

Zmiennoprzecinkowe[edytuj]

Bash nie wykonuje działań na liczbach zmiennoprzecinkowych. Korzystaj bc, dc, Maxima CAS, perl, python ...


Konwersja postaci naukowej do zmiennoprzecinkowej[edytuj]

Standardowa odpowiedź nie może nie działać: [41]

 printf '%.0f' 1.8200E+02
 bash: printf: 1.8200E+02: nieprawidłowa liczba 0

Zmieniamy lokalnie ustawienia językowe (LC_NUMERIC):

LC_NUMERIC="en_US.UTF-8" printf "%f\n" 1.8200E+02
182.000000

i działa jak oczekujemy.

Jeśli chcemy zapisać rezultat konwersji do zmiennej to: [42]

radius="1.5e-1"
radius=$(LC_NUMERIC="en_US.UTF-8" printf "%f\n" $radius)

System[edytuj]

Informacje dostępne za pomocą cat: [43]

cat /proc/cpuinfo
cat /proc/meminfo
cat /proc/version
cat /proc/scsi/scsi 
cat /proc/partitions 

albo gcc

lub lista:

  • cpu = lscpu
  • sprzętu = lshw (list hardware):[44]
  • pci = lspci
  • scsi = lsscsi
  • usb = lsusb
  • urządzeń blokowych: lsblk


Przykłady:

sudo lshw -short
lsblk -o KNAME,TYPE,SIZE,MODEL


Sprawdzanie kolejności bajtów (ang. endianess):


 lscpu

przykładowy wynik:


Architecture:          x86_64
Tryb(y) pracy CPU:     32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Wątków na rdzeń:    2
Rdzeni na gniazdo:     4
Socket(s):             1
Węzłów NUMA:        1
ID producenta:         GenuineIntel
Rodzina CPU:           6
Model:                 60
Model name:            Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Wersja:                3
CPU MHz:               3401.195
CPU max MHz:           3900,0000
CPU min MHz:           800,0000
BogoMIPS:              6784.73
Wirtualizacja:         VT-x
Cache L1d:             32K
Cache L1i:             32K
Cache L2:              256K
Cache L3:              8192K
NUMA node0 CPU(s):     0-7
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt dtherm ida arat pln pts


Info o sprzęcie:

  • hwinfo
  • skrypt basha Inxi
  • przestrzeń dysków
    • wersja standardowa = df
    • wersja w Pythonie = pydf
  • zamontowane urządzenie = mount
  • pamięć RAM = free
  • urządzenia SATA = hdparm

Przykłady:[45]

inxi -Fx
mount | column -t
free -m
sudo hdparm -i /dev/sda
fdisk -l
parted -l

Polecenia[edytuj]


Lista wszystkich poleceń[edytuj]

Liczba dostępnych poleceń zainstalowanych przez użytkownika:[48]

 ls /usr/bin | wc -l

przykładowy wynik :

 3239

inny katalog użytkownika:

 ls /usr/local/bin | wc -l

przykładowy wynik :

 7

Katalog poleceń systemowych :

 ls /bin | wc -l


przykładowy wyni:

 165

Szacuje się, że przecietny użytkownik pamieta około 30 poleceń [49]


Lista wszystkich poleceń:[50]stackoverflow question: linux-command-to-list-all-available-commands-and-aliases</ref>

  compgen -c # will list all the commands you could run.


Nie ma sposobu, aby wyświetlić listę funkcji lub wbudowanych funkcji, które działają we wszystkich powłokach. Możesz znaleźć listę wbudowanych w dokumentacji powłoki.

Możesz wyświetlić listę aliasów, uruchamiając wbudowany alias bez argumentu.

typy[edytuj]

"Powłoka zna cztery rodzaje poleceń.

  • Aliasy: są to pseudonimy dla polecenia z pewnymi opcjami. Są one zdefiniowane w pliku inicjującym powłoki (~ / .bashrc dla bash).
  • Funkcje: są fragmentami kodu powłoki o nazwie. Podobnie jak aliasy, są one zdefiniowane w pliku inicjalizacji powłoki.
  • budowane: powłoka zawiera niewielką liczbę wbudowanych poleceń. Większość wbudowanych manipuluje stanem powłoki (cd zmienia bieżący katalog, ustawia opcje zmian i parametry pozycyjne, eksport zmienia środowisko,…). Większość powłok oferuje w zasadzie te same wbudowane rozszerzenia, ale każda powłoka ma kilka rozszerzeń zestawu podstawowego.
  • Polecenia zewnętrzne: są niezależne od powłoki. Podobnie jak inne programy, powłoka wykonuje programy zewnętrzne, wyszukując je w ścieżce wyszukiwania wykonywalnego. Zmienna środowiskowa PATH zawiera rozdzieloną dwukropkami listę katalogów do wyszukiwania programów.

W przypadku poleceń kilku typów o tej samej nazwie, wykonywane jest pierwsze dopasowanie w powyższej kolejności.

Możesz zobaczyć, jaki typ polecenia odpowiada nazwie, uruchamiając "[51]

 type some_name

historia[edytuj]

Sprawdzamy 10 najczęściej używanych poleceń konsoli:[52]

   history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

przykładowy wynik :

     1	239  23.9%  git
     2	231  23.1%  gcc
     3	49   4.9%   sudo
     4	43   4.3%   time
     5	31   3.1%   convert
     6	26   2.6%   make
     7	22   2.2%   locate
     8	22   2.2%   cd
     9	15   1.5%   ls
    10	12   1.2%   python

Problemy[edytuj]

zły interpreter[edytuj]

 bash: ./g.sh: /bin/bash^M: zły interpreter: Nie ma takiego pliku ani katalogu

lub w wersji angielskiej:[53]

 bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory


Błąd jest spowodowany złym znakiem końca linii[54]

Zobacz również[edytuj]

Przypisy[edytuj]

  1. man - polecenie systemu Unix uruchomiane z wiersza poleceń powłoki systemowej
  2. | explainshell
  3. w3cub bash docs
  4. Powłoka systemu UNIX- dr inż. Edward Śliwa
  5. howtogeek : 15-special-characters-you-need-to-know-for-bash
  6. shell metachar by Tim Bowe
  7. bash-scripts-regular-expressions by Mikhail Raevskiy Sep 20, 2020
  8. What is the CVE-2014-6271 bash vulnerability, and how do I fix it?
  9. superuser question: can-i-use-pipe-output-as-a-shell-script-argument
  10. Bash options
  11. unix.stackexchange question: how-can-i-list-bashes-options-for-the-current-shell
  12. Zmienna środowiskowa w wikipedii
  13. Environment Variables
  14. env
  15. [1]
  16. is in a number of the /etc/init.d/* scripts. What does LANG=C do and why do you need to set LANG=C.
  17. to change the bash shell language ?
  18. Locale w wikipedii
  19. doc 8.3. The locale
  20. - Linux man page
  21. [http://stackoverflow.com/questions/12845997/unexplicable-error-in-bash-printf-command-inside-a-script-returns-invalid-numb STackoverflow: Unexplicable error in bash: printf command inside a script returns “invalid number” ]
  22. [Troubleshooters.Com and T.C Linux Library Present: Adding a Directory to the Path by Steve Litt]
  23. ubuntu environment Variables
  24. stackoverflow question: linux-error-while-loading-shared-libraries-cannot-open-shared-object-file-no-s
  25. stackoverflow question: how-to-set-the-environmental-variable-ld-library-path-in-linux
  26. tldp refcard
  27. linuxconfig.org: how-to-debug-bash-scripts
  28. Shebang w wikipedii
  29. The Beginner’s Guide to Shell Scripting: The Basics
  30. | spellcheck
  31. tldp - something goes wrong (debugging)
  32. Here document in english wikipedia
  33. Kurs pracy w systemie Linux (pracownia Michalisa
  34. Chapter 19. Here Documents
  35. stackoverflow: How can I write a here doc to a file in Bash script?
  36. Here Documents from ss64
  37. ReCode Project - Topographic Form animated by ClaudiusMaximus
  38. Archiwum grupy pl.comp.os.linux.programowanie: Bash: kopiowanie wybranych plików z podkatalogami
  39. [http://ubuntu.pl/forum/viewtopic.php?f=170&t=160739%7Cpoprawne wywołanie rsync w bash w forum ubuntu.pl
  40. Bash String Examples from HackTux
  41. [http://stackoverflow.com/questions/9506584/convert-scientific-notation-bash-script Stackoverflow: convert scientific notation bash script ]
  42. [http://www.cyberciti.biz/faq/ksh-csh-shell-assign-store-printf-result-variable/ Linux / Unix: Bash Shell Assign Printf Result To Variable by NIXCRAFT ]
  43. 16 commands to check hardware information on Linux By Silver Moon On Apr 8, 2014
  44. Hardware Lister (lshw) - home page
  45. unix.stackexchange question: how-to-list-disk-in-linux
  46. od man page
  47. inuxhandbook : bash-printf by Abhishek Prakash
  48. linuxconfig.org: linux-commands
  49. quora : Do-experienced-Linux-users-remember-all-the-commands
  50. unix.stackexchange question: list-all-commands-that-a-shell-knows
  51. unix.stackexchange question: list-all-commands-that-a-shell-knows, odpowiedź Gilles 'SO- stop being evil', tłumaczenie nieautoryzowane , ( google translate)
  52. Free softwares I use by YouJun Hu
  53. stackoverflow question : configure-bin-shm-bad-interpreter
  54. webhostingtalk : skrypt-sh-problem/