28
Hướng dận lập trình shell trên Linux - Bài 1: Biến và Nhập xuất Đầu tiên bạn phải tạo 1 file text, bạn có thể đặt tên và đuôi file tùy ý (Không để đuôi cũng ko sao) đây sẽ là file chứa nội dung script mà chúng ta sắp viết VD: Các tên sau đều hợp lệ Code: tenfile tenfile.sh tenfile.txt Sau đó, để script có thể thực thi ta cấp quyền cho nó bằng lệnh sau Code: chmod 755 tenfile Để chạy 1 shell script nào đó ta gõ Code: ./tenfile VD: ta có 1 shell script đã đc chmod 755 tại Code: /home/vtlai/shell.sh Để chạy nó ta làm như sau Vào thư mục /home/vtlai Code: cd /home/vtlai Chạy shell Code: ./shell.sh Cú pháp của 1 file shell script như sau: Code: #!/bin/bash Nội dung script trong đó /bin/bash là bộ lệnh mà chúng ta sẽ sử dụng trong script. Thông thường shell chúng ta sử dụng đều là shell bash như trên

Lap Trinh Shell

Embed Size (px)

Citation preview

Hng dn lp trnh shell trn Linux - Bi 1: Bin v Nhp xutu tin bn phi to 1 file text, bn c th t tn v ui file ty (Khng ui cng ko sao) y s l file cha ni dung script m chng ta sp vit VD: Cc tn sau u hp l Code:tenfile tenfile.sh tenfile.txt

Sau , script c th thc thi ta cp quyn cho n bng lnh sau Code:chmod 755 tenfile

chy 1 shell script no ta g Code:./tenfile

VD: ta c 1 shell script c chmod 755 ti Code:/home/vtlai/shell.sh

chy n ta lm nh sau Vo th mc /home/vtlai Code:cd /home/vtlai

Chy shell Code:./shell.sh

C php ca 1 file shell script nh sau: Code:#!/bin/bash Ni dung script

trong /bin/bash l b lnh m chng ta s s dng trong script. Thng thng shell chng ta s dng u l shell bash nh trn Cch xut 1 chui ra mn hnh Code:echo "Ni dung chui"

Cch s dng bin Khi gn gi tr cho bin ta s dng tn bin khng c $ u Lu : Du bng phi nm ngay sau tn bin v khng s dng khong trng VD: Code:tenbien="Ni dung"

Khi ly ni dung ca bin ra xut hoc so snh ... ta s dng tn bin c du $ u VD:

Code:tenbien="Dien dan sinh vien CNTT sinhvienit.net"; echo $tenbien

Kt qu: Code:Dien dan sinh vien CNTT sinhvienit.net

Cch nhp 1 chui vo 1 bin Code:read TnBin

Khi chy ti lnh read ny mn hnh s dng li cho chng ta nhp. sau khi bn nhp 1 chui v bm enter th ni dung chui s gn cho bin m ta ghi sau read VD: Code:echo "Vui long nhap vao mot chuoi:" read vtlai echo "Chuoi vua nhap la: $vtlai"

Cch ly kt qu ca 1 lnh, chui lnh a vo bin Code:tnbin=`Lnh cn ly kt qu tr v`

hoc Code:tenbien= $(Lnh cn ly kt qu tr v)

VD: Code:hientai=`date` echo "Hom nay la: $hientai ";

Post only trn sinhvienit.net, copy i u vui lng ghi r ngun http://sinhvienit.net/@forum/threads...-va-nhap-xuat/

Hng dn lp trnh shell trn Linux - Bi 2: Cc php ton s hcKhc vi C v 1 s ngn ng lp trnh khc, vic s dng cc php ton s hc khng n gin l bng cch s dng cc du tng ng (+ - * /) m rm r hn 1 cht Php cng:

n=n+6Code:

n=`expr $n + 6`

hoc Code:n=$(($n + 6))

hoc Code:n=$[ $n + 6 ]

n=n++Code:n=$[ $n + 1 ]

hoc Code:let "n++"

hoc Code:$[ n++ ]

hoc Code:(( n++ ))

Php tr, nhn, chia tng tPost only trn sinhvienit.net, copy i u vui lng ghi r ngun http://sinhvienit.net/@forum/threads...p-toan-so-hoc/

QT4- Lp trnh nhng trn Ubuntu lu ri khng thy anh em trn din n nhc n QT na nh ? Hin ti mnh ang lm mt ti lin qua n truyn video thi gian thc trn my tnh nhng s dng mng addhoc v lp trnh trn QT4. Mnh c rt nhiu iu mun hi v mong c s gp ca anh em. ng thi qua y cng mong mun QT ngy cng pht trin bi qu thc n l mt Platform rt hay. Cc cng c c th snh ngang vi visual. Trc ht mnh xin bt u vo phn ci t v s dng nh s qua nh

ci t QT4 trn ubuntu (10.10) bn c 2 cch : -Th nht ci t trong Applications>Ubuntu Software Center .Bn g Qt vo phn Search v ci t cc phn Qt4 Designer, Qt4 Assistant, Qt4 Linguist, Qt4 Settings v cui cng l IDE ring ca QT QT Creator -Th hai bn c th vo trang ch ca QT v down b ci y ( gi SDK ) : Download Qt, the cross-platform application framework Qt - A crossplatform application and UI framework Sau khi bn down gi SDK ( c ui l .run ) th tin hnh ci t ,bn chuyn gi ny vo home, m Terminal v g : chmod u+x Qt_SDK_Lin32_offline_v1_1_3_en.run g tip ./Qt_SDK_Lin32_offline_v1_1_3_en.run Theo mnh nn ci theo cch th nht. Bi bn ubuntu 10.10 tr i h tr y cho Qt. Cn nu bn dng phin bn thp hn 10.10 th nn ci theo cch th 2. Tip theo mnh xin lm mt v d nho nh vi Qt. Load nh t my tnh v hin th Bc 1: To project ca Qt. Bn vo Applications >Programing >QT Creator .Giao din ca Qt Creator hin ln nh sau

