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