June 3, 2015

VPS căn bản [Phần 3] – Làm việc với file/folder

Chào mừng bạn quay trở lại serie VPS cho WordPress căn bản dành cho mọi người. Ở phần 2 bạn đã biết cách đăng nhập vào SSH rồi và có lẽ ai đã từng vào đó lần đầu tiên sẽ cảm thấy rối và không biết phải làm gì, nếu bạn chưa từng sử dụng qua Linux.
Ok, giục tốc thì bất đạt, bạn sẽ trở nên sớm hiểu rõ về nó thôi nhưng cái gì cũng phải đi từ từ để hiểu sâu hơn thay vì lướt qua để cuối cùng bạn chẳng hiểu gì.
Vậy ở bài này chúng ta sẽ làm cái gì? Giống như hồi bạn mới sử dụng máy tính thôi, chúng ta sẽ đi qua các thao tác cực kỳ đơn giản nhưng rất quan trọng đó là làm việc với file và folder trên VPS Linux.

I. Các lệnh làm việc với file

Ở các lệnh này, bạn sẽ nắm qua 4 thao tác chính bao gồm:
  • Cách tạo file và ghi nội dung cho file
  • Cách đổi tên file
  • Cách copy file
  • Cách xóa file
TIPS: Sử dụng lệnh ls để xem toàn bộ file và thư mục có trong thư mục hiện tại.

1.1) Cách tạo file

Ok, bây giờ bạn đang ở thư mục ~ trên VPS, đó chính là thư mục của username mà bạn đã đăng nhập.
ssh-linux-login-successful
Bây giờ chúng ta sẽ tạo file bằng cách sử dụng một ứng dụng soạn thảo văn bảng tên là vi với cấu trúc lệnh như sau:
01
vi tên-file-cần-tạo
Giả sử, mình muốn tạo một file mang tên thachpham.html thì sẽ gõ lệnh sau:
01
vi thachpham.html
Sau khi gõ xong và Enter, nó sẽ hiển thị ra khu vực soạn thảo nội dung file bạn vừa tạo như hình dưới:
linux-editfile-vi
Lúc này bạn chưa thể nhập dữ liệu vào file được vì ở vi nó không cho phép bạn nhập liệu trực tiếp mà phảichuyển sang chế độ Insert. Để chuyển sang chế độ Insert, bạn bấm phím i và nó sẽ hiển thị chữ INSERT ở phía dưới như hình:
linux-editfile-vi-insertmode
Khi nó hiện chữ INSERT tức là bạn đã có thể nhập liệu vào file, hãy thử nhập một nội dung gì đó xem nào. Bạn soạn thảo như là bạn đang gõ trên trình soạn thảo văn bản thông thường.
linux-editfile-vi-textexampleSau khi soạn thảo xong, nếu muốn lưu lại thì hãy ấn phím ESC để thoát khỏi chế độ Insert và gõ :wq! rồi enter để tiến hành thoát ra và lưu file.
linux-editfile-vi-saveexit
Lúc này nó sẽ đưa bạn về lại giao diện các dòng lệnh. Để kiểm tra xem file bạn vừa tạo có tồn tại hay không, hãy gõ lệnh ls và Enter, bạn sẽ thấy được tên file mà bạn vừa tạo trong danh sách các file và thư mục có trong thư mục hiện tại mà bạn đang thực thi.
linux-editfile-listing

Trường hợp sau này bạn cần sửa nội dung file thì vẫn sử dụng lệnh như lúc tạo file, bởi vì nếu file bạn gõ trên lệnh không tồn tại thì nó sẽ tạo, còn nếu đã tồn tại thì bạn sẽ sửa nó.
Để đọc nội dung của file vừa tạo, bạn sử dụng lệnh cat. Chẳng hạn ở đây mình cần đọc file thachpham.html thì sẽ gõ là cat thachpham.html.
linux-editfile-readfile
Ngoài lệnh cat ra, bạn còn có thể dùng các lệnh khác tương tự như:
01
02
03
tail thachpham.html
 
head thachpham.html

2.2) Đổi tên file

Để đổi tên file, chúng ta sẽ sử dụng lệnh mv. Thực ra lệnh mv này nghĩa là move, tức là di chuyển file và thư mục nhưng hiện tại mình toàn thấy người ta dùng lệnh này để đổi tên file.
Để sử dụng lệnh mv phục vụ cho việc đổi tên file, bạn sẽ sử dụng với cấu trúc như sau.
01
mv tên-file-cũ tên-file-mới
Ví dụ mình có file thachpham.html cần đổi thành phamngocthach.html thì sẽ viết lệnh là:
01
mv thachpham.html phamngocthach.html
Sau đó sử dụng lệnh ls để kiểm tra kết quả.
linux-renamefile

2.3) Cách copy file

