嵌入式學(xue)習筆(bi)記:shell常用命令(ling),這些都知道嗎(ma)
時間:2018-09-10 來源:未知
shell常(chang)用命(ming)令
shell常用命令大總結,這(zhe)些都是自己學習總結的,還是比(bi)較全的,可(ke)以收藏學習哦。
1. 查詢(xun)命令幫助:man 命令名(ming)
例子:man strlen(查(cha)庫(ku)函數)
man 2 strlen(在(zai)man后加個(ge)2來查函(han)數)
2. 文(wen)件中搜索字符(fu)串
grep 字符串 文件路徑 [-n]
grep 字符串(chuan) 目(mu)錄路徑 -r [-n]:搜索指定(ding)目(mu)錄及子目(mu)錄下的所有文件
注意:如(ru)果字符串中有空格,一定要加(jia)雙(shuang)引(yin)號
模式搜(sou)索:^ :開頭 $ :結尾(wei)
補充:查找文件:find 目錄(lu)路徑
例子:-name 文件名
3. 顯示文件開頭(tou)內容:head -行數 文件路徑
4. 顯(xian)示文件結尾內(nei)容(rong)
tail -行數 文件(jian)路徑
tail -f 文(wen)件路(lu)徑 :參數-f使tail不停(ting)地去讀最新的(de)內(nei)容,這樣有實(shi)時監(jian)視(shi)的(de)效果
5. 比(bi)較文(wen)件:diff 文(wen)件1 文(wen)件2
顯(xian)示結果: (1) 無差異:沒有(you)顯(xian)示
(2) 差異:文(wen)件(jian)2 相對于文(wen)件(jian)1的變化:
a追加 d刪除 c修改
< 顯示(shi)的(de)行,屬于(yu)文件(jian)1
> 顯(xian)示的(de)行, 屬(shu)于文件2
補(bu)充:vim 文(wen)件(jian)1 文(wen)件(jian)2 -d:vim也可以對兩個文(wen)件(jian)進行比(bi)較。(常用)
6. 字符統計
(1) 統(tong)計文件(jian)行(xing)數:wc -l 文件(jian)路徑
(2) 統計文件(jian)中單詞(ci)個(ge)數:wc -w 文件(jian)路徑(jing)
(3) 統計文(wen)件(jian)中字符(fu)數(shu):wc -c 文(wen)件(jian)路徑
7. 清屏:clear 回滾
reset 相當于進(jin)程重啟
8. 查看日期和時間(jian):date
9. 顯示一(yi)行文(wen)本(ben):echo 字(zi)符串
例如:ceho “feeghja”
10.查詢命(ming)令(ling)路徑:which 命(ming)令(ling)
例: which ls
注意: 有些命令不(bu)是(shi)單獨的(de)程序,而是(shi)shell程序提供的(de),所有找(zhao)不(bu)到(dao)
例(li): which cd
11.輸(shu)入輸(shu)出重定向(xiang)
11.1 概念(nian)
標準輸入:數組(zu)下(xia)標0
標(biao)準輸出:數組下標(biao)1
標(biao)準錯誤:數組(zu)下標(biao)2
原理:


11.2輸(shu)出重定向:> 相(xiang)當于(yu) 1>
11.3輸出追加:>>
11.4輸入(ru)重(zhong)定向:<
11.5錯誤(wu)重定向2>
具體例子:


