什麼是Linux?什麼是Ubuntu?
第一次接觸這兩個名詞的人一定會覺得疑惑,這到底是什麼呢(●Ω●;)
其實簡單來說,就是類Unix的 「作業系統」
更簡單的說,我們最常用的作業系統是Windows或macOS
而Linux跟Ubuntu就是可以運行電腦應用程式的作業系統環境喔!
身為小小小RD的我,就來介紹一下這個作業系統的目錄及常用Command吧(人・ω・)
本次介紹將分為:
系統檔案目錄 | 基本指令 | 使用者管理 | 檔案控制 | 檔案查找 | 防火牆設定 | 網路設定
系統檔案目錄
Linux作業系統應符合FHS檔案系統階層標準,每個資料夾也有相對應的目的與功能。
目錄 | 說明 |
---|---|
/ | 第一層根目錄。 |
/root | 系統管理員的家目錄,僅有root權限可讀寫。 |
/boot | 放置Linux系統啟動過程中需要的文件,例如:kernal、引導程序Grub等。 |
/bin | binary,存放供所有用戶使用的完成基本維護任務的命令,例如:cat、ls、cp等。 |
/sbin | 存放系統管理員可使用的文件,例如:mkdir、ifconfig、reboot等。 |
/dev | device,存放系統設備文件,例如:硬碟驅動、鍵盤、滑鼠等。 |
/etc | etcetera,存放系統主要配置文件及應用軟體設定檔。 |
/home | 用戶的家目錄,儲存普通用戶個人文件,默認為/home/USERNAME。 |
/lib | 存放系統函示庫及核心函式庫。 |
/opt | optional,第三方軟體放置處,例如:Adobe Reader、google-earth等。 |
/srv | service,網路服務啟動後所需數據存放處,例如:網站服務www。 |
/tmp | temperary,暫存檔存放處。 |
/usr | unix software resource,系統核心所在,包含所有共享文件。 |
/var | 存放變數檔案,例如:系統log。 |
基本指令
- ls:list,列出當前資料夾檔案。
// -l 列出檔案詳細資料;-a 列出隱藏檔案
$ ls -la
// 列出指定類型檔案
$ ls *.pdf
- pwd:print work directory,列出當前資料夾路徑。
$ pwd
/Users/jasminmin/Blog
- cd:change directory,移動進入資料夾。
// 移動至當前資料夾底下con.f中
$ cd ./con.f
// 移動至上一層資料夾
$ cd ..
// 移動至上一次所在資料夾
$ cd -
- clear:清除terminal畫面。
$ clear
- reboot:重新開機。
$ reboot
- shutdown:關機。
// 系統立刻關機
$ shutdown -h now
// 系統十分鐘後關機
$ shutdown -h +10
使用者管理
- useradd USERNAME:新增使用者。
$ useradd alan
- passwd USERNAME:修改密碼,新使用者直接設定密碼;舊使用者須先輸入舊密碼。
$ passwd alan
- su USERNAME:切換使用者。
// 切換至使用者alan權限
$ su alan
// 切換回系統管理員權限
$ su root
- exit:若於一般使用者狀態,可離開當前權限。
$ exit
- who:查詢目前系統上的使用者。
$ who
- whoami:查詢當前使用者身份。
$ whoami
檔案控制
- mkdir DIRECTORY:make directory,建立資料夾。
// 在當前資料夾底下新增「blog」資料夾
$ mkdir blog
- touch FILENAME:建立檔案,可加入指定位置。
// 於「blog」資料夾中建立「post.md」檔案
$ touch blog/post.md
- cat FILENAME:顯示指定檔案內容。
$ cat blog/post.md
- vim FILENAME:修改指定檔案,進入編輯狀態後按「i」為插入模式,可開始編輯檔案;完成編輯按「esc」跳出插入模式,並輸入「:wq!」完成檔案儲存並離開。
$ vim blog/post.md
- mv:move files,移動檔案。
// mv PATH/FILENAME(原檔案位置) PATH/FILENAME(目的檔案位置)
$ mv blog/post.md temprary/post.md
- cp:copy,複製檔案。
// cp FILENAME /PATH(目的檔案位置)
$ cp post.md /temprary
- rm:remove file,刪除檔案或非空資料夾。
// rm FILENAME,刪除指定檔案
$ rm post.md
// rm -rf DIRECTORY,刪除指定資料夾
$ rm -rf blog
- file:檢查檔案類型。
// file FILENAME,檢查指定檔案
$ file README.md
README.md: HTML document text, UTF-8 Unicode text
- head/tail:檢查檔案前幾行/後幾行。
// head FILENAME,檢查檔案前幾行
$ head README.md
// tail FILENAME,檢查檔案後幾行
$ tail README.md
檔案查找
-
find:查找檔案。
-type [搜尋類型] 參數介紹
-type b
//block special file (特殊設備檔案)
-type c
//character special file (特殊設備檔案)
-type d
//directory (資料夾)
-type f
//regular file (一般檔案)
-type l
//symbolic link (連結檔)
-type p
//FIFO (命令管道)
-type s
//socket -
根據名稱搜尋檔案或資料夾
-name NAME
指定名稱;-iname NAME
名稱不分大小寫
// 尋找家目錄底下指定資料夾或檔案
$ find ~ -name blog
// 尋找家目錄底下指定檔案
$ find ~ -name blog -type f
// 尋找當前目錄底下包含特定字串資料夾
$ find . -iname *blo* -type d
- 根據大小或時間搜尋檔案或資料夾
-size [ckMGTP]
指定大小;-atime [time]
指定時間;-amin [min]
指定分鐘
// 尋找當前目錄底下大於2M的檔案
$ fine . -size +2M -type f
// 尋找當前目錄底下超過2天沒被修改或存取的資料夾
$ fine . -atime +2 -type d
// 尋找當前目錄底下40分鐘內有修改或存取過的檔案
$ fine . -amin -40 -type f
- 根據檔案內容搜尋檔案
-exec
後面的command為執行的指令;grep -H
將符合的檔案路徑列出;
{}
將被取代為檔案名稱路徑;\
代表exec參數結束
// 尋找家目錄底下的php檔,並且內容包含test字串
$ find ~ -name "*.php" -exec grep -H "test" {} \;
防火牆設定
-
firewall-cmd:防火牆個是設定命令格式。
-
防火牆配置
// 安装防火牆
$ apt-get install firewalld firewall-config
// 啟動防火牆
$ systemctl start firewalld
// 查看防火牆狀態
$ systemctl status firewalld
// 停止防火牆
$ systemctl disable firewalld
// 禁用防火牆
$ systemctl stop firewalld
- 服務管理
// 查詢現有服務列表
$ firewall-cmd --list-services
// 開啟防火牆SSH服務
$ firewall-cmd --enable service=ssh
// 禁止防火牆SSH服務
$ firewall-cmd --disable service=ssh
// 新增http服務至內部
$ firewall-cmd --permanent --zone=internal --add-service=http
- 埠號管理
// 開啟防火牆TCP 443port
$ firewall-cmd --add-port=443/tcp
// 永久開啟防火牆UDP 8080port
$ firewall-cmd --permanent --add-port=8080/udp
// 重啟防火牆,當新增防火牆規則或埠號後重啟
$ firewall-cmd --reload
網路設定
- ifconfig:查詢系統網路卡狀況。
// 可以查詢IP、子遮罩網路及網路卡的硬體等資訊
$ ifconfig
- route:查看網路封包傳送路由狀況。
$ route
- netstat:查看網路連線狀況。
$ netstat
- nslookup:查詢或反查詢Domain相對應IP。
// 查詢Google伺服器IP
$ nslookup www.google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: www.google.com
Address: 216.58.200.228
- ping IP/DNS:查看目的Domain是否有網路封包回應。
$ ping www.google.com
PING www.google.com (172.217.27.132): 56 data bytes
64 bytes from 172.217.27.132: icmp_seq=0 ttl=54 time=4.937 ms
64 bytes from 172.217.27.132: icmp_seq=1 ttl=54 time=5.354 ms
64 bytes from 172.217.27.132: icmp_seq=2 ttl=54 time=5.564 ms
64 bytes from 172.217.27.132: icmp_seq=3 ttl=54 time=6.128 ms
--- www.google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.937/5.599/6.251/0.364 ms
參考資料:TechBridge 技術共筆部落格、每日頭條、camel’s blog、Github/jaywcjlove