簡單指令
| 符號|指令 | 作用 |
|---|---|
| $ | 表示你是一般用戶(root) |
| # | 表示你是超級用戶 |
| Ctrl + Alt + Shift + (f1~f6) | 切換到字符控制臺 |
| Alt + f7 | 切換回圖形界面 |
| ps aux | 查看進(jìn)程信息 |
| kill -9 進(jìn)程ID | 停止進(jìn)程 |
| Ctrl + a | (shell)回到命令的開始 |
| Ctrl + e | (shell)跑到命令末尾 |
| Ctrl + d | (shell)刪除光標(biāo)后的字符 |
| ls -a | 列出隱藏文件,文件夾中以"."開頭的均為隱藏文件 |
| ls -l | 列出文件的詳細(xì)信息 |
| ls -R | 連同子目錄中的內(nèi)容一起列出 |
用ls -l 命令顯示的信息中,開頭是由10個字符構(gòu)成的字符串,其中第一個字符表示文件類型,它可以是下述類型之一:
| 符號 | 文件類型 |
|---|---|
| - | 普通文件 |
| d | 目錄 |
| l | 符號鏈接(快捷方式) |
| b | 塊設(shè)備文件(U盤) |
| c | 字符設(shè)備文件(鼠標(biāo),鍵盤) |
| s | socket文件,網(wǎng)絡(luò)套接字 |
| p | 管道 |
后面9個字符表示文件的訪問權(quán)限,分為3組,每組3位。第一組表示文件屬主 的權(quán)限,第二組表示同組用戶的權(quán)限,第三組表示其他用戶的權(quán)限。每一組的三個字符分別表示對文件的讀(r)、寫(w)和執(zhí)行(x)權(quán)限。
mkdir -p 可以連同父目錄一起創(chuàng)建
mkdir -p /aa/bb/cc
touch 命令
如果文件已經(jīng)存在,則把訪問和修改時間都修改為目前的時間。
為文件創(chuàng)建鏈接
ln hello world_h
創(chuàng)建軟鏈接
ln -s hello world_s
利用wc指令可以計算文件的byte數(shù)、字?jǐn)?shù)或是列數(shù)。
wc -c 只顯示bytes數(shù);
wc -l 只顯示列數(shù);
wc -w 只顯示字?jǐn)?shù)
顯示你的盤符已使用空間
df --block-size=GB
df --block-size=MB
根據(jù)文件名查找文件
| 符號|指令 | 作用 |
|---|---|
| find ./* -name "firefox" | 在當(dāng)前目錄下查找文件 |
| find / -name "firefox" | 在根目錄下查找文件 |
| find / -name "firefox" > abcd | 可以令輸出重定向到指定文件 |
| Ctrl + a | (shell)回到命令的開始 |
| Ctrl + e | (shell)跑到命令末尾 |
| Ctrl + d | (shell)刪除光標(biāo)后的字符 |
根據(jù)內(nèi)容查找文件
grep "查找內(nèi)容" ./* -R
find默認(rèn)使用遞歸方式查找文件,但是grep需要人為指定遞歸方式,而且grep無法查找隱藏文件的內(nèi)容。./*表示在當(dāng)前路徑下,查找所有的文件。
打包文件
對tar文件
tar zcvf test.tar.gz test
-- zcvf:
-- z表示壓縮格式,使用gZip壓縮算法來壓縮文件
-- c表示creat
-- vf表示索引信息
- 解包文件
tar zxvf test.tar.gz
-- x表示解包
- 解包到指定目錄
tar zxvf test.tar.gz -C 指定的目錄
- 如果是一般的打包文件,就不使用z參數(shù)
tar cvf test.tar test
tar zvf test.tar
tar zvf test.tar -C 指定到的目錄
- 對.bz2格式的壓縮包,使用j參數(shù)
tar jxvf test.tar.bz2 test
tar jxvf test.tar.bz2
tar jxvf test.tar.bz2 -C 指定的目錄
對rar文件
打包:把dir壓縮成newdir.rar
rar a -r newdir dir
解包:把newdir.rar 解壓縮到當(dāng)前目錄
unrar x newdir.rar
對zip文件
打包:
zip -r dir.zip dir
解包:
unzip dir.zip
類Unix系統(tǒng)目錄結(jié)構(gòu)
ubuntu沒有盤符這個概念,只有一個根目錄/,所有的文件都在根目錄下面。根目錄下面的文件夾存放的內(nèi)容簡介:
| 文件名 | 內(nèi)容 |
|---|---|
| bin | 系統(tǒng)可執(zhí)行命令 |
| boot | 內(nèi)核和啟動程序,所有和啟動相關(guān)的文件都保存在這里 |
| grub | 引導(dǎo)器相關(guān)文件 |
| dev | 設(shè)備文件 |
| etc | 系統(tǒng)軟件的啟動和配置文件,系統(tǒng)在啟動過程中需要讀取的文件都在這個目錄。如LILO參數(shù)、用戶賬戶和密碼 |
| home | 用戶的主目錄。下面是用戶自己定義的用戶名的文件夾 |
| lib | 系統(tǒng)程序庫文件,這個目錄里存放著系統(tǒng)最基本的動態(tài)鏈接共享庫,類似于Windows下的system32目錄,幾乎所有的應(yīng)用程序都需要用到這些共享庫 |
| media | 掛載媒體設(shè)備,如光驅(qū)、U盤等 |
| mnt | 該目錄是讓用戶臨時掛載別的文件系統(tǒng),如掛載Windows下的每個分區(qū),ubuntu默認(rèn)還是掛載在/media目錄 |
| opt | 可選的應(yīng)用軟件包(很少) |
| proc | 該目錄是系統(tǒng)內(nèi)存的映射,我們可以直接訪問這個目錄來獲取系統(tǒng)信息。也就是說,這個目錄的內(nèi)容不在硬盤而是在內(nèi)存里 |
| sbin | 管理員系統(tǒng)程序 |
| selinux | |
| srv | |
| sys | /udev用到的設(shè)備目錄樹,/sys反映你機(jī)器當(dāng)前所接的設(shè)備 |
| tmp | 臨時文件夾 |
| usr | 這個是最龐大的目錄,我們要用到的很多應(yīng)用程序和文件幾乎都存放在這個目錄下 |
| bin | 應(yīng)用程序 |
| game | 游戲程序 |
| include | |
| lib | 應(yīng)用程序的庫文件 |
| lib64 | |
| local | 包含用戶程序等 |
| sbin | 管理員應(yīng)用程序 |
通過apt-get安裝的軟件
清理無用的包
sudo apt-get clean && sudo apt-get autoclean
卸載軟件和配置
sudo apt-get remove *** --purge
deb包安裝
sudo dpkg -i ***.deb
刪除軟件包命令
sudo dpkg -r ***.deb
連同配置文件一起刪除命令
sudo dpkg -r --purge ***.deb
當(dāng)U盤插入電腦(Ubuntu是直接掛載在media下面的,這里就當(dāng)是一個積累了,可能其他的類Unix系統(tǒng)會用上這個指令)
-0) sudo fdisk -l
然后看“孤立”的一塊存儲區(qū),它就是U盤的路徑
-1) sudo mount /dev/*** /mnt
把外設(shè)U盤掛載到/mnt下面,然后就可以進(jìn)入mnt下面,就發(fā)現(xiàn)里面全是U盤的內(nèi)容,在該路徑下讀寫文件的改變會直接作用于U盤。
-2) sudo umount /mnt
這樣就可以卸載外設(shè)
拷貝文件(除了cp之外還可以用dd)
dd if=輸入文件名 of=輸出文件名
示例:
(base) vincent@vincent:~/CPURam$ dd if=main.cpp of=mainNew.cpp
36+1 records in
36+1 records out
18925 bytes (19 kB, 18 KiB) copied, 0.000224686 s, 84.2 MB/s
用參數(shù)bs=100M 還可以表示創(chuàng)建的文件大小100MB,=
用參數(shù)count =1表示創(chuàng)建一次
示例:
dd if=/dev/zero of=hello.txt bs=100M count=1
bs = block size,整句話的意思就是我要生成一個100Mb的文件
PS:
-1) /dev/null: 外號叫無底洞,你可以向它輸出任何數(shù)據(jù),它都通吃,并且不會撐著!
-2) /dev/zero: 是一個輸入設(shè)備,你可以用它來初始化文件,從里面讀出來的數(shù)據(jù)都是0。
如果想把一個應(yīng)用程序設(shè)置為輸入名字即可啟動,則需要做以下幾步:
-1)sudo vim /home/用戶名/.bashrc
打開后,在里面找到“export PATH=$PATH:”
在后面追加你的應(yīng)用程序路徑->保存
-2) 打開新的shell,試運行一下
vim里面的指令(查漏補(bǔ)缺)
>> 文本塊右移
<< 文本快左移
{{ 光標(biāo)向上移動一個段落
}} 光標(biāo)向下移動一個段落
gg 光標(biāo)移動到文件開頭
G 光標(biāo)移動到文件結(jié)尾
yy 復(fù)制當(dāng)前行
Ctrl+w+w 在vim中的不同窗口之間切換
vim的配置文件有兩個,路徑分別為:
- ~/.vimrc
- /etc/vim/vimrc
其中~/.vimrc的優(yōu)先級高
gcc編譯器選項
gcc -g 選項打開表示包含調(diào)試信息,后面使用gdb的時候可以提供幫助你信息;
gcc -D 編譯時定義宏,注意-D和宏的名字之間沒有空格。這個是用于手動激活代碼中的宏定義;
#ifdef DEBUG
printf("test");
#endif
在編譯代碼的時候只要加上-DDEBUG就可以手動激活這個宏定義了。
還有兩個工具可以幫助在開發(fā)過程中進(jìn)行調(diào)試:
- nm 查看目標(biāo)文件中的符號(全局變量、全局函數(shù)等)
- objdump 用于生成反匯l編文件,主要依賴objcopy實現(xiàn),a.out編譯時需要-g,使用時的指令為:
gcc main.c -g(打開調(diào)試信息) -o a.out
objdump -dSsx a.out > file
重定向到file里面后,可以看出程序運行時的調(diào)試信息。里面可以看到C代碼,匯編碼,機(jī)器碼以及內(nèi)存使用地址??墒俏疫€是覺得這樣效率不高,因為滾動了幾千行信息之后,我只是為了找到程序出錯的停止點。我還是愿意手動打Log的。所以這個工具應(yīng)該是可以讓程序員可以查看生成得匯編代碼的。