Thuchanh unix moi

13
Đỗ Hoàng Kiên Bài thc hành 1 Login vào hthng (cho đúng tên người dùng và mt khu). Thc hin tng lnh và xem xét ni dung kết qu(gii thích ý nghĩa tng lnh). Chú ý tên file và tên thư mc có thkhác so vi ni dung đây. 1. Hãy kim tra và cho biết xem LINUX đang dùng shell nào bng cách gõ lnh: alias 2. $ who > temp $ $ wc -l temp (shin ra thông tin vcác đếm) $ hoc sdng kiu đường ng $ who | wc -l (shin ra) $ 3. Sdng lnh đường ng $ who|grep user | sort (shin ra) 4. Ghi nhn kết quđã sp xếp $ who | sort > memo1 $ 5. Hin danh sách file (bao gm cfile bche) $ ls -a (shin ra) $ 6. Đổi mode file temp $ chmod 755 temp $ Để xem li thông tin sau khi đổi mode: $ ls -l temp (shin ra và bt đầu là -rwxr-xr-x .....) 7. To thư mc games $ mkdir games $ 8. Kim tra games có được to: $ ls -l (shin ra) $ 9. Sao file cùng thư mc hin ti $ cp temp temp1 $ cp temp temp2 $ 10. Sao các file vào thư mc khác 1

Transcript of Thuchanh unix moi

Page 1: Thuchanh unix moi

Đỗ Hoàng Kiên

Bài thực hành 1 Login vào hệ thống (cho đúng tên người dùng và mật khẩu). Thực hiện từng lệnh và xem xét nội dung kết quả (giải thích ý nghĩa từng lệnh).

Chú ý tên file và tên thư mục có thể khác so với nội dung ở đây. 1. Hãy kiểm tra và cho biết xem LINUX đang dùng shell nào bằng cách gõ lệnh:

alias 2. $ who > temp $ $ wc -l temp (sẽ hiện ra thông tin về các đếm) $ hoặc sử dụng kiểu đường ống $ who | wc -l (sẽ hiện ra) $ 3. Sử dụng lệnh đường ống $ who|grep user | sort (sẽ hiện ra) 4. Ghi nhận kết quả đã sắp xếp $ who | sort > memo1 $ 5. Hiện danh sách file (bao gồm cả file bị che) $ ls -a (sẽ hiện ra) $ 6. Đổi mode file temp $ chmod 755 temp $ Để xem lại thông tin sau khi đổi mode: $ ls -l temp (sẽ hiện ra và bắt đầu là -rwxr-xr-x .....) 7. Tạo thư mục games $ mkdir games $ 8. Kiểm tra games có được tạo: $ ls -l (sẽ hiện ra) $ 9. Sao file cùng thư mục hiện tại $ cp temp temp1 $ cp temp temp2 $ 10. Sao các file vào thư mục khác 1

Page 2: Thuchanh unix moi

Đỗ Hoàng Kiên

2

$ cp temp temp2 games $ Chuyển vào thư mục games $ cd games $ pwd (sẽ hiện ra) $ ls temp temp2 $ 11. Chuyển về thư mục cha $ cd .. $ 12. Xem lại đường dẫn thư mục hiện tại $ pwd (sẽ hiện ra) $ 13. Chuyển file từ thư mục này sang thư mục khác $ mv temp1 games $ 14. Lại quay về games $ cd games $ pwd $ 15. Xoá hai file $ rm -l temp1 temp2 (sẽ hiện ra) 16. Trở về thư mục riêng $ cd $ 17. Xóa thư mục games $ rmdir games (sẽ hiện ra, giải thích) 18. Nối them một tên vào file đã tồn tại dùng lệnh $ ln temp temp4 $ Sau đó dùng lệnh $ ls -l 19. Tìm tên 1 file từ cây con thư mục hiện tại $ find . -name temp -print 20. Xác định kiểu của file $ file temp1 temp2 21. Hiện tình trạng mọi máy in gõ lệnh $ lpstat -p (sẽ hiện ra điều gì, giải thích)

Page 3: Thuchanh unix moi

Đỗ Hoàng Kiên

3

22. Bắt đầu tính toán gõ $ bc

2+4 (sẽ hiện ra) 300+600 (sẽ hiện ra) 300*600

(sẽ hiện ra) 1+2*3 (sẽ hiện ra) 1/2 (sẽ hiện ra, giải thích) scale = 4 1/2 (sẽ hiện ra, giải thích) quit $ 23. Để đổi dấu mời là 'K44', gõ $ PS1 = 'K44' K44 K44 ls -l K44 K44 PS1 = '$' $ 24. Gọi phần mềm Midnight Command bằng lệnh mc và sau đó làm việc với MC như đã làm với NC trong MS-DOS.

