shell常用命令
shell常用命令大總結,這些都是自己學習總結的,還是比較全的,可以收藏學習哦。
1. 查詢命令幫助:man 命令名
例子:man strlen(查庫函數)
man 2 strlen(在man后加個2來查函數)
2. 文件中搜索字符串
grep 字符串 文件路徑 [-n]
grep 字符串 目錄路徑 -r [-n]:搜索指定目錄及子目錄下的所有文件
注意:如果字符串中有空格,一定要加雙引號
模式搜索:^ :開頭 $ :結尾
補充:查找文件:find 目錄路徑
例子:-name 文件名
3. 顯示文件開頭內容:head -行數 文件路徑
4. 顯示文件結尾內容
tail -行數 文件路徑
tail -f 文件路徑 :參數-f使tail不停地去讀最新的內容,這樣有實時監視的效果
5. 比較文件:diff 文件1 文件2
顯示結果: (1) 無差異:沒有顯示
(2) 差異:文件2 相對于文件1的變化:
a追加 d刪除 c修改
< 顯示的行,屬于文件1
> 顯示的行, 屬于文件2
補充:vim 文件1 文件2 -d:vim也可以對兩個文件進行比較。(常用)
6. 字符統計
(1) 統計文件行數:wc -l 文件路徑
(2) 統計文件中單詞個數:wc -w 文件路徑
(3) 統計文件中字符數:wc -c 文件路徑
7. 清屏:clear 回滾
reset 相當于進程重啟
8. 查看日期和時間:date
9. 顯示一行文本:echo 字符串
例如:ceho “feeghja”
10.查詢命令路徑:which 命令
例: which ls
注意: 有些命令不是單獨的程序,而是shell程序提供的,所有找不到
例: which cd
11.輸入輸出重定向
11.1 概念
標準輸入:數組下標0
標準輸出:數組下標1
標準錯誤:數組下標2
原理:
11.2輸出重定向:> 相當于 1>
11.3輸出追加:>>
11.4輸入重定向:<
11.5錯誤重定向2>
具體例子:
補充:(函數性)atoi(char) 可以將字符串轉為數字
(技巧性)‘1’-‘0’=1 字符型1轉整數型1
12管道:前命令輸出作為后命令的輸入
命令1 | 命令2
命令1的輸出,做為命令2的輸入
13.查看進程:ps -x
14.命令置換
命令1 `命令2`
執行 命令2 , 然后將輸出做為命令1的參數
15.系統維護
15.1. 關機
(1) 立即關機
sudo shutdown -Ph now
(2) 立即重啟
sudo reboot
(3) 5分鐘后關機
sudo shutdown +5 -Ph
15.2. 臨時切換用戶
(1) 切換為root用戶
su
(2) 切換為指定用戶
su 用戶名
注意:第一切換root用戶的時候可能會提示密碼錯誤
sudo passwd root:會設置新的密碼
exit:退回切換用戶
15.3. 用戶管理
(1) 分類
root 最高權限用戶
系統用戶 用于系統服務運行, 不能登錄
普通用戶 普通用戶使用
(2) 用戶信息文件
/etc/passwd
用戶名:密碼:用戶ID:組ID:描述:用戶home目錄:shell程序
root :x :0 :0 :root:/root :/bin/bash
用戶ID: 用戶在系統中的唯一標識, 系統使用
0 root用戶ID
1 - 500 系統預留ID
500 - 普通用戶ID
組ID : 用戶組在系統中的唯一標識, 系統使用
用戶home目錄: 用戶自己的目錄
shell程序: 用戶使用的命令解析器
/etc/shadow
用戶名:密碼密文:...
(3) 組信息文件
/etc/group
組名:組密碼:組ID:組用戶集合
adm :x :4 :syslog,linux
groups +用戶名:查看用戶屬于哪個組
(4) 添加/刪除用戶
sudo adduser 用戶名
sudo deluser --remove-home 用戶名
(5) 修改用戶密碼
sudo passwd 用戶名
sudo passwd ubuntu
15.4 進程管理
(1) 概念
運行中的程序,系統會記錄他使用的所有資源, 程序停止時釋放這些資源
(2) 查詢系統進程
ps -ef
UID PID PPID C STIME TTY TIME CMD
UID : 啟動進程的用戶
PID : 進程自己的ID
PPID : 進程的父進程ID
C : cpu占用率
STIME: 進程啟動時間
TTY : 進程使用的終端,用于和用戶交互
TIME : 進程總共占用的進程時間
CMD : 啟動進程的命令
top
實時顯示進程狀態:
%cpu : cpu占用率
%MEM : 內存占用率
kill -9 進程ID(強制結束進程)
kill 19進程ID (暫停進程)
kill 18進程ID (繼續進程)
補充:輸出帶顏色
16.普通文件系統制作
16.1分區 :sudo fdisk /dev/sdb
m 幫助命令
n 增加分區
p 打印分區
d 刪除分區
w 分區結束,保存退出
查看當前系統識別出來了多少硬盤:sudo fdisk -l
查看當前系統的分區信息:cat /proc/partitions
添加硬盤->shutdown -r now->分區(m->n->p->w新建一個分區就可以)
注意:分區結束后要重啟
16.2格式化(制作空文件系統)
sudo mkfs.ext3 /dev/sdb1
16.3掛載
sudo mount /dev/sdb1 ~/work/hard1(掛載點,必須是目錄)
要掛載的分區 掛載點
df 確定掛載是否成功
df 顯示磁盤分區上可以使用的內存空間。
df -Ph
16.4取消掛載
sudo umount /dev/sdb1
17文件操作
17.1 查看文件(173)
ls -l:查看文件的詳細信息
ls –hl
ls -R:列出所有子目錄下的文件
drwxrwxr-x 6 linux linux 4096 Mar 27 22:47 smarthome
--------- -- ----- ----- ------ ------------ ---------
訪問權限 | 所屬用戶 所屬組 字節數 修改時間 文件名
(1) 文件類型(175)
- 普通文件
d 目錄文件
l 鏈接文件
b 塊設備文件
c 字符設備文件
p 管道文件
s 套接字文件
(2) 訪問權限(176)
rwx rwx r-x
-------- ------ ------
用戶權限 組用戶權限 其他用戶權限
r 可讀
w 可寫
x 可執行
- 無權限
八進制表示:0000 0111 0111 0101-->0775
17.2 基本操作
cd
cp
mv
rm
file
touch
mkdir
head
tail
17.3創建硬鏈接:目錄和子文件的關系(類似于快捷方式)
ln 源文件 鏈接文件
例: ln hello.c ~/sl
注意:只能對文件創建硬鏈接,不能對文件夾創建硬鏈接。
硬鏈接不能跨文件系統進行操作。
所謂的刪除文件,其實是刪除的表項,對應的文件的內容還是在的,還是可以恢復的。
ls -i +文件路徑及文件名:查看這個文件對應的inode信息
步驟:
a:touch /home/linux/test 給一些內容
b: sudo ln /homr/linux/test /home/linux/Desktop/link
c:ls –i
17.4創建軟鏈接
ln -s 源文件 鏈接文件
例: ln -s hello.c ~/sl
原理:
理解:軟鏈接的作用,就相當于windows下的快捷鍵是一樣的。
區別:
1:硬鏈接原文件和新文件的inode編號一致。而軟鏈接不一樣。
2:對原文件刪除,會導致軟鏈接不可用,而硬鏈接不受影響。
3:對原文件的修改,軟、硬鏈接文件內容也一樣的修改,因為都是指向同一個文件內容的。
4.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件,而軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件;
5.在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒有寫出來,因為在本質上硬鏈接文件和原文件是完全平等關系;
6.鏈接數目是不一樣的,軟鏈接的鏈接數目不會增加;
7.文件大小是不一樣的,硬鏈接文件顯示的大小是跟原文件是一樣的。而這里軟鏈接顯示的大小與原文件就不同了,BBB大小是95B,而BBBsoft是3B。因為BBB共有3個字符
8.軟鏈接沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接
9.總之,建立軟鏈接就是建立了一個新文件。當訪問鏈接文件時,系統就會發現他是個鏈接文件,它讀取鏈接文件找到真正要訪問的文件。
10.當然軟鏈接也有硬鏈接沒有的缺點:因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎么移就怎么移;還有它要系統分配額外的空間用于建立新的索引節點和保存原文件的路徑。
18. 歸檔壓縮
(1) 歸檔壓縮
tar zcvf 文件名.tar.gz 歸檔目錄(新建壓縮文件名)
tar jcvf 文件名.tar.bz 歸檔目錄(新建壓縮文件名)
例: tar zcvf project_demo.tar.gz project_demo
補充:當然這里的歸檔壓縮之后的文件可以帶路徑,壓縮的文件也可以帶路徑
.tar.gz是為了方便個人理解,其實可以不用寫
(2) 解壓:tar xvf 文件名.tar.gz(或者文件名.tar.bz) -C 路徑
補充:如果需要換路徑的話,使用選項-C
例子:
19.修改文件權限
chmod u+(-)r/w/x 文件路徑
g:組
o:其他
a:所有用戶
u:當前用戶
還可以用八進制加減權限:chmod 0777 文件路徑
-R:遞歸對子目錄修改權限。
20.修改文件所有者
chown 用戶名 文件路徑
注意: 文件所有者和root用戶可以修改文件所有者為別的用戶,但是不能修改成更高權限的root用戶。
例如:chown root 文件是失敗的,可以切到root用戶執行或者給其他用戶,這樣是OK的。
21. 修改文件組:chgrp 組名 文件路徑