主要是紀錄一些 linux 的指令📝
( 本篇文章會持續更新:smile: )
切換到家目錄 ~
cd ~切換到根目錄 /
cd /回到上層目錄
cd ..線上說明手冊 ( man page )
man ls也可以使用
ls --help查看目前的路徑
pwdYoutube Tutorial - Linux 指令教學 - ls
列出檔案
ls -l-l 顯示詳細的資訊 ( 檔案權限 )。
也等於直接輸入 (L 的小寫)
ll在 Linux 中,檔案都擁有四種權限
-
可讀取 ( r,Readable ),用數字 4 表示。
-
可寫入 ( w,writable ),用數字 2 表示。
-
可執行 ( x,eXecute ),用數字 1 表示。
-
無權限 ( - ),用數字 0 表示。
為了更清楚,我把它整理成表格:yum:
| 字元 | 權限分數 |
|---|---|
| r (read) | 4 |
| w (write) | 2 |
| x (execute) | 1 |
| - 無權限 | 0 |
如下圖所示,
接著說明裡面每一欄的意思,
- 第一欄 ( 圖上編號 1 ),使用者權限。
由 10 個字元組成,
第一個字元代表檔案型態 (- 為檔案,d 為目錄,l 為連結檔案 )。
第二、三、四個字元 表示檔案擁有者的存取權限。
第五、六、七個字元 表示檔案擁有者所屬群組成員的存取權限。
第八、九、十個字元 表示其他使用者的存取權限。
來看一個例子,drwxr-xr-x,
代表它是一個目錄,
擁有者具備讀、寫、執行權限,
所屬群組只擁有讀、執行權限,
其他使用者只擁有讀、執行權限。
為了更清楚,我把它整理成表格:yum:
| 擁有者 | 所屬群組 | 其他使用者 | |
|---|---|---|---|
| d | rwx | r-x | r-x |
| 代表是一個目錄 | 具備讀、寫、執行權限 | 只擁有讀、執行權限 | 只擁有讀、執行權限 |
它的權限分數是 755
| 身份 | 權限 | 分數 |
|---|---|---|
| owner | rwx | 4+2+1 =7 |
| group | r-x | 4+0+1 =5 |
| others | r-x | 4+0+1 =5 |
-
第二欄 ( 圖上編號 2 ),檔案數量。
-
第三欄 ( 圖上編號 3 ),擁有者。
-
第四欄 ( 圖上編號 4 ),群組。
-
第五欄 ( 圖上編號 5 ),檔案大小。
-
第六欄 ( 圖上編號 6 ),檔案建立時間。
-
第七欄 ( 圖上編號 7 ),檔案名稱。
ls 使用時間排序
ls -t列出特定檔案 ( 列出為 .py 的檔案 )
ls *.py-h 參數,使用 KB、MB、GB 單位顯示檔案或目錄大小。
ls -l -h顯示全部的檔案 (包含隱藏檔)
ls -a也可以使用
ls -al可以直接列出資料夾內的內容
ls Downloads像是在 home 底下, 直接列出 Downloads 內容
sort
ls -S將輸出結果寫到檔案裡
ls -lS > file.txt切換不同的 user
su <username>增加新的 user
sudo useradd <username>設定 user 的 password
sudo passwd <username>刪除 user
sudo userdel <username>增加新的 group
sudo groupadd <groupname>刪除 group
sudo groupdel <groupname>增加 user 到 group 中
sudo usermod -g <groupname> <username>查看所有 user
sudo cat /etc/passwd查看所有 group
sudo cat /etc/group不知道大家有沒有這個困擾, 就是每次都要打上自己的密碼很麻煩:expressionless:
這邊提供一個方法給各位, 但還是要小心一點, 就是 -S 這個指令.
The -S (stdin) option causes sudo to read the password from
the standard input instead of the terminal device.
簡單說, 就是先打上你自己的密碼, 這樣就不用再打一次了, 以下舉例
echo YourPwd | sudo -S groupadd <groupname>Youtube Tutorial - Linux 教學 - chmod
chmod 為 change mode 的縮寫.
改變檔案權限
chmod XXX filename舉個例子,將權限設為 rw-rw-r--,
| 身份 | 權限 | 分數 |
|---|---|---|
| owner | rw- | 4+2+0 =6 |
| group | rw- | 4+2+0 =6 |
| others | r-- | 4+0+0 =4 |
chmod 664 README.md常用修改權限的指令
# 只有擁有者 owner 有讀和寫的權限
sudo chmod 600 ×××# 擁有者 owner 有讀和寫的權限,group,others 只有讀的權限
sudo chmod 644 ×××# 擁有者 owner 有讀和寫以及執行的權限
sudo chmod 700 ×××# 擁有者 owner,group,others 都有讀和寫的權限
sudo chmod 666 ×××# 擁有者 owner,group,others 都有讀和寫以及執行的權限,基本上就是全開
sudo chmod -R 777 xxx-r -R 代表 recursive 遞迴 ( 目錄底下所以檔案包含子目錄都會變更 ),
還有一種方法是使用 符號 來改變權限,
在介紹之前,先看下方的表格 😉
| u = user | ||||
|---|---|---|---|---|
| g = group | + (增加) | r = read | ||
| chmod | - (移除) | w = write | 檔案或資料夾 | |
| o = other | = (設定) | x = execute | ||
| a = all |
舉個例子,將 hello 權限設為 rw-rw-r--,
| 擁有者(u) | 所屬群組(g) | 其他使用者(o) |
|---|---|---|
| rw- | rw- | r-- |
chmod ug=rw,o=r hello再舉個例子,將 hello 權限設為 rwxr-xr–-,
chmod u=rwx,g=rx,o=r hello接著假設我希望把 可執行的權限(x) 加上去 (全部人及群組都加上)
chmod a+x hello移除所有人 可執行的權限(x)
chmod a-x hello你會發現大家的 可執行的權限(x) 都消失了
相信經過這一連串的練習,大家肯定了解了,
如果不懂,多看幾遍:satisfied:
修改檔案或目錄的擁有者與群組。
修改檔案或目錄的擁有者
# 將 README.md ( 檔案 ) 的擁有者改為 twtrubiks ( 使用者 )
chown twtrubiks README.md修改檔案或目錄的群組
# 將 README.md ( 檔案 ) 的群組改為 twtrubiksgroup ( 群組 )
chown :twtrubiksgroup README.md同時修改檔案或目錄的擁有者和群組
# 將 README.md ( 檔案 ) 的擁有者改為 twtrubiks ( 使用者 ) 以及
# 將 README.md ( 檔案 ) 的群組改為 twtrubiksgroup ( 群組 )
chown twtrubiks:twtrubiksgroup README.mdYoutube Tutorial - Linux 指令教學 - ln (Symbolic Link)
有兩種, 分別為 hard link 和 Symbolic link ( soft link ),
先介紹 hard link,注意,hard link not allowed for directory。
ln /home/twtrubiks/Downloads/odoo-git/README.mdhard link 特性為不管刪除哪一個檔案,檔案都會被保留。除非你把最後一個檔案也刪除,
換個方式說,一個檔案的 hard link 和本來的檔案其實沒有任何實質上的區別。
hard link 不允許資料夾,只允許檔案。
symbolic link,也稱 soft link,基本上它類似於 Windows 中的捷徑:smile:
ln -s /home/twtrubiks/Downloads/odoo-git/ dir-link當某個檔案的的本體被刪除後,它的 symbolic link 就無法讀取到這個檔案了,
一個檔案的 symbolic link 和檔案的本體是不同的兩個東西。
symbolic link 允許檔案和資料夾。
zip 3.0 已經會保存檔案的 permissions and ownership.
sudo apt-get install zip unzipzip
zip -r <壓縮後的檔名> <壓縮的檔案>
zip -r file.zip fileunzip
unzip <解壓縮的檔案> -d <解壓縮的目標資料夾>
unzip file.zip -d zip_extract如果希望直接解壓縮到當前的目錄,可以直接使用 .
unzip file.zip -d .tar 會保存檔案的 permissions and ownership.
壓縮 .tar format
tar cvf filename.tar source-folder解壓縮 .tar format
tar xvf filename.tarsudo apt-get install unrar將 filename.rar 解壓縮到目錄底下
unrar e filename.rar列出 filename.rar 的資料
unrar l filename.rar測試 filename.rar 是否完整且正確
unrar t filename.rar下載工具
sudo apt-get install wget下載 URL 指令
wget http://ftp.gnu.org/gnu/wget/wget-1.20.3.tar.gz指定檔名,請加上 -O
wget -O wget.tar.gz http://ftp.gnu.org/gnu/wget/wget-1.20.3.tar.gz全名為 Securely Copy,
這個方法適用於 Linux 和 Linux 之間互傳檔案,也適用於 Linux 和 Windows 之間互傳檔案,
假設,Linux ip 為 192.168.56.101,查看 ip 指令如下,
ip addr show確認有安裝 openssh-server
sudo apt-get install openssh-server使用 ssh localhsot 測試
一切正常之後。
從 Windows 上傳送檔案給 Linux ( ip 為 192.168.56.101 ),
在 Windows 上的 cmd 執行以下指令,
scp -rp 檔案 linux的使用者@ip:目標路徑-r 代表 recursive.
-p 代表 保存原始檔案的內容 (Preserves modification).
scp -rp file twtrubiks@192.168.56.101:/home/twtrubiks接下來,從 Linux 上拿檔案回 Windows
scp -P 22 linux的使用者@ip:目標路徑 存放的目標位置-P 代表明確指定連接的 port (remote host).
scp -P 22 twtrubiks@192.168.56.101:/home/twtrubiks/linux_file.md .. 代表當下目前路徑 ( 也可以指定其他的路徑 )。
Linux 之間的傳送也是相同的道理:smile:
Youtube Tutorial - Linux 指令教學 - mv
move ( rename ) files,移動檔案或是重新命名檔案。
修改 資料夾 or 檔案 檔名
mv folder folder-new
mv README.md README_MV.md移動檔案
mv README.md /examplesmv file.md example/其他的參數說明(參數可以多個一起使用),
互動模式 , CLI 會詢問你是否 overwriting files
mv -i source_file path_to_destination/只更新來源資料夾和目的地不同的檔案
mv -u source_file path_to_destination/Youtube Tutorial - Linux 指令教學 - rm
刪除檔案
rm file.md刪除資料夾
rm -rf mydir-r 代表使用 recursive 遞迴刪除。 ( 會將目錄內所有檔案刪除 )
-f 代表強制刪除 ( 不會跳出警告 )。
或是使用 rmdir 指令,
rmdir mydir_name不過要注意,被移除的資料夾裡面必須是空的,否則回無法移除。
刪除特定的副檔名,
rm -f *.zip也可以這樣
rm -f *demo.zipYoutube Tutorial - Linux 指令教學 - cp
複製資料夾
cp -r path_to_source/ path_to_destination/-r -R 代表 recursive 遞迴,
如果 path_to_destination 不存在,會自動建立 ;
如果存在,則直接使用。
只想複製資料夾底下的全部內容,
cp -r dir_1/. dir_2
cp -r dir_1/. .. 代表資料夾內的東西,也可以代表目前所在的地方。
有時候會希望複製時可以保存當時的權限,所以會加上 -p。
cp -r --preserve=all path_to_source/ path_to_destination/-p --preserve 代表一同複製當下的權限以及擁有者之類的。
其他的參數說明(參數可以多個一起使用),
互動模式 , CLI 會詢問你是否 overwriting files
cp -i source_file path_to_destination/不詢問 , 直接 overwriting files
cp -n source_file path_to_destination/只更新來源資料夾和目的地不同的檔案
cp -u source_file path_to_destination/印出資訊
cp -v source_file path_to_destination/查詢檔案
找檔案或資料夾
sudo find / -name "dir-name"
sudo find / -name "file-name"
sudo find / -name "*.conf"在當前目錄下尋找檔名為 README.md
find . -name README.mdsource 指令通常用於剛修改的初始化文件, 讓它立刻生效, 不必重開機(或登出再登入),
以下例子,
source demo.sh在當下的 shell 內去讀取, 執行 demo.sh, 而 demo.sh 需要有執行權限
(執行權限代表 chmod +x demo.sh)
source 指令也可以簡寫為 .
. demo.sh使用 sh or bash執行時, 不需要有執行權限.
(執行權限代表 chmod +x demo.sh)
sh demo.sh
bash demo.sh直接使用 ./ 執行, 需要有執行權限.
(執行權限代表 chmod +x demo.sh)
當你執行
./demo.sh
chmod +x demo.sh
./demo.sh你會發現跳出類似訊息 bash: ./demo.sh: Permission denied,
修正方法如下,
chmod +x demo.sh
./demo.sh尋找路徑,
舉例,尋找 python3 路徑
where python3
which python3
whereis python3顯示檔案最後幾行內容
tail README.md一次顯示多個檔案
tail README_1.md README_2.md指定顯示檔案最後 N 行內容
tail -n 5 README.mdtail README.md -n 5持續顯示更新內容,通常使用在 server 或看 log
tail -f README.md檢查檔案類型
file README.md將檔案內容顯示在 terminal 上
cat README.md顯示行數
cat -n README.mdcat 也可以寫入檔案
cat <<EOT >> hello_4.txt
line 1
line 2
line 3
EOTclear the terminal screen , 快捷鍵為 Ctrl+L
clear# 格式
grep match_pattern file_name# 格式
grep "search name" README.md也可以一次搜尋多個檔案
grep "name" README_1.md README_2.md也可以使用 萬用字元 *
grep "print" *.py搜尋當下目錄資料夾內容
grep -r "search name" .case insensitive case (不區分大小寫)
grep -i "name" README_1.md顯示行數
grep -n "name" README_1.md建立資料夾
mkdir -p dir1/dir2-p --parents 代表自動建立上層目錄,如果目錄已存在則不會發生錯誤。
強制停止程式執行.
需要先查到程式的 PID, 使用方法如下,
kill -9 PID-9 立刻強制停止程式執行
killall 和 kill 的一個差別是可以使用程式名稱,
不需要先找到程式的 PID,
例如想要強制停止 vlc
killall vlc歷史輸入的指令
historyhistory | less假設今天我不想打指令, 可以直接輸入 !+ 數字, 會自動執行該指令.
!1848再顯示一次最後輸入的指令 (建議加上 sudo)
!!在 shell 中印出 shell 的值,
設定 EDITOR
export EDITOR=vim查看目前的 EDITOR,
echo $EDITOR查看目前的 shell,
echo $SHELLecho 也可以寫入檔案,
方法一
echo "line 1" >> hello_1.txt方法二 ( 寫入多行 )
echo "line 1
line 2" >> hello_2.txt方法三 ( 寫入多行 )
{
echo 'line1;'
echo 'line2;'
} >> hello_3.txtYoutube Tutorial - Linux 指令教學 - du(Disk Usage)
du 這個指令是 Disk Usage 的縮寫,
在開始介紹 du 之前, 先來看一個例子,
使用 ls -l -h 觀察 debian 資料夾
但是如果你進到資料夾裡面, 你會發現它明明有 17GB,
可是為什麼在資料夾外層看的時候卻只有 4KB:question:
原因是 ls -l -h 不會顯示資料夾實際的大小, 只會顯示所謂的 meta information,
所以, 如果你要看實際的大小, 比較好的方法是使用接下來要介紹的 du 指令:smile:
查看 du 指令說明
du --help-s, --summarize display only a total for each argument
(Equivalent to -d 0)
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
--inodes list inode usage information instead of block usage
-c, --total produce a grand total
-d, --max-depth=N print the total for a directory (or file, with --all)
only if it is N or fewer levels below the command
line argument; --max-depth=0 is the same as --summarize
-a, --all write counts for all files, not just directories
--apparent-size print apparent sizes, rather than disk usage; although
the apparent size is usually smaller, it may be
larger due to holes in ('sparse') files, internal
fragmentation, indirect blocks, and the like以下兩個指令功能是相同的
du -sh *
du --summarize --human-readable *使用剛剛的那個例子, 在資料夾的外層就能看到實際的資料夾大小
也可以搭配 -d 使用, 資料夾的層數, 看下面的例子你就會懂了
du -d 2 -hYoutube Tutorial - Linux 指令教學 - truncate
Shrink or extend the size of each FILE to the specified size.
truncate 指令可以將一個檔案縮小或是增加大小.
開始介紹這個指令前, 先來看看適用的情境:smile:
有時候我們可能會希望把一個檔案的大小歸 0, 也就是將檔案的內容全部刪除,
但是要保留檔案, 這時候就很適合使用這個指令:smirk:
那你可能會問我, 為什麼不直接刪除檔案再建立一個一模一樣的就好:question:
原因很簡單, 在 linux 的世界中, 檔案是有權限的, 所以你還要去注意新建立
出來的檔案, 權限是否和之前的一模一樣( 否而可能會導致錯誤 ), 所以比較簡單
的方法會是使用 truncate 這個指令, 它將只會清除內容 ( 檔案大小為 0 ),
其餘的都保持原來的狀態。
查看 truncate 指令說明,
truncate --helpMandatory arguments to long options are mandatory for short options too.
-c, --no-create do not create any files
-o, --io-blocks treat SIZE as number of IO blocks instead of bytes
-r, --reference=RFILE base size on RFILE
-s, --size=SIZE set or adjust the file size by SIZE bytes
--help display this help and exit
--version output version information and exit
SIZE may also be prefixed by one of the following modifying characters:
'+' extend by, '-' reduce by, '<' at most, '>' at least,
'/' round down to multiple of, '%' round up to multiple of.使用以下的範例來說明,
假設現在有一個 demo.txt 的檔案 (如下)
使用 truncate 將 demo.txt 放大到 1M,
truncate -s 1M demo.txt注意 du -ah 是顯示 apparent sizes (不是 disk usage ), 所以大小不會改變.
如果你去打開 demo.txt, 你會發現被塞了很多東西, 因為大小要變成 1M:smile:
相反的, 現在使用 truncate 將 demo.txt 縮小到 0,
如果你去打開 demo.txt, 你會發現裡面的資料都消失了.
truncate 這個指令就非常適合去清除 log, 將 log 大小歸 0, 其餘保持原樣.
清空所有日誌文件
sudo truncate -s 0 /var/log/**/*.log先確認 Linux 上有 .ssh 資料夾,如果沒有,
請使用以下指令建立 ( 以及權限 ),
mkdir -p ~/.ssh
chmod 700 ~/.ssh每次遠端登入 Linux 都需要密碼很麻煩,有沒有可以透過其他的方式不要輸入密碼:question:
有,先在本機電腦使用 ssh-keygen 產生金鑰
ssh-keygen接著你會有兩把 key ,
id_rsa.pub:公開金鑰(public key): 要放在遠端的 Linux 伺服器上。
id_rsa:私密金鑰(private key): 自己保護好,等同於你的 Linux 密碼。
先把自己本機 id_rsa.pub 傳到遠端的 Linux server 上,
接著在 Linux 上執行以下指令
( 把公開金鑰放到 ~/.ssh/authorized_keys )
cat id_rsa.pub >> ~/.ssh/authorized_keys讓我們來測試看看吧:smile:
ssh twtrubiks@192.168.56.101
不用輸入密碼就可以登入了:thumbsup:
也可以透過 ssh-copy-id 來完成,
ssh-copy-id -i ~/.ssh/id_rsa.pub twtrubiks@192.168.56.101其實不管是方法一還是方法二, 都只是把 key 加入 /home/<user>/.ssh
裡的 authorized_keys 而已:smile:
注意, 通常不會這樣做:exclamation:
雖然這個方法可以比較危險,但我還是說明一下:joy:
先設定 root 密碼,執行以下指令
sudo passwd root再使用 su - 測試 root 密碼
測試完成後,再執行 ssh root@192.168.56.101
你會發現一直出現 Permission denied, please try again.
這時候要到 Linux 上修改 root 的 ssh 設定,
sudo vim /etc/ssh/sshd_config找到 PermitRootLogin without-password
修改成 PermitRootLogin yes
最後記得一定要重新啟動 sshd 讓它生效 (或是重開機)
systemctl restart sshd成功使用 root 登入了:satisfied:
比較安全的作法通常是關閉 PermitRootLogin 以及 PasswordAuthentication,
然後只啟用 PubkeyAuthentication 的方式, 但這邊要注意, 一定要把你的 key 放到
server 上, 否則如果設定完不小心退出, 就很麻煩:expressionless:
( 因為不能用密碼登入, 又忘記將 key 放到 server 中 )
修改
sudo vim /etc/ssh/sshd_config禁止 root 登入, 將 PermitRootLogin 設為 no,
禁止使用 password 登入, 將 PasswordAuthentication 設為 no,
允許 PubkeyAuthentication, 設為 yes
補充, 還有一種是使用 PAM Authentication UsePAM ( AWS 就是使用這種方式 )
如同說明, 如果希望只使用 PAM Authentication, 也可以把 ChallengeResponseAuthentication 設為 no.
最後記得重新啟動 sshd 讓它生效 (或是重開機)
systemctl restart sshd系統訊息
uname -a查看 cpu
cat /proc/cpuinfo查看全部的 ram 大小
grep MemTotal /proc/meminfo查看可用的 ram
grep MemFree /proc/meminfo也可以使用
free -m查看硬碟空間 ( disk free space, Human Readable )
df -h所有硬碟的訊息 ( List Drives and Mounts )
lsblk顯示所有裝置設備的資訊 ,UUID
blkid目前硬碟 mount 狀態 (開機自動掛載)
cat /etc/fstab查看所有 pci,
lspci查看所有 usb,
lsusb也可以搭配 grep 搜尋,只搜尋包含 VirtualBox 的內容,
lsusb | grep VirtualBox查看 ip,
ip aexternal ip Address ( 對外的 ip ),ifconfig.me 是一個網站,
curl ifconfig.me查看電腦目前資訊,CPU RAM 等等
top推薦 htop ( 資訊更清楚 ), 建議參考 htop-tutorial - htop tutorial:thumbsup:
透過 xrandr 修改螢幕的亮度,
先查看螢幕的 name,
xrandr | grep " connected" | cut -f1 -d " "設定亮度 ( 0 - 1 ),
xrandr --output DP-1 --brightness 0.7透過 systemd-analyze 查看 Linux 啟動時間
systemd-analyze查看細節
systemd-analyze blame有時候開機時可能因為驅動沒裝, 導致卡在黑屏的畫面,
這時候就可以進入 tty 介面安裝驅動(需要的東西),
進入 tty 快捷建 Ctrl+Alt+F2
退出 tty 快捷建 Ctrl+Alt+F7 或 Ctrl+Alt+(F2/F3/F4)
如果你的本機 ram 夠大, 可以考慮把它關掉,
(有些 distro 預設是打開的 )
關閉 swap
sudo swapoff -a打開 swap
sudo swapon -ainstall
sudo apt-get install xxx如果只有 .deb 檔案, 可以使用以下的方式
sudo apt install ./xxx.debupdate list ( 更新 packages 的最新資訊及列表 )
sudo apt-get updateupgrade ( 更新軟體到最新的版本 )
sudo apt-get upgrade只更新特定的軟體, 舉例 vivaldi,
先更新再安裝就是更新軟體的意思,
sudo apt update && sudo apt install vivaldi-stableremove
sudo apt-get --purge autoremove xxxx清理不需要的 packages ( .deb )
sudo apt autoclean清除不需要的依賴
sudo apt autoremoveadd
sudo apt-add-repository ppa:xxxx
sudo apt updateremove
sudo add-apt-repository -r ppa:xxxx
sudo apt updatesudo vim /etc/default/grub你應該會看到類似的畫面
GRUB_DEFAULT="0"
GRUB_TIMEOUT_STYLE="hidden"
GRUB_TIMEOUT=10 <<<<<<
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"
GRUB_CMDLINE_LINUX=""
將 GRUB_TIMEOUT 的時間改長一點, 因為有可能是太快了, 導致來不及按:disappointed_relieved:
也請記得要再執行以下的指令更新
sudo update-grub在 ubuntu 中, 預設會幫你安裝 snap, 但有些人不太喜歡,
因為他是私人公司為維護的:smile:
以下附上移除 snap 指令,
sudo rm -rf /var/cache/snapd/
sudo apt autoremove --purge snapd gnome-software-plugin-snap
rm -rf ~/snap使用 ubuntu 18.04 當範例
sudo apt purge deja-dup thunderbird rhythmbox ubuntu-web-launchers whoopsiedeja-dup ubuntu 內建備份軟體.
whoopsie ubuntu 錯誤報告.
如果不小心刪除到依賴 (把 settings 刪除), 可使用以下指令將它裝回來
sudo apt-get install gnome-control-centerzsh-tmux-tutorual - 超好用 zsh 以及 tmux。
zsh-powerlevel10k-tutorual - zsh 搭配 Powerlevel10k, 超漂亮 terminal。
vim-shortcuts - 紀錄 vim 快捷鍵
imwheel-tutorual - 改善 linux 滑鼠滾動問題。
shutter-tutorual - Shutter is an excellent image capture tool.
systemctl-tutorial - systemctl 命令是系統服務管理指令
crontab-tutorual - Linux Crontab
mount-disks-at-system-startup-on-ubuntu
chinese-input-methods-on-ubuntu - ubuntu 如何安裝中文輸入法
hime-tutorial - Linux 中更像微軟更好用的中文輸入法 hime
gnome-tweaks - Ubuntu 安裝 GNOME Tweak tool
htop-tutorial - htop tutorial:thumbsup:
neofetch-tutorial - command-line system information tool:thumbsup:
copyq-tutorial - 剪貼簿:thumbsup:
krusader-tutorial - file manager
fail2ban-tutorial - 讓 server 更安全:smile:
how-to-change-login-lock-background-ubuntu - 修改Ubuntu 登入/鎖屏時的背景
grub-customizer-tutorial - 安裝 grub-customizer
enable-ubuntu-remote-tutorial - 如何在 ubuntu 啟用遠端桌面
linux-nfs-server - 如何在 ubuntu 啟用 NFS Server
fix_could_not_get_lock_dpkg_ubuntu - 修正 E: Could not get lock /var/lib/dpkg/lock Error
fix_network_manager_bug_ubuntu_18_04 - 修正 ubuntu 18.04 網路連線設定遺失問題.
Windows -> Linux 優缺點 - Windows -> Linux 優缺點
ubuntu-18-04-on-Lenovo-X1-Carbon-6
透過 VirtualBox 安裝 Ubuntu 19.10 (以及一些個人想法)
VirtualBox 6.1 Linux 安裝 Guest Addition - 全屏教學
alternative-software - windows -> Linux 替代軟體
rclone-tutorial - rclone 是一套很棒的文件同步管理工具
stacer-tutorial - Linux System Optimizer and Monitoring
cmatrix-tutorial - 超酷又超沒用的 cmatrix
sl-tutorial - sl 火車開起來
linux-tlp-tutorial - Linux Advanced Power Management
speedtest-cli-tutorial - Linux speedtest-cli tutorial
gnirehtet-tutorial-tutorial - 透過電腦讓手機上網
scrcpy-tutorial-tutorial - 使用電腦控制手機
linux-tlp-tutorial - Linux Advanced Power Management
variety-tutorual - variety 自動更換桌面
arandr-tutorual - arandr 設定多螢幕工具
linux-virtualbox-ssh-tutorial - 在 Linux 中設定 VirtualBox 把玩 ssh
linux-virtualbox-problem - 在 Linux 中設定 VirtualBox - 常見問題
Linux 桌面環境 Desktop Environment
文章都是我自己研究內化後原創,如果有幫助到您,也想鼓勵我的話,歡迎請我喝一杯咖啡:laughing:
綠界科技ECPAY ( 不需註冊會員 )
歐付寶 ( 需註冊會員 )
MIT license











































