Linux 達人計劃
1.Linux 應用領域
企業服務器方面
www.netcraft.com 檢測網站後臺服務相關信息 (國外站點)
嵌入式應用方面
Android XXXSSHd 遠程安全管理 (QuickSSHd)
Linux 與 Windows 的不同
- Linux 嚴格區分大小寫
- Linux 所有內容以文件形式保存, 包括硬件 永久存在
- 不依靠擴展名區分文件 依靠權限
文件類型 | 擴展名 |
---|---|
壓縮文件 | .gz .bz2 .tar.bz2 .tgz |
二進制軟件包 | .rpm |
腳本文件 | .sh |
配置文件 | .conf |
- 應用程序不同環境
2. 系統分區類型
- 主分區 : 最多只能有四個
- 擴展分區 :
最多只能有一個
主分區加擴展分區最多有四個
不能寫入數據, 只能包含邏輯分區 - 邏輯分區 :
格式化 在磁盤的特定區域寫入特定數據, 在分區中劃出一片用於存放文件分配表、目錄表等用於文件管理的磁盤空間
分區設備文件名與掛載
Linux 樹形結構
/ 根目錄 dev 硬件設備
hd[a-d]: IDE
sd[a-p]: SCSI/SATA/USB 磁盤
cdrom 或 hdc: 光驅
fd[0-1]: 軟盤
lp[0-2]: 打印機 (25 針)
/usb/lp[0-15]: 打印機 (USB)
mouse: 鼠標
掛載
** 把盤符和分區連在一起的過程, 目錄稱爲掛載點 (相當於 Windows 的盤符)** 目錄作爲盤符 / 根分區 swap 交換分區CentOS 6.3
手動分區 home boot swap /
安裝方式 Basic Server
推薦分區 /boot 啓動分區(200M)
**Xshell**
- 首先在 Linux 中使用 ifconfig eth0 down 關閉網卡
- 再使用 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up 重啓網卡 手動配置 IP
- 或使用 setup 工具來配置 IP 地址
在 Xshell 中配置連接信息
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes // 是否隨着開機啓動
3. 常用命令
命令基本格式
root 超級管理員
localhost 主機名
~ 當前所在目錄
# 管理員用戶
$ 普通用戶
/root /home/other
命令 [選項] [參數]
... vi'''
1. 查詢目錄中內容
ls [選項]
-a 顯示所有文件 *(包括隱藏文件 .開頭文件)*
-l 顯示詳細信息
>- 第一列 權限*(10位基本權限)*
-文件類型 *(-文件 d目錄 l軟連接(快捷方式) )*
後九位分三組代表權限
所有者 u
所屬組 g *相同身份或相同權限的一類用戶*
其他人 o
r 讀 w 寫 x 執行
. 代表 ACL權限
>- 第二列 引用計數(被調用 鏈接)
>- 第三列 所屬者用戶
>- 第四列 所屬組
>- 第五列 大小
>- 第六列 最後一次修改時間
>- 第七列 文件名
-d 查看目錄屬性
-h 顯示文件大小
-i 顯示 inode
2. 文件處理命令
目錄處理命令
建立目錄 mkdir mkdir 目錄名 -p 遞歸創建 mkdir -p abc/def/ggg
切換所在目錄 cd
cd 目錄 cd ~ / cd 切換家目錄 cd - 上次目錄 cd .. 上一級目錄 cd . 當前目錄
相對路徑: 參照當前所在目錄
絕對路徑: 從根目錄開始指定, 一級一級遞歸查找
目錄 / 命令補全 Tab 鍵
查詢所在目錄 pwd (打印當前位置)
刪除空目錄 rmdir rmdir 目錄名 刪除文件或目錄 rm rm -rf 文件或目錄 -r 刪除目錄 -f 強制
複製命令 cp
cp [選項] [原文件或目錄] [目標目錄] 目標目錄後加文件名改名複製 不加名 原名複製 -r 複製目錄 -p 連帶文件屬性複製 -d 若原文件是鏈接文件 則複製鏈接屬性 -a 相當於 -pdr
剪切命令 mv
mv [原文件或目錄] [目標目錄] 同目錄下可以改名 常見目錄作用 / 根目錄 /bin /sbin /usr/bin /usr/sbin 保存系統命令 (s* root用戶打開) /boot 啓動目錄保存啓動數據 /dev 硬件文件 /etc 配置文件 /lib 函數庫 /media /mnt /misc 三個空目錄 作爲外接存放設備的掛載 (mnt) /proc /sys 內存的掛載點 /tmp 臨時目錄 /usr 系統軟件資源目錄 /var 系統相關文檔目錄
鏈接命令
鏈接命令 ln ln -s [原文件] [目標文件] 生成鏈接文件 (引用計數加1) -s 創建軟鏈接 硬鏈接 (具有相同的i節點和存儲block塊,可以看成是同一個文件) 一個文件的不同接入點 通過i節點訪問 不能跨分區 不能針對目錄使用 軟鏈接 (類似Windows快捷方式) 擁有自己的i節點和block塊 但數據塊中只保存原文件的文件名和j節點號,沒有實際的文件數據 lrwxrwxrwx l軟鏈接 軟鏈接權限都爲 rwxrwxrwx 修改任意文件,另一個都改變 刪除原文件,軟鏈接不能使用 軟鏈接非當前目錄,原文件要寫絕對路徑
文件搜索命令
locate 文件名 在後臺數據庫中按文件名搜索,搜索速度快 /var/lib/mlocate 後臺數據庫 updatedb 強制更新數據庫 /etc/updatedb.conf 配置文件 PRUNE_BIND_MOUNTS = "yes" 篩選規則是否生效 PRUNEFS = "" 篩選規則 (不搜索以下文件系統) PRUNENAMES = "" 篩選規則 (不搜索以下後綴名文件) PRUNEPATHS = "" 篩選規則 (不搜索以下目錄中)
命令搜索命令
- whereis 命令名
搜索系統命令所在路徑 (及幫助文檔)
-b 只查看命令位置
-m 只查看幫助文檔位置 which 命令名
除了命令所在位置還可以查看別名
內置命令 (shell) 沒有獨立的執行文件 例如: cd
環境變量 ($PATH) 內沒有所搜索的命令文件, 就會報錯 (未發現)find 命令
find [搜索範圍] [搜索條件]
find / -name install.log 根目錄下按文件名搜索
避免大範圍搜索
通配符匹配, 通配符是完全匹配 (雙引號括起來)
* 任意內容
? 任意一個字符
[] 中括號內的任意一個字符 (或)
find -iname #不區分大小寫
find -user #按所有者 -nouser 沒有所有者的文件 (垃圾文件) 內核產生的文件find -mtime +10 (查找十天前修改的文件) -10 10天內修改的文件 10 10天當天修改的文件 +10 10天前修改的文件 atime 文件訪問時間 ctime 改變文件屬性 mtime 修改文件內容 find . -size 25k (查找大小爲25K的文件) -25k 小於25K 25k 大小爲25K +25k 大於25K 10M 大小爲10M 默認類型爲扇區塊(512K) \ find . -inum 262421 (查找i節點爲262421) find /etc -size +20k -a -size -50k (查找/etc/目錄下,大於20K並小於50K的文件) -a and 邏輯與 -o or 邏輯或 find /etc -size +20k -a -size -50k -exec ls -lh {} \; (將查找的結果用後面的命令來執行處理 -exec {} \; 固定格式)
grep 命令 字符串搜索
grep [選項] 字符串 文件名 gerp "size" anaconda-ks.cfg -v 取反 -i 忽略大小寫
find 在系統當中搜索符合條件的文件名, 可以使用通配符來實現完全匹配
grep 在文件當中搜索符合條件的字符串, 可以使用正則表達式來實現包含匹配
文件名稱 通配符 (完全匹配)
文件數據 正則表達式 (包含匹配)幫助命令
幫助命令 man
(獲取指定命令的幫助)
man ls
name 命令用途
synopsis 格式
description 選項 (簡化)
/d 可自動跳轉到第一個 - d 選項上
n 向下跳轉 shift+n 向上跳轉man -f 命令 (查看命令級別) (相當於 whatis 命令) man -5 passwd man -4 null man -8 ifconfig 默認打開最小等級的命令
man -k 命令
#找到和命令相關的所有相關信息
#相當於 apropos 命令
其他幫助命令
- whereis 命令名
命令名 –help
獲取命令選項的幫助help shell內部命令 (獲取shell內部命令的幫助) whereis cd #查看是否是shell內部命令 (無可執行文件) help cd #獲取內部命令幫助 (內部命令無法使用man單獨獲取幫助) info (獲取詳細幫助文檔) -回車 進入幫助子頁面 (帶*) -u 返回 -n 下一個幫助小節 -p 上一個幫助小節
壓縮與解壓縮命令
常用壓縮格式 .zip .gz .bz2 | .tar.gz .tar.bz2.zip格式壓縮 zip 壓縮文件名 源文件 (壓縮文件) 不要求,但要使用擴展名,便於區分 zip -r 壓縮文件名 目錄 (壓縮目錄) .zip格式解壓 unzip 壓縮文件 (解壓縮.zip文件) .gz格式壓縮 gzip 源文件 (壓縮爲.gz格式的壓縮文件,源文件會消失) gzip -c 源文件 > 壓縮文件 (壓縮爲.gz文件,源文件保留) gzip -r 壓縮目錄 (把目錄當中的所有子文件壓縮,但是不能壓縮目錄) .gz格式解壓縮 gzip -d 壓縮包名 (解壓縮文件) gunzip 壓縮包名 gunzip -r 解壓目錄 .bz2格式壓縮 bzip2 源文件 (壓縮爲.bz2格式的壓縮文件,不保留原文件) bzip2 -k 源文件 (保留源文件) (不能壓縮目錄) .bz2格式解壓縮 bzip2 -d 壓縮包名 bunzip 壓縮包名 (-k 保留源文件) .tar 打包文件(解決目錄壓縮與解壓縮) tar -cvf 打包文件名 源文件 -c 打包文件 -v 顯示過程 -f 指定打包後的打包文件名 tar -xvf 打包文件名 (解壓縮)
打包後壓縮與解壓縮
tar -zcvf 壓縮包名. tar.gz 源文件
tar -zxvf 解壓縮包名. tar.gz
tar -jcvf 壓縮包名. tar.bz2 源文件
壓縮多個文件後用空格分隔
在壓縮文件名前加路徑可指定壓縮位置
tar -jxvf 解壓縮包名. tar.bz2
-C 指定解壓位置tar -ztvf 壓縮包名 tar -jtvf 壓縮包名 可查看壓縮包
關機和重啓命令
shutdown命令 shutdown [選項] 時間 -c 取消前一個命令 -h 關機 -r 重啓 (可以正確保存服務與文件 ) shutdown -r 05:30 & 放在後臺運行 其他關機命令 halt poweroff init 0 其他重啓命令 reboot init 6
系統運行級別
0 關機
1 單用戶
2 不完全多用戶, 不含 NFS 服務 (文件共享服務)
3 完全多用戶 (字符界面)
4 未分配
5 圖形界面 (X)
6 重啓
runlevel #查看之前級別和當前級別
cat /etc/inittab
id:3:initdefault: // 定義系統默認的運行級別退出登錄命令 logout #註銷
其他常用命令
掛載命令
mount #查看系統中已經掛載的設備 mount -a (根據配置文件 /etc/fstab (自動掛載) ) (如果將光驅和U盤寫入文件 光驅內沒有光盤,U盤沒有插入系統 啓動就會不成功) mount [-t 文件系統] [-o 特殊選項] 設備文件名 掛載點 -t 文件系統:加入文件系統來指定掛載的類型 ext3 ext4 iso9660(光盤)等文件系統 -o 特殊選項:可以指定掛載的額外選項 exec/noexec 是否可以執行可執行文件 默認允許 remount 重新掛載已經掛載的文件系統 一般用於指定修改特殊權限 默認已經掛載好的分區 可以省略 設備文件名 掛載光盤 mkdir /mnt/cdrom (建立掛載點) mount [-t iso9660] /dev/sr0 /mnt/cdrom (掛載光盤 將設備文件掛載到盤符) (默認讀寫權限,光盤不可寫 提示權限被迫改變) 卸載光盤 (必須卸載纔可取出光盤) umount 設備文件名或掛載點 umount /mnt/cdrom/ 掛載U盤 fdisk -l (查看設備文件名) mount -t vfat /dev/sdb1 /mnt/usb/ (vfat (fat32)文件系統 Linux默認是不支持NTFS文件系統) 用戶登錄查看命令 w (查看用戶登錄信息 (系統資源情況) ) who (查看當前登錄用戶) last (查看系統中所有已登錄的信息 (歷史記錄) ) (日誌文件 /var/log/wtmp (二進制文件) 不可用vi查看 ) lastlog (系統當中的用戶最後登錄時間 ) (日誌文件 /var/log/lastlog )
4.shell基礎
shell概述
系統命令行解釋器(二進制語言) | 接受輸入命令 編譯二進制傳輸給內核
還是一個功能相當強大的編程語言,易編寫,易調試,靈活性較強.分類
- Bourne Shell : 從1979起Unix就開始使用 主文件名爲 sh ksh Bash psh zsh Linux中標準版爲 Bash
- C Shell : 主要在BSD版的Unix系統中使用,與C語言類似 csh tcsh
Bash兼容 /etc/shells
腳本執行方式
echo輸出命令
echo [選項] [輸出內容]
空格需要加入雙引號
-e 控制字符(轉義字符) \a 警告音 \b 退格鍵
可輸入十六進制製表符ASCII \x
#輸出顏色 “\e[1;31m ……. \e[0m”
31m 紅色 35m 楊紅 32m 綠色 33m 黃色
echo -e “\e[1;31m 哈哈哈 \e[0m”第一個腳本 hello.sh #!/bin/bash echo -e "\e[1;36m 天上掉下個林妹妹 \e[0m" 執行權限 通過Bash調用執行腳本 bash hello.sh 賦予權限,直接執行 chmod 755 hello.sh ./hello.sh
Bash的基本功能
命令別名與快捷鍵
( 操作簡化,便於記憶 )alias
(查看系統中默認生效的別名 )
alias ls=’ls –color=never’
(設定別名(臨時生效) alias 別名=’原命令’ )
vi ~/.bashrc
(永久生效 寫入環境變量配置文件 )
source ~/.bashrc 重新調用配置文件,使設置生效unalias 別名
(刪除別名 (臨時生效) )生效順序
1. 用絕對路徑或相對路徑執行的命令
2. 執行別名
3. 執行Bash的內部命令
4. 按照$PATH環境變量定義的目錄查找順序找到的第一個命令常用快捷命令
ctrl+c 強制終止當前命令
ctrl+l 清屏
ctrl+a 光標移到行首
ctrl+e 光標移到行尾
ctrl+u 從光標所在位置刪除到行尾
ctrl+z 把命令放入後臺
ctrl+r 在歷史命令中搜索歷史命令
history 歷史命令 history [選項] [歷史命令保存文件] -c 清空歷史命令 -w 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history #默認保存1000條 HISTSIZE=1000 #vi /etc/profile 環境變量配置文件 基本調用 上下箭頭來重複調用 !n 來執行第n條歷史命令 !! 重複執行上一條命令 !字符串 重複執行後一個該串開頭的命令 Tab鍵 進行命令(環境變量)和目錄補全(操作路徑)
輸出重定向
(顯示電腦處理的結果)
標準輸入輸出
鍵盤 /dev/stdin 0 標準輸入
顯示器 /dev/sdtout 1 標準輸出
顯示器 /dev/sdterr 2 標準錯誤輸入輸出重定向
標準輸出重定向
命令 > 文件
以覆蓋的方式,把命令的正確輸出輸出到指定的文件或設備當中.
命令 >> 文件
以追加的方式標準錯誤輸出重定向
錯誤命令 2>文件
以覆蓋的方式,把命令的錯誤輸出輸出到指定的文件或設備當中.
錯誤命令 2>>文件
以追加的方式正確輸出和錯誤輸出同時保存
命令 > 文件 2>&1
命令 &> 文件
以覆蓋的方式,把正確的輸出和錯誤輸出都保存到一個文件當中
命令 >> 文件 2>&1
命令 &>> 文件
以追加的方式
ls &> /dev/null (回收站)
命令 >> 文件1 2>> 文件2
正確的追加到文件1,錯誤的追加到文件2
輸入重定向
wc [選項] [文件名]
-c 統計字節數
-w 統計單詞數
-l 統計行數
ctrl+d 中斷統計命令 < 文件
(把文件作爲命令的輸入)
命令 << 標識符
(標識符其中的內容作爲該命令執行的內容)
管道符
多命令順序執行
; 命令1;命令2 多個命令順序執行(無論中間是否保存)
&& 命令1&&命令2 邏輯與 當命令1正確執行,則命令2纔會執行
|| 命令1||命令2 邏輯或 當命令1正確執行,則命令2不執行
# ls && echo yes || echo no管道符
命令1 | 命令2
#將命令1的正確輸出作爲命令2的操作對象
# ll /etc | more
# netstat -an | grep ESTABLISHED (服務器顯示連接人數)
# netstat -an | grep ESTABLISHED | wc -l (處理行號)通配符
? 匹配一個任意字符
* 0個或任意多個
[] 匹配中括號內其中一個字符
[-] -代表一個範圍 [a-z]代表匹配一個字母
[^] 邏輯非 表示匹配不上中括號內的一個字符 [^0-9]代表匹配一個不是數字的字符其他特殊符號
'' 特殊符號都沒有特殊意義,原樣輸出 "" $ ` \ 都具有特殊意義 `` 包含系統命令 執行後賦值給變量 等同於 $() $ 用於調用變量的值 (變量名=變量值) # shell腳本中,#開頭的行代表註釋 \ 轉義符 跟在\之後的特殊符號失去意義,變爲普通字符
- 來源 慕課學習筆記 ↩