Phép theˆ´ các tham bieˆ´n và bieˆ´n soˆ ´

Một phần của tài liệu Linux cho người mới dùng (Trang 44)

3 Bash

3.7.3Phép theˆ´ các tham bieˆ´n và bieˆ´n soˆ ´

Ký tu

˙’ $ d¯u’o˙’c su’’ du˙ng cho các thao tác theˆ´ tham bieˆ´n, theˆ´ các câu leˆ

˙nh và theˆ´ các bieˆ’u thu´’c soˆ´ ho

˙c. Bieˆ’u thu´’c hay tên d¯u´’ng sau $ có theˆ’ d¯u’o

˙’c d¯u’a vào ngoa˘˙c, không nhaˆ´t thieˆ´t, nhu’ng raˆ´t tieˆ

˙n, vì daˆ´u ngoa˘

˙c phân cách bieˆ’u thu´’c vo´’i các tu`’ hay ký tu

˙’ d¯u´’ng sau. Nhu’ vaˆ˙y, d¯eˆ’ go ˙i giá tri

˙cu’a tham bieˆ´n nói chung cu˜ng nhu’ bieˆ´n môi tru’o`’ng nói riêng trong dòng leˆ

˙nh, caˆ`n d¯a˘ ˙t bieˆ’u thu´’c da

˙ng $parameter. Daˆ´u ngoa˘

˙c chı’ caˆ`n thieˆ´t, neˆ´u tên cu’a tham bieˆ´n có chu´’a vài chu˜’ soˆ´ , hoa˘

˙c khi theo sau tên còn có các ký tu˙’ khác, mà chúng ta không muoˆ´ n heˆ

˙ vo’ "hieˆ’u laˆ`m" chúng là moˆ

˙t phaˆ`n cu’a tên tham bieˆ´n. Trong taˆ´t ca’ các giá tri

˙cu’a bieˆ´n soˆ´ xa’y ra phép theˆ´ daˆ´u ngã (∼), su

˙’ khai trieˆ’n tham bieˆ´ n và bieˆ´n soˆ´, phép theˆ´ các câu leˆ

˙nh, phép theˆ´ các bieˆ’u thu´’c soˆ´ ho

˙c, cu˜ng nhu’ xóa các ký tu

˙’ trích daˆ˜n (xem du’o´’i). Su˙’ phân chia tu`’ không xa’y ra, tru`’ tru’o`’ng ho

