bài tập linux – Tài liệu text

bài tập linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (114.91 KB, 4 trang )

IP máy chủ là 192.168.22.166
Em thực hiện các yêu cầu thực hành theo từng bài (6.0, 6.1…), và
ghi vào thư mục có tên như sau (trong thư mục chủ của em):
username.YYYY-mm-dd
Ví dụ: handaongoc.2013-11-13
Chuyển quyền sử dụng để chỉ em mới có thể truy cập được, những
người khác không thể truy cập (xem / sửa).
Copy thư mục đó vào thư mục commonBox trong /home/
Bài 6. Lập trình Shell (2)
6.0 Viết script in ra các hình sau, thông số dài, rộng là các tham số của script
Vehcn Vetgd vetgt vetgso
* * * * *
* * * * *
* * * * *
* * * * *
*
* *
* * *
* * * *
* * * *
* * *
* *
*
1
2 3
4 5 6
7 8 9 10
6.1 Viết chương trình tính tổng các tham số nhập vào từ dòng lệnh
Ví dụ: $ tong 3 2 4 5 7
In ra kết quả: Tong cac so la: 21
6.2a Hãy lập chương trình cho phép người sử dụng nhập vào 2 số (có thể dùng lệnh

read hoặc dạng tham số của chương trình). Đưa ra thông báo về số nào lớn hơn, hoặc
thông báo nếu 2 số bằng nhau.
6.2b Hãy lập chương trình nhan với các yêu cầu sau: (tương tự với cong, tru, chia)
Người sử dụng gõ lệnh
nhan <số 1> <số 2>
Chương trình in ra kết quả phép toán <số 1>*<số 2>
Kết hơp tất cả cộng trừ nhân chia bằng cấu trúc case esac
6.3 Viết chương trình tính giai thừa của n theo 2 cách: dùng vòng lặp for, dùng vòng
lặp while.
6.4a Hãy lập chương trình cho phép nhập vào một đường dẫn tuyệt đối, đưa ra thông
báo nếu nhập đường dẫn sai, nếu nhập đúng thì đưa ra các quyền của người sử dụng
đối với đường dẫn đó.
6.4b Với 10 file/thư mục của /etc, em hãy hiển thị thông tin theo dạng “thân thiện” hơn.
Ví dụ:
adduser.conf
Day la mot file
Ban co quyen doc adduser.conf
Ban khong co quyen ghi trong adduser.conf
Ban khong so huu adduser.conf
Ban khong phai thanh vien cua nhom so huu adduser.conf
6.5 Với các file mà em có quyền đọc trong thư mục /etc, em hãy copy về ~/myetc và
chuyển thành file dạng txt
Ví dụ: với file adduser.conf thì chuyển thành ~/myetc/adduser.conf.txt
BT tự làm ở nhà
6.6 Một số chương trình gợi ý:
1. Chương trình đếm số dòng của một tập tin (tương tự $ wc –l file)
– Minh họa các cấu trúc if then fi, while do done, và cách sử dụng [], $(()).
– Tập tin demdong.sh
#!/bin/sh
echo “Chuong trinh dem so dong cua tap tin $1”

n=0
while read line
do
n=$(($n + 1))
done < $1
echo “So dong cua tap tin $1 la : $n”
exit 0
– Chạy chương trình :
chmod a+x demdong.sh
./demdong bai1.txt
2. Chương trình đếm số từ của một tập tin (tương tự $wc –w file)
– Minh họa các cấu trúc for do done, while do done.
– Tập tin demtu.sh
#!/bin/sh
echo “Chuong trinh dem so tu cua tap tin $1”
n=0
while read line
do
for wd in $line
do
n=$(($n + 1))
done
done < $1
echo “Tong so tu cua tap tin $1 la : $n”
exit 0
– Chạy chương trình :
chmod a+x demtu.sh
./demtu bai1.txt
Hỏi: Từ 2 chương trình gợi ý 1 & 2 ở trên, em hãy viết chương trình mywc thực
hiện đếm số dòng, số từ trong tập tin, với các cách dùng như sau:

$ mywc file
đưa ra số dòng, số từ của tập tin đó
Tham số:
-l : đưa ra số dòng của file
-w: đưa ra số từ của file
Chú ý: Không được sử dụng wc 
Từ phần này về sau phải đọc & sửa chương trình nếu cần
3. Chương trình tìm dòng có độ dài lớn nhất trong một tập tin – Minh họa các cấu
trúc if then fi, while do done.
– Tập tin dongmax.sh
#!/bin/sh
echo “Chuong trinh tim dong dai nhat trong tap tin $1”
{
n=0
max=0
dong=””
while read line
do
n=`expr length “$line”`
if [ $n –gt $max ]
then
dong=”$line”
max=$n
fi
done
echo “Dong trong tap tin $1 co do dai max = $max la : $dong”
}<$1
exit 0
– Chạy chương trình :
chmod a+x dongmax.sh