Bài thực hành 2. Truyền thông và chạy chương trình trên UNIX-LINUX

A. Lệnh write: Truyền thông on-line Tại máy người dùng gõ:

$ who (sẽ hiện ra) Trong các thông tin hiện ra giả sử các người dùng có tên là may1, may2, may3, ...., may31; từng cặp người dùng may(2i-1) và may (2i) trao đổi với nhau theo lệnh write. Ví dụ với người dùng ở may1 sẽ gui thu cho người dùng ở may2, viết

$write may2 Trên màn hình trạm cuối của may2 thấy hiện ra một số thông tin thông báo. Sau khi may1 hiện thông báo là may2 sẵn sàng nhận thông báo, người dùnh ở may1 gõ thông báo và nội dung này từ may1 sẽ hiện ra màn hình của may2 (Nội dung thông báo là tùy chọn; chú ý, gõ Ctrl-d khi kết thúc).

Page 4: Thuchanh unix moi

Đỗ Hoàng Kiên

4

Sau khi đã nhận được thông báo từ may1, việc nhận đã kết thúc và tại may2, dấu mời của shell xuất hiện:

$ Đến đây, người dùng ở may2 trả lời cho người dùng ở may1 qua việc gửi 1

thông báo tới may1: $write may1

Chú ý: Dùng lệnh talk trong Linux. B. Lệnh mail: Truyền thông off-line

Người dùng ở may1 gửi một thư tới người dùng ở may2: $ mail may2 (Nội dung thư và kết thúc là Ctrl-d) Người dùng ở may2 sẽ thấy thông báo trên màn hình: mail for may2 Để xem chi tiết nội dung thư, người dùng ở may2 sử dụng lệnh $ mail Sử dụng các lệnh trong chế độ lệnh của mail, đọc được nội dung của thư mới

nhận được, sau đó muốn trả lời ngay (chú ý thư hiện tại đang là thư của người may1) dùng:

?r (sẽ hiện ra: mail may1) Người dùng may2 gõ các dòng thư trả lời và kết thúc cũng là Ctrl-d.

Chú ý: 1. Có thể xem xét trường hợp khi người dùng may1 gửi mail cho người dùng ở may2 thì may2 đang tắt. Sau khi người dùng ở may1 gửi thư xong thì may2 mới khởi động để phân biệt rõ hai loại truyền thông. 2. Dùng lệnh ls để xem nội dung thư mục chứa mail của mỗi người dùng, các file, các thư mục con của thư mục này và ý nghĩa của mỗi đối tượng trong đó. 3. Nếu điều kiện của phòng máy cho phép, có thể làm quen với một số nội dung về internet. C. Biên soạn chương trình bằng VIM Gọi VIM để soạn thảo một file văn bản bất kỳ (nên định hướng file văn bản chương trình trên C để thuận lợi cho các bước sau). D. Chạy chương trình Dịch chương trình bằng gcc (hoặc bcc) Kết nối (link) chương trình đích Chạy chương trình (chú ý mode chạy được).

Page 5: Thuchanh unix moi

Đỗ Hoàng Kiên

Bài thực hành 3. lập trình trên shell Mục đích: - Ôn lại soạn thảo văn bản vi và dùng vi để tạo File chương trình trên shell, - Soạn thảo, dịch, chạy chương trình trên C trên UNIX, - Tạo File chương trình trên shell theo một số yêu cầu nào đó Nội dung: 1. Thực hiện chương trình trên C:

- Viết một chương trình C nhờ soạn thảo vi, - Nhờ cc dịch chương trình nói trên, - Đổi lại mode cho file .out để chạy được ở mức shell, - Chay chương trình, đưa input và nhận output.

2. Thông qua lệnh đặt lại giá trị biến môi trường để thay đổi lại dấu mời hệ thống theo nghĩa gồm tên người dùng và dấu $. 3. Lập chương trình shell có tác dụng: - Nhận tên của người chạy chương trình, - Hiện thông báo gồm các nội dung: * Lời chào người dùng, * Hiện lại thời gian, ngày tháng ( trong đó thứ trong tuần, tháng hiện thời hiện theo tiếng Việt không dấu). Đây là một chương trình ví dụ thực hiện các công việc sau: - Nhận hai tham số dòng lệnh là hai giá trị số - Hiện kết quả thực hiện lệnh date - Hiện tiếng Việt không dấu thứ, ngày, tháng hiện tại - Hiện kết quả tính tổng hai giá trị tham số dòng vào tong=`expr $1 + $2` set `date` echo $* case $1 in