Để copy một file, bạn sử dụng lệnh cp với cấu trúc như sau:
01
cp tên-file-cũ tên-file-mới
Trong đó, khi copy ra file của bạn sẽ có một tên file mới và nội dung hoàn toàn giống nhau. Xem ví dụ:
linux-copyfile
Bạn cũng có thể chuyển bản sao của file được copy sang thư mục khác với lệnh tương tự, chỉ khác là thêm đường dẫn thư mục vào:
01
cp thachpham.html /path/folder/thachpham-cp.html
Khái niệm thư mục mình sẽ nói thêm ở phần dưới.

2.4) Cách di chuyển file

Cách sử dụng y hệt như lệnh cp ở trên. Cấu trúc là:
01
mv tên-file-cần-chuyển thư-mục-cần-lưu
Ví dụ mình muốn chuyển file thachpham.html ra folder /home thì gõ:
01
mv thachpham.html /home

2.5) Cách xóa file

Xóa file thì cũng rất đơn giản, chúng ta sẽ sử dụng lệnh rm với cấu trúc:
01
rm tên-file-cần-xóa
Ví dụ: rm phamthachpham.html
Sau khi gõ lệnh này, nó sẽ hỏi bạn là có muốn thật sự xóa file này hay không, gõ yes và Enter để đồng ý.
linux-deletefile
Trường hợp bạn muốn xóa mà không cần hỏi lại thì thêm tham số -f vào đoạn lệnh là được.
01
rm -f phamngocthach.html

III. Làm việc với thư mục (folder)

Các thao tác làm việc trên folder hầu như cũng không khác gì lắm so với file, nhưng dĩ nhiên nó không có sử dụng lệnh vi.
Trong phần này, bạn sẽ nắm được các thao tác như:
  • Cách tạo folder
  • Cách truy cập vào folder
  • Cách copy folder
  • Cách xóa folder

3.1) Cách tạo folder và truy cập vào folder

Ok, hãy chắc chắn là bạn vẫn đang ở thư mục /root, tức là ký hiệu ~ trên command line đấy.
Để tạo folder, chúng ta sẽ sử dụng lệnh mkdir với cấu trúc:
01
mkdir tên-thư-mục-cần-tạo
Ví dụ mình muốn tạo một thư mục data trong thư mục hiện tại thì sẽ gõ là mkdir data.
linux-createfolder
Để truy cập vào thư mục data vừa tạo, chúng ta sẽ sử dụng lệnh cd với cấu trúc là cd data.
linux-changefolder
Như bạn thấy, khi truy cập vào thư mục data thì tên của thư mục hiện hành sẽ đổi thành data để bạn biết. Để biết chính xác địa chỉ đường dẫn thư mục bạn đang thực thi thì hãy gõ lệnh pwd để kiểm tra.
linux-folder-pwd

3.2) Tìm hiểu kỹ hơn về lệnh cd

Ở trên mình đã chỉ bạn cách dùng lệnh cd truy cập vào một thư mục nào đó, nhưng nhiêu đó vẫn chưa đủ, mình sẽ giải thích thêm ở phần này.
Ví dụ bây giờ bạn đang ở thư mục /root/data và muốn truy cập lại thư mục /root, tức là giảm đi một tầng thư mục thì sẽ viết lệnh là cd ...Hai dấu chấm nghĩa là bạn quay trở lại một tầng thư mục nhưng bạn không thể sử dụng nhiều hơn 2 dấu chấm. 😀
linux-cdbackfolder
Trường hợp bạn cần vào chính xác một thư mục nào đó thì hãy gõ với cấu trúc là cd /path/folder. Ví dụ mình muốn vào thư mục /etc/init thì sẽ gõ là cd /etc/init.
Bạn lưu ý giúp mình một chỗ, nếu trên đường dẫn của bạn mà có dấu / đằng trước (ví dụ /etc/init) thì nó sẽ bắt đầu tính từ thư mục gốc, đây là khái niệm đường dẫn tuyệt đối.
Còn nếu bạn viết mà thiếu dấu / đằng trước thì nó sẽ hiểu là bạn muốn truy cập vào thư mục có trong thư mục hiện tại bạn đang thực thi. Ví dụ mình đang ở thư mục /root mà gõ cd etc/init thì nó sẽ hiểu mình muốn truy cập vào thư mục /root/etc/init và sẽ báo lỗi nếu như thư mục này không tồn tại.
linux-absolutepath
Để trở lại thư mục của user bạn đang đăng nhập (ở đây là /root) thì bạn có thể gõ cd ~.
Muốn truy cập vào thư mục gốc trên server thì gõ cd /.

3.3) Nói thêm về lệnh ls

