1. Trang chủ
  2. » Công Nghệ Thông Tin

Ubunu lập trình shell

48 396 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 192,15 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một số shell dưới LinuxTên Người phát triển Nơi Ghi chú KSH Korn SHell David Korn AT & T Bell Labs hơn CSH... Tạo môi trường phát triểntrình: mkdir ~/shell-scripts lưu vào ~/shell-script

Trang 1

Lập trình shell

Trình bày: TS NGÔ BÁ HÙNG Email: nbhung@cit.ctu.edu.vn

Trang 2

dùng đến kernel

Trang 3

Một số shell dưới Linux

Tên Người phát triển Nơi Ghi chú

KSH

(Korn SHell) David Korn AT & T Bell Labs

hơn CSH

Trang 5

Tại sao sử dụng shell script

Trang 6

Tạo một shell script

Trang 8

Tạo môi trường phát triển

trình: mkdir ~/shell-scripts

lưu vào ~/shell-scripts với tên là script-1.sh

• Chuyển thư mục hiện hành: cd ~/shell-scripts

• Gán quyền cho script-1.sh: chmod 755 script-1.sh

Trang 9

Biến trong shell

– Được tạo và duy trì bởi Linux – Tên biến viết hoa

– Xem toàn bộ biến hệ thống bằng lệnh set hoặc printenv

– Được tạo và duy trì bởi người dùng – Tên biến viết thường

Trang 10

Một vài biến hệ thống

BASH_VERSION= 4.0.33(1)-release Phiên bản của bash shell

hiện tại

PATH=/usr/bin:/sbin:/bin:/usr/sbin Các thư mục sẽ được tìm đến khi một

chương trình được yêu cầu thực thi

PWD=/home/nbhung/Desktop Thư mục hiện hành

Trang 11

Biến định nghĩa bởi người dùng

Trang 12

Linux Operating System

• Tổng quan về hệ điều hành Linux

• Hệ thống tập tin trên Linux

• Bộ thông dịch lệnh

• Lập trình shell script

Trang 13

Lệnh echo

– -n không xuống dòng – -e biên dịch các ký tự sau như ký tự đặc biệt

● \c suppress trailing new line \n new line

● \r carriage return \t horizontal tab

● \\ backslash

Trang 14

Lệnh echo - ví dụ

Toi la nbhung

Trang 15

Bài tập

các thông tin sau

Trang 17

Dấu nháy

• " Bao bọc chuỗi "

● $echo "Today is date"

Today is date

● $echo "Today is 'date'"

Today is 'date'

● $echo "Today is `date`"

Today is Tue Dec 29 14:48:45 ICT 2009

Trang 19

Lệnh read

echo -n "Your first name please:"

read fname echo "Hello $fname, Lets be friend!"

$chmod 755 read.sh

$./read.sh

Your first name please: Ngo Ba Hung Hello Ngo Ba Hung, Lets be friend!

Trang 20

echo -n "Nhap a="; read a

echo -n "Nhap b="; read b

Trang 22

Ký tự đại diện

khoảng

một trong số các ký tự được liệt kê

một trong số các ký tự trong khoảng

Trang 23

Ký tự đại diện - Ví dụ

$ls *.c # Liệt kê tất cả các tập tin có tên kết thúc với c

$ls fo? # Liệt kê tất cả các tập tin có tên 3 ký tự,

# hai ký tự bắt đầu là fo, ký tự thứ 3 là bất kỳ

$ ls [abc]* # Liệt kê tất cả các tập tin có tên

# với ký tự bắt đầu là a,b, hoặc c

$ls [a-c]* # Tương tự như trên

$ ls [!abc]* #L iệt kê tất cả các tập tin có tên không bắt

# đầu bằng ký tự a,b, hoặc c

Trang 24

Nhiều lệnh trên một dòng lệnh

$date;who Tue Dec 29 15:39:12 ICT 2009 nbhung tty7 2009-12-29 14:04 (:0) nbhung pts/0 2009-12-29 14:19 (:0.0)

Trang 25

Cú pháp của một lệnh

Trang 26

Truy cập các thành phần của lệnh

$2 => bar; tham số thứ hai

$1 => foo; tham số thứ nhất

#!/bin/bash echo "Total number of command line argument are $#"

echo "$0 is script name"

echo "$1 is first argument"

echo "$2 is second argument"