補充:(函(han)數(shu)性)atoi(char) 可以將字(zi)符串轉為數(shu)字(zi)
(技巧性)‘1’-‘0’=1 字符(fu)型1轉整數型1
12管道(dao):前命(ming)令(ling)輸出作為后命(ming)令(ling)的輸入(ru)
命令(ling)1 | 命令(ling)2
命令(ling)1的(de)輸出(chu),做為(wei)命令(ling)2的(de)輸入
13.查看(kan)進程:ps -x
14.命(ming)令置換
命令1 `命令2`
執行 命(ming)令(ling)2 , 然后將輸出做(zuo)為命(ming)令(ling)1的參數
15.系統維護
15.1. 關(guan)機
(1) 立即關機(ji)
sudo shutdown -Ph now
(2) 立(li)即重啟
sudo reboot
(3) 5分鐘后關機
sudo shutdown +5 -Ph
15.2. 臨時切換(huan)用戶
(1) 切換為root用戶
su
(2) 切換為指定用(yong)戶
su 用戶名
注意:第一切(qie)換(huan)root用戶的時候可(ke)能會提示密碼錯誤
sudo passwd root:會設置新的密碼
exit:退回切換用戶
15.3. 用戶(hu)管理
(1) 分類
root 最高權限用戶
系統用(yong)戶 用(yong)于系統服務運行(xing), 不能登錄
普通(tong)用戶(hu) 普通(tong)用戶(hu)使用
(2) 用戶信息(xi)文件(jian)
/etc/passwd
用戶名:密碼(ma):用戶ID:組ID:描述:用戶home目錄:shell程序
root :x :0 :0 :root:/root :/bin/bash
用戶(hu)ID: 用戶(hu)在系統(tong)中的唯一標識, 系統(tong)使(shi)用
0 root用戶ID
1 - 500 系統預留ID
500 - 普通(tong)用戶ID
組(zu)ID : 用(yong)戶組(zu)在系統中的唯一(yi)標識, 系統使(shi)用(yong)
用戶(hu)home目(mu)(mu)錄(lu): 用戶(hu)自(zi)己的目(mu)(mu)錄(lu)
shell程(cheng)序: 用戶使用的(de)命令解(jie)析器
/etc/shadow
用(yong)戶名:密碼密文:...
(3) 組信息文件
/etc/group
組名:組密碼:組ID:組用戶集合
adm :x :4 :syslog,linux
groups +用戶(hu)名:查看用戶(hu)屬于哪個組
(4) 添加/刪除用(yong)戶
sudo adduser 用戶名
sudo deluser --remove-home 用戶(hu)名(ming)
(5) 修改(gai)用戶密碼
sudo passwd 用戶名(ming)
sudo passwd ubuntu
15.4 進(jin)程(cheng)管理
(1) 概念
運行(xing)中的程(cheng)序(xu),系(xi)統會記(ji)錄(lu)他使(shi)用(yong)的所(suo)有資(zi)(zi)源, 程(cheng)序(xu)停止(zhi)時釋放(fang)這些資(zi)(zi)源
(2) 查詢系統進(jin)程
ps -ef
UID PID PPID C STIME TTY TIME CMD
UID : 啟動進(jin)程的用戶
PID : 進程(cheng)自己的ID
PPID : 進程的父進程ID
C : cpu占用率(lv)
STIME: 進程(cheng)啟(qi)動時間
TTY : 進程使用的終端,用于和(he)用戶交(jiao)互
TIME : 進程總共占用的進程時間(jian)
CMD : 啟(qi)動進程的命令
top
實(shi)時顯示進程狀態:
%cpu : cpu占用率
%MEM : 內存占用率(lv)
kill -9 進程ID(強制結束進程)
kill 19進(jin)程ID (暫(zan)停進(jin)程)
kill 18進程(cheng)ID (繼(ji)續(xu)進程(cheng))
補(bu)充:輸出(chu)帶顏色