Trong bài phần 2 và bài này mình có sử dụng rất nhiều lần câu lệnh ls với mục đích là xem các file và folder trong thư mục hiện tại. Tuy nhiên cũng xin nói thêm về một số tùy chọn của nó để bạn có thể sử dụng linh hoạt hơn.
  • ls là để xem toàn bộ file nhưng chỉ hiển thị tên file, và không bao gồm các file và folder được ẩn.
  • ls -a là để xem toàn bộ file và thư mục bao gồm các file và thư mục bị ẩn.
  • ls -l là xem toàn bộ file/folder kèm theo thông tin chi tiết của file/folder  đó nhưng không bao gồm các file/folder  ẩn.
  • ls -al là xem toàn bộ file/folder với thông tin chi tiết và bao gồm các file/folder bị ẩn.
Ví dụ sử dụng:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@vpscanban ~]# ls
anaconda-ks.cfg install.log thachpham-cp.html
data install.log.syslog thachpham.html
[root@vpscanban ~]# ls -a
. .bash_logout data .ssh
.. .bash_profile install.log .tcshrc
anaconda-ks.cfg .bashrc install.log.syslog thachpham-cp.html
.bash_history .cshrc .pki thachpham.html
[root@vpscanban ~]# ls -l
total 32
-rw------- 1 root root 896 Dec 17 2013 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Sep 20 21:52 data
-rw-r--r-- 1 root root 8412 Dec 17 2013 install.log
-rw-r--r-- 1 root root 3384 Dec 17 2013 install.log.syslog
-rw-r--r-- 1 root root 36 Sep 20 21:31 thachpham-cp.html
-rw-r--r-- 1 root root 36 Sep 20 21:30 thachpham.html
[root@vpscanban ~]# ls -al
total 68
dr-xr-x--- 5 root root 4096 Sep 20 21:52 .
dr-xr-xr-x 21 root root 4096 Sep 20 19:15 ..
-rw------- 1 root root 896 Dec 17 2013 anaconda-ks.cfg
-rw------- 1 root root 0 May 2 16:16 .bash_history
-rw-r--r-- 1 root root 18 May 20 2009 .bash_logout
-rw-r--r-- 1 root root 176 May 20 2009 .bash_profile
-rw-r--r-- 1 root root 176 Sep 22 2004 .bashrc
-rw-r--r-- 1 root root 100 Sep 22 2004 .cshrc
drwxr-xr-x 2 root root 4096 Sep 20 21:52 data
-rw-r--r-- 1 root root 8412 Dec 17 2013 install.log
-rw-r--r-- 1 root root 3384 Dec 17 2013 install.log.syslog
drwxr----- 3 root root 4096 Apr 9 16:31 .pki
drwx------ 2 root root 4096 Sep 20 19:15 .ssh
-rw-r--r-- 1 root root 129 Dec 3 2004 .tcshrc
-rw-r--r-- 1 root root 36 Sep 20 21:31 thachpham-cp.html
-rw-r--r-- 1 root root 36 Sep 20 21:30 thachpham.html

3.4) Cách copy folder

Lệnh copy folder thì cũng tương tự như lệnh copy file, đó là sử dụng lệnh cp nhưng chỉ khác là viết với dạng:
01
cp -r tên-thư-mục-cũ tên-thư-mục-mới
Tham số -r nghĩa là bạn sẽ copy toàn bộ file và thư mục chứa trong đó.
Ví dụ mình muốn copy thư mục data ra một thư mục mới mang tên data-new thì viết như sau:
01
cp -r data data-new
Trong hình nghĩa là thư mục data-new có dung lượng giống với thư mục data
Trong hình nghĩa là thư mục data-new có dung lượng giống với thư mục data

3.5) Di chuyển thư mục

Cũng giống như di chuyển file mà thôi, đó là sử dụng lệnh mv với cấu trúc.
01
mv thư-mục-cần-chuyển thư-mục-chuyển-đến
Chẳng hạn giờ mình tạo ra 1 thư mục tên là web.
01
mkdir web
Sau đó chuyển thư mục data vào thư mục web
01
mv data web
linux-movefolder

3.6) Xóa thư mục

Chỉ với 1 lệnh đơn giản mà thôi:
01
rm -rf tên-thư-mục-cần-xóa
Ví dụ mình muốn xóa thư mục web và những thư mục con bên trong nó thì viết là:
01
rm -rf web
Lưu ý: Khi đã xóa thì không thể khôi phục lại.

Lời kết

Trong bài này bạn vừa đi qua những câu lệnh căn bản nhất trên Linux để phục vụ vào công việc thao tác với file và folder trên VPS cũng như cách truy cập vào một thư mục nào đó là như thế nào.
Nếu bạn vẫn còn đang ngờ ngợ chưa hiểu lắm thì hãy đọc kỹ lại vì các bài sau mình cần bạn nắm phần này thật vững vì mình sẽ không giải thích lại ở các bài sau.

0 comments:

Post a Comment