echo "All of them are :- $* or $@"

$./print_arg.sh Hello World /print_arg.sh is script name Hello is first argument

World is second argument All of them are :- Hello World or Hello World

Trang 27

Ống dẫn (pipe)

đối số nhập của một chương trình khác

• $ ls | more # In kết quả của lệnh ls từng trang màn hình

• $ ls -l | wc -l # In số lượng file có trong thư mục hiện hành

Trang 28

Chuyển hướng xuất/nhập

$command > > output_file: xuất ra file

$command >> >> output_file: nối vào cuối tập tin

$cat > sname vivek

ashish zebra babu

$ sort < sname > sorted_names

$ cat sorted_names ashish

babu vivek

Trang 29

Lọc dữ liệu

hotel.txt và lưu vào tập tin hlist:

$head -30 < hotel.txt | tail -10 | >hlist

và lưu vào tập tin u_sname

Trang 30

Lệnh liên quan đến tiến trình

ps Xem các tiến trình của cửa sổ lệnh hiện tại

kill pid Giết (kết thúc) tiến trình có số hiệu là pid

kill pro_name Giết (kết thúc) tiến trình có tên là pro_name

ps -ag Lấy thông tin của tất cả tiến trình của bạn

kill 0 Giết tất cả tiến trình của bạn, trừ shell hiện tại

command & Thực thi chương trình command ở chế độ ngầm (background)

ps aux Hiển thị tất cả tiến trình cùng với tên người dùng

top Xem các tiến trình cùng với các tài nguyên đang sử dụng

pstree Hiển thị cây tiến trình

Trang 31

Cấu trúc và dòng lặp

Trang 32

Cấu trúc điều khiển

Trang 33

Ví dụ về cấu trúc điều khiển

Trang 34

Câu lệnh kiểm tra điều kiện

echo "$1 number is positive"

fi

$ chmod 755 ispostive

$ ispostive 5

Trang 36

Các phép toán so sánh chuỗi

Phép toán dùng trong

String1 = string2 Chuỗi string1 bằng với chuỗi

string2 ? String1 != string2 Chuỗi string1 khác chuỗi string2 ?

string1 Chuỗi string1 thì khác NULL hoặc

chưa được định nghĩa -n string1 Chuỗi string1 thì khác NULL và đã

tồn tại -z string1 Chuỗi string1 là NULL và đã tồn tại

Trang 37

Các phép toán kiểm tra tập tin

Phép toán dùng trong shell

-f file Tập tin file tồn tại hoặc là một

tập tin bình thường, không là một thư mục ?

không là một tập tin

Trang 39

Cấu trúc if-else đơn cấp

• osch=0

• echo "1 Unix (Sun Os)"; echo "2 Linux (Ubuntu)";

• echo -n "Select your os choice [1 or 2]? "; read osch;

• if [ $osch -eq 1 ] ; then

• echo "You Pick up Unix (Sun Os)"

• else

• if [ $osch -eq 2 ] ; then

• echo "You Pick up Linux (Ubuntu)"

• else

• echo "What you don't like Unix/Linux OS."

• fi

Trang 40

Cấu trúc if-then-else đa cấp

Trang 41

Cấu trúc if-then-else đa cấp, ví dụ

Trang 43

Vòng lặp for (1), ví dụ

#!/bin/bash

if [ $# -eq 0 ]

then

echo "Error - Number missing from command line argument"

echo "Syntax : $0 number"

echo "Use to print multiplication table for given number"

Trang 45

echo -e -n "\033[40m" #### set back background colour to black

echo "" #### print the new line ###

Trang 46

Vòng lặp while

• Cú pháp

while [ condition ] do

Command1; Command2

done

• Ví dụ

n=$1; i=1 while [ $i -le 10 ] do

echo "$n * $i = `expr $i \* $n`"

i=`expr $i + 1`

Trang 48

Câu lệnh case, ví dụ

echo -n "What do you want to rent?"; read rental

"car") echo "For $rental VND 20000 per k/m";;

"van") echo "For $rental VND10000 per k/m";;

"jeep") echo "For $rental VND 5000 per k/m";;

"bicycle") echo "For $rental VND 2000 per k/m";;

*) echo "Sorry, I can not gat a $rental for you";;

esac

Ngày đăng: 23/10/2014, 00:00

TỪ KHÓA LIÊN QUAN

w