Pisanie skryptów, w uproszczeniu polega na zebraniu w pliku komend,
które normalnie wpisalibyśmy w linii poleceń. Taki plik możemy następnie
oznaczyć jako wykonywalny za pomocą polecenia chmod u+x plik
i
wykonać komendą ./plik
. Linia
poleceń (BASH) służy do uruchamiania programów - dlatego: każda
linijka skryptu wygląda nastepująco: program agumenty
.
Przeanalizuj poniższy fragment kodu:
Łatwo zobaczyć, że:
i=1
nie używamy spacji ponieważ powłoka Bash
wie wtedy, że jest
to przypisanie, a nie wywołanie programu i
z opcjami
=
oraz 1
.expr $i + 1
,
musimy zachować spacje, żeby program expr
dostał trzy
argumenty $i
, +
i 1
, a nie jeden
i+1
.while
, nie możemy napisać ,,i<10
’‘,
lecz musimy użyć jakiegoś programu. Do wszelkiego rodzaju testów
stworzony został program test
. W tym
wypadku uruchamiamy go z argumentami $i
, -lt
i
10
, gdzie opcja -lt
oznacza ,,less
than’’.Jeśli już wiemy, że każdy skrypt w powłoce Bash
to seria
wywołanych programów, to potrzebne jest nam dużo małych programów, z
których będziemy mogli tworzyć skrypty.
Przykładowo:
echo tekst
—
Wypisuje tekst na ekran.cat plik
—
Wypisuje zawartość pliku na ekran.grep tekst
—
Czyta znaki z klawiatury i wypisuje tylko linie zawierające
,,tekst’’.grep tekst pliki
— Wyszukuje ,,tekst’’ w plikach.cd katalog
—
Wchodzi do katalogu.ls katalog
—
Wypisuje zawartość katalogu na ekran.cp pliki katalog
— Kopiuje pliki do katalogu.cp plik1 plik2
—
Kopiuje plik o nazwie ,,plik1’’ do pliku o nazwie ,,plik2’’.mv pliki katalog
— Przenosi pliki do katalogu.mv plik1 plik2
—
Zmienia nazwę pliku z ,,plik1’’ na ,,plik2’’.sed 's/tekst1/tekst2/g'
— Czyta z klawiatury tekst i wypisuje go zamieniając ,,tekst1’’ na
,,tekst2’’.cut -d" " -f1
— Czyta z klawiatury tekst, używając znaku spacji jako separatora dzieli
go na pola i wypisuje pierwsze pole.seq liczba1 liczba2
— Wypisuje na ekran ciąg liczb od ,,liczba1’’ do ,,liczba2’’ co jeden
(wartość domyślna).Standardowo wszystkie programy czytają z klawiatury i piszą na ekran. Można jednak zarówno wejście jak i wyjście przekierować.
program > plik
— To co program wypisałby na ekran, zostanie wpisane do pliku (plik
zostanie nadpisany jeśli istnieje).program >> plik
— To co program wypisałby na ekran, zostanie dopisane do pliku (plik
zostanie utworzony jeśli nie istniał).program < plik
— Program dostanie zawartość pliku, tak jakbyśmy ją wpisali z
klawiatury.program1 | program2
— To co ,,program1’’ wypisałby na ekran, zostanie wpisane ,,z
klawiatury’’ do ,,program2’’.'program'
lub $(program)
— To co program wypisałby na ekran, zostanie wklejone w tym miejscu kodu
(patrz przykłady). Odwrócony apostrof `
jest na klawiszu z
tyldą ~
.echo Tekst > plik
— wypisze ,,Tekst’’ do pliku (plik zostanie nadpisany jeśli
istnieje)echo Tekst >> plik
— dopisze ,,Tekst’’ do pliku (plik zostanie utworzony jeśli nie
istniał)grep Tekst < plik
— wyszuka w pliku linie zwierające ,,Tekst’’ i je wypisze na ekranecho Tekst | sed 's/st/a/g'
— Zamieni w ,,Tekst’’ każde wystąpienie ,,st’’ na ,,a’‘. Więc wypisze na
ekran ,,Teka’’.echo $nazwa | sed 's/.txt/.dat/g'
— Zastąpi w zmiennej nazwa
końcówkę .txt
na
.dat
. Rezultat wypisze na ekran.nazwa2=$(echo $nazwa |sed 's/.txt/.dat/g')
— Jak poprzednio, lecz rezultat wypisze do zmiennej
nazwa2
.echo $(echo $nazwa | cut -d"." -f1).dat
— Zastąpi w zmiennej nazwa
końcówkę występującą po
.
na .dat
. Rezultat wypisze na ekran.ls katalog > plik
— wypisze zawartość katalogu do pliku (plik zostanie nadpisany jeśli
istnieje).cp ls katalog
albo cp $(ls) katalog
— skopiuje pliki do katalogu
według listy zwróconej przez
ls
.cp cat plik katalog
bądź cp $(cat plik) katalog
— skopiuje pliki do katalogu
według listy zawartej w
pliku.instrucja warunkowa if
Jeśli wykonanie polecenia program argumenty
się powiedzie (program zwróci \(0\)),
to wykonane zostaną polecenia1. W przeciwnym wypadku wykonane
zostaną polecenia2.
pętla while
Pętla, która będzie wykonywać polecenia , dopóki program argumenty
będzie wykonywany z powodzeniem.
pętla for
Pętla, która po kolei każdy element z listy wstawi do zmiennej
i
, a następnie wykona polecenia.
Przykładowo:
Przeniesie każdy plik o końcówce .jpg
, do katalogu
IMG
dodając im przedrostek a_
(np.:
obrazek.jpg
zamieni na IMG/a_obrazek.jpg
).
convert
convert plik.gif plik.jpg
– konwertuje plik w formacie GIF na format JPGconvert plik1.jpg -resize 50% plik2.jpg
– zmniejszy obrazek dwukrotnieconvert plik1.jpg -resize 100 plik2.jpg
– zmniejszy obrazek, tak by krótszy wymiar był równy 100 pikseliconvert plik1.jpg -resize 100x100 plik2.jpg
– zmniejszy obrazek tak, by mieścił się w kwadracie 100 na 100
pikseliconvert plik1.jpg -resize 100x100n! plik2.jpg
– zmniejszy obrazek dokładnie do rozmiaru 100 na 100 pikseliconvert -size 320x85 canvas:none -font Bookman-DemiItalic -pointsize 72 -draw "text 25,60 'Magick'" -channel RGBA -blur 0x6 -fill darkred -stroke magenta -draw "text 20,55 'Magick'" fuzzy-magick.jpg
– stworzy obrazek fuzzy-magick.jpg, z naniesionym tekstem
,,Magick’’convert
-adaptive-blur geometry
– adaptively blur pixels; decrease effect near edges-adaptive-resize geometry
– adaptively resize image with data dependent triangulation.-adaptive-sharpen geometry
– adaptively sharpen pixels; increase effect near edges-adjoin
– join images into a single multi-image file-affine matrix
–
affine transform matrix-alpha
– on, activate, off, deactivate, set, opaque, copy, transparent,
extract, background, or shape the alpha channel-annotate geometry text
– annotate the image with text-antialias
–
remove pixel-aliasing-append
– append an image sequence-authenticate value
– decipher image with this password-auto-gamma
–
automagically adjust gamma level of image-auto-level
–
automagically adjust color levels of image-auto-orient
–
automagically orient image-background color
– background color-bench iterations
– measure performance-bias value
– add
bias when convolving an image-black-threshold value
– force all pixels below the threshold into black-blue-primary point
– chromaticity blue primary point-blue-shift factor
– simulate a scene at nighttime in the moonlight-blur geometry
–
reduce image noise and reduce detail levels-border geometry
– surround image with a border of color-bordercolor color
– border color-brightness-contrast geometry
– improve brightness / contrast of the image-caption string
–
assign a caption to an image-cdl filename
–
color correct with a color decision list-channel type
–
apply option to select image channels-charcoal radius
– simulate a charcoal drawing-chop geometry
–
remove pixels from the image interior-clamp
– restrict colors from 0 to the quantum depth-clip
–
clip along the first path from the 8BIM profile-clip-mask filename
– associate clip mask with the image-clip-path id
–
clip along a named path from the 8BIM profile-clone index
–
clone an image-clut
–
apply a color lookup table to the image-contrast-stretch geometry
– improve the contrast in an image by ‘stretching’ the range of
intensity value-coalesce
– merge
a sequence of images-colorize value
–
colorize the image with the fill color-color-matrix matrix
– apply color correction to the image.-colors value
–
preferred number of colors in the image-colorspace type
– set image colorspace-combine
–
combine a sequence of images-comment string
–
annotate image with comment-compose operator
– set image composite operator-composite
–
composite image-compress type
–
image compression type-contrast
–
enhance or reduce the image contrast-convolve coefficients
– apply a convolution kernel to the image-crop geometry
–
crop the image-cycle amount
–
cycle the image colormap-decipher filename
– convert cipher pixels to plain-debug events
–
display copious debugging information-define format:option
– define one or more image format options-deconstruct
–
break down an image sequence into constituent parts-delay value
–
display the next image after pausing-delete index
–
delete the image from the image sequence-density geometry
– horizontal and vertical density of the image-depth value
–
image depth-despeckle
–
reduce the speckles within an image-direction type
–
render text right-to-left or left-to-right-display server
–
get image or font from this X server-dispose method
–
layer disposal method-distort type coefficients
– distort image-dither method
–
apply error diffusion to image-draw string
–
annotate the image with a graphic primitive-duplicate count,indexes
– duplicate an image one or more times-edge radius
–
apply a filter to detect edges in the image-emboss radius
–
emboss an image-encipher filename
– convert plain pixels to cipher pixels-encoding type
–
text encoding type-endian type
–
endianness (MSB or LSB) of the image-enhance
– apply
a digital filter to enhance a noisy image-equalize
–
perform histogram equalization to an image-evaluate operator value
– evaluate an arithmetic, relational, or logical expression-evaluate-sequence operator
– evaluate an arithmetic, relational, or logical expression for an image
sequence-extent geometry
– set the image size-extract geometry
– extract area from image-family name
–
render text with this font family-fft
–
implments the discrete Fourier transform (DFT)-fill color
–
color to use when filling a graphic primitive-filter type
–
use this filter when resizing an image-flatten
–
flatten a sequence of images-flip
–
flip image in the vertical direction-floodfill geometry color
– floodfill the image with color-flop
–
flop image in the horizontal direction-font name
–
render text with this font-format string
–
output formatted image characteristics-frame geometry
–
surround image with an ornamental border-function name
–
apply a function to the image-fuzz distance
–
colors within this distance are considered equal-fx expression
–
apply mathematical expression to an image channel(s)-gamma value
–
level of gamma correction-gaussian-blur geometry
– reduce image noise and reduce detail levels-geometry geometry
– preferred size or location of the image-gravity type
–
horizontal and vertical text placement-green-primary point
– chromaticity green primary point-help
–
print program options-identify
–
identify the format and characteristics of the image-ift
–
implements the inverse discrete Fourier transform (DFT)-implode amount
–
implode image pixels about the center-insert index
–
insert last image into the image sequence-intent type
–
type of rendering intent when managing the image color-interlace type
–
type of image interlacing scheme-interline-spacing value
– the space between two text lines-interpolate method
– pixel color interpolation method-interword-spacing value
– the space between two words-kerning value
–
the space between two characters-label string
–
assign a label to an image-lat geometry
–
local adaptive thresholding-layers method
–
optimize or compare image layers-level value
–
adjust the level of image contrast-limit type value
– pixel cache resource limit-linear-stretch geometry
– linear with saturation histogram stretch-liquid-rescale geometry
– rescale image with seam-carving-log format
–
format of debugging information-loop iterations
– add Netscape loop extension to your GIF animation-mask filename
–
associate a mask with the image-mattecolor color
– frame color-median radius
–
apply a median filter to the image-mode radius
–
make each pixel the ’predominant color’ of the neighborhood-modulate value
–
vary the brightness, saturation, and hue-monitor
–
monitor progress-monochrome
–
transform image to black and white-morph value
–
morph an image sequence-morphology method kernel
– apply a morphology method to the image-motion-blur geometry
– simulate motion blur-negate
– replace each pixel with its complementary color-noise radius
–
add or reduce noise in an image-normalize
–
transform image to span the full range of colors-opaque color
–
change this color to the fill color-ordered-dither NxN
– ordered dither the image-orient type
–
image orientation-page geometry
–
size and location of an image canvas (setting)-paint radius
–
simulate an oil painting-ping
–
efficiently determine image attributes-pointsize value
– font point size-polaroid angle
–
simulate a Polaroid picture-posterize levels
– reduce the image to a limited number of color levels-precision value
– set the maximum number of significant digits to be printed-preview type
–
image preview type-print string
–
interpret string and print to console-process image-filter
– process the image with a custom image filter-profile filename
– add, delete, or apply an image profile-quality value
–
JPEG/MIFF/PNG compression level-quantize colorspace
– reduce image colors in this colorspace-quiet
– suppress all warning messages-radial-blur angle
– radial blur the image-raise value
–
lighten/darken image edges to create a 3-D effect-random-threshold low,high
– random threshold the image-red-primary point
– chromaticity red primary point-regard-warnings
– pay attention to warning messages.-region geometry
– apply options to a portion of the image-remap filename
–
transform image colors to match this set of colors-render
– render vector graphics-repage geometry
– size and location of an image canvas-resample geometry
– change the resolution of an image-resize geometry
– resize the image-respect-parentheses
– settings remain in effect until parenthesis boundary.-roll geometry
–
roll an image vertically or horizontally-rotate degrees
–
apply Paeth rotation to the image-sample geometry
– scale image with pixel sampling-sampling-factor geometry
– horizontal and vertical sampling factor-scale geometry
–
scale the image-scene value
–
image scene number-seed value
–
seed a new sequence of pseudo-random numbers-segment values
–
segment an image-selective-blur geometry
– selectively blur pixels within a contrast threshold-separate
–
separate an image channel into a grayscale image-sepia-tone threshold
– simulate a sepia-toned photo-set attribute value
– set an image attribute-shade degrees
–
shade the image using a distant light source-shadow geometry
– simulate an image shadow-sharpen geometry
– sharpen the image-shave geometry
–
shave pixels from the image edges-shear geometry
–
slide one edge of the image along the X or Y axis-sigmoidal-contrast geometry
– increase the contrast without saturating highlights or shadows-smush offset
–
smush an image sequence together-size geometry
–
width and height of image-sketch geometry
– simulate a pencil sketch-solarize threshold
– negate all pixels above the threshold level-splice geometry
– splice the background color into the image-spread radius
–
displace image pixels by a random amount-statistic type geometry
– replace each pixel with corresponding statistic from the
neighborhood-strip
– strip image of all profiles and comments-stroke color
–
graphic primitive stroke color-strokewidth value
– graphic primitive stroke width-stretch type
–
render text with this font stretch-style type
–
render text with this font style-swap indexes
–
swap two images in the image sequence-swirl degrees
–
swirl image pixels about the center-synchronize
–
synchronize image to storage device-taint
– mark the image as modified-texture filename
– name of texture to tile onto the image background-threshold value
– threshold the image-thumbnail geometry
– create a thumbnail of the image-tile filename
–
tile image when filling a graphic primitive-tile-offset geometry
– set the image tile offset-tint value
–
tint the image with the fill color-transform
–
affine transform image-transparent color
– make this color transparent within the image-transparent-color color
– transparent color-transpose
– flip
image in the vertical direction and rotate 90 degrees-transverse
–
flop image in the horizontal direction and rotate 270 degrees-treedepth value
– color tree depth-trim
–
trim image edges-type type
–
image type-undercolor color
– annotation bounding box color-unique-colors
–
discard all but one of any pixel color.-units type
– the
units of image resolution-unsharp geometry
– sharpen the image-verbose
– print
detailed information about the image-version
– print
version information-view
–
FlashPix viewing transforms-vignette geometry
– soften the edges of the image in vignette style-virtual-pixel method
– access method for pixels outside the boundaries of the image-wave geometry
–
alter an image along a sine wave-weight type
–
render text with this font weight-white-point point
– chromaticity white point-white-threshold value
– force all pixels above the threshold into white-write filename
–
write images to this file