• Downloading from our site will require you to have a paid membership. Upgrade to a Premium Membership from 10$ a month today!

    Dont forget read our Rules! Also anyone caught Sharing this content will be banned. By using this site you are agreeing to our rules so read them. Saying I did not know is simply not an excuse! You have been warned.

Admin

Well-Known Member
Staff member
Administrator
1. Viết shell script như thế nào ?

Bước 1 : dùng bất cứ chương trình gì có thể soạn thảo . Ví dụ : vi

Bước 2 : sau khi viết xong phải gán quyền thực thi cho script
Ví dụ :
$ chmod +x tên script
$ chmod 755 tên script

Bước 3 : thực thi script
Cú pháp :
bash <tên script>
sh <tên script>
./ <tên script>

Cấu trúc một chương trình shell script như sau :
#!/bin/bash <-- shell mà script sẽ chạy
command … <-- lệnh
command…
exit 0 <-- thoát

Chú ý : lệnh exit 0 sẽ được mô tả kỹ trong phần Exit status
2. Biến trong shell
Trong linux shell thì có 2 kiểu biến :
+ Biến hệ thống (system variable) : được tạo bởi Linux. Kiểu biến này thường được viết bằng ký tự
in hoa.
+ Biến do người dùng định nghĩa.

Định nghĩa biến :
Cú pháp : tên biến=giá trị
Một số quy định về biến trong shell :
(1) Tên bắt đầu bằng ký tự hoặc dấu gạch chân (_).
(2) Không được có khoảng trắng trước và sau dấu bằng khi gán giá trị cho biến
(3) Biến có phân biệt chữ hoa chữ thường
(4) Bạn có thể khai báo một biến có giá trị NULL như sau :
var01= hoặc var01=””
(5) Không dùng ?, * để đặt tên biến.
3. Sử dụng biến
Để truy xuất giá trị biến, dùng cú pháp sau :
$tên_biến
ví dụ :
n=10
echo $n

4. Lệnh echo
Dùng để hiển thị dòng văn bản, giá trị biến …
Cú pháp : echo [options] [chuỗi, biến…]
Các option :
-n : không in ký tự xuống dòng.
-e : cho phép hiểu những ký tự theo sau dấu \ trong chuỗi
\a : alert (tiếng chuông)
\b : backspace
\c : không xuống dòng
\n : xuống dòng
\r : về đầu dòng
\t : tab
\\ : dấu \
ví dụ : echo –e “một hai ba \a\t\t bốn \n”
5. Tính toán trong Shell
Sử dụng expr

Cú pháp : expr op1 <phép toán> op2

Ví dụ :
expr 1 + 3
expr 2 – 1
expr 10 / 2
expr 20 % 3
expr 10 \* 3
echo `expr 6 + 3`
z=`epxr $z + 3`

Sử dụng let

Ví dụ :
let “z=$z+3”
let “z += 3”
let “z=$m*$n”

Sử dụng $((...))
ví dụ :
z=$((z+3))
z=$(($m*$n))


chú ý :
epxr 20 % 3 : 20 mod 3
epxr 10 \* 3 : phép toán nhân , sử dụng \* chứ không phải * để phân biệt với ký tự thay thế.

Dòng cuối trong ví dụ trên được sử dụng rất nhiều trong shell, khi một lệnh được đặt giữa 2 dấu ``
(không phải dấu nháy đơn ‘ ’ ) thì shell sẽ thực thi lệnh đó.


Ví dụ : a=`epxr 10 \* 3`
--> a sẽ có giá trị là 10 x 3 = 30
in kết quả ra màn hình : echo $a
6. Một vài thông tin về dấu ngoặc kép
Có 3 loại dấu sau :
tuoitrevnbiz28042013.jpg

Ví dụ :
echo “hôm nay là date” --> không in được hôm nay là thứ mấy
echo “hôm nay là `date`” --> sẽ in ra ngày tháng hôm nay vì date nằm trong dấu nháy ngược ` `


7. Trạng thái Exit
Mặc định trong Linux, khi một lệnh hoặc script thực thi , nó trả về 2 loại giá trị để xác định xem lệnh hoặc script đó có thực thi thành công không.


(1). Nếu giá trị trả về là 0 (zero) --> lệnh thực thi thành công
(2). Nếu giá trị trả về khác 0 (nonzero) --> không thành công

Giá trị đó gọi là Exit status
Vậy làm thế nào để biết được giá trị trả về của một lệnh hay 1 script ? Rất đơn giản, chỉ cần sử dụng
biến đặc biệt có sẵn của shell : $?

Ví dụ :
nếu bạn xoá 1 file không tồn tại trên đĩa cứng
# rm unknowfile
# echo $? --> sẽ in ra màn hình một giá trị khác 0

----------> Bổ sung bài viết lúc 09:11 AM <----------> Bài viết trước lúc 09:04 AM <----------

