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