在終端中,顯示普通用戶是$,而root用戶是#。
1 Linux系統結構及配置文件
1.1 Linux系統結構
| 路徑 | 描述 |
| / | 根目錄,所有文件的第一級目錄 |
| /home | 普通用戶家目錄 |
| /root | 超級用戶家目錄 |
| /usr | 用戶命令、應用程序等目錄 |
| /var | 應用數據、日志等目錄 |
| /lib | 庫文件和內核模塊目錄 |
| /etc | 系統和軟件配置文件 |
| /bin | 可執行程序目錄 |
| /boot | 內核加載所需的文件,grub 引導 |
| /dev | 設備文件目錄,比如磁盤驅動 |
| /tmp | 臨時文件目錄 |
| /opt | 第三方軟件安裝目錄 |
1.2 環境變量文件
1.2.1 系統級
系統級變量文件對所有用戶生效。
/etc/profile
# 系統范圍內的環境變量和啟動文件。不建議把要做的事情寫在這里面,最好創建一個自定義,放在/etc/profile.d下
/etc/bashrc
# 系統范圍內的函數和別名
1.2.2 用戶級
用戶級變量文件對自己生效,都在自己的家目錄下。
~/.bashrc # 用戶指定別名和函數
~/.bash_logout # 用戶退出執行
~/.bash_profile # 用戶指定變量和啟動程序
~/.bash_history # 用戶指定命令歷史文件
開機啟動腳本順序:/etc/profile -> /etc/profile.d/*.sh -> /.bash_profile -> /.bashrc -> /etc/bashrc
因此,我們可以把寫的腳本放在以上的文件內執行。
1.3 系統配置文件
| 路徑 | 描述 |
| /etc/issue | 系統版本 |
| /etc/hosts | 主機名與 IP 對應關系 |
| /etc/resolv.conf | DNS 服務器地址 |
| /etc/hostname | 主機名 |
| /etc/sysctl.conf | 系統參數配置文件 |
| /etc/sudoers | sudo 權限配置 |
| /etc/init.d | 服務啟動腳本 |
| /etc/sysconfig/networkscripts | 網卡信息配置目錄 |
| /etc/rc.d/rc.local | 系統 init 初始化完后執行,不建議將啟動服務寫在這里面,應創建 自己的 systemd 或 udev |
| /etc/fstab | 硬盤自動掛載配置 |
| /etc/inittab | 系統啟動運行級別 |
| /etc/crontab | 系統級任務計划 |
| /var/spool/cron | 用戶級任務計划,此目錄下以用戶名命名對應每個用戶的任務計划 |
| /etc/cron.d | 描述計算機任務計划 |
| /etc/hosts.allow | TCP 包訪問列表 |
| /etc/hosts.deny | TCP 包拒絕列表 |
| /usr/share/doc | 各軟件的文檔 |
| /etc/sshd_config | SSH 服務配置文件 |
| /var/log | 系統和應用程序日志目錄 |
| /var/spool/mail | 郵件目錄 |
2 Shell常用命令
首先給一個查詢命令的鏈接:https://man.linuxde.net/。另外可以通過man cmd、cmd --help、help cmd、info cmd 等方式查看命令的幫助文檔。
cd命令同windows下一樣使用(如:cd /opt/,進入opt目錄下),有一個需要注意的地方:cd /opt 不同於cd opt/ ,前者是進入系統的opt目錄,后者是進入當前目錄的opt目錄下(如果存在opt目錄的話)。
2.1 ls
功能:列出目錄內容
常用選項(可以共同使用):
- -a 顯示所有文件,包括隱藏的
- -l 長格式列出信息
- -i 顯示文件 inode 號
- -t 按修改時間排序
- -r 按修改時間倒序排序
- -h 打印易讀大小單位
示例:
[gujun@localhost /]$ ls
[gujun@localhost /]$ ls -a
[gujun@localhost /]$ ls -lh
2.2 cat
功能:連接文件和標准輸出打印
常用選項:
- -b 顯示非空行行號
- -n 顯示所有行行號
- -T 顯示 tab,用^I 表示
- -E 顯示以$結尾
示例:
[gujun@localhost ~]$ cat a.txt
[gujun@localhost ~]$ cat a.txt -b
[gujun@localhost ~]$ cat a.txt -n
[gujun@localhost ~]$ cat a.txt -T
[gujun@localhost ~]$ cat a.txt -E
2.3 cp
功能:復制文件或目錄
常用選項:
- -a 歸檔
- -b 目標文件存在創建備份,備份文件是文件名跟~
- -f 強制復制文件或目錄
- -r 遞歸復制目錄
- -p 保留原有文件或目錄屬性
- -i 覆蓋文件之前先詢問用戶
- -u 當源文件比目的文件修改時間新時才復制
- -v 顯示復制信息
示例:
# 將test目錄拷貝到des目錄下
[gujun@localhost ~]$ ls
a.txt b.txt test
[gujun@localhost ~]$ mkdir des
[gujun@localhost ~]$ ls
a.txt b.txt des test
[gujun@localhost ~]$ cp -rf test/ des/
2.4 mkdir
功能:創建目錄
常用選項:
- -p 遞歸創建目錄
- -v 顯示創建過程
示例:
# 創建多級目錄
[gujun@localhost ~]$ mkdir test2/abc -pv
2.5 mv
功能:移動文件或重命名
常用選項:
- -b 目標文件存在創建備份,備份文件是"文件名后跟~"
- -u 當源文件比目的文件修改時間新時才移動
- -v 顯示移動信息
# 將a.txt移入test2文件夾下
[gujun@localhost ~]$ mv a.txt test2/
# 將 b.txt 重命名為b_new.txt
[gujun@localhost ~]$ mv b.txt b_new.txt
2.6 du
功能:估算文件磁盤空間的使用大小
常用選項:
- -h 易讀格式顯示(K,M,G)
- -b 單位bytes顯示
- -k 單位KB顯示
- -m 單位MB顯示
- -s 只顯示總大小
- --max-depth=<目錄層數>,超過層數的目錄忽略
- --exclude=file 排除文件或目錄
- --time 顯示大小和創建時間
示例:
# 查看目錄大小
[gujun@localhost ~]$ du -sh test2
# 排除指定目錄的某個文件
[gujun@localhost ~]$ du -sh --exclude=a.txt test2
2.7 find
功能:搜索文件目錄層次結構
格式:find path -option actions
常用選項:
- -name 文件名,支持(‘*’, ‘?’)
- -type 文件類型,d目錄,f常規文件等
- -perm 符合權限的文件,比如755
- -atime -/+n 在n天以內/過去n天被訪問過
- -ctime -/+n 在n天以內/過去n天被修改過
- -amin -/+n 在n天以內/過去n分鍾被訪問過
- -cmin -/+n 在n天以內/過去n分鍾被修改過
- -size -/+n 文件大小小於/大於,b、k、M、G
- -maxdepth levels 目錄層次顯示的最大深度
- -regex pattern 文件名匹配正則表達式模式
- -inum 通過inode編號查找文件
動作:
- -detele 刪除文件
- -exec command {} \; 執行命令,花括號代表當前文件
- -ls 列出當前文件,ls -dils格式
- -print 完整的文件名並添加一個回車換行符
- -print0 打印完整的文件名並不添加一個回車換行符
- -printf format 打印格式
其他字符:
- ! 取反
- -or/-o 邏輯或
- -and 邏輯和
示例:
# 全盤查找文件名包含http的文件。*是通配符
[gujun@localhost ~]$ sudo find / -name "*http*"
# 指定只尋找log文件
[root@localhost gujun]# find / -name "*.log" -type f -print
# 查找大於50M的文件:
[root@localhost gujun]# find / -size -50M
# 條件查找多個類型的文件,使用正則表達式:
# find . -name '*.sh' -o -name '*.bak'
# find . -regex ".*\.sh\|.*\.bak"
# find . -regex ".*\.\(sh\|bak\)"
2.8 wget
功能:非交互式網絡下載,類似於HTTP客戶端
在CentOS(RedHat內核)中,需要使用yum(RedHat中的包管理器)安裝wget。
示例:
[root@localhost gujun]# yum install wget
# 下載單個文件到當前目錄
[root@localhost gujun]# wget http://nginx.org/download/nginx-1.11.7.tar.gz
2.9 tar
功能:歸檔目錄或文件
常用選項:
- -c 創建新歸檔
- -d 比較歸檔和文件系統的差異
- -r 追加文件到歸檔
- -t 存檔的內容列表
- -x 提取歸檔所有文件
- -C 改變解壓目錄
- -f 使用歸檔文件或設備歸檔
- -j bzip2壓縮
- -z gzip壓縮
- -v 輸出處理過程
# 解壓剛剛下載的nginx的壓縮包到 test目錄下
# 如果不指定目錄,默認是當前目錄
[root@localhost test]# tar zxvf nginx-1.11.7.tar.gz -C test/
2.10 free
功能:查看內存使用率
常用選項:
- -b bytes顯示
- -k KB顯示
- -m M顯示
- -g G顯示
- -h 易讀單位顯示
- -s 每幾秒重復打印
- -c 重復打印幾次退出
示例:
# 查看物理內存:
# free -m
# 易讀單位顯示:
# free -h
2.11 ip
功能:查看/操作路由表,設備,路由策略和隧道
格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
具體可以百度,一般用來查詢ip地址用。
示例:
[root@localhost test]# ip addr
2.12 ssh
功能:SSH客戶端,登陸其他的主機
常用選項:
- -p 指定遠程主機端口,默認是22
- -i 指定認證文件
- -L [bind_address:]port:host:hostport
- -R [bind_address:]port:host:hostport]
- -D [bind_address:]port
示例:
# 默認端口登陸
[root@localhost test]# ssh 用戶名@客戶機地址
# 指定端口登陸
[root@localhost test]# ssh -p 端口號 用戶名@客戶機地址
# 退出使用logout 命令
[root@localhost test]# logout .
