Linux常用命令彙總及示例

文章目錄

一、認識Linux系統及基礎命令

Linux中一切皆文件

1 構成

內核 + 文件系統 + shell = Linux

  • 文件系統結構:文件進行讀寫
  • Linux是一個樹形的文件系統結構
  • 第一層目錄:/ 整個文件系統的訪問入口

2 重要的二級目錄

bin:放Linux上常用的命令
dev:放設備的目錄
etc:Linux配置文件目錄
home:普通用戶會在該目錄下創建屬於自己的目錄
root:管理員用戶家目錄
media:即插即用型的設備的掛載目錄
光盤自動掛載到media目錄下
mnt:掛載目錄
將硬盤中的分區(C/D/E)與目錄進行關聯
/datas/cpan 《- C分區
/datas/Dpan 《- D分區
/datas/Epan 《- E分區
opt:可選目錄
usr:放安裝的應用程序
sbin:只有管理員才能執行的命令
var:Linux日誌默認存儲目錄

3 基礎命令

ls : list,用於列舉一個目錄或者文件
ls [-ald] file_path
a:所有的:列舉包含隱藏文件

這裏寫圖片描述

.開頭的爲隱藏文件
l:長格式查看詳細信息
ls -l = ll

這裏寫圖片描述

d:列舉本身

這裏寫圖片描述

.爲本身
cd:change directory 改變目錄
用於切換工作目錄
cd target_path

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

./爲本身或當期目錄,…/文上一級目錄
相對路徑:相對當前路徑,依次進行訪問
more target_file:分頁查看文件內容
more /shell/startserver.sh

這裏寫圖片描述

絕對路徑:當訪問文件或者目錄時,從/目錄開始訪問
cd /shell/
more startserver.sh

這裏寫圖片描述

pwd:print work directory 打印當前工作目錄

這裏寫圖片描述

clear:用於清屏
快捷鍵:Ctrl+l
whereis:用於查看某個命令的位置
whereis more

這裏寫圖片描述

history:用於查看自己運行過的命令

圖片11:查看運行過的命令

回到頂部

二、文件管理命令:Linux中沒有後綴之分

1 增:mkdir touch

創建文件夾
mkdir [-p] dir_path
mkdir /root/test01

圖片12:創建文件夾

mkdir -p /root/test02/test
pp:表示遞歸創建

圖片13:遞歸創建文件夾

創建文件
touch file_path
touch test01/file1

圖片14:創建文件

2 刪、清空

rmrffile/dirrm -rf file/dir
rr:遞歸,用於刪除目錄
ff:確認文件

圖片15:刪除文件或文件夾

3 改:vim

vi/vim:Linux中的文本編輯工具

3.1 命令模式:剛剛打開時進入命令模式

ii:進入插入模式
yyyy:複製當前行
10yy10yy:複製從當前開始的十行
pp:粘貼
dddd:剪切當前行
10dd10dd:剪切從當前行開始的十行
GG:跳到最後一行
gggg:跳到第一行
10gg1010gg:跳到第10行
oo:在下一行進行插入
OO:在上一行進行插入
uu:撤銷上一步

3.2 插入模式:在命令模式中按i,進入插入模式

退esc退出插入模式進入命令模式:esc

3.3 最後行模式:在命令模式下,按shift+:,進入最後行模式

進入命令模式:按esc
q:退出
wq:保存退出
!:強制的
x:保存退出
X:加密
set nu:顯示行號
1,$s/nologin/1234/g
1:從第一行開始
$:最後一行
s:替換
g:如果一行出現多個,全部替換

4 查:more、cat、less、head、tail

cat:一次性讀取所有文件內容
cat /etc/passwd
cat -n /etc/passwd

顯示行號
more:分頁查看,一頁一頁的顯示
只能向下翻頁,最後自動退出
less:分頁查看
按q退出,可以上下翻頁
head:查看文件的前多少行
head [-n] file_path
head -10 /etc/passwd

圖片16:查看文件內容

tailtail:查看文件的後多少行
tail[n]filetail [-n] file_pathpath
tail10/etc/passwdtail -10 /etc/passwd

圖片17:查看文件後幾行

F-F:動態查看該文件的末尾

圖片18:動態查看該文件的末尾

$光標閃爍,等待更新 $

圖片18

圖片19

Ctrl+c退Ctrl+c退出

5 複製

cp [-r] source_path target_path
cp /etc/passwd /root/
cp /etc/passwd /root/passwd2

圖片20:複製

$ -r表示遞歸,可以複製文件夾下的所有目錄及文件,目標文件夾如果沒有則遞歸創建$