˙’p "$" (lo`’i gia’i thích xem o’’ ba’ng soˆ´ 3). Su

˙’ khai trieˆ’n các maˆ˜u tên taˆ˙p tin và thu’ mu ˙c cu˜ng không d¯u’o

3.7 Khai trieˆ’n bieˆ’u thu´’c 41 3.7.4 Phép theˆ´ các câu leˆ

˙nh

Phép theˆ´ các câu leˆ

˙nh là moˆ

˙t công cu˙raˆ´t ma

˙ng cu’abash. Ý nghı˜a cu’a nó na˘`m o’’ choˆ˜ thay theˆ´ tên các câu leˆ

˙nh bo’’i keˆ´t qua’ thu

˙’c hieˆ˙n cu’a chúng. Có hai da˙ng phép theˆ´ leˆ

˙nh:$(command) và‘command‘Neˆ´u u´’ng du (adsbygoogle = window.adsbygoogle || []).push({});

˙ng da˙ng thu´’ hai (chú ý o’’ d¯ây su’’ du

˙ng daˆ´u "ngoa˘

˙c d¯o’n ngu’o ˙’c", phím cho nó thu’o`’ng na˘`m trên phím Tab), thì daˆ´u ga

˙ch ngu’o

˙’c (\) o’’trong daˆ´u ngoa˘

˙c se˜ có chu´’c na˘ng nhu’ moˆ

˙t ký tu˙’ thông thu’o`’ng, tru`’ tru’o`’ng ho˙’p, khi d¯u´’ng sau nó (daˆ´ u ga

˙ch ngu’o

˙’c) là moˆ˙t $, ‘, hay moˆ

˙t\. Neˆ´u nhu’su’’du

˙ng da˙ng $(command), thì taˆ´t ca’ các ký tu

˙’ d¯u´’ng trong ngoa˘˙c ta˙o thành moˆ

˙t câu leˆ

˙nh, không có ký tu˙’ nào có ý nghı˜a d¯a˘˙c bieˆ

˙t. Neˆ´u phép theˆ´ câu leˆ

˙nh xa’y ra phía trong ngoa˘

˙c kép, thì trong keˆ´t qua’ cu’a phép theˆ´ se˜ không thu

˙’c hieˆ˙n phép phân chia tu`’ và su

˙’ khai trieˆ’n maˆ˜u tên taˆ˙p tin và thu’ mu ˙c.

3.7.5 Phép theˆ´ soˆ´ ho

˙c (Arithmetic Expansion)

Phép theˆ´ soˆ´ ho

˙c cho phép tính giá tri˙ cu’a moˆ

˙t bieˆ’u thu´’c soˆ´ ho

˙c và thay theˆ´ nó (bieˆ’u thu´’c) bo’’i keˆ´t qua’ thu d¯u’o

˙’c. Có hai da˙ng phép theˆ´ soˆ´ ho

˙c:$[expression] ((expression)) Trong d¯óexpressiond¯u’o

˙’c hieˆ’u (d¯u’o˙’cbashd¯o

˙c) nhu’ khi d¯u´’ng trong ngoa˘

˙c kép, nhu’ng nhu˜’ng daˆ´u ngoa˘ (adsbygoogle = window.adsbygoogle || []).push({});

˙c kép o’’ trongexpressionla ˙i d¯u’o

˙’c d¯o˙c nhu’ moˆ

˙t ký tu˙’ thu’o`’ng. Phía trong

expressioncó thu

˙’c hieˆ˙n các phép theˆ´ tham bieˆ´n và theˆ´ câu leˆ

˙nh. Cú pháp cu’a bieˆ’u thu´’c

expressiontu’o’ng tu

˙’ nhu’ cú pháp cu’a bieˆ’u thu´’c soˆ´ ho

˙c cu’a ngôn ngu˜’C, cu

˙theˆ’ ho’n veˆ` vaˆ´n d¯eˆ` này có theˆ’ d¯o

˙c trong phaˆ`n ARITHMETIC EVALUATION cu’a trang man cu’abash. Ví du

˙, câu leˆ

˙nh kênh giao tác

[user]$ echo $((2 + 3 * 5))

cho keˆ´t qua’ ba˘`ng "17". Neˆ´u bieˆ’u thu´’c không chính xác,bashse˜ d¯u’a ra thông báo loˆ˜i.

3.7.6 Phân chia tu`’ (word splitting)

Sau khi thu

˙’c hieˆ˙n xong các phép theˆ´ tham bieˆ´n, theˆ´ leˆ

˙nh, và theˆ´ các bieˆ’u thu´’c soˆ´ ho ˙c, heˆ

˙vo’ la˙i phân tích dòng leˆ

˙nh moˆ

˙t laˆ`n nu˜’a (nhu’ng o’’ da

˙ng thu d¯u’o

˙’c sau các phép theˆ´ nói trên) và thu ˙’c hieˆ

˙n vieˆ

˙c phân chia tu`’ (word splitting). Thao tác này na˘`m o’’ choˆ˜, heˆ

˙ vo’ tìm trong dòng leˆ ˙nh taˆ´t ca’ các ký tu

˙’ phân chia, xác d¯i˙nh bo’’i bieˆ´nIFS(xem trên), và nho`’ d¯ó chia nho’ dòng leˆ ˙nh thành các tu`’ riêng re˜ trong các choˆ˜ tu’o’ng u´’ng. Neˆ´u giá tri

˙cu’aIFSba˘`ng moˆ

˙t dòng troˆ´ ng, thì vieˆ (adsbygoogle = window.adsbygoogle || []).push({});

˙c phân chia tu`’ se˜ không xa’y ra. Neˆ´u trong dòng leˆ

˙nh không thu˙’c hieˆ˙n phép theˆ´ nào trong các phép theˆ´ keˆ’ trên, thì phân chia tu`’ cu˜ng không xa’y ra.

3.7.7 Khai trieˆ’n các maˆ˜u tên taˆ

˙p tin và thu’ mu

˙c (Pathname Expansion)

Phép theˆ´ tên d¯u’o`’ng daˆ˜n và taˆ

˙p tin (Pathname expansion) su’’ du

˙ng d¯eˆ’ chı’ nho`’ moˆ

˙t maˆ˜u nho’ go

˙n mà có theˆ’ chı’ ra vài taˆ

˙p tin (hay thu’ mu

˙c), tu’o’ng u´’ng vo´’i maˆ˜u này. Sau khi phân chia tu`’, và neˆ´u nhu’ không d¯u’a ra tùy cho

˙n-f, thìbashse˜ tìm kieˆ´m trong tu`’ng tu`’ cu’a dòng leˆ ˙nh các ký tu

˙’*, ?,và [. Neˆ´u tìm thaˆ´y tu`’ vo´’i moˆ

˙t hay vài ký tu˙’ nhu’ vaˆ˙y, thì tu`’ này se˜ d¯u’o ˙’c xem nhu’ moˆ

˙t maˆ˜u, và caˆ`n thay theˆ´ bo’’i các tu`’ trong danh sách d¯u’o`’ng daˆ˜n, tu’o’ng u´’ng vo´’i maˆ˜u này. Neˆ´u nhu’ không tìm thaˆ´y tên tu’o’ng u´’ng vo´’i maˆ˜u, và bieˆ´n nullglob không d¯u’o

˙’c d¯u’a ra, thì tu`’ se˜ không thay d¯oˆ’i, tu´’c là các ký tu

˙’ d¯a˘˙c bieˆ

˙t bi˙maˆ´t giá tri

˙và hieˆ’u nhu’ các ký tu

˙’ thu’o`’ng. Neˆ´ u nhu’ bieˆ´n này d¯u’o

˙’c xác d¯i˙nh, mà d¯u’o`’ng daˆ˜n tu’o’ng u´’ng vo´’i maˆ˜u không tìm thaˆ´y, thì tu`’ se˜ bi ˙ xóa kho’i dòng leˆ

˙nh. Các ký tu˙’ dùng d¯eˆ’ ta˙o maˆ˜u có các giá tri

Ba’ng 3.4: Các ký tu

˙’ ta˙o maˆ˜u Ký tu

˙’ Quy luaˆ˙t thay theˆ´

* Tu’o’ng u´’ng vo´’i baˆ´t ky` dòng ký tu

˙’ nào, keˆ’ ca’ dòng roˆ˜ng. Ví du˙,v*.txt se˜ d¯u’o

˙’c thay theˆ´ bo’’ivnoss.txt, vnlinux.txtvàvntex.txt

(neˆ´u các taˆ (adsbygoogle = window.adsbygoogle || []).push({});

˙p tin này toˆ`n ta

˙i), và *.png se˜ tu’o’ng u´’ng taˆ´t ca’ các taˆ

˙p tin có phaˆ`n mo’’ roˆ

˙ng png (taˆ

˙p tin d¯oˆ` ho

˙a hai chieˆ`u). ? Tu’o’ng u´’ng baˆ´t ký moˆ

˙t ký tu˙’ d¯o’n nào. Ví du

˙, maˆ˜u

file?.txt se˜ d¯u’o

˙’c thaytheˆ´ bo’’i các tên teˆ

˙p sau

file1.txt, file2.txt, file3.txt, và filea.txt

(neˆ´u chúng toˆ`n ta

˙i), nhu’ngfile23.txtthì không. [...] Tu’o’ng u´’ng baˆ´t ky` ký tu

˙’ nào trong soˆ´ các ký tu

˙’ na˘`m trong daˆ´ u ngoa˘ ˙c vuông này. Ca˘

