1、環境變量
(1)打印環境變量:ehco $PATH(目錄導出到環境變量後,裏面的文件才能跨文件執行)
(2)添加到環境變量(一般放在當前用戶的宿主目錄~/下的.bashrc文件裏):export PATH=/usr/local/bin:$PATH
解釋:每一次用戶在打開一個終端時,都會附帶執行一次.bashrc
2、符號鏈接
(1)軟連接:(ln -s 源文件名 符號鏈接名)例如:ln -s src.c linker.c 刪除源文件後,軟連接文件失效,可以連接目錄
(2)硬連接:(ln 源文件名 符號鏈接名) 刪除源文件後,硬鏈接文件還在,不能連接目錄
解釋:硬鏈接不佔用磁盤空間,共用一個inode(http://blog.51cto.com/jk6627/1949090)
軟連接佔用軟鏈接的inode號不一樣,鏈接文件B的數據中僅存儲了一個路徑指向A,只佔用3個byte
3、壓縮與解壓縮dir 文件
(1)tar -czvf dir.tar.gz dir/ 將dir目錄壓縮成dir.tar.gz
tar -zxvf dir.tar.gz dir.tar,gz解壓縮
(2)tar -cjvf dir.tar.bz2 dir/ 將dir目錄壓縮成dir.tar.bz2
tar -jxvf dir.tar.bz2 dir.tar.bz2解壓縮
4、查找文件和內容
(1)find 路徑 -name "文件名" 查找文件放哪裏
(2)grep -nr "某個詞" 查找內容 n表示查找結果中顯示行號,-r 遞歸查找
(3)which 應用程序 比如which ls 查找一個應用程序在哪裏
(4)vi命令模式下輸入/xxx 查找到xxx
(5)vi設置顯示行號輸入:num 代碼或內容顯示行號
(6)快速切換到某行輸入:set nu 快速切換到num行
5、目標板掛載nfs
(1)mount -t nfs -o nolock 192.168.1.141:/home/aston/rootfs /mnt
解釋:Ubuntu搭建了NFS服務器後,就是促使Servers上的文件能被其他的機器mount,而達到資源共享,比如在目標板上要執行Ubuntu中的可執行程序,或要cp到目標板,機器(arm板)主動去使用nfs方式去掛載到servers(ubuntu),linux內核配置meuncofig時要選擇nfs模塊
6、tftp加載文件(ubuntu搭建好tftp-server後,會有一個自己定義專用的目錄用來傳輸文件比如:tftpboot目錄)
(1)本地測試;在本地一個目錄下使用命令: tftp localhost,進入tftp命令行
使用命令: get a.c ,這個目錄下多一個a.c
使用命令: q ,即可退出命令行(具體還有很多操作命令)
(2)遠程測試;比如將編譯好的zImage加載到開發板的內存地址DDR去啓動內核,uboot本身內置了tftp-client
在開發板uboot命令行下使用:tftp 0x30008000 zImage
7、uboot命令行燒錄kernel、roofts到外部spiflash
mw.b 0x82000000 ff 0x300000 (mw.b:二進制寫內存; 0x82000000: 內存首地址; 0xff:值; 0x1000000:size)
tftp 0x82000000 uImage_hi3518ev200 (下載文件到內存)
sf probe 0 (選擇spiflash)
sf erase 0x100000 0x300000 (擦除)
sf write 0x82000000 0x100000 0x300000(將內存內容寫入spi flash)
8、uboot命令行設置bootcmd和bootargs
7.1 命令:set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
(1)選擇spiflash,命令:sf probe 0
(2)將sflash的0x10000地址處內容讀取0x300000個字節到內存地址0x82000000(DDR物理地址就是這個)
(3)在0x82000000處啓動,命令:bootm 0x82000000(比如0x100000存放的是kernel,則啓動內核)
7.2 命令:set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)
(1)整個DDR被劃分爲兩部分:系統內存和mmz。mem=32M,比如HIS3518的DDR共有64M,告訴kernel留給linux 系統的內存只有32M,其他的32M給mpp,後面也要傳參?
(2)控制檯參數。console=ttyAMA0,115200表示使用串口0作爲控制檯設備 波特率爲115200
(3)表示根文件系統所在的設備分區,mtdblock2表示根文件系統對應mtdparts中的rootfs,從第0個算
(4)根文件系統類型,請根據燒寫的文件系統類型配置,此處爲jffs2,告訴內核文件系統類型
(5)SPI Flash對應取值hi_sfc,Nand Flash對應取值hinand;size表示分區大小 name表示分區名稱
(6)參考博客https://blog.csdn.net/peng_apple/article/details/54315218
9、手動製作rootf命令
命令:mkfs.jffs2 -d rootfs_uclibc -l -e 0x10000 -o rootfs_uclibc_64k.jffs2
(1) mkfs.jffs2是用來製作.jffs2文件系統格式的工具(mkfs.jffs2需要 安裝對應的軟件包,在YAFFS2源文件的utils目錄下,執行make就可以生成 mkyaffs2image工具,安裝mkfs.jffs2 https://blog.csdn.net/lwg19870804/article/details/41448809)
(2)0x10000製作rootfs時指定塊的大小;
- 創建文件系統時,可以指定塊的大小。如果將來在你的文件系統中是一些比較大的文件的話,使用較大的塊大小將得到較好的性能。將ext2文件系統的塊大小調整爲4096byte而不是缺省的1024byte,可以減少文件碎片,加快fsck掃描的速度和文件刪除以及讀操作的速度。
- 使用多大的塊大小,需要根據你的系統綜合考慮,如果系統用作郵件或者新聞服務器,使用較大的塊大小,雖然性能有所提高,但會造成磁盤空間較大的浪費。比如文件系統中的文件平均大小爲2145byte,如果使用4096byte的塊大小,平均每一個文件就會浪費1951byte空間。如果使用 1024byte 的塊大小,平均每一個文件會浪費927byte空間。在性能和磁盤的代價上如何平衡,要看具體應用的需要。
(3)具體參數:博客https://blog.csdn.net/itismine/article/details/4775824
10、截取指定內容輸出到另一個文件
命令:find -name "a.c" -print -exec cat {} \; | grep "li" | sed 's/[[:space:]]//g' | cut -d"\"" -f2 > b.c
(1)find ./ -name "a.c" -print -exec cat {} \; 當前目錄下找到文件a.c文件,打印並執行cat命令,{} \是命令格式而已
(2)管道 | 表示前面語句的輸出作爲後面語句的輸入
(3)grep "li" 查找到與內容li相關的行
(4)sed 's/[[:space:]]//g' 把li相關的行裏面的空格字符去掉,比如libowen 26 "abc" 變成libowen26"abc"
(5) cut -d"\"" -f2 以"作爲列分隔符,輸出第二列到b.c
11、查看可執行文件使用了哪些動態庫
命令:ldd 可執行文件
(1)作用是可以在一個使用了共享庫的程序執行之前解析出這個程序使用了哪些共享庫,並且查看這些共享庫是否能被找到,能被解析(決定這個程序是否能正確執行)。
12、環境變量
(1)echo $PATH打印PATH這個環境變量的值(在環境變量前要加$),將路徑添加到PATH環境變量,這樣該路徑下的可執行文件或腳本可以在任意路徑下執行,否則會提示找不到該執行文件或腳本添加方式到PATH的方式:export PATH=/usr/local/bin:$PATH
(2)命令行下執行export後可以查看系統中所以的環境變量