圖片21:複製文件

拷貝過程中可以直接重命名
移動剪切:也可以實現重命名
mv source_path target_path

6 常見錯誤:

No such file or directory
意思:沒有對應的文件或者目錄
原因:
1-真的沒有該文件或者目錄,路徑寫錯了
2-沒有權限
Permission denied
意思:沒有權限
原因:沒有權限
解決:修改權限
-bash:cdd : command not found
錯誤:命令沒有找到
原因
1-命令錯了
cdd /
2-語法不對
cd/
回到頂部

三、Linux中用戶管理及權限管理

1 用戶、組

 默認用戶:root 管理員用戶
   默認組:root
Linux默認自帶的用戶的id都在500以內,用戶自己創建的用戶id從500開始
用戶配置文件:/etc/passwd
root:x:0:0:root:/root:/bin/bash
用戶名:密碼:用戶id:組id:組名稱:家目錄:使用的shell類型

2 管理用戶

2.1 創建用戶

-o:or 或者條件
useradd fuyun

2.2 刪除用戶

-r:刪除時是否同時刪除家目錄

設置密碼

passwd fuyun

修改用戶名

usermod -l NewUser -d /home/NewUser -m OldUser
-l 修改用戶名
-d 修改登錄後使用的路徑
-m 修改登錄名稱的同時將目錄名稱一同修改

切換用戶

su - root
記得退出:exit

3 管理組

3.1 創建組

groupadd

3.2刪除組

groupdel

3.3 更改組

chgrp
groupmod -n newGroup oldGroup

4 權限管理

所屬用戶
|所有者 |同組用戶 |其他人 | 所有人 |
|---- |----- |------ |---- |
| u | g | o | a |

權限
|讀 |寫 |執行 |沒有權限 |
|---- |----- |------|---- |
|r |w |x | - |
drwxr-xr-x:表示一個文件的所有權限
|d |rwx |r-x |r-x |
|---- |---- |---- |---- |
|文件類型 |所有者 |同組用戶 |其他人 |

4.1 更改權限

chmod:用於修改某個文件或者目錄權限的
chmod o+w /passwd
chmod a+x /passwd
chmod u+x,g-x /passwd
|r |w |x |
|— |— |---- |
|4 |2 |1 |
rwxrwxrwx:777
chmod 755 /passwd
chown:用於修改某個文件或者目錄的所有者的
chown -R username:groupname file_path
R-R:表示遞歸,用於修改目錄時,將目錄下所有的文件一起更改

回到頂部

四、虛擬機管理

1 關機 :管理員才能執行

shutdown -h now
halt
init 0

2 重啓

reboot
init 6

3 快照:關機狀態下拍攝

4 克隆:用於複製多個機器的

五、Linux中常用的工具命令

1 sudo:用於普通用戶越級執行管理的命令

visudo:用於配置sudo,只有管理員能通過該命令分配權限給普通用戶
root ALL = (ALL) ALL
用戶名 從什麼地方登陸 以什麼身份 執行什麼命令
需求:配置rdedu用戶擁有啓動防火牆的權限
rdedu ALL=(root) /sbin/service iptables start
測試:
sudo service iptables start
rdedu ALL=(root) NOPASSWD:ALL

圖片23:sudo命令使用

2 grep:用於數據過濾

grep 'root' /etc/passwd

圖片24:grep命令的使用

3 常用工具符號

.:表示當前目錄
…:表示上一級目錄
~:代表家目錄
|:管道符,用於數據流的轉接
stdin
stdout
cat /etc/passwd | grep 'root'

圖片25:管道符

>:輸出重定向,覆蓋
grep 'root' /etc/passwd > /grep_root.txt

圖片26:重定向,覆蓋

>>:輸出重定向,追加

grep 'root' /etc/passwd >> /grep_root.txt
圖片27:重定向,追加