Bn chn Create Project Tip theo bn chn loi project, y mnh s dng l Qt C++ Project> Qt Gui Application. Cui cng mnh n choose v ca s t tn project hin ra

Sau khi t tn bn chn Next th Qt s yu cu bn t tn cho class khi u ca chng trnh ( y ch l mt th tc, bn c th t tn ri khi vit chng trnh khng s dng class ny cng chng sao ).

Trong vd ny mnh t tn Class l ShowImage.Chn Base class l QWidget (lp giao din).Cui cng n Finish bt u lp trnh. Mnh s ni qua v cc thnh phn ca mt lp trong QT Mt lp trong Qt s bao gm 3 thnh phn l : Header file ( ui .h ), thnh phn ny c chc nng cha cc hm, cc bin ton cc, con tr, hoc cp pht b nh cn khai bo s dng trong class. Thnh phn th hai l Source file ( ui .cpp ), thnh phn ny cha cc nh ngha hm, chc nng cc hm trong class. y l thnh phn quan trng nht trong Qt.

Thnh phn th 3 l Form file ( ui .ui ). Ty tng class v cch chn ca ngi s dng m thnh phn ny c trong chng trnh. Thnh phn ny gip ngi s dng to giao din d dng hn thng qua ko th ng thi tng tc vi cc thnh phn ca giao din ( button, label .... ) kh d dng. Nu khng s dng thnh phn ny bn cng hon ton c th code giao din trong file.cpp. Tt nhin khng th thun tin v d qun l nh Form. Bc 2 :Sau khi to project th chng ta bt u lp trnh thi Trc tin mnh vo form. Trong ct Project bn click vo showimage.ui Trong form ny mnh ko th to ra 2 ci label vi tn l lbl_Hello ( Ci ny dng hin th ch "Hello" ) v lbl_Image ( Ci ny l show nh ).

Sau khi to xong mnh quay v showimage, vit ch "Hello" bng cch s dng hm setText() ui->lbl_hello->setText("Hello"); hin th nh th trc tin bn cn phi to mt bit kiu QImage ( y l mt kiu bin ca Qt x l nh) v load nh t cng ln Qimage image("qt4.png"); Ch bn phi nh trong th mc build project nh. y ca mnh l th mc Home/test-build-desktop

Tip theo hin th hnh nh th ta cn chuyn QImage sang lp QPixmap sau hin th cc Pixmap trn label (lbl_Image) QImage img("qt4.png"); QPixmap pixmap ; pixmap=pixmap.fromImage(img); ui->lbl_Image->setPixmap(pixmap); n y bn c th xem kt qu ca mnh ri

Mt S bi tp Lp trnh shell a) Lm vic vi Text Bi 1: Vit 1 chng trnh Shell c tng dng trong 1 file vn bn. Gia mi ln hin th dng text th c 1 cu hi t Shell: bn c mun c dng k tip ko ? y/n nu tr li l y hoc Y th in dng k tip, trong trng hp ngc li th kt thc chng trnh c.

M: #!/bin/sh echo e nhap ten file: read filename if [ ! f $filename ]; then echo $filename not exists exit 1 fi answer= count=0 numlines=`wc l $filename|sed s/^ *//|cut d f 1` echo so dong: $numlines while [ $answer!=n] do echo e tiep tuc(y/n)? read answer if [ answer = y ]; then echo doc het file rui exit 0 fi count=$(($count+1)) sed n ${count}p $filename done exit 0 Bi 2: Vit 1 dng lnh cho php c 3 dng u tin trong 1 file vn bn m khng c dng bt c vng lp no

M: sed n 1,3p $filename Bi 3: Vit 1 chng trnh trong Shell sao cho vi tham s th nht l tn file text v n s in ra mn hnh ni dung file ny, nhng vi tt c k t u vit hoa

M: #!/bin/sh echo e nhap ten file: read filename if [ ! f $filename ]; then echo $filename not exists exit 1 fi echo file sau khi chuyen doi: tr [a-z] [A-Z] n - Minh ha cc cu trc while do done, v cch s dng [], $(()). - Tp tin tong1.sh #!/bin/sh echo Chuong trinh tinh tong 1- $1 index=0 tong=0 while [ $index -lt $1 ] do index=$(($index + 1)) tong=$(($tong + $index)) done echo "Tong 1-$1= $tong" exit 0 - Chy chng trnh : chmod a+x tong1.sh ./tong1 100 ================================================== ============================================= 6.2. Chng trnh tnh giai tha ca mt s - Minh ha cc cu trc while do done, v cch s dng [], $(()). - Tp tin giaithua.sh #!/bin/sh echo Chuong trinh tinh $1! index=0 gt=1 while [ $index -lt $1 ] do

index=$(($index + 1)) gt=$(($gt * $index)) done echo "$1!= $gt" exit 0 - Chy chng trnh : chmod a+x giaithua.sh ./giaithua 5 ================================================== ====================================== 6.3. Chng trnh m s dng ca mt tp tin - Minh ha cc cu trc if then fi, while do done, v cch s dng [], $(()). - Tp tin demdong.sh #!/bin/sh echo Chuong trinh dem so dong cua tap tin $1 { n=0 while read line - 22do n=$(($n + 1)) done echo So dong cua tap tin $1 la : $n }