[Programming] Chia xẻ 1 bài tập Linux tổng quát ! |
05/12/2007 07:13:06 (+0700) | #1 | 101985 |
quanghuy12
Member
|
0 |
|
|
Joined: 20/11/2007 17:07:16
Messages: 12
Offline
|
|
Tạo 1 shellcript tên của bạn(viết hoa, có khoảng trắng vd : TRAN A) làm tất cả các việc sau :
1> Vào thư mục nhà của mình, tạo một thư mục có tên là họ tên của mình (viết thường vd : nguyenb). Thư mục cho người chủ thư mục có đủ quyền hạn, người trong nhóm và người dùng khác chỉ có quyền đọc.
2> Vào thư mục mới tạo ở phần 1 tạo 1 thư mục có tên của người đang sử dụng (tên này xuất phát từ stdout của lệnh hostname) ghép với tên người đang chạy chương trình (stdout của lệng whoami ), tên thư mục có 1 khoảng trắng ở giữa , vd : “may3 t8” . ). Thư mục cho người chủ thư mục có quyền đọc ghi, người trong nhóm và người dùng khác chỉ có quyền đọc.
3> Vào thư mục vừa tạo ở phần 2 tạo một tập tin có tên là tên họ đầy đủ của chính mình ghép với tên của máy đang chạy chương trình (stdout của lệnh hostname) dùng các chữ hoa [uppercase] và ko có khoảng trắng trong tên (vd : tên nguyen van a, đang chạy trên máy : may3 -> NGUYENVANAMAY3). Tập tin này chứa các thông tin trong /ect/paswd về chính user chạy chương trình này.
4> Vào thư mục vừa tạo ở phần 1 tạo các thư mục có tên là 1 kí tự duy nhất nằm trong tên của thư mục được tạo trong phần 1(vd : tên thư mục là : nguyenb thì các thư mục trong nó gồm n,g,u,y,e,n,b). Các thư mục này cho người chủ có quyền đọc và ghi, các nguời dùng khác có quyền đọc thôi.
5> Đọc tập tin /ect/passwd tìm những user thuộc về nhóm có mã số người dùng (UID) lớn hơn 500 và nhỏ hơn 1000 trích ra 3 thông tin về user là tên, UID, tên shell { trường 1, trường 3, trường 7}để ghi vào tập tin thongtin nằm trong thư mục mô tả ở phần 3; mỗi dòng của tập tin thongtin chứa 3 thông tin kể trên, mỗi trường thông tin ngăn cách nhau bằng TAB
Thí dụ :
- Trong /ect/passwd có dòng : u8:ABCD12*nADcdq:1008:100:User for practices:/home/u8:/bin/bash
- Thì trong thongtin phải có dòng : u8 1008 /bin/bash
6> Tập tin thongtin này cho người chủ và người cùng nhóm được quyền đọc ghi nhưng những người khác chỉ có quyền đọc.
7> Tâp tin thongtin này được xếp thứ tự tăng dần theo giá trị số của UID.
8> Vào trong thư mục tạo ra ở phần 3 tạo các tập tin có tên là các mã số nhóm (GID) đã được liệt kê trong tập tin /ect/passwd sao cho mỗi tập tin như thế chứa các thông tin gồm tên, UID, GID { trường 1, 3, 4} của những users có mã số nhóm đúng như tên tập tin. Nội dung các tập tin này phải được xếp thứ tự tăng dần theo giá trị số của mã số người dùng (UID).
9> Vào trong thư mục đã tạo ra ở phần 1, tạo một tập tin tên password gồm nội dung tập tin /ect/passwd được xếp thứ tự tăng dần theo giá trị số của mã số nhóm GID và UID
Các bạn thử và post lên anh em cùng thảo luận
|
|
|
|
|
[Question] Re: Chia xẻ 1 bài tập Linux tổng quát ! |
05/12/2007 13:21:49 (+0700) | #2 | 102028 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Không biết cái đề bài do bạn nghĩ ra hay là lấy ở đâu? Tớ thấy nó giống cái bài tập về nhà Dù sao thì nó cũng khá hay và tổng hợp kiến thức về Bash Shell. Tớ demo một đoạn từ bước 1 đến bước 4 (Phần còn lại sẽ khó hơn, và khó nhất có lẽ là sort theo cả GUID và UID)
Code:
#!/bin/bash
# Step 1
cd /home/quanta
mkdir $1
chmod 744 $1
# Step 2
cd $1
mkdir `hostname`\ `whoami`
chmod 644 `hostname`\ `whoami`
# Step 3
cd `hostname`\ `whoami`
echo $2`hostname` | tr 'a-z' 'A-Z' >> step3.txt
cat /etc/passwd >> `cat step3.txt`
# Step 4
cd /home/quanta/$1
myname=$1
for (( i = 0 ; i < `expr length $1` ; i++ ))
do
mkdir ${myname:$i:1}
chmod 644 ${myname:$i:1}
done
ps: Tớ sẽ nghĩ và thử viết tiếp những phần còn lại cũng như sửa lại cho tối ưu nếu bạn cùng tham gia thảo luận.
|
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Chia xẻ 1 bài tập Linux tổng quát ! |
05/12/2007 14:47:13 (+0700) | #3 | 102043 |
minhhuy192
Member
|
0 |
|
|
Joined: 18/07/2006 00:01:05
Messages: 6
Location: TPHCM
Offline
|
|
$ và ' có ý nghĩa gì vậy bạn quanta |
|
|
[Question] Re: Chia xẻ 1 bài tập Linux tổng quát ! |
05/12/2007 14:53:29 (+0700) | #4 | 102044 |
KZM
Member
|
0 |
|
|
Joined: 21/07/2006 17:01:06
Messages: 58
Offline
|
|
|