˙p ký tu˙’, phân cách nhau bo’’i daˆ´ u tru`’ (-), ví du

˙ c-f, bieˆ’u thi

˙moˆ

˙t dãy; baˆ´t ký ký tu

˙’ nào, theo tu`’ d¯ieˆ’n, na˘`m giu˜’a hai ký tu

˙’ này, keˆ’ ca’ hai ký tu

˙’ ta˙o ra dãy (cvà ftrong ví du˙) cu˜ng tu’o’ng u´’ng vo´’i maˆ˜u. Neˆ´u ký tu

˙’ d¯aˆ`u tiên trong ngoa˘˙c vuông là hay ˆ, thì maˆ˜u (o’’ vi˙trí này) se˜ tu’o’ng u´’ng taˆ´t ca’ các ký tu

˙’, không d¯u’o˙’c chı’ ra trong ngo Maˆ˜u tên taˆ

˙p tin raˆ´t thu’o`’ng xuyên su’’ du

˙ng trong dòng leˆ

˙nh có chu´’als. Hãy tu’o’’ng tu’o ˙’ng là ba

˙n muoˆ´ n xem thông tin cu’a moˆ

˙t thu’ mu (adsbygoogle = window.adsbygoogle || []).push({});

˙c, trong d¯ó có chu´’a moˆ

˙t soˆ´ lu’o

˙’ng lo´’n các taˆ˙p tin d¯u’ các da

˙ng, ví du˙, taˆ

˙p tin hình a’nh, phim vo´’i da

˙ng gif, jpeg, avi, v.v. . . . D¯ eˆ’ thu d¯u’o˙’c thông

tin chı’ cu’a taˆ

˙p tin da˙ng jpeg, có theˆ’ dùng câu leˆ ˙nh

kênh giao tác

[user]$ ls *.jpg

Neˆ´u trong thu’ mu

˙c có nhieˆ`u taˆ