16.普通文件系統(tong)制(zhi)作
16.1分區 :sudo fdisk /dev/sdb
m 幫助命(ming)令
n 增加分區
p 打印分區
d 刪除分區
w 分區結(jie)束,保存退出
查看(kan)當前系統識別出來(lai)了多少硬盤:sudo fdisk -l
查看當(dang)前系統的分(fen)區(qu)信息(xi):cat /proc/partitions
添加硬(ying)盤->shutdown -r now->分區(qu)(m->n->p->w新建一個(ge)分區(qu)就(jiu)可(ke)以)
注意:分區結束(shu)后要重啟
16.2格式化(制作空文件(jian)系統)
sudo mkfs.ext3 /dev/sdb1
16.3掛載
sudo mount /dev/sdb1 ~/work/hard1(掛載點,必須是目(mu)錄)
要掛載(zai)的分區 掛載(zai)點
df 確定掛載是否成功
df 顯示磁盤(pan)分區上可以使用的(de)內存空間。
df -Ph
16.4取消掛載
sudo umount /dev/sdb1
17文(wen)件操(cao)作(zuo)
17.1 查看文件(173)
ls -l:查(cha)看文件的(de)詳細信息
ls –hl
ls -R:列(lie)出所有子(zi)目錄下(xia)的(de)文件
drwxrwxr-x 6 linux linux 4096 Mar 27 22:47 smarthome
--------- -- ----- ----- ------ ------------ ---------
訪問權限 | 所屬用(yong)戶 所屬組 字節(jie)數 修改時(shi)間 文件(jian)名(ming)
(1) 文件類型(175)
- 普通(tong)文件
d 目錄文件
l 鏈接文件
b 塊設備文件
c 字(zi)符設備文件
p 管道文件
s 套接字文件
(2) 訪問權限(176)
rwx rwx r-x
-------- ------ ------
用戶權限 組用戶權限 其他(ta)用戶權限
r 可讀
w 可寫
x 可執行
- 無權限
八(ba)進(jin)制(zhi)表示:0000 0111 0111 0101-->0775
17.2 基本操作
cd
cp
mv
rm
file
touch
mkdir
head
tail
17.3創(chuang)建硬鏈接(jie):目(mu)錄和子文(wen)件的關(guan)系(類似于快(kuai)捷方式)
ln 源文(wen)件 鏈接文(wen)件
例: ln hello.c ~/sl
注意:只能對(dui)文件創(chuang)建硬鏈(lian)接,不能對(dui)文件夾(jia)創(chuang)建硬鏈(lian)接。
硬鏈(lian)接不能跨文(wen)件系統進行操作(zuo)。
所謂(wei)的(de)(de)刪除文(wen)件,其實(shi)是(shi)刪除的(de)(de)表項,對應的(de)(de)文(wen)件的(de)(de)內容還是(shi)在的(de)(de),還是(shi)可以恢復的(de)(de)。
ls -i +文件路徑(jing)及文件名(ming):查看這個文件對應的(de)inode信息(xi)
步驟:
a:touch /home/linux/test 給一(yi)些(xie)內容
b: sudo ln /homr/linux/test /home/linux/Desktop/link
c:ls –i
17.4創建(jian)軟鏈接
ln -s 源文件 鏈接文件
例: ln -s hello.c ~/sl
原理:


