这篇 Linux 总结得很棒啊!
1. Linux安裝
因為圖太多了,轉載一篇從虛擬機 vmware 配置到 centos7 詳細安裝教程
https://www.cnblogs.com/wcwen1990/p/7630545.html
2.linux常用命令
2.1 常見目錄
| /etc | 存放系統管理和配置文件 |
| /home | 存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示 |
| /usr | 用于存放系統應用程序,比較重要的目錄/usr/local 本地系統管理員軟件安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。 /usr/x11r6 存放x window的目錄/usr/bin 眾多的應用程序 /usr/sbin 超級用戶的一些管理程序 /usr/doc linux文檔 /usr/include linux下開發和編譯應用程序所需要的頭文件 /usr/lib 常用的動態鏈接庫和軟件包的配置文件 /usr/man 幫助文檔 /usr/src 源代碼,linux內核的源代碼就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的庫 |
| /opt | 額外安裝的可選應用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里。 |
| /proc | 虛擬文件系統目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息。 |
| /root | 超級用戶(系統管理員)的主目錄(特權階級^o^) |
| /sbin | 存放二進制可執行文件,只有root才能訪問。這里存放的是系統管理員使用的系統級別的管理命令和程序。如ifconfig等。 |
| /dev | 用于存放設備文件。 |
| /mnt | 系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統。 |
| /boot | 存放用于系統引導時使用的各種文件 |
| /lib | 存放跟文件系統中的程序運行所需要的共享庫及內核模塊。共享庫又叫動態鏈接共享庫,作用類似windows里的.dll文件,存放了根文件系統程序運行所需的共享文件。 |
| /tmp | 用于存放各種臨時文件,是公用的臨時文件存儲點。 |
| /var | 用于存放運行時需要改變數據的文件,也是某些大文件的溢出區,比方說各種服務的日志文件(系統啟動日志等。)等。 |
| /lost+found | 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的文件(windows下叫什么.chk)就在這里 |
2.2 命令基本格式
2.2.1 命令提示符
[root@xiaoming?~]#root 當前登錄用戶
localhost 主機名
~ 當前工作目錄,默認是當前用戶的家目錄,root就是/root,普通用戶是 /home/用戶名
提示符 超級用戶是 #,普通用戶是$
2.2.2 命令格式
命令 [選項] [參數]
當有多個選項時,可以寫在一起
一般參數有簡化和完整寫法兩種?-a?與?--all等效
2.2.3 ls
查詢目錄中的內容
ls [選項] [文件或者目錄]
選項
-a 顯示所有文件,包括隱藏文件
-l 顯示詳細信息
-d 查看目錄本身的屬性而非子文件 ls /etc/
-h 人性化的方式顯示文件大小
-i 顯示inode,也就是i節點,每個節點都有ID號
默認當前目錄下的文件列表
-l
顯示詳細信息
drwxr-xr-x?.??1?root??root???800?Sep?16?00:19?logs| 文件類型和權限 | ACL權限 | 硬鏈接引用計數 | 所有者 | 所屬組 | 文件大小 | 最后修改時間 | 文件名 |
文件類型和權限
-rw-r--r--文件類型 - 文件、d 目錄、l 軟鏈接文件
u(所有者)、g(所屬組)、o(其他人)
r(read) 讀取、w(write) 寫入、x(execute) 執行
2.3 文件處理命令
2.3.1 mkdir
建立目錄 make directory
mkdir -p [目錄名]
-p 遞歸創建
2.3.2 cd
切換所在目錄 change directory
cd [目錄]
上次目錄
~ 家目錄
家目錄
. 當前目錄
.. 上級目錄
相對路徑是參照當前所在目錄
絕對路徑是從根目錄開始
按TAB鍵可以補全命令和目錄
2.3.3 pwd
顯示當前目錄 pwd
2.3.4 rmdir
刪除目錄 remove empty directory
rmdir [目錄名]
2.3.5 rm
刪除文件或者目錄 remove
rm [文件或者目錄]
-r 刪除目錄
-f 強制刪除
rm -rf 文件或者目錄] 遞歸強制刪除所有目錄
2.3.6 cp
copy 復制命令
copy [源文件或者目錄] [目標文件]
-r 復制目錄,默認是復制文件
-p 連帶文件屬性復制
-d 若源文件是鏈接文件,則復制連接屬性
-a 相當于 -rpd
2.3.7 mv
移動文件或者改名 move
mv [源文件或者目錄] [目標文件]
2.3.8 ln
鏈接命令,生成鏈接文件?link
2.3.8.1 硬鏈接特征
擁有相同的i節點和存儲block塊,可以看作是同一個文件
可以通過i節點訪問
不能跨分區
不能針對目錄使用
一般不使用
2.3.8.2 軟鏈接特征
ln -s [源文件] [目標文件]
-s 創建軟鏈接
類似Windows快捷方式
軟鏈接擁有自己的i節點和Block塊,但是數據塊中只保存源文件的文件名和i節點號,并沒有實際的文件數據
lrwxrwxrwx l 軟鏈接 軟鏈接的文件權限都是 777
修改任意一個文件,另一個都會改變
刪除源文件,軟鏈接不能使用
軟鏈接源文件必須寫絕對路徑
2.4 文件搜索命令
2.4.1 locate
在后臺數據庫中按文件名搜索,速度比較快
數據保存在/var/lib/mlocate后臺數據庫,每天更新一次
可以updatedb命令立刻更新數據庫
只能搜索文件名
/etc/updatedb.conf
建立索引的配置文件
PRUNE_BIND_MOUNTS = "yes" 全部生效,開啟搜索限制
PRUNEFS 不搜索的文件系統
PRUNENAMES 忽略的文件類型
PRUNEPATHS 忽略的路徑 /tmp
2.4.2 whereis
搜索命令所在路徑以及幫助文檔所在位置
whereis 命令名whereis ls
-b 只查找可執行文件
-m 只查找幫助文件
2.4.3 which
可以看到別名?which ls
能看到的都是外部安裝的命令
無法查看Shell自帶的命令,如?which cd
2.4.4 環境變量
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin定義的是系統搜索命令的路徑
echo $PATH
2.4.5 find
文件搜索命令
find [搜索范圍] [搜索條件]
2.4.5.1 按名稱搜索
避免大范圍的搜索,會非常消耗系統資源
- find?/?-name?aaa.log
2.4.5.2 通配符
find是在系統當中搜索符合條件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
通配符
*?匹配任意內容
??匹配任意一個字符
[]?匹配任意一個中括號內的字符
2.4.5.3 -i
不區分大小寫
find?/?-iname?A.log2.4.5.4 -user
按所有者進行搜索
find?/root?-user?root? find?/root?-nouser2.4.5.5 按時間搜索
find?/nginx/access.log?-mtime?+5| atime | 文件訪問時間 |
| ctime | 改變文件屬性 |
| mtime | 修改文件內容 |
| -5 | 5天內修改的文件 |
| 5 | 5天前當前修改的文件 |
| +5 | 5天前修改的文件 |
2.4.5.6 按大小搜索
k小寫,M大寫
| -8k | 小于8K |
| 8k | 等于8K |
| +8k | 大于8K |
| +8M | 小于8M |
2.4.5.7 按i節點搜索
find?.?-inum?1234562.4.5.8 綜合應用
find?/tmp?-size?+10k?-a?-size?-20k查找/etc目錄下,大于10KB并且小于20KB的文件
-a and 邏輯與,兩個條件都滿足
-o or 邏輯或,兩個條件滿足一個就可以
exec 對上個命令的結果進行操作
2.4.5.9 grep
在文件當中匹配符合條件的字符串
grep "10" access.log
-i?忽略大小寫
-v?排除指定字符串
find命令,在系統當中搜索符合條件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
grep命令 在文件當中搜索符合條件的字符串,如果需要匹配,使用正則表達式進行匹配,正則表達式時包含匹配
2.5 幫助命令
2.5.1 基本用法
man 命令 獲取指定命令的幫助
man ls?查看ls的幫助
2.5.2 關鍵字搜索
-?man?-k?passwd2.5.3 shell 內部幫助
whereis
找到就是外部,找不到就是內部
2.6 壓縮與解壓縮命令
.zip` `.gz` `.bz2` `.tar.gz` `.tar.bz22.6.1 zip格式
壓縮文件 zip 壓縮文件名 源文件
壓縮目錄 zip -r 壓縮文件名 源目錄
解壓 unzip 壓縮文件名
2.6.2 gzip
| gzip 源文件 | gzip a.txt | 壓縮為.gz格式的壓縮文件,源文件會消失 |
| gzip -c 源文件 > 壓縮文件 | gzip -c yum.txt > yum.txt.gz | 壓縮為.gz格式的壓縮文件,源文件不會消失 |
| gzip -r 目錄 | gzip -r xx | 壓縮目錄下的所有子文件,但是不壓縮目錄 |
| gzip -d 壓縮文件名 | gzip -d yum.txt.gz | 解壓縮文件,不保留壓縮包 |
| gunzip 壓縮文件 | gunzip yum.txt.gz | 解壓縮文件,不保留壓縮包 |
壓縮是壓縮目錄下的文件
2.6.3 .bz2格式壓縮
| bzip2 源文件 | bzip2 1.txt | 壓縮為.bz2格式的文件,不保留源文件 |
| bzip2 -k 源文件 | zip2 -k 1.txt | 壓縮為.bz2格式的文件,保留源文件 |
| bzip2 -d 壓縮文件名 | bzip2 -d 1.txt.bz2 | 解壓壓縮包 |
| bunzip2 壓縮文件名 | bunzip2 1.txt.bz2 | 解壓壓縮包 |
bzip2 不能壓縮目錄
2.6.4 tar
打包命令
tar -cvf 打包文件名 源文件
-c 打包
-v 顯示過程
-f 指定打包后的文件名
x 解打包
2.6.4 壓縮格式
壓縮
tar –cvf jpg.tar *.jpg //將目錄里所有jpg文件打包成tar.jpg?
tar –czf jpg.tar.gz *.jpg //將目錄里所有jpg文件打包成jpg.tar后,并且將其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz?
tar –cjf jpg.tar.bz2 *.jpg //將目錄里所有jpg文件打包成jpg.tar后,并且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2?
tar –cZf jpg.tar.Z *.jpg //將目錄里所有jpg文件打包成jpg.tar后,并且將其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z?
rar a jpg.rar *.jpg //rar格式的壓縮,需要先下載rar for linux?
zip jpg.zip *.jpg //zip格式的壓縮,需要先下載zip for linux
解壓
tar –xvf file.tar //解壓 tar包?
tar -xzvf file.tar.gz //解壓tar.gz
tar -xjvf file.tar.bz2 //解壓 tar.bz2?
tar –xZvf file.tar.Z //解壓tar.Z?
unrar e file.rar //解壓rar?
unzip file.zip //解壓zip
2.7 關機和重啟命令
2.7.1 shutdown
shutdown 關機命令
-c 取消前一個關機命令
-h 關機
-r 重啟
2.7.2 init
關機
init?0重啟
init?6系統的運行級別
0 關機
1 但用戶
2 不 完全多用戶,不包含NFS服務
3 完全多用戶
4 未分配
5 圖形界面
6 重啟
2.7.3 logout
退出登錄
logout2.9 查看登錄用戶信息
2.9.1 w
查看登錄用戶信息
USER 登錄的用戶名
TTY 登錄的終端 tty1 本地終端 pts/0遠程終端
FROM 登錄的IP
LOGIN 登錄時間
IDLE 用戶閑置時間
JCPU 該終端所有進程占用的時間
PCPU 當前進程所占用的時間
WHAT 正在執行的命令
2.9.2 who
查看登錄用戶信息
USER 登錄的用戶名
TTY 登錄的終端 tty1 本地終端 pts/0遠程終端
LOGIN 登錄時間(登錄的IP)
2.9.3 last
查看當前登錄和過去登錄的用戶信息 默認讀取?/var/log/wtmp?文件
用戶名
登錄終端
登錄IP
登錄時間
退出時間(在線時間)
2.9.4 lastlog
查看所有用戶的最后一次登錄時間
用戶名
登錄終端
登錄IP
最后一次登錄時間
3. shell
shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序
用戶可以用Shell來啟動、掛起、停止或者編寫一些程序
Shell還是一個功能相當強大的編程語言,易編寫,易調試,靈活性較強。
Shell是解釋執行的腳本語言,在Shell中可以直接調用Linux系統命令。
3.1 查看支持的shell
/etc/shells
3.2 echo
輸出命令
--e 支持反斜線控制的字符轉換
| \a | 輸出警告音 |
| \b | 退格鍵,也就是向左刪除鍵 |
| \n | 換行符 |
| \r | 回車鍵 |
| \t | 制表符,也就是Tab鍵 |
| \v | 垂直制表符 |
| \onnn | 按照八進制ASCII碼表輸出字符,其中0為數字零,nnn是三位八進制數 |
| \xhh | 按照十六進制ASCII碼表輸出字符,其中hh是兩位十六進制數 |
3.3 編寫執行shell
#!/bin/bash echo?-e?"\e[1;34m?hello?world?\e[0m"賦予執行權限,直接運行
chmod?755?hello.sh ./hello.sh通過Bash調用執行腳本
bash?hello.sh3.4 別名
命令別名 == 小名
臨時生效
alias
alias rm="rm -i"
寫入環境變量配置文件 vi ~/.bashrc
source ~/.bashrc
unalias 別名 刪除別名
3.5 命令的生效順序
絕對路徑或者相對路徑
別名
bash內部命令
按照$PATH環境變量定義的目錄查找順序找到的第一個命令
3.6 命令快捷鍵
| ctrl+c | 強制終止當前命令 |
| ctrl+l | 清屏 |
| ctrl+a | 光標移動到命令行首 |
| ctrl+e | 光標移動到命令行尾 |
| ctrl+u | 從光標所在的位置刪除到行首 |
| ctrl+z | 把命令放入后臺 |
| ctrl+r | 在歷史命令中搜索 |
3.7 歷史命令
history [選項] [歷史命令保存文件]
選項
-c 清空歷史命令
-w 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history
默認保存1000條 /etc/profile HISSIZE=10000
3.8 調用
使用上下箭頭調用以前的歷史命令
使用 !n 重復執行第n條歷史命令
使用 !! 重復執行上一條命令
使用 !字符 重復執行最后一條以該字符串開頭的命令
3.9 管道符號
3.9.1 多命令順序執行
(1) ; 分號,沒有任何邏輯關系的連接符。當多個命令用分號連接時,各命令之間的執行成功與否彼此沒有任何影響,都會一條一條執行下去。
(2) || 邏輯或,當用此連接符連接多個命令時,前面的命令執行成功,則后面的命令不會執行。前面的命令執行失敗,后面的命令才會執行。
(3) && 邏輯與,當用此連接符連接多個命令時,前面的命令執行成功,才會執行后面的命令,前面的命令執行失敗,后面的命令不會執行,與 || 正好相反。
(4) | 管道符,當用此連接符連接多個命令時,前面命令執行的正確輸出,會交給后面的命令繼續處理。若前面的命令執行失敗,則會報錯,若后面的命令無法處理前面命令的輸出,也會報錯。
chmod?755?hello.sh ./hello.sh3.9.2 管道符號
命令1的正確輸出會作為命令2的操作對象
命令1|命令2
3.9.3 通配符
匹配文件名和目錄名 |通配符|作用| |:----|:----| |?|匹配一個任意字符| |*|匹配0個或任意字符,也就是可以匹配任意內容| |[]|匹配中括號中任意一個字符| |[-]|匹配中括號中任意一個字符,-代表范圍| |[^]|匹配不是中括號中的一個字符|
3.9.4 其它符號
| '' | 單引號。在單引號中所有的特殊符號,如$和`都沒有特殊含義 |
| "" | 雙引號,在雙引號里特殊符號都沒有特殊含義,但是 $ ` \ 例外,擁有調用變量值,引用命令和轉義的含義 |
| `` | 反引號,擴起來的是系統命令 |
| $() | 和反引號一樣 |
| # | 在shell腳本中,#開頭的行代表注釋 |
| $ | 用于調用變量的值 |
| \ | 轉義符號 |
4. vi 編輯器
VI visual interface
可視化接口
類似與windows中的記事本
vim支持多級撤銷
跨平臺
語法高亮
支持圖形界面
4.1 操作模式
:w 保存
:q 退出
:! 強制保存
:ls 列出所有的文件
:n 下一個
:N 上一個
:15 跳轉到指定行
/xxx 從光標位置開始向后搜索 xxx 字符串
?xxx 從光標位置開始向前搜索
5. 用戶和用戶組
使用操作系統的人都是用戶
用戶組是具有相同系統權限的一組用戶
5.1 用戶組
5.1.1 /etc/group
/etc/group 存儲當前系統中所有用戶組信息
group:x:123:abc,def
組名稱:組密碼占位符:組編號:組中用戶名列表
root 組編號為0
1-499系統預留的編號 預留給安裝的軟件和服務的
用戶手動創建的用戶組從500開始
組密碼占位符都是x
5.1.2 /etc/gshadow
存放當前系統中用戶組的密碼信息
和group中的記錄一一對應
Group: * : :abc
組名稱 組密碼 組管理者 組中用戶名
5.1.3 /etc/passwd
存儲當前系統中所有用戶的信息
user:x:123:456:xxxxx:/home/user:/bin/bash
用戶名:密碼占位符:用戶編號: 用戶注釋信息:用戶主目錄:shell類型
5.1.4 /etc/shadow
存放當前系統中所有用戶的密碼信息
user:xxx:::::::
用戶名:密碼:
6. 用戶操作
添加組
groupadd?student修改組名稱
groupmod?-n?stu?student修改組編號
groupmod?-g?111?stu添加分組并指定編號
groupadd?-g?222?teacher刪除分組
groupdel?222添加分組
groupadd?teacher為用戶指定所屬組
useradd?-g?teacher?zhangsan為用戶指定所屬組
useradd?-g?teacher?lisi為用戶指定工作目錄
useradd?-d?/home/zhangsan?zhangsan指定注釋
usermod?-c?iamateacher?zhangsan修改用戶名
usermod?-l?zhangsan?zhangsan2指定文件夾
usermod?-d?/home/zhangsan2?zhangsan2修改用戶所屬組
usermod?-g?stu?zhangsan2刪除用戶
userdel?zhangsan2刪除所屬文件夾
userdel?-r?lisi7. 用戶命令
顯示登錄的用戶名
whoami顯示指定用戶信息,包括用戶編號,用戶名 主要組的編號及名稱,附屬組列表
id?zhangsan顯示 zhangsan 用戶所在的所有組
groups?zhangsan顯示用戶詳細資料
finger?zhangsan8. 附錄
8.1 系統啟動
8.1.1 BIOS
計算機通電后,第一件事就是讀取刷入ROM芯片的開機程序,這個程序叫做(Basic Input/Output System)
8.1.2 硬件自檢
BIOS程序首先檢查,計算機硬件能否滿足運行的基本條件,這叫做"硬件自檢"(Power-On Self-Test)
如果硬件出現問題,主板會發出不同含義的蜂鳴,啟動中止。如果沒有問題,屏幕就會顯示出CPU、內存、硬盤等信息。
8.1.3 啟動順序
硬件自檢完成后,BIOS把控制權轉交給下一階段的啟動程序。
這時,BIOS需要知道,"下一階段的啟動程序"具體存放在哪一個設備
BIOS需要有一個外部儲存設備的排序,排在前面的設備就是優先轉交控制權的設備。這種排序叫做"啟動順序"(Boot Sequence)
BIOS按照"啟動順序",把控制權轉交給排在第一位的儲存設備。
這時,計算機讀取該設備的第一個扇區,也就是讀取最前面的512個字節。如果這512個字節的最后兩個字節是0x55和0xAA,表明這個設備可以用于啟動;如果不是,表明設備不能用于啟動,控制權于是被轉交給"啟動順序"中的下一個設備。
這最前面的512個字節,就叫做"主引導記錄"(Master boot record,縮寫為MBR)
8.1.4 主引導記錄的結構
"主引導記錄"只有512個字節,放不了太多東西。它的主要作用是,告訴計算機到硬盤的哪一個位置去找操作系統。
(1) 第1-446字節:是用來記錄系統的啟動信息的,調用操作系統的機器碼
(2) 第447-510字節(64個字節):分區表(Partition table),分區表的作用,是將硬盤分成若干個區
(3) 第511-512字節:主引導記錄簽名(0x55和0xAA)
8.1.5 分區表
磁盤分區是使用分區編輯器在磁盤上劃分幾個邏輯部分
磁盤一旦劃分成多個分區,不同類的目錄與文件可以存儲進不同的分區內
"主引導記錄"因此必須知道將控制權轉交給哪個區
分區表的長度只有64個字節,里面又分成四項,每項16個字節。所以,一個硬盤最多只能分四個一級分區,又叫做"主分區"
(1) 第1個字節:如果為0x80,就表示該主分區是激活分區,控制權要轉交給這個分區。四個主分區里面只能有一個是激活的。
(2) 第2-4個字節:主分區第一個扇區的物理位置(柱面、磁頭、扇區號等等)。
(3) 第5個字節:主分區類型,比如FAT32、NTFS等。
(4) 第6-8個字節:主分區最后一個扇區的物理位置。
(5) 第9-12字節:該主分區第一個扇區的邏輯地址。
(6) 第13-16字節:主分區的扇區總數。
8.1.6 硬盤啟動
計算機的控制權就要轉交給硬盤的某個分區了
四個主分區里面,只有一個是激活的。計算機會讀取激活分區的第一個扇區,叫做"卷引導記錄"(Volume boot record,縮寫為VBR)
8.1.7 操作系統
控制權轉交給操作系統后,操作系統的內核首先被載入內存。
以Linux系統為例,先載入/boot目錄下面的kernel。內核加載成功后,第一個運行的程序是/sbin/init。它根據配置文件(Debian系統是/etc/initab)產生init進程。這是Linux啟動后的第一個進程,pid進程編號為1,其他進程都是它的后代
然后,init線程加載系統的各個模塊,比如窗口程序和網絡程序,直至執行/bin/login程序,跳出登錄界面,等待用戶輸入用戶名和密碼。
作者:孟祥
juejin.cn/post/6844903801283952653
—版權聲明—
來源:Linux愛好者,編輯:nhyilin
僅用于學術分享,版權屬于原作者。
若有侵權,請聯系微信號:Eternalhui或nhyilin刪除或修改!
—THE END—
文章推薦
?平凡而又神奇的貝葉斯方法
?怎樣用數學找到一顆丟失的氫彈?
?【物理方程】物理學中最難的方程之一,你知道多少?
?為什么一定要拼盡全力考上985、211大學?
?怎樣判斷漂亮女孩是不是單身的?
?投資數學天才西蒙斯:盡你所能和最優秀的人合作
總結
以上是生活随笔為你收集整理的这篇 Linux 总结得很棒啊!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数字类型floatcompl
- 下一篇: 从放牛娃到北大博士,这篇论文后记刷屏