8. Lệnh read – đọc giá trị nhập từ bàn phím , file …
Dùng để lấy dữ liệu nhập từ bàn phím và lưu vào biến

Cú pháp : read var1 var2 var3 … varN


read không có tham số --> giá trị sẽ được chứa trong biến $REPLY

ví dụ :
read
var=”$REPLY”
Bình thường thì dấu \ cho phép xuống dòng để nhập tiếp dữ liệu trong read. Nếu read –r thì sẽ không
có ý nghĩa đó.

Ví dụ :
# read var # nhập vào : first line \
second line
# echo “$var” --> kết quả : first line second line

Nhưng với tham số r thì sao ?
# read –r var # nhập vào : first line \
# echo “$var” --> kết quả : first line \

Lệnh read có thể dùng để đọc file. Nếu file chứa nhiều hơn 1 dòng thì chỉ có dòng thứ nhất được gán
cho biến . Nếu read vớI nhiều hơn 1 biến (read var1 var2 …) thì read sẽ dựa vào biến $IFS để gán dữ
liệu cho các biến. Mặc định thì $IFS là khoảng trắng.
Ví dụ :
# read var < data_file
Nếu file có nhiều hơn 1 dòng
# read var1 var2 < data_file
Khi đó, mỗI biến sẽ chứa 1 chuỗI được cách biệt bởI khoảng trắng ($IFS) chứ không phảI 1 dòng, biến
cuốI cùng sẽ được chứa toàn bộ phần còn lạI của dòng.

Vậy làm thế nào để đọc toàn bộ file ? Có thể giảI quyết bằng vòng lặp không ??
while read line
do
echo $line
done < data_file

Sử dụng $IFS (Internal File Separator ) để tách một dòng input của read, nếu bạn không muốn mặc
định là khoảng trắng thì làm như thế nào ? Xem đoạn script sau :
echo “liet ke tat ca user ”
OIFS=$IFS; IFS=: # backup lạI IFS và gán giá trị mới. Ví file /etc/passwd dùng : để tách biệt
# các trường vớI nhau nên gán IFS là :
while read name passwd uid gid fullname ignore
do
echo “$name $fullname”
done < /etc/passwd # I/O redirection
IFS=$OIFS # trả lạI IFS ban đầu

Nếu đặt IFS ngay trong vòng lặp thì không cần backup IFS
while IFS=: read name passwd uid gid fullname ignore
do
echo “$name $fullname”
done < /etc/passwd
IFS vẫn không đổi
9. Tham số lệnh

Giả sử ta có script tên myself , để thực thi script này ta cần truyền vào 2 tham số như sau :
$ myself one two
Trong đó
myself là tên script
one : tham số thứ nhất truyền vào script
two : tham số thứ hai
Trong shell, bạn truy xuất đến những tham số như sau :
myself là $0
one là $1
two là $2
Và biến $# (có sẵn trong shell) sẽ cho giá trị 2 (có 2 tham số one và two). Bạn có thể lấy tất cả các
tham số bằng cách sử dụng biến $@ hoặc $*
10.Redirection
Hầu hết tất cả lệnh đều cho xuất kết quả ra màn hình hoặc lầy dữ liệu từ bàn phím nhưng vớI Linux
bạn còn có thể xuất dữ liệu vào file và đọc dữ liệu từ file.
Ví dụ :
ls > filename # in kết quả lệnh ls vào file có tên filename.
Có 3 ký hiệu redirection là >, >> và <
(1). Ký hiệu >
cú pháp : linux-command > filename
Xuất output của lệnh ra file. Nếu file tồn tạI thì nó sẽ ghi đè còn nếu file chưa có thì tạo file mớI
(2). Ký hiệu >>
cú pháp : linux-command >> filename
Xuất output của lệnh vào cuốI file nếu file đã tồn tạI, còn nếu file chưa tồn tạI thì tạo file mới.
(3). Ký hiệu <
cú pháp : linux-command < filename
lấy dữ liệu cho linux-command từ filename thay vì từ bàn fím.

11. Pipe
Cú pháp : command 1 | command 2
Output của command 1 sẽ là dữ liệu vào của command 2
Ví dụ :
$who | grep root
 

Facebook Comments