˙p tin, mà tên cu’a chúng là các soˆ´ goˆ`m boˆ´n chu˜’soˆ´ (thu’mu ˙c

/proclà moˆ

˙t ví du˙+), thì leˆ

˙nh sau chı’ d¯u’a ra danh sách các taˆ

˙p tin có soˆ´ tu`’ 0500 d¯eˆ´n 0999:

kênh giao tác

[user]$ ls -l 0[5-9]??

3.7.8 Xóa các ký tu

˙’ d¯a˘˙c bieˆ˙t

Sau khi làm xong taˆ´t ca’ các phép theˆ´, các ký tu

˙’\, ‘ và"còn la˙i trong dòng leˆ

˙nh (chúng d¯u’o

˙’c su’’ du˙ng d¯eˆ’ huy’ bo’ giá tri ˙d¯a˘

˙c bieˆ

˙t cu’a các ký tu˙’ khác) se˜ bi˙xóa heˆ´t.

3.8 Shell - moˆ

˙t ngôn ngu˜’ laˆ

˙p trình (adsbygoogle = window.adsbygoogle || []).push({});

Nhu’ d¯ã nói o’’ trên, d¯eˆ’ có theˆ’ xây du

˙’ng baˆ´ t ky` gia’i thuaˆ

˙t nào, cu˜ng caˆ`n có các toán tu’’ kieˆ’m tra d¯ieˆ`u kieˆ

˙n. Heˆ

˙ vo’bashhoˆ˜ tro

˙’ các toán tu’’ lu˙’a cho˙nif...then...elsevà case, cu˜ng nhu’ các toán tu’’ vòng la˘

˙pfor, while, until, nho`’ d¯ó nó (bash) tro’’ thành moˆ ˙t ngôn ngu˜’ laˆ

˙p trình ma˙nh.

