Day 01嵌入式学习之Linux基础知识和命令操作
學(xué)習(xí)嵌入式開發(fā)的隨堂筆記
Day 01嵌入式學(xué)習(xí)之linux基礎(chǔ)知識(shí)和命令操作
1.英文:
read:讀,r字母
write:寫,w字母
execute:執(zhí)行,運(yùn)行,x字母
directory:目錄,d字母
2.計(jì)算機(jī)組成部分:硬件和軟件
2.1.硬件
1必要的三大件
1.CPU
核心的兩大功能:
1.數(shù)據(jù)運(yùn)算,例如:1+1=2
2.外設(shè)控制,從外設(shè)拿到數(shù)據(jù)(讀數(shù)據(jù),read)或者向外設(shè)發(fā)送數(shù)據(jù)(寫數(shù)據(jù),write)
問:何為外設(shè)?
答:除了CPU其他任何硬件
2.內(nèi)存:用于暫存CPU計(jì)算時(shí)(1)或者計(jì)算之后的數(shù)據(jù)(2)
特點(diǎn):數(shù)據(jù)可以進(jìn)行無限的覆蓋
缺點(diǎn):掉電數(shù)據(jù)丟失(就是重啟或者斷電)
優(yōu)點(diǎn):數(shù)據(jù)的讀或者寫速度非常快(比CPU慢,比硬盤快)
3.硬盤(統(tǒng)稱為閃存):用于永久性保存數(shù)據(jù)
特點(diǎn):數(shù)據(jù)也可進(jìn)行無限的覆蓋
缺點(diǎn):數(shù)據(jù)的讀或者寫操作太慢了,所以數(shù)據(jù)操作一般都要先從硬盤拷貝到內(nèi)存
再從內(nèi)存進(jìn)行操作,這樣速度能夠提高不少
優(yōu)點(diǎn):數(shù)據(jù)永久性不丟失,也就是掉電數(shù)據(jù)不丟失
2)其余可選硬件
鼠標(biāo),鍵盤,顯示器,顯卡等
2.2.軟件:三大部分
1)操作系統(tǒng)
功能:通過驅(qū)動(dòng)程序來管理各種硬件和管理各種應(yīng)用軟件(CPU分配,內(nèi)存分配等)
2)命令行軟件(專業(yè)術(shù)語叫shell終端)
功能:接收到用戶輸入的各種命令,然后讓CPU執(zhí)行這些運(yùn)行處理這些命令
例如:windows終端輸入notepad命令,最終能夠打開一個(gè)記事本
3)各種應(yīng)用程序:QQ,吃雞,喝農(nóng)藥,百度瀏覽器等
3.主流的操作系統(tǒng)
windows:微軟
linux:開源(免費(fèi)和付費(fèi)),推薦三大主流linux系統(tǒng):
ubuntu(推薦,64位,版本:18.04 ),fedora,kali(黑客最愛)
蘋果:MAC IOS
安卓:本質(zhì)就是linux
vxwork:付費(fèi)(硬實(shí)時(shí)操作系統(tǒng),以上linux,windows等都是軟實(shí)時(shí)操作系統(tǒng))(嵌入式)
4.linux系統(tǒng)發(fā)展(設(shè)計(jì)思想?yún)⒖紆nix)
開源免費(fèi)
1991年正式發(fā)布
linux內(nèi)核之父:linus
推薦linux發(fā)展視頻:《the code linux》
5.linux系統(tǒng)特點(diǎn)
linux系統(tǒng)理念(信仰):一切皆文件
一切皆文件:在linux系統(tǒng)中,任何硬件外設(shè)都是以文件的形式存在,一個(gè)應(yīng)用程序例如QQ訪問顯示器,只需訪問這個(gè)顯示器硬件對應(yīng)的文件即可
文件即硬件,硬件皆文件
問:linux系統(tǒng)中文件如何管理呢?
答:靠文件系統(tǒng)(僅僅是一個(gè)名詞)來管理文件
不同的文件系統(tǒng)管理文件的方式方法不一樣
例如:硬盤一般用NTFS文件系統(tǒng)一(管理的文件大小無限制)
U盤一般用FAT32文件系統(tǒng)(管理的單個(gè)文件不要超過4GB)
內(nèi)存一般用SYSFS文件系統(tǒng)(管理的文件都是位于內(nèi)存中,掉電丟失)
6.linux系統(tǒng)中跟文件和目錄(也是一種特殊的文件,俗稱文件夾)相關(guān)的概念
6.1.目錄:能夠包含其他目錄和文件
6.2.根目錄:文件系統(tǒng)中最上一層的目錄,用"/"表示
? 也就是linux系統(tǒng)中所有的目錄和文件他們都是位于"/"根目錄下
? 例如:/home(語義:在根目錄下有一個(gè)home目錄或者一個(gè)home文件)
6.3.子目錄:位于其他目錄下的目錄
? 例如:/home(語義:假如home是一個(gè)目錄名,home就是根目錄’/‘的子目錄)
? /home/tarena:假如tarena是一個(gè)目錄名,tarena就是home子目錄
? 其中第二個(gè)’/'表示分割
6.4.父目錄:子目錄的上一層目錄
? 例如:/home:根目錄‘/’就是home子目錄的父目錄
6.5.當(dāng)前目錄(又稱工作目錄):當(dāng)前正在使用或者所在的目錄,用’.'表示
? 例如:./home:當(dāng)前目錄下有一個(gè)home目錄或者文件
? 上一級(jí)目錄:當(dāng)前目錄的父目錄,用"…"表示
? 例如:…/…/:上一級(jí)的上一級(jí)目錄
6.6.主目錄:登錄linux系統(tǒng)時(shí),需要一個(gè)用戶,linux系統(tǒng)給這個(gè)用戶專門指定了一個(gè)專有的目錄
? 此目錄簡稱主目錄,并且都是位于/home/目錄下,用"~"表示
? 例如:登錄linux系統(tǒng)的用戶名叫tarena,tarena用戶的主目錄:/home/tarena
? 登錄linux系統(tǒng)的用戶名叫zhangsan,zhangsan用戶的主目錄:/home/zhangsan
6.7.路徑:目錄和文件的位置,又分兩種:
? 絕對路徑:以"/“開頭的路徑表示形式
? 例如:/home/tarena
? 相對路徑:不以”/“開頭的路徑表示形式
? 例如:home/tarena或者./home/tarena或者…/…/
? 由衷建議:以后軟件代碼中最好寫絕對路徑
? open(“my.txt”); //前提是程序運(yùn)行之前必須先進(jìn)入my.txt文件所在的目錄下,否則打開open失敗
? 或者
? open(”/dev/my.txt");//愛在哪個(gè)目錄下就在哪個(gè)目錄下
7.掌握linux系統(tǒng)必要命令:
建議:通過輸入各種命令替代圖形界面操作方式
命令格式:命令名 選項(xiàng)
多用TAB自動(dòng)補(bǔ)全
7.1)pwd:獲取當(dāng)前所在路徑
7.2)ls:目錄和文件的信息
形式1:
ls -lh //獲取當(dāng)前目錄下所有的目錄和文件的詳細(xì)信息
形式2:
ls -lh 文件名 //獲取此文件的詳細(xì)信息
例如:
ls -lh /home/tarena/qw.c 得到以下信息:
-rwxrw-r-- 1 tarena tarena 70 Jun 25 16:36 qw.c
說明:
‘-’:表示此文件就是一個(gè)普通的文件
‘rwx’:表示當(dāng)前登錄linux的用戶對此文件可以讀(查看文件),可以寫(向文件寫入信息),可執(zhí)行
‘rw-’:表示當(dāng)前登錄linux的用戶所在的組對此文件可以讀,可以寫,不可執(zhí)行運(yùn)行
‘r–’:表示其他的linux用戶對此文件可以讀,不可寫,不可執(zhí)行
‘1’:表示硬連接數(shù)(不關(guān)注)
‘tarena’:表示當(dāng)前登錄linux系統(tǒng)的用戶名
‘tarena’:表示tarena用戶所在的組
‘70’:表示此文件大小為70個(gè)字節(jié)
“Jun 25 16:36”:文件的創(chuàng)建日期
‘qw.c’:文件名
7.3)clear:清屏命令
7.4)cd:切換路徑:cd /home/tarena
7.5)mkdir:創(chuàng)建目錄:mkdir -p /home/tarena/hello/hello1
7.6)touch:創(chuàng)建空文件:touch /home/tarena/hello.txt
7.7)rm:刪除目錄和文件: rm -fr /home/tarena/hello
7.8)cp:文件或者目錄拷貝:cp -fr 源文件 新文件
? cp -fr 源目錄 新目錄
? 注意:cp hello.txt hello/
? 分3種:
? 1.hello是一個(gè)目錄并且存在,就是將hello.txt拷貝一份到hello目錄下
? 2.hello是一個(gè)目錄并且不存在,命令cp報(bào)錯(cuò)
? 3.hello是你想象的,你認(rèn)為的目錄但是不存在,并且命令形式:cp hello.txt hello 就是一個(gè)文件的拷貝
? 切記:只要是目錄操作,建議最后一定加分隔符’/’,來區(qū)分是目錄還是文件
? 建議每次輸入命令,用TAB鍵來補(bǔ)全,也會(huì)順便給你添加’/’
7.9)mv:移動(dòng),剪切命令
形式:
mv 源文件 目標(biāo)文件
mv 源文件 目標(biāo)目錄下/
mv 原目錄 目標(biāo)目錄
mv 源目錄 目標(biāo)目錄下/
7.10)cat 命令:快速查看文件的內(nèi)容
格式:cat 文件名
例如: cat hello.txt
7.11)echo命令:向顯示器 打印輸出數(shù)據(jù)命令
? 例如:echo “我是大神"或者echo 我是大神
? 注意:此命令一般配合”>“和”>>"(統(tǒng)稱重定向符)
? 格式:echo 打印信息 > 文件名 //先清空文件里面的內(nèi)容,然后將信息保存到文件中
? echo 打印信息 >> 文件名 //直接在文件末尾追加新信息
例如:
? cd /home/tarena/
? touch hello.txt
?echo 我是大神 > hello.txt 意思是:先將hello.txt文件內(nèi)容刪除,然后將新內(nèi)容寫入到文件
? cat hello.txt
? echo 我是小神 >> hello.txt 意思是:將新內(nèi)容追加到文件的后面
? cat hello.txt
7.12)find命令:到某個(gè)指定的路徑下找文件或者目錄
? 格式:find 路徑 -name 要找的文件名
? 例如:find /usr/include -name stdio.h
? 語義:到/usr/include目錄下找一個(gè)文件名為stdio.h這個(gè)文件
7.13)grep命令:到某個(gè)路徑下的某個(gè)文件中搜索字符串
? 格式:grep -R ”要搜索的信息“ 文件名
? 例如:grep “我是大神” * -Rn
? 語義:在當(dāng)前目錄下的所有文件中搜索我是大神字符串
? “*”:表示全部文件
? “-Rn”:到子目錄下也同樣搜索,并且打印字符串所在的行號(hào)
7.14)whoami:查看當(dāng)前登錄的linux系統(tǒng)的用戶名
? 例如:whoami
7.15)linux系統(tǒng)解壓縮的三條命令:
linux常用的兩種壓縮格式:bz2和gz
1.壓縮命令:
? tar -jcvf 壓縮包名.tar.bz2 目錄或者文件 //把目錄和文件打包成bz2這種壓縮格式
? tar -zcvf 壓縮包名.tar.gz 目錄或者文件 //把目錄和文件打包成gz這種壓縮格式
解壓縮:
tar -xvf 壓縮包名.tar.bz2/壓縮包名.tar.gz
? 例如:
總結(jié)
以上是生活随笔為你收集整理的Day 01嵌入式学习之Linux基础知识和命令操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC将窗口的关闭键(叉叉)变为不可用/
- 下一篇: 全国最常用的password前10000