LPIC1-Bai1

 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