T2) s="Thu Hai";; T3) s="Thu Ba";; T4) s="Thu Tu";;

esac case $2 in

Thg01) s="$s, Thang Gieng, ";; Thg02) s="$s, Thang Hai, ";; Thg11) s="$s, Thang Muoi Mot, ";; Thg12) s="$s, Thang Muoi Hai, ";;

esac case $3 in

1) echo $s "Ngay Mot";; 2) echo $s "Ngay Hai";; 28) echo $s "Ngay Hai Muoi Tam";;

5

Page 6: Thuchanh unix moi

Đỗ Hoàng Kiên

6

29) echo $s "Ngay Hai Muoi Chin";; esac echo "Tong = $tong " 4. Lập chương trình shell có tính năng: - Bao gồm tính năng của câu 3. - Chạy chương trình kết quả của câu 1 - Thử nghiệm thay đổi file .profile /* -------- */ #!/bin/sh # Chuong trinh tinh tong cac file (regular file) trong 1 thu muc # Minh hoa cach su dung if then fi, while do done # va cac CT test, expr if test $# -ne 1 then echo Cu phap: $0 \<Ten thu muc\> exit 1 fi cd $1 # Chuyen vao thu muc can list if test $? -ne 0 # Neu thu muc khong ton tai thi ra khoi CT then exit 1 fi ls -lL |\ # Liet ke ca cac thong tin cua symbolic link # Su dung sub-shell de tu giai phong bien { sum=0 # Lenh read x y de bo di dong 'total 1234..' cua lenh ls -lL read x y ; while read mode link user group size month day hour name do if [ -f $name ] then sum=`expr $sum + $size` # echo $size $sum fi done echo Tong so byte trong thu muc $1: $sum } /* -------- */

Page 7: Thuchanh unix moi

Đỗ Hoàng Kiên

7

#!/bin/sh # Chuong trinh dem so dong cua 1 file # Minh hoa cau truc: if then fi, while do done # va cach su dung CT test, expr if [ $# -ne 1 ] then echo Cu phap: $0 \<Ten file\> exit 1 fi { n=0 while read dong do n=`expr $n + 1` done echo So dong cua $1: $n } < $1 /* -------- */ #!/bin/sh # CT dem so tu cua 1 file # Minh hoa cach su dung cau truc for do done, while do done if [ $# -ne 1 ] then echo Cu phap: $0 \<Ten file\> exit 1 fi { n=0 tu="" dong="" while read dong do for name in $dong do n=`expr $n + 1` done done echo Tong so tu doc vao la: $n } < $1

Page 8: Thuchanh unix moi

Đỗ Hoàng Kiên

8

/* -------- */ #!/bin/sh # Chuong trinh tim dong co do dai lon nhat trong 1 file # Minh hoa cau truc: if then fi, while do done # va cach su dung CT test, expr if [ $# -ne 1 ] then echo Cu phap: $0 \<Ten file\> exit 1 fi max=0 dongmax="" { while read dong do n=`expr length "$dong"` if [ $n -gt $max ] then dongmax="$dong" max=$n fi done echo $dongmax \($max\) } < $1 /* -------- */ #!/bin/sh # Chuong trinh in ra cac so cua day Fibonaci nho hon 1 so n cho truoc # Minh hoa cau truc: if then fi, util do done # va cach su dung CT test, expr if [ $# -ne 1 ] then echo Cu phap: $0 \<So nguyen\> exit 1 fi export tam truoc=1 sau=1 echo -n $truoc $sau until tam=`expr $truoc + $sau` ; [ $tam -ge $1 ] do truoc=$sau sau=$tam

Page 9: Thuchanh unix moi

Đỗ Hoàng Kiên

9

echo -n " "$tam done echo /* -------- */ #!/bin/sh # Chuong trinh liet ke cac thu muc con cua 1 thu muc # Minh hoa cach su dung if then fi, while do done # va cac CT test, expr if test $# -ne 1 then echo Cu phap: $0 \<Ten thu muc\> exit 1 fi cd $1 # Chuyen vao thu muc can list if test $? -ne 0 # Neu thu muc khong ton tai thi ra khoi CT then exit 1 fi ls -lL |\ # Liet ke ca cac thong tin cua symbolic link # Su dung sub-shell de tu giai phong bien { sum=0 # Lenh read x y de bo di dong 'total 1234..' cua lenh ls -lL read x y ; while read mode link user group size month day hour name do if [ -d $name ] then echo $name $size \($mode\) fi done } /* -------- */ #!/bin/sh # Chuong trinh liet ke cac file thuc hien duoc trong thu muc # Minh hoa cach su dung if then fi, while do done # va cac CT test, expr if test ! $# -eq 1 then echo Cu phap: $0 \<Ten thu muc\>