3.8.1 Toàn tu’’ if và test (hoa˘˙c [ ]) ˙c [ ])

Caˆ´u trúc cu’a toán tu’’ d¯ieˆ`u kieˆ

˙n có da˙ng thu go˙n nhu’ sau: iflist1 then list2 else list3

fitrong d¯ó, list1, list2, và list3là các chuoˆ˜i câu leˆ

3.8 Shell - moˆ

˙t ngôn ngu˜’ laˆ

˙p trình 43

pha’y và keˆ´t thúc bo’’i moˆ

˙t daˆ´u chaˆ´m phaˆ’y hay ký tu

˙’ dòng mo´’i. Ngoài ra, các chuoˆ˜i này có theˆ’ d¯u’o

˙’c d¯u’a vào daˆ´ u ngoa˘

˙c nho˙n: list. Toán tu’’ if kieˆ’m tra giá tri ˙d¯u’o

˙’c tra’ la˙i bo’’i các câu leˆ ˙nh tu`’list1. Neˆ´u trong danh sách có vài câu leˆ

˙nh, thì kieˆ’m tra giá tri ˙d¯u’o

˙’c tra’ la˙i bo’’i câu leˆ ˙nh

cuoˆ´ i cùng cu’a danh sách. Neˆ´u giá tri

˙này ba˘`ng 0, thì se˜ thu

˙’c hieˆ˙n các leˆ

˙nh tu`’list2; còn neˆ´u giá tri

˙này khác không, thì se˜ thu

˙’c hieˆ˙n nhu˜’ng leˆ

˙nh tu`’list3. Giá tri ˙d¯u’o (adsbygoogle = window.adsbygoogle || []).push({});

˙’c tra’ la˙i bo’’i toán tu’’ifnhu’ vaˆ

˙y, trùng vo´’i giá tri

˙mà chuoˆ˜i leˆ

˙nh thu˙’c hieˆ˙n (list2hoa˘˙clist3) d¯u’a ra. Da

˙ng d¯aˆ`y d¯u’ cu’a leˆ

˙nhifnhu’ sau:

iflistthenlist [eliflistthenlist ] ... [elselist ]fi