<:輸入重定向
基本上在shell腳本里使用
command1 < infile > outfile:同時替換輸入和輸出,執行command1,從文件infile讀取內容,然後將輸出寫入到outfile中
&:表示後臺運行
command &
\:換行符
`:執行符號
用執行符號包裹命令,將命令先執行後返回

回到頂部

4 man:用於查看某個命令的幫助文檔

man top

man top

man yum

man yum

按q退出查看

5 find:用於查找文件的

格式:find 路徑 條件
find /etc -name init*
條件:
-name
*:匹配多個字符
?:匹配單個字符

圖片28:find命令

ls /etc/init*
ls /etc/init??

圖片29:

-size:
find /etc -size +50(b,k,M,G)
+:大於
-:小於

圖片30:查看文件大小

並列條件和或者條件
-a:and 並列條件
-o:or 或者條件
find /etc -size +500k -a -size -1000k

圖片31:

-atime n:查詢文件最後訪問時間
n表示n*24小時之前

圖片32:

-ctime n:查詢文件狀態最後改變時間

圖片33:

-mtime n:查詢文件數據最後修改的時間

圖片34:

-type f/d:查詢文件或文件夾的類型
-user:查詢文件的所有者
-group:查詢文件的組
stat:查看文件信息

圖片35:

7 du:統計目錄中的大小

du [-sh] dir_path
s:表示總的

圖片36:

h: 人性化顯示單位

圖片37:

圖片38:

8 wc:做文本統計

wc [-lwc] file_path
l:行
wc -l /grep.txt

圖片39:

w:單詞
wc -w /grep.txt

圖片40:

c:字節
wc -c /grep.txt

圖片41:

m:字符

圖片42:

可以統計多件文件
wc /grep.txt /root/install.log

圖片43:

回到頂部

六、磁盤管理

1 df -h:查看每個分區的信息

查看每個分區的磁盤利用率
掛載信息

圖片44:

2 fdisk:用於管理Linux中所有的硬盤設備

插入硬盤
查看硬盤信息
fdisk -l

圖片45:

對硬盤進行分區

  • 分區:
    • 主分區
      
    • 擴展分區(建立邏輯分區)
      
		```fdisk /dev/sdb```

格式化
mkfs.ext4 /dev/sdb1
掛載

  • 臨時掛載
    mount /dev/sdb1 /primary_part
  • 永久掛載
    vim /etc/fstab
    /dev/sdb1 /primary_part ext4 defaults 0 0
回到頂部

七、系統管理

1 網絡管理

ifconfig:用於查看和配置網絡信息
/etc/sysconfig/network-scritps/ifcfg-eth0
route -n:查看路由

![圖片46:

2 端口

每個應用程序啓動以後會開放相應的端口
netstat -atunlp | grep 22

圖片47:

3 服務管理

service:用於管理Linux中所有系統安裝的服務
service service_name start|stop|status|restart
linux中通過service管理的服務程序地址:/etc/init.d/
常見服務:
iptables:防火牆
network:網絡
service network restart
NetworkManager:圖形化界面的網絡管理服務

圖片48:

sshd:安裝登錄訪問服務
chkconfig:設置開機啓動
chkconfig service_name on|off|--list
chkconfig iptables --list

圖片49:

chkconfig iptables off:關閉防火牆
chkconfig service_name on

4 進程管理

top:Linux中的任務管理器

圖片50:

free:用於查看內存
free -m

圖片51:

ps:process 用於查看當前所有的進程
ps -ef
kill :用於對服務發送信號的
關閉進程:
kill -9 pid
kill -9 1680
jps:java process
專門用於查看java進程的

5 udp與tcp的區別

tcp更安全,發送第一個信息後等待對方確認收到後再發送後面的信息,發送時間緩慢
udp更快速,將所有信息發送給對方,不管對方收到沒有,所以會導致信息丟失,不安全
回到頂部

八、Linux中的壓縮

windows:rar/zip
Linux:gzip、bzip2、zip
	.tar.gz/tgz/.tar.bz2
	壓縮類型:snappy、lzo、lz4
	
gzip:壓縮爲gzip格式
	後綴:.gz
	壓縮:gzip file_path
		gzip passwd
	解壓:gunzip file.gz
		gunzip passwd.gz 
	特點:
		1-壓縮完源文件不存在了
		2-不支持壓縮文件夾
bzip2:壓縮格式爲bz2
	後綴:.bz2
	壓縮:bzip2 file_path
		bzip2 passwd
	解壓:bunzip2 file.gz
		bunzip2 passwd.bz2 
	特點:
		1-壓縮完源文件不存在了
		2-不支持壓縮文件夾

1 tar:用於打包,將多個文件或者文件目錄合併爲一個文件

1.1 打包:將文件夾打包爲壓縮包 可以直接更改打包後的名稱

tar -cvf test02.tar test02

圖片52:

1.2 解包:

tar命令是調用了gunzip命令的,對只有一個壓縮內容的文件來解壓的時候才用tar, 而如果壓縮包裏有多個文件被壓縮了
tar -xf /root/test02.tar -C /

1.3 打包並壓縮爲gzip格式

tar -zcvf /test02.tar.gz test02

1.4 查看壓縮文件內容

tar -tvf /test02.tar.gz

1.5 解壓gzip格式的壓縮文件

tar -zxvf /test02.tar.gz -C /tmp

將上面的命令中的z改爲j,即爲bzip2格式的壓縮和解壓

1.6 格式

壓縮:tar -zcvf 壓縮後的文件的路徑 壓縮誰
解壓:tar -zxvf 解壓誰 -C 解壓到哪
查看:tar -tvf 壓縮文件路徑

1.7 參數

z:gzip格式
j:bzip2格式
c:打包
x:解包
v:顯示過程
f:檔名,文件名,f後面必須直接跟文件名
t:text,查看
C:指定解壓的路徑
c/x/t:一條命令中不能同時存在

1.8 unzip解壓

如果壓縮包裏有多個文件被壓縮了,可以採用unzip命令去解壓
解壓到當前文件:unzip a.zip
解壓到指定文件:unzip a.zip -d a

回到頂部

九、Linux中的軟件管理

  • window類型
    exe、jar、msi、zip(免安裝)
  • Linux
    rpm:Redhat系列的軟件包管理工具
    dpkg:Debian系列的軟件包管理工具
    壓縮:免安裝,直接配置即可
  • 源碼:
    先要安裝編譯需要的依賴
  • c/c++:
    執行configured腳本文件:預編譯
    make:編譯
    make install :安裝
  • java:
  • maven
    編譯:mvn complie
    打包:mvn package
    安裝:mvn intall
    清除:mvn clean

1 rpm : rpm包的管理命令

rpm包:每個軟件廠商都會提供對應的軟件的rpm包的版本
xxxxx.rpm
yum-presto-0.6.2-1.el6.noarch.rpm
yum-utils-1.1.30-30.el6.noarch.rpm
zd1211-firmware-1.4-4.el6.noarch.rpm
zenity-2.28.0-1.el6.x86_64.rpm
zip-3.0-1.el6.x86_64.rpm
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
zsh-4.3.10-7.el6.x86_64.rpm

rpm文件名稱格式
zlib-1.2.3-29.el6.x86_64.rpm
rpm的名稱-版本.操作系統.操作系統位數.rpm

1.1 查看

rpm -qa | grep zlib

圖片53:

1.2 安裝

rpm -ivh file_path(完整的rpm文件名稱)
rpm -ivh /media/CentOS_6.6_Final/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
i:install安裝
v:顯示詳細過程
h:標記

圖片54:

zlib-lib.rpm
zlib-util.rpm
zlib-deve.rpm
zlib.rpm

1.3 卸載

rpm -e zlib-devel-1.2.3-29.el6.x86_64

e:卸載
nodeps--nodeps:不考慮依賴
rpm -e --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

1.4 更新

rpm -U package

1.5 查詢一個程序安裝了哪些文件

rpm -ql package_name
rpm -ql zlib-1.2.3-29.el6.x86_64

查詢某個命令來自於哪個安裝包
rpm -qf /bin/ls

2 yum:基於rpm的軟件倉庫式的管理工具

####2.1 軟件倉庫:yum源

2.2 查看:yum list

列舉的當前yum中所有可安裝或者已安裝的程序
只想查看已安裝的程序
yum list installed

2.3 安裝:yum install -y package_name

y:表示全部yes
yum install -y gcc
yum install -y lrzsz

2.4 卸載:yum remove -y package_name

yum remove lrzsz

回到頂部

十、Linux中的變量及表達式

1 自定義變量

1.1 定義:key=value

定義變量時等號兩邊不能有空格
語義可讀
系統變量大寫
沒有數據類型

1.2 引用:

${a}
$a

2 環境變量:整個系統中的變量

2.1 全局環境變量:對所有用戶生效

/etc/profile
系統環境變量:PATH=PATH:PATH:JAVA_HOME\bin

2.2 用戶環境變量:每個用戶擁有自己的環境變量,只對自己生效

每個用戶在自己的家目錄下有一個配置文件:
~/.bash_profile

3 位置變量:腳本中$1-$9,表示第一個到第九個參數

4 預定義變量:

$0:執行的文件名稱
$#:參數的個數
$*:所有的參數
$?:上一條命令執行的結果
0:上一條命令正確執行了

5 常見的通配符與正則

5.1 通配符

*:匹配多個字符
?:匹配單個
大部分用於這些命令:ls find cp rm

5.2 正則

		[]:某個範圍的單個字符
			[0-9]:表示0-9之間的任意一個字符
			[a-z]
			[A-Z]
		.:單個字符
		*:匹配多個
			.*:匹配多個字符
		^:以什麼開頭:^root.*bash$
			中括號中表示非

圖片55:

[^ ]*
$:以什麼結尾

圖片56:

grep
grep 'r..t' passwd
圖片57:

grep '^root' passwd
grep '[0-9]:[0-9]' passwd
sed:專門用於對Linux中文本行的處理
sed -i '1d' passwd

圖片58:

sed 's/nologin/8888/g' passwd

得到ip地址:
ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' | sed 's/ //g'

awk:專門用於對Linux中文件列的處理
awk -F ':' '{print $3}' passwd

6 通用表達式

6.1 邏輯連接符

		&&:與連接,第一個成功了,第二個才執行
		||:或連接,第一個失敗了,第二個才執行
		;:無連接關係

6.2 內置判斷測試

6.2.1 字符串
			[ $a = $b ]
			[ $a = $b ];echo $?
			[ $a \> $b ];echo $? 
			[ $a \&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; $b ];echo $? 
			[ $a != $b ];echo $? 
			
			-z:判斷變量是否爲空,空返回true,非空返回false
			-n:判斷變量是否不爲空,不爲空返回true
6.2.2 數值
			[]:
				-eq:等於
				-ne:不等於
				-gt:大於
				-ge:大於等於
				-lt:小於
				-le:小於等於
				[ $a -eq $b ];echo $?
			(()):高級語言
				(($a==$b))
				!=  >= <= < >s
6.2.3 文件
			-f:判斷是否是一個文件
				[ -f /etc ];echo $?
			-d:判斷是否是一個目錄
			-e:判斷是否存在
			-w:判斷是否有可寫	權限
			-r:
			-x:
6.2.4 運算
		$((a+b))/$(($a+$b))
		$[ $a + $b ]
6.2.5 時間命令

獲取當前系統時間
date
獲取當前格式化時間
date +"%Y-%m-%d %X"
修改時間(必須爲管理員賬號才能修改,普通用可以用sudo)
date -s "2018-09-12 18:22:45"
獲取前一天時間
date -d '-1 day' +"%Y-%m-%d"
獲取前兩天時間
date -d '2 days ago' +"%Y-%m-%d"
獲取前兩年時間
date -d '2 year ago' +"%Y-%m-%d"

7 重點:腳本

7.1 腳本編寫規範

		1-必須聲明頭部,指定shell的類型
			#!/bin/bash
		2-運行腳本,必須有可執行的權限
			chmod u+x location_var.sh
回到頂部

十一、shell腳本基礎語法

1 循環

	for:第一種
		for 變量 in 集合
		do
			執行的命令
		done
		
		第二種
		for((i=1;i<10;i++))
		do
			執行的命令
		done
	while:
		while [表達式]
		do
		done

2 判斷

	if [條件表達式]
	then
		執行的命令
	fi

	if [條件表達式]
	then
		執行的命令
	else
		執行的命令
	fi
	
	if [條件表達式]
	then
		執行的命令
	elif [條件表達式]
	then
		執行的命令
	……
	else
		執行的命令
	fi
	
	並列條件
		if [條件1] && [條件2]  if [條件1] || [條件2] 
		if [ 條件1 -a 條件2]  	if [ 條件1 -o 條件2]


	case :類似於java中的switch case
	case 變量 in
	value1)
		怎麼樣?
		;;
	value2)
		怎麼樣?
		;;
	*)
		怎麼樣?
		;;
	esac
	
	執行腳本的方式:
		1-直接執行文件
		2-使用sh命令執行
			sh -x  script.sh

十二、crontab定時任務

service crond status
at:簡單的定時任務,不好用

crontab:可以實現分鐘級別的精準任務調度
	crontab -e  : 編輯定時任務
	*		  *		     *		*		*		command
	分鐘		小時		  日		月		周		
	00-59	00-23	    1-31	1-12	0-7		sh /tmp/test.sh
	
	每天凌晨3點執行腳本
		00	03	*	*	*	sh /tmp/test.sh	
	每週日中午12點30執行該程序
		30	12	*	*	7	sh /tmp/test.sh
	每兩個小時執行一次
		00	*/2 *	*	*
	每天5點和7點執行一次
		00	5,7 *	*	*
	每天5點到7點
		00	5-7 *	*	*
	
	crontab -l  :列舉當前所有的定時任務
	crontab -r  : 刪除所有的定時任務
	crontab -u root  -f /tmp/test.txt:
		使用test.txt文件作爲root用戶的定時任務
回到頂部
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章