Page 10: Thuchanh unix moi

Đỗ Hoàng Kiên

10

exit 1 fi cd $1 # Chuyen vao thu muc can list if test $? -ne 0 # Neu thu muc khong ton tai thi ra khoi CT then exit 1 fi ls -lL |\ # Liet ke ca cac thong tin cua symbolic link # Su dung sub-shell de tu giai phong bien { sum=0 # Lenh read x y de bo di dong 'total 1234..' cua lenh ls -lL read x y ; while read mode link user group size month day hour name do if [ -x $name ] && [ ! -d $name ] then echo $name $size \($mode\) fi done } /* -------- */ #!/bin/sh # Chuong trinh minh hoa viec doc tu ban phim (read) va su dung case do esac chon=0 until [ $chon = q ] || [ $chon = Q ] do clear

echo Lua chon che do lam viec: echo 1. Soan thao echo 2. Doi thu muc lam viec echo 3. Xem thu muc echo 4. Xem gio echo q. Thoat echo -n "Chon: " read chon case $chon in

1) echo -n "Ten file: " ; read file ; vi $file ;; 2) echo -n "Ten thu muc: " ; read dir ; cd $dir || echo "Thu muc khong hop le" ;; 3) echo -n "Ten thu muc: " ; read dir ; ls -l $dir || echo "Thu muc khong hop le";; 4) date ;;

Page 11: Thuchanh unix moi

Đỗ Hoàng Kiên

11

q|Q) continue;; *) echo "Tuy chon khong hop le"; chon=0;;

esac echo -n "Bam phim Enter de tiep tuc"; read cont done /* -------- */ #!/bin/sh # Chuong trinh tinh giai thua cua mot so nguyen # Minh hoa cau truc: if then fi, while do done # va cach su dung CT test, expr if [ $# -ne 1 ] then echo Cu phap: $0 \<So nguyen\> exit 1 fi gt=1 index=2 while [ $index -le $1 ] do gt=`expr $gt \* $index` index=`expr $index + 1` done echo $1! = $gt /* -------- */ #!/bin/sh # Chuong trinh in ra ngay thang bang tieng Viet # Minh hoa cau truc: case do esac date |\ { read thu thang ngay gio mui_gio nam case $thu in Mon) thu="Thu Hai" ;; Tue) thu="Thu Ba" ;; Wed) thu="Thu Tu" ;; Thu) thu="Thu Nam" ;; Fri) thu="Thu Sau" ;; Sat) thu="Thu Bay" ;; Sun) thu="Chu Nhat" ;; esac case $thang in

Page 12: Thuchanh unix moi

Đỗ Hoàng Kiên

12

Jan) thang="Thang Gieng" ;; Feb) thang="Thang Hai" ;; Mar) thang="Thang Ba" ;; Apr) thang="Thang Tu" ;; May) thang="Thang Nam" ;; Jun) thang="Thang Sau" ;; Jul) thang="Thang Bay" ;; Aug) thang="Thang Tam" ;; Sep) thang="Thang Chin" ;; Oct) thang="Thang Muoi" ;; Nov) thang="Thang Mot" ;; Dec) thang="Thang Chap" ;; esac echo Hom nay $thu ngay $ngay $thang nam $nam \($gio - mui gio $mui_gio\) } /* -------- */ #!/bin/sh # Chuong trinh tinh tong cac so tu nhien tu 1 den n # Minh hoa cau truc: if then fi, while do done # va cach su dung CT test, expr if [ $# -ne 1 ] then echo Cu phap: $0 \<So nguyen\> exit 1 fi gt=0 index=1 echo -n $index while [ $index -le $1 ] do echo -n " + $index" gt=`expr $gt + $index` index=`expr $index + 1` done echo " = $gt" /* ...*/ #!/bin/sh # Chuong trinh tim mot xau trong mot van ban # Minh hoa cau truc: if then fi, while do done # va cach su dung CT test, expr (substr, length)

Page 13: Thuchanh unix moi

Đỗ Hoàng Kiên

13

if [ $# -ne 2 ] then echo Cu phap: $0 \<Xau can tim\> \<Ten file\> exit 1 fi { wordlen=`expr length $1` # Do dai tu can tim while read textline do textlen=`expr length "$textline"` # Do dai cua dong vua doc loop=`expr $textlen - $wordlen + 1` index=1 while [ $index -le $loop ] do tam=`expr substr "$textline" $index $wordlen` if [ "$tam" = $1 ] then echo Tim thay $1-- $textline break fi index=`expr $index + 1` done done } < $2