(o’’d¯ây daˆ´u ngoa˘

˙c vuông chı’ có nghı˜a là, nhu˜’ng gì na˘`m trong nó, ngoa˘

˙c vuông, không nhaˆ´t thieˆ´t pha’i có). Bieˆ’u thu´’c d¯u´’ng sauifhayelifthu’o`’ng là câu leˆ

˙nhtest, mà có theˆ’ d¯u’o ˙’c bieˆ’u thi

˙bo’’i daˆ´u ngoa˘

˙c vuông [ ]. Leˆ

˙nhtestthu˙’c hieˆ˙n phép tính moˆ

˙t bieˆ’u thu´’c nào d¯ó, và tra’ la

˙i giá tri˙0, neˆ´u bieˆ’u thu´’c là d¯úng, và 1 trong tru’o`’ng ho

˙’p ngu’o˙’c la˙i. Bieˆ’u thu´’c d¯u’o ˙’c d¯u’a to´’i chu’o’ng trìnhtestnhu’ moˆ

˙t tham soˆ´ cu’a chu’o’ng trình. Thay vì gõ

test expression

có theˆ’ d¯u’a bieˆ’u thu´’cexpressionvào ngoa˘

˙c vuông:

[ expression ]

Caˆ`n chú ý ra˘`ng,testvà[d¯ó là hai tên cu’a cu’a cùng moˆ

˙t chu’o’ng trình, chu´’ không pha’i là moˆ

˙t phép bieˆ´n hóa thaˆ`n thông nào d¯ó cu’a heˆ

˙vo’bash(chı’ là cú pháp cu’a[d¯òi ho’i pha’i có daˆ´u d¯óng ngoa˘

˙c). Và cu˜ng caˆ`n chú ý ra˘`ng o’’ choˆ˜ cu’a testtrong caˆ´u trúcifcó theˆ’ su’’ du ˙ng baˆ´t ky` chu’o’ng trình nào. D¯ eˆ’ keˆ´ t thúc mu

˙c này, chúng ta d¯u’a ra ví du ˙ su’’ du ˙ngif: kênh giao tác if [ -x /usr/bin/unicode_start ] ; then unicode_start else

echo "hello world" fi

Veˆ` toán tu’’test(hay[...]) caˆ`n d¯i sâu ho’n. (adsbygoogle = window.adsbygoogle || []).push({});

3.8.2 Toán tu’’ test và d¯ieˆ`u kieˆ

˙n cu’a bieˆ’u thu´’c

Bieˆ’u thu´’c d¯ieˆ`u kieˆ

˙n, su’’ du

˙ng trong toán tu’’test, d¯u’o

˙’c xây du˙’ng trên co’ so’’ kieˆ’m tra thuoˆ˙c tính taˆ

˙p tin, so sánh các dòng và các so sánh soˆ´ ho

˙c thông thu’o`’ng. Bieˆ’u thu´’c phu´’c ta

˙p ho’n d¯u’o

˙’c ta˙o ra tu`’ các thao tác d¯o’n và kép sau ("nhu˜’ng viên ga

˙ch co’ so’’"): • -a file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta ˙i. • -b file

D

¯ úng neˆ´ ufiletoˆ`n ta

˙i, và là moˆ ˙t taˆ

˙p tin thieˆ´t bi

˙khoˆ´ i (block device) d¯a˘ ˙c bieˆ

˙t. • -c file

D

¯ úng neˆ´ ufiletoˆ`n ta

˙i, và là moˆ ˙t taˆ

˙p tin thieˆ´t bi

˙ký tu˙’ (charater device) d¯a˘˙c bieˆ ˙t. • -d file

D

¯ úng neˆ´ ufiletoˆ`n ta

˙i và là moˆ ˙t thu’ mu ˙c. • -e file D ¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta ˙i.

• -f file (adsbygoogle = window.adsbygoogle || []).push({});

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và là moˆ ˙t taˆ

˙p tin thông thu’o`’ng. • -g file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và d¯u’o

˙’c d¯a˘˙t bit thay d¯oˆ’i nhóm.

• -h filehay-L file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và là liên keˆ´t meˆ`m (liên keˆ´t tu’o

˙’ng tru’ng). • -k file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và d¯u’o

˙’c d¯a˘˙t bit sticky. • -p file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và là tên cu’a moˆ

˙t oˆ´ ng (kênh FIFO). • -p file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và là tên cu’a moˆ (adsbygoogle = window.adsbygoogle || []).push({});

˙t oˆ´ ng (kênh FIFO). • -r file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và có quyeˆ`n d¯o ˙c. • -s file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và kích thu’o´’c lo´’n ho’n không. • -t fd

D

¯ úng neˆ´ u boˆ

˙ mô ta’ cu’a taˆ

˙p tin (fd) mo’’ và chı’ lên terminal. • -u file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và d¯u’o

˙’c d¯a˘˙t bit thay d¯oˆ’i ngu’o`’i dùng.

• -w file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và có quyeˆ`n ghi. • -x file

D

¯ úng neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và có quyeˆ`n thu ˙’c thi. • -0 file

D

¯ úng, neˆ´ u taˆ

˙p tin có tênfilevà chu’ so’’ hu˜’u cu’a nó là ngu’o`’i dùng mà ID có hieˆ ˙u lu˙’c chı’ d¯eˆ´n. (adsbygoogle = window.adsbygoogle || []).push({});

• -G file

D

¯ úng, neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và thuoˆ ˙c veˆ` nhóm, xác d¯i ˙nh bo’’i ID nhóm có hieˆ ˙u lu ˙’c. • -S file D ¯ úng, neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và là socket. • -N file

D

¯ úng, neˆ´ u taˆ

˙p tin có tênfiletoˆ`n ta

˙i và thay d¯oˆ’i tu`’ laˆ`n d¯u’o

˙’c d¯o˙c cuoˆ´ i cùng. • file1 -nt file2

D

¯ úng, neˆ´ u taˆ

˙p tinfile1có tho`’i gian su’’a d¯oˆ’i muoˆ

3.8 Shell - moˆ

˙t ngôn ngu˜’ laˆ

˙p trình 45

• file1 -ot file2

D

¯ úng, neˆ´ u taˆ

˙p tinfile1"già" ho’nfile1(tru’o`’ng ho

˙’p ngu’o˙’c la˙i cu’a tru’o`’ng ho

˙’p trên). • file1 -ef file2

D

¯ úng, neˆ´ u taˆ

˙p tinfile1vàfile2có cùng moˆ

˙t soˆ´ thieˆ´t bi

˙ và chı’ soˆ´ mô ta’ inode. • -o optname

D (adsbygoogle = window.adsbygoogle || []).push({});

¯ úng, neˆ´ u tùy cho

˙n optnamecu’a heˆ

˙ vo’ d¯u’o

˙’c kích hoa˙t. Chi tieˆ´t xin xem trên trang

man bash. • -z string

D

¯ úng, neˆ´ u d¯oˆ

˙ dài cu’a chuoˆ˜istringba˘`ng không. • -n string

D

¯ úng, neˆ´ u d¯oˆ

˙ dài cu’a chuoˆ˜i khác không. • string1 == string2

D

¯ úng, neˆ´ u hai chuoˆ˜i trùng nhau. Có theˆ’ thay hai==ba˘`ng moˆ ˙t=. • string1 !== string2

D

¯ úng, neˆ´ u hai chuoˆ˜i không trùng nhau. • string1 < string2

D

¯ úng, neˆ´ u chuoˆ˜istring1, theo tu`’ d¯ieˆ’n, d¯u´’ng tru’o´’c chuoˆ˜istring2 (d¯oˆ´ i vo´’i ngôn ngu˜’ hieˆ

˙n tho`’i).

• string1 > string2

D

¯ úng, neˆ´ u chuoˆ˜istring1, theo tu`’d¯ieˆ’n, d¯u´’ng sau chuoˆ˜istring2(d¯oˆ´ i vo´’i ngôn ngu˜’ hieˆ

˙n tho`’i).