Similar threads
Thread starter Title Forum Replies Date
huongbtph Hướng dẫn viết bài viết chuẩn Seo Hosting / Domain 0
V Help Tiện ích thống kê bài viết cho Xenforo 2 Xenforo 0
Admin Hướng dẫn viết ứng dụng máy tính bỏ túi đơn giản bằng C# C# / C++ 4
W [help] cần giúp đỡ đưa bài viết mới ra trang chủ? Xenforo 4
LIA THUÊ VIẾT APP ỨNG DỤNG TẠO DÀN XỔ SỐ Kiến thức lập trình 0
T 2019, Blockchain viết lên kỷ nguyên mới cho chuỗi cung ứng ? Tin tức CNTT 0
L chọn phông chữ viết có dấu trong window logo Tin tức CNTT 0
S Share Cách viết khi học php cơ bản Máy tính 1
L Thuê người viết tool leech PHP 1
Lee_Jin [Thuê] người viết tool leech wapvip 10k card Johncms 5
cuongpro9x Hỏi Lỗi Wordpress không hiển thị bài viết Wordpress 3
T cách đưa bài viết luôn hiển thị lên đầu diễn đàn ? All Shared Scripts 3
N Help xin code thống kê bài viết cho forum phpbb3.11 . em đang dùng giao diện prosilver Phpbb3x 0
roboconz Hướng dẫn Tự động lấy hình ảnh đầu tiên trong bài viết làm ảnh đại diện Wordpress Wordpress 5
khanhsak3r Help Tự động lấy ảnh bài viết làm ảnh đại diện trong wordpress Wordpress 2
A thuê người viết tool leech All Shared Scripts 0
cuken [trà sữa] Viết cho con mùa thi Đại học Sách, truyện, tài liệu 0
cuken Cách viết bài chuẩn SEO Google Thảo luận SEO 7
cuken Hướng dẫn chia bài viết dài thành nhiều trang trong WordPress Wordpress 0
T Share mod Captcha khi đăng bài viết chống spam cho johncms Johncms 0
T Xin Admin và ae cho mình xin code lượt xem bài viết cho johncms với Johncms 9
N Hướng dẫn Lock - nguyenchithao.com - Plugin khóa bài viết đa chức năng Wordpress 2
Lee_Jin Xin Code bài viết mới ra index cho john Johncms 5
PushKiss Hướng dẫn Fix bug like bài viết bang hội JohnCMS Johncms 0
Tuzoro Hướng dẫn viết Mod (Plugin) cho VBB (chi tiết - dễ hiểu) Vbb tutorial 0
Tuzoro Share Tự động phân trang bài viết WordPress khi quá dài Wordpress 0
dat0dinh Share Nhận viết tool leech lấy MB wapka Wap builder, wapego, xtgem, wen.ru, wapka, wap4 1
PushKiss Share Cách bug bài viết ngoài soo cho JohnCMS Johncms 0
C Share Bộ Font Tiếng Việt Chữ Viết Tay Cực Đẹp Cho Anh Em Thiết kế đồ họa 0
Admin Hướng dẫn đưa bài viết từ chuyên mục ra trang chủ johncms 5.x Johncms 12
Admin Share mod cache bài viết cho johncms Johncms 0
Admin Hướng dẫn ẩn trích dẫn bài viết đầu tiên cho xenforo Xenforo 1
tubotocdo Share Code viết chử ngược Javascript/ajax 0
Smobi Hướng dẫn Mod thay đổi hiển thị số bài viết mỗi trang cho topic và chuyên mục Johncms 0
Admin Hướng dẫn viết grab đơn giản nhất PHP 0
Admin Hướng dẫn thêm bản quyền vào bài viết cho johncms bằng php Johncms 0
Hero Ý Nghĩa Các Từ Viết Tắt Trong Công Nghệ Sử dụng, chia sẻ, hỏi đáp 2
Admin Hướng dẫn tạo plugin yêu cầu đủ số bài viết mới được phép gửi tin nhắn cho vbb Vbb tutorial 0
Admin Hướng dẫn viết chương trình soạn tin nhắn bằng J2ME J2ME 1
Admin Hướng dẫn tạo plugin vô hiệu hóa ai đã đọc bài viết cho vbb Vbb tutorial 0
Admin Hướng dẫn giới hạn khoảng cách bài viết và chữ ký cho vbb Vbb tutorial 0
P Share Code auto chèn bản quyền khi copy bài viết Javascript/ajax 0
Admin Hướng dẫn thêm tiêu đề bài viết đầu tiên cho xenforo Xenforo 0
Admin Hướng dẫn fix lỗi lặp lại bài viết cho vbb 4.2.2 Vbb tutorial 1
Admin Hướng dẫn thêm nút "Trả lời nhanh" và "Đăng bài mới" trong bài viết cho xenforo Xenforo 1
Admin Hướng dẫn đóng dấu toàn bộ ảnh trong bài viết cho vbb mọi phiên bản Vbb tutorial 2
Admin Hướng dẫn phân trang bài viết wordpress Wordpress 2
Admin Google cập nhật Gmail cho iOS 7, thanh điều hướng linh hoạt hơn, viết email toàn màn hình trên iPad Tin tức CNTT 0
Admin Hướng dẫn thêm thẻ meta keyword cho bài viết xenforo Xenforo 1
Admin Hướng dẫn đưa nút chia sẻ bài viết lên đầu bài viết xenforo Xenforo 0

Similar threads

New posts New threads New resources

Back
Top