Skip to content

Commit b7d4917

Browse files
authored
Create 1. Intro.md
1 parent ec09f6d commit b7d4917

File tree

1 file changed

+229
-0
lines changed

1 file changed

+229
-0
lines changed

Bash-shell/1. Intro.md

+229
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
2+
3+
4+
# Tìm hiểu Shell trong Linux
5+
6+
7+
8+
## 1 . Shell là gì ?
9+
Shell là chương trình giao tiếp với người dùng. Có nghĩa là shell chấp nhận các lệnh từ bạn (keyboard) và thực thi nó. Nhưng nếu bạn muốn sử dụng nhiều lệnh chỉ bằng một lệnh, thì bạn có thể lưu chuỗi lệnh vào text file và bảo shell thực thi text file này thay vì nhập vào các lệnh. Điều này gọi là shell script.
10+
11+
Định nghĩa: **Shell script** là một chuỗi các lệnh được viết trong plain text file. Shell script thì giống như batch file trong MS-DOS nhưng mạnh hơn.
12+
13+
Tại sao phải viết shell script:
14+
15+
• Shell script có thể nhận input từ user, file hoặc output từ màn hình.
16+
17+
• Tiện lợi để tạo nhóm lệnh riêng.
18+
19+
• Tiết kiệm thời gian.
20+
21+
• Tự động làm một vài công việc thường xuyên.
22+
23+
## 2. Tạo, thực thi chương trình Shell
24+
25+
* Khởi tạo tập tin `hello_world.sh
26+
```
27+
[root]cat hello_world.sh
28+
#!bin/bash
29+
30+
echo "Hello World !!"
31+
```
32+
##### Lưu ý : Dòng đầu tiên chúng ta luôn đặt #!/bin/bash, đây là cú pháp bắt buộc. Sau # được hiểu là comment, chú thích của các đoạn mã.
33+
* Shell là chương trình cần quyền thực thi nên cần kiểm tra quyền execute cho tập tin trước tiên
34+
```
35+
[root]chmod 777 hello_world.sh
36+
```
37+
* Trên Linux có nhiều lệnh để thực thi một chương trình shell
38+
```
39+
bash hello_world.sh
40+
sh hello_world.sh
41+
./hello_world.sh
42+
```
43+
* OUTPUT trả về
44+
```
45+
[root]bash hello_world.sh
46+
Hello World
47+
[root]
48+
49+
```
50+
51+
### 3. Biến trong Shell
52+
53+
#### 3.1 Trong Shell gồm có 2 loại biến
54+
55+
* Biến hệ thống :
56+
* được tạo ra và quản lý bởi Linux
57+
* các biến này là CHỮ HOA
58+
* Biến người dùng :
59+
* được tạo ra và quản lý bởi người dùng
60+
* các biến này là chữ thường
61+
62+
Mốt số biến hệ thống thường gặp
63+
* $PS1
64+
* $HOME
65+
* $PATH
66+
* $BASH_VERSION
67+
68+
Các biến hệ thống người dùng hoàn toàn có thể `export ` các giá trị của nó nhưng không được khuyến khích.
69+
Người dùng sẽ tạo, và quản lý các biến trong space của mình
70+
71+
#### 3.2. Biến , quy tắc đặt biến người dùng
72+
73+
* Cú pháp :
74+
tên_biến=giá_trị
75+
Yêu cầu :
76+
* tên_biến bắt đầu phải là ký tự
77+
* Không được dùng dấu ? * để đặt tên các biến
78+
* không có khoảng trống giữa tên biến và giá_trị
79+
* trong Linux tên biến phân biệt hoa, thường
80+
Ví dụ :
81+
```
82+
b=1 # đúng
83+
ba= 1 # sai
84+
ba =1 #sai
85+
2a==1 # sai
86+
```
87+
88+
89+
* IN giá trị biến bằng ECHO
90+
Cú pháp `echo [option] $tên_biến`
91+
Một số ký tự đặt biiệt với tùy chọn -e trong echo:
92+
- \a alert (bell)
93+
- \b backspace-
94+
- \c suppress trailing new line
95+
- \n new line
96+
- \r carriage return
97+
- \t horizontal tab
98+
- \\ backslash
99+
Ví dụ
100+
```
101+
[root]echo -e "son\rtran"
102+
tran
103+
[root]echo -e "son\ntran"
104+
son
105+
tran
106+
[root]echo -e "son\\tran"
107+
son ran
108+
[root]echo -e "son\ttran"
109+
son tran
110+
```
111+
112+
### 4 . Các phép toán số học
113+
114+
Shell cung cấp cho ta một số biểu thức toán học.
115+
116+
**Cú pháp**:
117+
118+
```Powershell
119+
expr toán_hạng_1 toán_tử toán_hạng_2
120+
```
121+
Yêu cầu :
122+
- khoản trống giữa các thành phần tham gia toán hạng
123+
124+
Ví dụ
125+
```
126+
[root]cong=$(expr 1 + 1)
127+
[root]echo $cong
128+
2
129+
[root]echo $(expr 5 - 1)
130+
4
131+
[root]echo $(expr 9 / 2)
132+
4
133+
[root]echo $(expr 9 \* 2)
134+
18
135+
136+
137+
```
138+
139+
Cách dấu ngoặc trong Shell
140+
141+
- Tất cả các ký tự trong dấu ngoặc kép đều ( "" ) không có ý nghĩa nghĩa toán, trừ những ký tự sau \ hoặc $$
142+
- Dấu nháy ngược (`): nghĩa là yêu cầu thực thi lệnh
143+
144+
Ví dụ
145+
```
146+
[root]echo `expr 1 + 1 ` # thực thiện như một câu l
147+
2
148+
```
149+
Kiểm tra trạng thái của một câu lệnh
150+
``` echo $? ```
151+
152+
## 5. Cấu trúc điều khiển đầu ra
153+
154+
1. Cấu trúc điều kiện rẽ nhánh ( IF )
155+
156+
**if**
157+
```
158+
if dieu_kien ;
159+
then
160+
cau_lenh
161+
fi
162+
163+
```
164+
**if...else...fi**
165+
```
166+
if dieu_kien ;
167+
then
168+
cau_lenh
169+
else
170+
cau_lenh
171+
fi
172+
```
173+
2. Vòng lặp for
174+
# for 1
175+
```
176+
for i in 1 2 3 4 5
177+
do
178+
echo $i
179+
done
180+
181+
#output: 1 2 3 4 5
182+
183+
#for 2
184+
for ((i=0; i<=10; i++)) # bao quanh bằng (())
185+
do
186+
echo $i
187+
done
188+
#ouput 1 2 3 4 5 6 7 8 9 10
189+
```
190+
3. Vòng lặp while
191+
```Powershell
192+
while [dieu kien]
193+
do
194+
command1
195+
done
196+
```
197+
198+
## 6 . Một số cú pháp kiếm tra
199+
200+
1. Toán học
201+
202+
| Operation | Meaning |
203+
|----------|-----------|
204+
| -eq | Kiểm tra ngang bằng|
205+
| -ne | Kiểm tra không ngang bằng |
206+
| -lt | Kiểm tra nhỏ hơn |
207+
| -le | Kiểm tra nhỏ hơn bằng |
208+
| -gt | Kiểm tra lớn hơn |
209+
| -ge | Kiểm tra lớn hơn bằng|
210+
211+
3. Chuỗi
212+
213+
| Operation | Meaning |
214+
|-----------|----------|
215+
|sting1 = sting2| Kiiểm tra ngang bằng chuỗi|
216+
|string1 != string2| Kiểm tra không ngang bằng|
217+
|-n string1|Kiểm tra biến tồn tại|
218+
219+
4. File , thư mục
220+
221+
222+
| Operation | Meaning |
223+
|-----------|----------|
224+
|-e file| Kiểm tra tập tin tồn tại hay không|
225+
|-s | Kiểm tra có phải file trống |
226+
|- d| Kiểm tra có tồn tại thư mục |
227+
|-r file| Kiểm tra file có quyền read|
228+
|-w file|| Kiểm tra file có quyền write|
229+
|-x file| Kiểm tra file có quyền execute|

0 commit comments

Comments
 (0)