Giới thiệu• Gọi thực hiện lệnh trong Shell • Biến trong Shell • Câu lệnh alias • Tùy biến môi trường • Điều khiển công việc • Viết chương trình Shell... Biến trong shell• Sử dụng trong l
Trang 1LẬP TRÌNH TRÊN LINUX
Trang 2Giới thiệu
• Gọi thực hiện lệnh trong Shell
• Biến trong Shell
• Câu lệnh alias
• Tùy biến môi trường
• Điều khiển công việc
• Viết chương trình Shell
Trang 3Gọi thực hiện shell
bash [options] [arguments]
• Các tập tin liên quan
– /etc/profile – system initialization file
– ~/.bash_profile(.bashrc) – Khởi tạo biến cá nhân – ~/.bash_history – Lưu lại các lệnh đã gõ
Trang 4Biến trong shell
• Sử dụng trong lập trình shell và điều khiển môi
trường
• Gán giá trị cho biến: variable_name=value
• Truy cập vào giá trị của biến: $variable_name
$ foo="hello there"
$ echo $foo
hello there
Trang 5Các biến môi trường
• HOME – Thư mục nhà
• PATH – Đường dẫn tới các tập tin thực thi
• USER – Tên người dùng đăng nhập
• (command:env)
Trang 8Các hàm toán học
• Các phép toán: +, -, *, /, %
• Sử dụng Let khi thực hiện các hàm toán học
let "sum = 4 + 3"
let "area = $len * $width"
let "percent = $num / 100"
let "remain = $n % $d"
Trang 9Shell Script
• Là tập tin văn bản chứa các cấu trúc điều
khiển và các lệnh của Shell
• Thông dịch từng hàng trong Shell
• Cấp quyền chạy(execute)
• Có thể gọi từ shell script khác
• Tham số được truyền từ dòng lệnh
Trang 10Hello, world
./myscript.sh
$ cat > myscript.sh
Trang 11"Hello" program
$ cat > hello.sh
#!/bin/bash
# This is a comment: simple hello shell script
echo "Enter your name:"
Trang 12Các biến
• Các biến môi trường
• Các biến xây dựng sẵn(Built-in variables)
• Các biến người dùng(User variables)
• Biến có thể lưu trữ số hay các ký tự
• Chuỗi kỹ tự phải đặt trong dấu nháy kép hay nháy đơn
Trang 13Vị trí các tham số
• Các tham số được tham chiếu theo vị trí của nó
• Các biến có sẵn trong 1 chương trình shell
– $# - Số lượng tham số truyền vào
– $0 - Tên của shell script
– $* - Trả về tất cả tham số truyền vào
– $n - Tham chiếu đến tham số thứ n(1-9)
• $./myscript source dest
– $0 = /myscript
– $1 = source
– $2 = dest
Trang 14Các biến đặc biệt
• $$ - ID của tiến trình hiện tại
• $? - Trạng thái kết thúc của tiến trình cuối
cùng
Trang 15Biểu thức so sánh
[ expression ]
• So sánh chuỗi ký tự: =, !=, -n, -z
• So sánh số: -eq, -lt, -gt, -ne, -le, -ge
• Phép toán trên tập tin: -d, -f, -e, -w, -r, -x
• Phép toán logic: !, -o, -a
[ s1 = s2 ] [ $num -lt 100 ] [ -d mydir ] [ ! -f myfile ]
Trang 16Câu lệnh điều kiện
Trang 17Câu lệnh điều kiện (cont)
Trang 19let "num= $num + 2"
done
Trang 20Một số câu lệnh khác
• BREAK - exit a loop
• CONTINUE - skip to end of current while or for loop
• EXIT - end the shell script
• RETURN - return from funtion or shell script
if [ $# -lt 2 ]; then
echo "Usage: ‘basename $0‘ source dest"
exit 1
fi
Trang 21• Function format
function func_name { statements
Trang 22Gỡ lỗi (Debugging)
lệnh
$ bash -x command
Trang 23Lập Trình C trong Linux
Trang 24Trình biên dịch: GCC
Trang 25Giới thiệu
• Ngôn ngữ lập trình C là lựa chọn tốt cho những người mới học lập trình
• Đơn giản, mạnh và được sử dụng rộng
• Linux là môi trường thích hợp để viết các chương trình không cần mất chi phí mua các phầm mềm hỗ trợ lập trình đắt tiền
Trang 26Biên dịch với gcc
• Trình biên dịch(compiler): chuyển từ “human-readable
source code” sang ”machine-readable object code”
• Cách sử dựng
– [CODE]% gcc [ tùy chọn | tên file ]
• Giả sử bạn có 1 file myfile.c khi bạn đánh :
% gcc myfile.c
• Trong thư mục của bạn sẽ có thêm file a.out đó là file
output mặc định của gcc Lúc này bạn đã có thể run chương trình bằng :
Trang 27Biên dịch với gcc (tt)
• Nếu tiếp tục biên dịch file khác theo cách như trên thì file a.out của bạn sẽ bị ghi đè bằng file mới.
• Để khắc phục bạn có thể sử dụng tùy chọn -o để đặt tên file out put
$ gcc -o myout myfile.c
• $./myout
Trang 29Dịch chương trình nhiều tập tin
• Cho phép quản lý các chương trình lớn
• Dịch lại chương trình lớn thì lâu hơn rất nhiều so với khi dịch các chương trình nhỏ
Trang 30Biên dịch với nhiều tệp
Trang 31Compile green.o: $gcc -c green.c
Compile blue.o: $gcc -c blue.c
Link the parts together: $gcc green.o blue.o
Trang 32Biểu đồ phụ thuộc(Dependency
graphs)
Trang 33Cách hoạt động makefile
Makefile:
project 1: data.o main.o io.o
gcc data.o main.o io.o –o project1 data.o : data.c data.h
gcc –c data.c main.o : data.h io.h main.c
gcc –c main.c Io.o : io.h io.c
gcc –c io.c
Trang 34Sử dụng makefile với make
Trang 36Tạo Makefile để chạy bằng lệnh make
demo: add.o main.o
gcc add.o main.o –o demoadd.o: add.c head.h
gcc –c add.c main.o: head.h main.c
gcc –c main.c
$ make
Trang 37Chỉnh sửa văn bản với trình soạn thảo vim
Trang 38Vi/Vim là gì
• VI là trình soạn thảo rất mạnh, cho phép bạn tạo và chỉnh sửa tập tin Vi chỉ làm việc với các tập tin văn bản
• Trình soạn thảo VI được tạo ra bởi Bill Joy
• Trình soạn thảo VIM(vi improved), là phiên bản cải tiến
của vi, bao gồm tất cả chức năng của vi và một số chức
năng mở rộng như: multiple windows, highlighting text, và command history
Trang 39Khởi động vim
• vi có thể khởi động theo 3 cách:
– vim tạo một tập tin rỗng
– vim filename … chỉnh sửa một tập tin có sẵn
– vim +n filename mở trình soạn thảo và đưa con trỏ tới
vị trí dòng thứ n của tập tin
– vim +/pattern filename mở trình soạn thảo và đưa con trỏ tới vị trí của pattern xuất hiện đầu tiên trong tập tin
• Khi làm việc với nhiểu tập tin thì phải lưu lại tập tin đang
mở mới có thể mở tiếp tập tin khác
Trang 40Các chế độ làm việc của vi
• Trình soạn thảo vi hoạt động ở 2 chế độ chính
– Chế độ chèn văn bản(Insert Mode): dùng để chèn
đoạn văn bản vào
– Chế độ lệnh(command mode): Dùng để nhập các lệnh
vào
• vi khởi động ở chế độ lệnh
• Gõ <ESC> để chuyển từ insert mode -> command mode
• Hầu hết các lệnh phân biệt chữ thường và chữ hoa
Trang 41Chèn văn bản
• i Chèn đoạn văn bản trước vị trí con trỏ
• a Thêm đoạn văn bản sau vị trí con trỏ
• I Chèn văn bản vào vị trí đầu dòng
• A Thêm đoạn văn bản vào cuối dòng
• o Chèn hàng mới ngay sau hàng hiện tại
• O Chèn hàng mới trước hàng hiện tại
Trang 42Thoát khỏi vi
• ZZ Lưu tập tin lại và thoát
• :x Lưu tập tin lại và thoát
• :w lưu tập tin lại
• :q! thoát khỏi vi và không lưu lại
• :wq Lưu tập tin lại và thoát
• !: chỉ thao tác bắt buộc
Trang 44Di chuyển con trỏ - màn hình
• ^F forward one screen
• ^B backward one screen
• ^D down half screen
• ^U up half screen
(not case sensitive)
Trang 45Di chuyển con trỏ - đoạn văn bản và hàng
• G go to last line of file
• [n] G go to last line or line [n]
• gg go to first line of file
• $ end of current line
• ^ beginning of text on current line
• [n] w forward [n] word(s)
• [n] b backward [n] word(s)
• e end of word
Trang 46• D xóa từ vị trí con trỏ tới cuối hàng
• dd xóa hàng hiện tại
• [n] dd xóa [n] hàng
Xóa văn bản luôn được lưu trữ lại
Trang 47Chỉnh sửa văn bản
• r,s thay thế 1 ký tự tại vị trí con trỏ
• R thay thế một chuỗi ký tự từ vị trí con trỏ
• S thay thế toàn bộ hàng
Trang 48Thay đổi văn bản
• cw thay đổi một từ
• cc thay đổi toàn bộ hàng
• C thay đổi tự vị trí con trỏ tới cuối hàng
• ~ thay đổi chữ in của ký tự
Trang 49Sao chép văn bản
• [n] yl sao chép [n] ký tự vào vùng đệm
• [n] yw sao chép [n] từ vào vùng đệm
• [n] yy sao chép [n] hàng vào vùng đệm
Trang 52Tìm kiếm và thay thế (Line Mode)
• Gõ vào s để yêu cầu vi thực hiện tìm kiếm và thay thế
Định dạng chung của lệnh sẽ như sau: range
s/WordToReplace/Replacement/g
• range có thể nhận các giá trị sau:
1,$ - toàn bộ tài liệu
10, $ - từ hàng 10 tới cuối tài liệu
1,20 - từ hàng 1 tới hàng 20
• g chỉ ra là quá trình thay thế đuợc thực hiện trên toàn bộ
tài liệu, nếu không có g thì chỉ thay thế giá trị xuất hiện
đầu tiên
Trang 53Tìm kiếm
• /[pattern] search pattern forward
• ?[pattern] search pattern backward
Trang 54The End.