理解:軟鏈接的(de)(de)作用(yong),就相當于(yu)windows下的(de)(de)快捷(jie)鍵是(shi)一樣的(de)(de)。
區別:
1:硬鏈(lian)(lian)接原文(wen)(wen)件和新文(wen)(wen)件的inode編(bian)號(hao)一致(zhi)。而軟鏈(lian)(lian)接不(bu)一樣(yang)。
2:對原文件刪除,會導(dao)致軟鏈接不(bu)(bu)可用,而硬鏈接不(bu)(bu)受影響(xiang)。
3:對(dui)原文(wen)件的修(xiu)改,軟(ruan)、硬鏈接文(wen)件內(nei)容也一(yi)樣的修(xiu)改,因為都是(shi)指向同一(yi)個文(wen)件內(nei)容的。
4.硬鏈(lian)接(jie)原文件/鏈(lian)接(jie)文件公(gong)用一個inode號,說明他(ta)們是(shi)同(tong)一個文件,而軟(ruan)鏈(lian)接(jie)原文件/鏈(lian)接(jie)文件擁有(you)不(bu)同(tong)的(de)inode號,表明他(ta)們是(shi)兩(liang)個不(bu)同(tong)的(de)文件;
5.在文件(jian)屬(shu)性上軟鏈(lian)(lian)(lian)接(jie)明確(que)寫出(chu)了是鏈(lian)(lian)(lian)接(jie)文件(jian),而硬(ying)(ying)鏈(lian)(lian)(lian)接(jie)沒有寫出(chu)來,因(yin)為在本(ben)質(zhi)上硬(ying)(ying)鏈(lian)(lian)(lian)接(jie)文件(jian)和原(yuan)文件(jian)是完全(quan)平等(deng)關(guan)系;
6.鏈(lian)接數(shu)(shu)目是不一樣的,軟鏈(lian)接的鏈(lian)接數(shu)(shu)目不會(hui)增(zeng)加;
7.文(wen)件(jian)(jian)大(da)小是(shi)(shi)不一樣的(de),硬鏈(lian)(lian)接文(wen)件(jian)(jian)顯示的(de)大(da)小是(shi)(shi)跟原文(wen)件(jian)(jian)是(shi)(shi)一樣的(de)。而這里軟鏈(lian)(lian)接顯示的(de)大(da)小與原文(wen)件(jian)(jian)就(jiu)不同了,BBB大(da)小是(shi)(shi)95B,而BBBsoft是(shi)(shi)3B。因為(wei)BBB共有3個字(zi)符
8.軟鏈接沒有任何文(wen)件系統的(de)限制,任何用戶可以創建指向目錄的(de)符號鏈接
9.總之,建立軟鏈(lian)接(jie)(jie)就是建立了(le)一個(ge)新(xin)文件(jian)。當訪問(wen)鏈(lian)接(jie)(jie)文件(jian)時,系(xi)統就會發現他是個(ge)鏈(lian)接(jie)(jie)文件(jian),它讀取鏈(lian)接(jie)(jie)文件(jian)找到真(zhen)正要訪問(wen)的文件(jian)。
10.當然軟鏈(lian)(lian)接(jie)也有(you)硬鏈(lian)(lian)接(jie)沒(mei)有(you)的缺(que)點(dian):因為(wei)鏈(lian)(lian)接(jie)文(wen)件包含有(you)原(yuan)文(wen)件的路徑信(xin)息(xi),所以當原(yuan)文(wen)件從一個目錄下移(yi)到其(qi)他目錄中,再訪問(wen)鏈(lian)(lian)接(jie)文(wen)件,系統就(jiu)(jiu)找不(bu)到了,而(er)硬鏈(lian)(lian)接(jie)就(jiu)(jiu)沒(mei)有(you)這個缺(que)陷,你(ni)想(xiang)怎(zen)么移(yi)就(jiu)(jiu)怎(zen)么移(yi);還有(you)它要系統分配額外的空間用于建(jian)立新(xin)的索引節點(dian)和保存原(yuan)文(wen)件的路徑。
18. 歸檔壓縮
(1) 歸檔壓縮
tar zcvf 文件名.tar.gz 歸(gui)檔目錄(新建壓縮文件名)
tar jcvf 文(wen)件(jian)名.tar.bz 歸檔目錄(新建(jian)壓縮(suo)文(wen)件(jian)名)
例: tar zcvf project_demo.tar.gz project_demo

補充:當然(ran)這里的歸檔(dang)壓縮之后的文件可(ke)(ke)以帶路徑,壓縮的文件也(ye)可(ke)(ke)以帶路徑
.tar.gz是為(wei)了方(fang)便(bian)個人理解,其實可以不用寫(xie)
(2) 解壓:tar xvf 文件名(ming).tar.gz(或者(zhe)文件名(ming).tar.bz) -C 路徑(jing)
補(bu)充:如果(guo)需要換路徑的話,使用選項-C
例子:



19.修改文件權限
chmod u+(-)r/w/x 文件路(lu)徑
g:組
o:其他
a:所有用戶
u:當前用戶
還(huan)可以用八進(jin)制加減權限:chmod 0777 文(wen)件路徑
-R:遞歸對子目錄修(xiu)改權限。
20.修改文件所有者
chown 用戶名(ming) 文(wen)件路徑
注意: 文件所(suo)有(you)者(zhe)和root用(yong)(yong)戶可以(yi)修(xiu)改文件所(suo)有(you)者(zhe)為別的用(yong)(yong)戶,但是不能修(xiu)改成更高權限的root用(yong)(yong)戶。
例如(ru):chown root 文件是失敗的,可(ke)以切(qie)到(dao)root用(yong)戶執行(xing)或(huo)者給其他用(yong)戶,這樣是OK的。
21. 修改文(wen)件組:chgrp 組名 文(wen)件路徑(jing)