./dongmax bai1.txt
4. Chương trình tìm một xâu trong một tập tin
– Minh họa các cấu trúc if then fi, while do done.
– Tập tin timxau.sh
#!/bin/sh
echo “Chuong trinh tim xau $1 trong tap tin $2”
{
wordlen=`expr length “$1”` # Do dai tu can tim
while read textline
do
textlen=`expr length “$textline”` # Do dai cua dong vua doc
end=$(($textlen – wordlen + 1”
index=1
while [ $index –le $end ]
do
temp=`expr substr “$textline” $index $wordlen
if [ “$temp” = $1 ]
then
echo “Tim thay $1 tai dong $textline”
break
fi
index=$(($index + 1))
done
done
}<$2
exit 0
– Chạy chương trình :
chmod a+x timxau.sh
./timxau abc bai1.txt

read hoặc dạng tham số của chương trình). Đưa ra thông báo về số nào lớn hơn, hoặcthông báo nếu 2 số bằng nhau.6.2b Hãy lập chương trình nhan với các yêu cầu sau: (tương tự với cong, tru, chia)Người sử dụng gõ lệnhnhan Chương trình in ra kết quả phép toán *Kết hơp tất cả cộng trừ nhân chia bằng cấu trúc case esac6.3 Viết chương trình tính giai thừa của n theo 2 cách: dùng vòng lặp for, dùng vònglặp while.6.4a Hãy lập chương trình cho phép nhập vào một đường dẫn tuyệt đối, đưa ra thôngbáo nếu nhập đường dẫn sai, nếu nhập đúng thì đưa ra các quyền của người sử dụngđối với đường dẫn đó.6.4b Với 10 file/thư mục của /etc, em hãy hiển thị thông tin theo dạng “thân thiện” hơn.Ví dụ:adduser.confDay la mot fileBan co quyen doc adduser.confBan khong co quyen ghi trong adduser.confBan khong so huu adduser.confBan khong phai thanh vien cua nhom so huu adduser.conf6.5 Với các file mà em có quyền đọc trong thư mục /etc, em hãy copy về ~/myetc vàchuyển thành file dạng txtVí dụ: với file adduser.conf thì chuyển thành ~/myetc/adduser.conf.txtBT tự làm ở nhà6.6 Một số chương trình gợi ý:1. Chương trình đếm số dòng của một tập tin (tương tự $ wc –l file)- Minh họa các cấu trúc if then fi, while do done, và cách sử dụng [], $(()).- Tập tin demdong.sh#!/bin/shecho “Chuong trinh dem so dong cua tap tin $1″n=0while read linedon=$(($n + 1))done < $1echo “So dong cua tap tin $1 la : $n”exit 0- Chạy chương trình :chmod a+x demdong.sh./demdong bai1.txt2. Chương trình đếm số từ của một tập tin (tương tự $wc –w file)- Minh họa các cấu trúc for do done, while do done.- Tập tin demtu.sh#!/bin/shecho “Chuong trinh dem so tu cua tap tin $1″n=0while read linedofor wd in $linedon=$(($n + 1))donedone < $1echo “Tong so tu cua tap tin $1 la : $n”exit 0- Chạy chương trình :chmod a+x demtu.sh./demtu bai1.txtHỏi: Từ 2 chương trình gợi ý 1 & 2 ở trên, em hãy viết chương trình mywc thựchiện đếm số dòng, số từ trong tập tin, với các cách dùng như sau:$ mywc fileđưa ra số dòng, số từ của tập tin đóTham số:-l : đưa ra số dòng của file-w: đưa ra số từ của fileChú ý: Không được sử dụng wc Từ phần này về sau phải đọc & sửa chương trình nếu cần3. Chương trình tìm dòng có độ dài lớn nhất trong một tập tin – Minh họa các cấutrúc if then fi, while do done.- Tập tin dongmax.sh#!/bin/shecho “Chuong trinh tim dong dai nhat trong tap tin $1”n=0max=0dong=””while read linedon=`expr length “$line”`if [ $n –gt $max ]thendong=”$line”max=$nfidoneecho “Dong trong tap tin $1 co do dai max = $max la : $dong”}<$1exit 0- Chạy chương trình :chmod a+x dongmax.sh./dongmax bai1.txt4. Chương trình tìm một xâu trong một tập tin- Minh họa các cấu trúc if then fi, while do done.- Tập tin timxau.sh#!/bin/shecho “Chuong trinh tim xau $1 trong tap tin $2”wordlen=`expr length “$1”` # Do dai tu can timwhile read textlinedotextlen=`expr length “$textline”` # Do dai cua dong vua docend=$(($textlen – wordlen + 1”index=1while [ $index –le $end ]dotemp=`expr substr “$textline” $index $wordlenif [ “$temp” = $1 ]thenecho “Tim thay $1 tai dong $textline”breakfiindex=$(($index + 1))donedone}<$2exit 0- Chạy chương trình :chmod a+x timxau.sh./timxau abc bai1.txt