查看檔案內容會用cat
指令
cat
可以改內容
cat > filename
,會附蓋掉原本內容cat >> filename
則會讓輸入增加在原本內容後面ctrl + d
儲存並離開nano
space
或 tab
的差異\r\n
\n
\r
dosZunix
or unixZous
可以處理換行符號的關係vim
i
:insert mode:w
:write,將剛剛做的變更寫回檔案!
強制執行(例如要離開,打:q!):q
:離開在terminal更改檔案,若要退出/儲存先按 esc
:wq
出去+儲存:w
儲存檔案:q
退出檔案!
強制執行:set nu
顯示行號/
搜尋,然後按n顯示下一個sudo apt install vim
i
進入 insert mode指令 | 用處 |
---|---|
:w | 存檔 |
:q | 退出檔案 |
:q! | 強制退出檔案 |
:wq | 儲存並離開 |
:e! | 還原到剛開啟檔案的時候 |
/+"關鍵字" | 搜尋"關鍵字" |
n | 找下一個"關鍵字" |
dd | 刪除一行 |
數字+dd | (從游標那行算起)刪除底下"數字"行 |
u | 還原 |
ctrl+r | 重做 |
dw | 一次刪除一個字 |
yy | 複製一行 |
"數字"+yy | (從游標那行算起)複製底下"數字"行 |
p | 貼上 |
vim .vimrc
網路上的 vim cheat sheet
pwd(檔名)
顯示目前的位置,有時候會自己建一個新檔案cd <路徑>
(change directory) 改變位置
cd /
移至根目錄cd ~
移至家目錄cd
也是移至家目錄cd ..
回到前一層,但是在根目錄使用的話就會停留在根目錄/
開頭)cd 要去的資料夾
cd ./要去的資料夾
這樣也行,.
表示當前資料夾/
(根目錄) 寫起cd /要去的資料夾的完整路徑
ls
顯示所有檔案
-l
印出檔案詳細資訊-a
all file(印出隱藏檔)-S
用檔案大小排序,ls檔案大小的排序預設為降冪-r
反向排序tab
:打前幾個字,若目錄下有名字一樣的檔案,會自動補齊mkdir <dir name>
產生新目錄man <指令名稱>
顯示指令說明touch <檔名>
產生新空白的檔案
-a <檔名>
: 更改檔案時間stat <檔名>
顯示相關時間戳記上鍵
上一個指令cat <檔名>
: 讀取檔案內容more <檔名>
從上開始顯示less <檔名>
用分頁顯示(按q退出)head -<行數> <檔名>
輸出前面幾行tail -<行數> <檔名>
輸出最後幾行tac
反著印出資料echo <文字>
打什麼輸出什麼,會回復<文字>
echo "hello moto"
,他會印出 hello moto
echo $SHELL
: 現在的shell是什麼echo <文字> > <檔名>
將輸入的<文字>覆蓋原本檔案的內容
echo 123 > 123.txt
原本123.txt的內容全部會被123蓋過,所以123.txt的檔案內容只剩下123
echo <文字> >> <檔名>
將<文字>加入在<檔案>內容的後面>
: stdout replace>>
: stdout append1>
: stdout replace2>
: stderr replace2>&1
: 將 "標準錯誤 (stderr)" 重導入至 "標準輸出(stdout)當前的檔案描述符"cat&>>
: stdout, stderr 都會寫入
cat 存在檔案出現的內容
cd 到不存在目錄出現的錯誤訊息
cd /jsdf 2>&1 | less
tee
輸入並顯示(會覆蓋原檔案)
tee -a <檔名>
在原有的東西後加入後也顯示ls | tee -a <檔名>
|
: 將前面的 stdout 當作後面指令的 stdinls
後的輸出結果導入到後面當作輸入並經由 tee
輸出到螢幕與檔案./<指令名稱>
執行當前目錄此名稱的指令cp <file> <path>
複製檔案
-r
遞迴複製,複製資料夾及其底下東西-a
維持原本各種資料,包括權限rm <file>
刪除檔案(remove)
-r
遞迴,刪除資料夾內容-rf
把所有檔案全部強制刪除export | less
來看有哪些環境變數
/
接著打 keyword 再按 Enter 來搜尋$HOME
你的 home 目錄位置$PWD
當前目錄$SHELL
當前所使用的 shell 之名稱
./
,告訴 SHELL 這個檔案就在這裡,不會執行到其他同名的檔案$PATH
當執行指令但沒指定確切目錄,則會從 $PATH 裡的路徑去找
大家有看過 Windows 的隱藏檔案,和打開副檔名顯示ㄇ?
因為顯示副檔名預設是關閉的,有心人士就能騙你打開 可愛狗勾.jpg.EXE
,你會只看到可愛狗勾.jpg
,然後你就中毒了。
stat <檔名>
xxd zip
xxd zip |less
xxd
用binary狀態開啟檔案mount ro
掛載磁區且 read-onlymount |grep noatime
:
/etc/
目錄下
cp <檔案> <路徑>
複製檔案
-a
維持檔案的相關權限cp -r <目錄> <路徑>
複製目錄rm <檔案>
移除檔案
rm -r <目錄>
移除目錄及其底下所有檔案sudo rm -rf <目錄>
強制移除目錄-f
強制mv <檔案1> <目錄>
把檔案1移到目錄下
/
比較好(<目錄>/
)clear
、ctrl+l
清除 terminalls -al
/ll
: 全部檔案的詳細資訊image source: Linux chmod 命令 | 菜鸟教程
chmod <人+動作> <file>
修改權限u
userg
groupo
othera
all<人>+<動作>
讓<人>可以<動作>
<人>-<動作>
讓<人>刪除這個<動作>
chmod u+x file
chmod 777 file
user
group
others
如果要將一個檔案hi.txt
的權限變更為下表的樣子,有二種方法
u 用戶 | g 群組 | o 其他 | |
---|---|---|---|
str | rwx | rwx | rwx |
str | rw- | rw- | r– |
0x | 110 | 110 | 100 |
0o | 6 | 6 | 4 |
chmod 664 hi.txt
chmod u+rw hi.txt
用 bit 記檔案權限,會比用字元 (char) 記省好多空間
rw-rw-r--
-> 9 bytes = 72 bitsfind <path>
搜尋檔案
-perm 數字
找有這權限的-name <字>
找名字為 <字> 的 (要完全符合)ls | grep <字>
: 找那個目錄下含有該<字>的檔案 (部份符合就好)
grep 參數
-i
不管大小寫log
找到<字>相同的(輸入的大小寫有差)-n
印出行數-in
不管大小寫的行數-r
recursion,遞迴往下找ls -l | awk '{print $1"\t"$8}'
過濾出ls資料的第一列和第8列並將資料印出來
awk
一個可以操作字串的程式,資工系教授 klim 寫的 cheat sheet
sort
排序
-c
將重複的刪除-u
刪掉輸出到螢幕上重複行-r
降冪-n
依照數值排列-k <第幾個col>
依照第幾個col排序sed
只會把操作完的字串顯示出來,沒有改變檔案
-i
操作完的字串顯示並寫入檔案#!/bin/bash
shebang
./檔名
來執行#!
:Shebang1.哪一個預設使用者的家目錄,預設沒有放在 /home/
Ans: 超級使用者
2.如果我想查詢這台主機有哪些使用者帳號,要查看哪個檔案 ?
Ans: /home/
/etc/passwd ??
passwd或shadow?
1.修改檔案 test.py 的權限,檔案 owner 可以讀、寫、執行,與擁有者同一群組者可以讀、執行,其餘的使用者可以讀。請問要如何下指令?
用數字表示法修改權限
Ans: chmod 754 test.py
用文字表示法修改權限
Ans: chmod u+rwx,g+rx,o+r test.py
? chmod u=rwx,g=rx,o=r test.py
2.若要將當前目錄下檔名含有 LSA 檔案的詳細資料,並依檔案大小(由小到大)輸出於螢幕上,請問要如何下指令?
Ans:ls -S | grep LSA
? ls -lSr | grep LSA
? ls -Slr | grep LSA
ls -lSr | grep LSA
Uncle 很愛迷因,為此他非常熱心地架了一個網頁,可以即時的更新迷因圖跟大家分享,但 PP 覺得這個網站常常連不進去,要求改善,不然就要請歐姊姊對 Uncle 提告。 Uncle 強迫蓬萊幫他找問題,蓬萊迫於淫威,查了 Apache 網頁伺服器的紀錄檔沒發現問題,又調整了 MySQL 資料庫的設定,但改善程度有限,不知如何是好,便求助鍋子。 不消一炷香時間,就發現 CPU 和記憶體使用量正常,問題其實是硬碟太老舊,所以撐不住資料庫的大量的讀寫,加上網頁空間也快要滿了。 於是 Uncle 又強迫蔣媽花錢更新設備,不過蔣媽沒錢,走在路上一籌莫展時,阿棟剛好騎車經過,剛好背包掉東西出來,又剛好掉了 2 顆 1T SSD 跟 1 顆有多層泡泡紙精心包裝的 4T HDD,被蔣媽撿到, Uncle 拿到新的硬碟後,便強迫 keke 把網頁設置到硬碟上,但 keke 不會用,只好詢問 LSA 的各位學生,該怎麼配置,才能改善這個網頁呢 ?
1T SSD
* 2 、 4T HDD
* 1Ans