Những dòng lệnh Linux hữu ích (Useful linux tools)

Useful linux tools

Nếu ai đó chưa sử dụng hoặc chưa quen với giao diện dòng lệnh trong terminal.app của các bản phân phối Linux (Ubuntu, Fedora, Linux Mint …) hoặc Mac OS X, thì điều đó sẽ khiến bạn thấy chút khó chịu bởi chúng thiếu đồ họa trực quan. Tuy nhiên nếu bạn thường xuyên thực hiện các thao tác lặp đi lặp lại giống nhau, bạn sẽ thấy chúng rất hữu ích và tiết kiện thời gian giống như các phím tắt trong soạn thảo văn bản vậy. Và khi sử dụng một máy tính hiệu năng cao cho các phần mềm khoa học (Quantum ESPRESSO, VASP, LAMMPS, …), chúng ta sẽ cần phải thao tác trên một giao diện dòng lệnh như vậy. Dưới đây là danh sách các lệnh phổ biến có thể hữu ích cho công việc của bạn.

1. Thao tác trên tập tin và thư mục trong hệ thống:
Một số dòng lệch hữu ích giúp thao tác trên tập tin và thư mục trong Terminal.

ls: liệt kê tất cả các tập tin có thể nhìn thấy trong thư mục hiện hành.
$ ls .*
liệt kê tất cả các tập tin bao gồm cả tập tin ẩn bắt đầu bằng “.” như .bashrc, nếu “.” được thay bằng kí tự “a” bất kì, khi đó chỉ liệt kê các tập tin bắt đầu bằng kí tự “a”.
$ ls */*
liệt kê tất cả các tập tin trong thư mục con đầu tiên.
$ ls path/
liệt kê tất cả các tập tin trong thư mục mà đường dẫn (path) chỉ tới.
$ ls -ltrh
liệt kê tập tin với các thông số (l), nếu có (t) các tệp tin sắp xếp theo thứ tự ngày chỉnh sửa, nếu có (r) thứ tự các tập tin sẽ được đảo ngược, nếu có (h) các tập tin được liệt kê với dung lượng theo đơn vị (GB/MB/KB).

cd: Thay đổi thư mục.
$ cd ~/
di chuyển tới thư mục “home”.
$ cd -
quay về thư mục trước đó.
$ cd ../
di chuyển tới thư mục trên (thư mục bao gồm thư mục hiện hành).
$ cd path/
di chuyển tới thư mục mà đường dẫn (path) chỉ tới.

mkdir: Tạo thư mục mới.

pwd: Xem đường dẫn của thư mục hiện hành.

ln: Tạo liên kết mới cho thư mục.
Giả sử bạn có một đường dẫn dài để chỉ tới thư mục “intel” như sau: /usr/local/source/file/compiler/bin/intel/, bạn muốn tạo một đường dẫn ngắn gọn hơn để dễ thao tác trong như mục hiện hành. Dòng lệnh thực hiện như sau: ln -s  /usr/local/source/file/compiler/bin/intel/ abc. Khi đó bạn đã tạo ra một thư mục con abc/ trong thư mục hiện hành mà liên kết với thư mục intel. Khi đó đường dẫn abc/ là tương đương với đường dẫn /usr/local/source/file/compiler/bin/intel/. Muốn xóa đường dẫn này đi bạn sử dụng lệnh rm (bên dưới).

du: Xem dung lượng thư mục và file.
$ du -sh
xem dung lượng của thư mục hiện hành.
$ du -sh -- *
xem dung lượng của nhiều thư mục con trong thư mục hiện hành.
$ du -ah
xem dung lượng của tất cả các file và thư mục con trong thư mục hiện hành.
$ du -h --max-depth=1
xem dung lượng của tất cả các thư mục con trong thư mục hiện hành.

cp/mv: Sao chép hoặc di chuyển tệp tin từ nơi này đến nơi khác.
$ cp a1.txt path/ hoặc $ mv a1.txt path/
sao chép hoặc di chuyển tập tin a1.txt tới thư mục đường dẫn chỉ tới.
$ cp -i a1.txt a2.txt hoặc $ mv -i a1.txt a2.txt
nếu có (i), khi đó nếu tập tin a2.txt tồn tại, nó sẽ hỏi bạn có ghi đè lên không.
$ cp -f a1.txt a2.txt hoặc $ mv -f a1.txt a2.txt
ghi đè ngay cả tập tin a2.txt tồn tại.
$ cp -r path1/ path2/ hoặc $ mv -r path1/ path2/
sao chép hoặc di chuyển tất cả các tập tin trong thư mục 1 tới tới thư mục 2.

find: Tìm kiếm sử dụng tên thư mục.
$ find ./ -type d -name httpdocs
tìm kiếm tất cả các thư mục có tên là “httpdos” trong thư mục hiện hành.

rm: Xóa tệp tin hoặc thư mục.
$ rm -i a1.txt
nếu có (i), sẽ hỏi có xóa hay không.
$ rm -f path/
xóa toàn bộ thư mục (hãy chắc chắn rằng bạn tất cả các tập tin trong thu mục bạn muốn xóa).
$ rm -f `find path/ -name "a"`
xóa toàn bộ file có tên là a được tìm thấy trong thư mục bạn chọn.

vi/nano: Chỉnh sửa hoặc xem tập tin.
$ nano a1.txt hoặc vi a1.txt
(nano) được sử dụng khi cần chỉnh sửa nhanh chóng và đơn giản. Trong khi đó (vi) có nhiểu câu lệnh cho các chỉnh sửa phức tạp hơn. Tham khảo thêm về vinano.

tail: Hiển thị phần cuối cùng của tập tin.
$ tail a1.txt

chmod: Thay đổi quyền thao tác tập tin.
u: người đang dùng                      r: đọc
g: nhóm                                          w: viết
o: người dùng khác                       x: thực thi (execute permission)
a: cho tất cả người dùng
$ chmod u+x a1.txt    hoặc    $ chmod u-rx a1.txt
file a1.txt thành file thực thi hoặc loại bỏ quyền đọc và thực thi của file a1.txt đối với người dùng.
$ chmod a+x a1.txt   hoặc   $ chmod +x a1.txt
hai lệnh này là tương đương, cho phép file a1.txt được thực thi với tất cả người dùng

locate: Kiểm tra cơ sở dự liệu trong thư mục hiện hành.
$ locate ABC
tìm kiếm và xem tất cả các đường dẫn và tập tin có tên bao gồm cụm từ đại diện “ABC”.

tar: Nén và giải nén tập tin.
$ tar zxvf a1.tgz
giải nén tập tin a1.tgz.
$ tar cvzf a1.tgz a1.txt
nén tập tin a1.txt thành tập tin a1.tgz.

2. Thao tác với kết nối:
Một số lệnh hữu ích trong việc kết nối giữa các máy khác nhau hoặc giữa máy trạm với máy chủ.

ssh: Đăng nhập vào máy chủ từ máy trạm.
$ ssh iccms@192.168.1.1
đăng nhập vào máy chủ có IP là 192.168.1.1, chú ý là bạn có thể sử dụng bí danh trong .bashrc bằng lệnh sau: alias abc=”ssh iccms@192.168.1.1″. Sử dụng bí danh sẽ giúp rút gọn lệnh phải sử dụng thường xuyên.

scp: Sao chép tập tin từ máy chủ xuống máy trạm.
$ scp iccms@192.168.1.1:/path1/a1.txt path2/
sao chép tập tin a1.txt trong thư mục 1 từ máy chủ xuống thư mục 2 trong máy trạm.

wget: Tải tập tin từ trang web.
$ wget http://www.example.com/file.zip
tải tập tin file.zip từ trang web example.com

3. Thao tác với hệ thống:

top/ps: Liệt kê các chương trình đang thực thi.

kill/killall: Tắt một chương trình đang thực thi.
$ kill -9 <process id> hoặc killall <process name>
Tắt một chương trình với ưu tiên cao nhất.

lscpu: Xem thông tin về CPU của máy.

watch -n 1 free -m: Kiểm tra dung lượng RAM, để thoát khỏi lệch watch sử dụng phím tắt Ctrl+C.

sudo sysctl -w vm.drop_caches=3: Xoá bộ nhớ đệm sử dụng trong RAM.

4. Phân tích dữ liệu với dòng lệnh:
Những dòng lệnh sau rất hữu ích khi bạn muốn phân tích dữ liệu ngay trên Terminal.

clear: Làm sạch của sổ terminal.

grep: Tìm kiếm trong tập tin.
$ grep abc a1.txt
liệt kê các dòng có chứa các kí tự đại diện “abc” trong tập tin a1.txt.
$ grep -l abc *.*
liệt kê các tập tin có chứa các kí tự đại diện “abc” trong thư mục hiện hành.

tail: Xem phần cuối cùng của tập tin.
$ tail -50 a1.txt
liệt kê 50 dòng tính từ cuối lên trong tập tin a1.txt.

cat: Xem toàn bộ nội dung tập tin.
$ cat a1.txt
hiện thị toàn bộ nội dung của tập tin a1.txt trong terminal.
$ cat a1.txt >> a2.txt
bổ sung toàn bộ nội dung của tập tin a1.txt vào sau tập tin a2.txt.
$ cat a1.txt a2.txt > a.txt
ghép nội dung của tập tin a1.txt và a2.txt thành tập tin a.txt.
$ cat a1.txt | sort
hiện thị nội dung trong tập tin a1.txt theo thứ tự bảng chữ cái.
$ cat a1.txt | wc
hiện thị lần lượt số dòng, số từ và số kí tự trong tập tin a1.txt.

bc: Tính toán đơn giản trên terminal.
$ echo 0.72*1.54 | bc -l
sẽ cho bạn kết quả bằng 1.1088 trên terminal.
$ echo "scale=2; 0.72*1.54" | bc
sẽ cho bạn kết quả bằng 1.10 trên terminal.

5. Tạo biến môi trường trong Linux.
Để tạo các biến môi trường để thuận tiện trong quá trình sử dụng bạn làm như sau:
$ nano .bashrc
$ export PATH="$PATH:/path/"
$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/"
$ alias cd..='cd ../'
$ source ~/.bashrc

6. Lệnh với ổ cứng.

lsblk: Liệt kê dung lượng và link các ổ cứng
$ lsblk

dd: Kiểm tra tốc độ viết của ổ cứng (trường hợp này là sda, nó có thể là sdb, hoặc nvme0n1, …)
$ sudo dd if=/dev/sda of=/tmp/output bs=8k count=10k; sudo rm -f /tmp/output

fdisk: Phân vùng ổ cứng
$ sudo fdisk -l /dev/sda
Kiểm tra ổ cứng cần phân vùng.
$ sudo fdisk -l /dev/sda
Bắt đầu phân vùng, nhấn phím [m] sẽ hiển thị danh sách hỗ trợ –> phím [n] là bắt đầu phân vùng –> chọn [p] nếu muốn phân vùng là primay –> nhập thông tin –> chọn [w] để lưu phân vùng.
$ sudo partprobe /dev/sda
Cập nhập phân vùng mới trong hệ điều hành.

Định dạng và mount phân vùng mới vào một thư mục đã chỉ định.
$ sudo mkfs.xfs /dev/sda1
Định dạng cho phân vùng mới trong hệ thống (nếu mkfs.xfs: command not found, các bạn cần cài đặt xfs bằng lệnh: sudo apt-get install xfsprogs)
$ sudo mkdir /job
Tạo một thư mục mới (các bạn có thể mở rộng quyền truy cập bằng lệnh chmod).
$ sudo mount /dev/sda1 /job
Liên kết phân vùng mới vào thư mục job.

Hi vọng hướng dẫn này sẽ hữu ích cho các bạn. :D.

Bình luận về bài viết này