• arg1 OP arg2

O’’ d¯ây OP là moˆ

˙t trong các phép so sánh soˆ´ ho

˙c:-eq(ba˘`ng),-ne(khác, không ba˘`ng),

-lt (nho’ ho’n),-le(nho’ ho’n hoa˘

˙c ba˘`ng), -gt(lo´’n ho’n),-ge (lo´’n ho’n hoa˘

˙c ba˘`ng). O’’ choˆ˜ các tham soˆ´ arg1 và arg2 có theˆ’ su’’du

˙ng các soˆ´ nguyên (âm hoa˘ (adsbygoogle = window.adsbygoogle || []).push({});

˙c du’o’ng). Tu`’ các bieˆ’u thu´’c d¯ieˆ`u kieˆ

˙n co’ ba’n này có theˆ’ xây du

˙’ng các bieˆ’u thu´’c phu´’c ta˙p theo ý muoˆ´ n nho`’ các phép lôgíc thông thu’o`’ng PHU’ D¯ I

˙NH, VÀ (coˆ ˙ng) và HOA ˘ ˙C: • !(expression) Phép phu’ d¯i

˙nh. D¯ úng, neˆ´ u bieˆ’u thu´’c sai.

• expression1 -a expression2

Phép coˆ

˙ng lôgicAND. D¯ úng neˆ´ u ca’ hai bieˆ’u thu´’c d¯eˆ`u d¯úng.

• expression1 -o expression2

Phép lôgíc hoa˘

˙cOR. D¯ úng neˆ´ u moˆ

Một phần của tài liệu Linux cho người mới dùng (Trang 44)