LPIC 1 - Bai1
- Tìm hiểu về các distro của linux:
https://distrowatch.com/
- Distro là các bản phân phối của linux
- Command
echo $SHELL #Hiển thị thông tin shell đang sử dụng (hiện tại)
which sh # Kiểm tra đường dẫn sh shell
which bash # Kiểm tra đường dẫn bash shell
...
- Thứ tự boot trong linux
1. Computer firmware
2. Bootloader
3. Linux kernel
4. Init system
- Kiểm tra log boot
/var/log/boot
/var/log/boot.log
dmesg
systemd-Journald
- Computer firmware gồm: BIOS and UEFI
- Check Secure boot is enableb?
mokutil --ssb-state
dmesg | grep - i secure\ boot\ enabled
- Kiểm tra init system
ps -p 1
which init
- Kiểm tra khác:
ps auxf | grep kworker
Bài: command line
- Cú pháp: command [flags] arg1 arg2 arg3
ls -l .
ls -al .
man ls
ls --help
ls --version
tab # gõ ký tự của lệnh, sau đó gõ tab để xem gợi ý hoàn thành lệnh
sudo vi /etc/passwd # sửa đổi bash shell. Ví dụ, zsh thành bash...
chsh -s /usr/bin/bash # đổi sang bash shell. Chú ý phải login lại
echo $? # trả về kết quả thực hiện lệnh trước đó là thành công hay không bằng các đưa ra thông tin mã code. Ví dụ code 0 lệnh trước đó là đúng, code 0 thì lệnh trước đó chưa đúng? cần tra cứu thêm kết quả mã code để biết lỗi. Cú pháp seach "bash return status code".
type man # kiểm tra kiểu lệnh là built-in hay không?
type ls
alias mypic = "ls -al /home/" # đặt alias cho một lệnh
mypic
vi .bashrc
Đường dẫn tuyệt đối: bắt đầu bằng “/” ở đầu đường dẫn.
Đường dẫn tương đối: không bắt đầu bằng “/” ở đầu đường dẫn.
cd - # trả về thư mục trước đó đang đứng.
cd hoặc cd ~ # trả về thư mục "home" của người dùng hiện tại
id # kiểm tra người dùng
. # trả về vị trí thư mục hiện hành.
.. # trả về vị trí cha của thư mục đang đứng
pwd # trả về vị trí thư mục hiện hành.
Tập tin/thư mục ẩn: tên được bắt đầu bằng dấu chấm “.” ví dụ: .bashrc; .bash_history
..............
echo # xuất dòng text ra màn hình
ls # liệt kê file, thư mục
ls -1 .
ls .
ls -al
cd /var/log
ls --help
ls -alr .
ls -alS . # file lớn nhất sẽ được sắp xếp lên đầu
pwd #
cd
cd ~
cd .
cd ..
cd -
alias
clear # xóa màn hình (ctrl-l)
history
uname
uname -a # xem thông tin kernel đang sử dụng
which
which ls
type echo
which echo
ls -al /usr/bin/echo
set
set | more
unset
export
export B=110
echo $B
bash # chỉ lưu câu lệnh trong session
printenv
env
crontab -e
env EDITOR=nano crontab -e
env EDITOR=vim crontab -e
set EDITOR=vim
crontab -e
set | more
history
.bash_history (khi sử dụng Bash shell)
Reserve history command search: CTRL + R
Chạy command số N trong history: !N
Chạy command xuất hiện gần nhất trong history bắt đầu bang “string”: !string
!!: thực thi dòng lệnh cuối cùng
CTRL L: clear terminal
CRTL D : logout # tương tự lệnh exit
SHIFT Page Up/Down: up/down terminal # tương tự lệnh ls -al | more
CTRL A: về đầu dòng lệnh
CTRL E: về cuối dòng lệnh
CTRL K: xoá về phải đến hết dòng
CTRL U: xoá về trái đến hết dòng
CTRL W: xoá trái “word”
CTRL Y: paste sau khi Ctrl + {U, K W}
CTRL P: command vừa chạy trước đó (Up)
CTRL N: command vừa chạy kế sau (Down)
cat # xem nội dung file
vi file.txt
cat file.txt
head # mặc định lấy 10 dòng đầu tiên của file.
head -n 1 file.txt
man head
tail -n 1 file.txt
cat /usr/bin/ls | more
cat /usr/bin/ls | less
more file.txt
more /usr/bin/ls
paste
vi w.txt
vi num.txt
paste w.txt num.txt
split
split -b 1 w.txt
cat xaa
cat xab
rm xa*
split -b 2 w.txt
cat xaa
cat xa* >> w_new.txt
nl w.txt # đếm số dòng trong file
md5sum w_new.txt
sha512sum w_new.txt
cat num.txt
sort num.txt
sort -r num.txt
cat num.txt | sort
sort -n num.txt
wc num.txt # hiển thị số dòng, số từ và kích thước file
tr #?
uniq
sort num.txt | uniq -u # chỉ hiển thị 1 dòng trong các dòng trùng nhau
touch emtpy.file
mkdir dir1
ls
ll
rmdir dir1
ll
ll _resources/
cp dir1; emtpy.file dir1/
ll dir1/
mv w.txt dir1/
rm xaa
rm dir1
rm -r dir1
ll
rm -rf
rm --help
alias rm="rm -i" # alias hỏi để xác nhận có remove hay không?
type rm # check lại xem đã đặt alias thành công chưa?
rm xac
file w_new.txt # xem loại file
file /usr/bin/ls
cd ../Pictures/
ls
file ubuntu.jpg
mv ubuntu.jpg ubuntu.txt
file ubuntu.txt
man find
find /home/user/Pictures/ -type f
find /home/user/Pictures/ -type d
find /home/user/Pictures/ -type f - name "cutefish"
find /home/user/Pictures/ -type f - name "*cutefish"
find /home/user/Pictures/ -type f - name '*cutefish'
;;;
rm -rf /* # remove các file đang không sử dụng từ thư mục gốc, xóa cả hệ điều hành.
...
export name=cutefish
echo $name
find /home/user/Pictures/ -type f -name '*name*'
find /home/user/Pictures/ -type f -name "*name*"
man tar # lệnh đóng gói
tar -cf Pictures.tar # đóng gói
tar -xf Pictures.tar
tar -x -f Pictures.tar
tar -czf Pictures.tar Pictures/
ll
file Pictures.tar
tar -cjf Pictures.tar.bz2 Pictures
tar -xjf Pictures.tar.bz2
tar xf Pictures.tar.bz2 # khi không cần biết định dạng
type Pictures.tar.bz2
tar xf Pictures.tar.bz2 -C Desktop/ # giải nén vào thư mục Desktop
tar -tf Pictures.tar # xem nội dung nén
c – tạo mới file tar
v – verbose
f – file name
z – liên quan định dạng gzip
j – liên quan định dạng bz2
x – extract (giảin nén) file tar (untar)
C – chỉ định thư mục đích khi giải nén file tar
t – xem nội dung file tar
...Ngày 25/10/2022
Trên Linux, mọi đối tượng (object) đều là “file”.
File descriptor: là 1 số Interger, dùng để phân loại các file được mở bởi các process.
STDOUT: 1
STDERR: 2
Mặc định redirection STDOUT và STDERR vào terminal.
Redirection operator:
> write
>> append
Mặc định > và >> đang sử dụng ”file descriptor” là 1
..
ls
man grep
ls | grep "Music"
LS
LS | grep "command"
type ll
echo $? #
ls > file.list
cat file.list
LS > file.list.error
cat file.list.error
ghi chú: đổi mở rộng trong linux không có ràng buộc cố định trong terminal.
cd Desktop/
touch abc.tar
touch abc.pdf
cd -
ls
cat file.list.error
cat file.list
ls > file.list.error
cat file.list.error
ls >> file.list.error
cat file.list.error
ls > file.list.error
cat file.list.error
...
STDIN: 0
Input mặc định được nhận từ bàn phím, input devices.
Input redirect operator: <
nu.txt
100 200 300 400
cat nu.txt
cat nu.txt | tr "" ","
tr "" "," < nu.txt
.......
> ouput
>> append
< input
&: lấy file descriptor
.... STANDARD
0. STDIN
1. STDOUT
2. STDERR
STANDARD
1>: write output
2>: write error
&> #Không rõ command lỗi hay không lỗi thì dùng dấu &
====
1>>: append output
2>>: append error
&>> #Không rõ command lỗi hay không lỗi thì dùng dấu &
....
ls 1> file.out
cat file.out
ls > file.out
cat file.out
...
LS > file.err
cat file.err
LS 2>file.err
LS &> new_file.err
ls &> new_file.err
cat new_file.err
LS &> new_file.err
cat new_file.err
LS &>> new_file.err
cat new_file.err
ls &>> new_file.err
cat new_file.err
.........
&> khác gì 2>&1 ?
2>&1: write error TO output
2>: write error
&1: output
2>>&1: append error TO output
...
LS 2>&1 | grep "command"
LS | grep "not"
................ Piping |
LS 2>&1 | grep "command" | tr "o" "O"
.........
2> /dev/null
2>: write error
/dev/null: # dữ liệu bị bỏ hết, không tốn tài nguyên. Coi như lỗ đen
..
LS 2> /dev/null
......................tee
ls > file.new
ls | tee | file.new
cat file.new
.....................grep
grep: Global Regular Expression Print – print lines that match patterns
Grep tìm kiếm các dòng text match với pattern, từ STDIN hoặc từ file.
pattern: một chuỗi các kí tự định nghĩa một mẫu (template) tìm kiếm.
Cú pháp chung: grep [option] pattern [file]
...
cat /etc/passwd
cat /etc/shadow
sudo cat /etc/shadow
id
grep "user" /etc/password # trực tiếp kiểm tra trong file
..
cat /etc/passwd | grep "user" # gián tiếp ==> kiểm tra trong bộ nhớ ==> đối với file là dư thừa
.. Nếu là dạng command thì phù hợp. Như ví dụ dưới đây
uname -a
uname -a | grep "x86"
pattern="x86"
echo $pattern
uname -a | grep "$pattern"
uname -a | grep "2021 x86_64"
uname -a | grep 2021 x86_64
uname -a | grep "[0-9]" # tìm những số trong khoảng từ 0 đến 9
uname -a | grep "[A-Z]" # tìm những ký tự hoa
uname -a | grep "[a-z]" # tìm những ký tự thường
uname -a | grep "[a-zA-Z]" # tìm những ký tự thường và ký tự hoa (trừ ký tự đặc biệt và số).
grep "bash" /etc/passwd
man egrep
uname -a | grep "\[\]"
echo "abc[]abc[]" | grep "[]"
echo "abc[]abc[]" | grep -F "[]"
..
Basic Regular Expression:
. one character
.* multiple character
^ begin line
$ end line
...
grep "^STANDARD" nu.txt # có chữ "STANDARD" đầu dòng
grep "STANDARD$" nu.txt # có chữ "STANDARD" cuối dòng
grep "^STANDARD$" nu.txt # có chữ "STANDARD" đầu và cuối dòng
grep "^$" nu.txt # các dòng trắng
grep -v "^$" nu.txt # loại bỏ các dòng trắng
...
Extended Regular Expression: phức tạp
Controling matching
-v invert matching
-i bỏ qua case-sensitive
-w match cả từ (word)
-x match cả dòng
Controling output
-o matching only
-c count
-n line number
-l only matching filename
Directory
-r recursively
-R == -r
-d recurse == -r
...
grep -i "^STANdard" nu.txt
...
sudo apt install nginx
cat /etc/nginx/nginx.conf
grep -v "^#" /etc/nginx/nginx.conf
grep -v "#" /etc/nginx/nginx.conf
grep -v "#" /etc/nginx/nginx.conf | grep -v "^$"
grep -w "STAN" nu.txt
grep -o "STAN" nu.txt
..
grep -n "sendfile" /etc/nginx/nginx.conf
vi /etc/nginx/nginx.conf +17 # mở file đặt con trỏ tại đúng dòng 17
ll /var/log/
less var/log/
grep "Kernel" /var/log/*
grep -l "Kernel" /var/log/* # chỉ xem tên file # chỉ tìm ở thư mục cha khai báo.
grep -lr "Kernel" /var/log/* # chỉ xem tên file # tìm trong cả thư mục con
grep -lni "kernel" /var/log/*
...
commandlinefu.com
https://www.commandlinefu.com/commands/browse
bash -c 'exec 3<>/dev/tcp/google.com/80; echo EOF>&3; cat<&3'
grep '^\.' file
.
Nhận xét
Đăng nhận xét