linux環境中的一些常用命令
ll --> 顯示當前路徑下目錄的詳細信息
ls --> 顯示當前路徑下的目錄信息
-a --> 列出目錄下所有文件
-l --> 列出文件詳細信息
cd --> (+目錄名)進入指定目錄
cd .. --> 進入當前目錄的上級目錄
cd . --> 進入當前目錄
cd /home/tyy --> 絕對路徑訪問方式
cd ../tyy --> 相對路徑訪問方式
pwd --> 顯示當前目錄的路徑
/ --> 顯示該路徑時表示進入Linux的根目錄
clear --> 清屏操作
ctrl+l --> 也可以達到清屏的效果
mkdir -->(+目錄名)創建目錄
touch --> (+文件名)創建文件
rm --> (+文件名)刪除文件
rm -r --> 爲rm帶上選項 --> (+目錄名)刪除目錄
rm -rf --> (+目錄名)強制刪除目錄
sudo rm -rf --> (+目錄名)進行權限上的升級後強制刪除目錄 --> 實際應用中沒必要這麼較真的刪目錄哈
whoami --> 查看當前我是誰
man --> 向man進行諮詢
man 3 printf --> man會告訴你printf這個函數的用法以及頭文件等等
mv --> 有三種常見用法
mv 目錄名1 目錄名2 --> 將目錄名1改爲目錄名2
mv 目錄名 路徑 --> 將該目錄剪切到該路徑中
mv 目錄名1 路徑/目錄名2 --> 更改路徑並且更改目錄名
例:mv a.text /home/tyy/b.text --> 將目錄a.text放到路徑爲/home/tyy中,並將目錄名改爲b.text
cp --> 複製源文件(或目錄)到目標文件(或目錄)
cat --> 查看文件內容
more --> 類似cat,還能進行分屏顯示
b --> 向上翻屏
空格鍵 --> 向下翻屏
less --> 類似more,除了分屏還能上下走一行,還能進行查找
k --> 向上走一行
j --> 向下走一行
/ --> 後直接加需要查找的內容,系統會用高光進行標識
head --> 顯示文件的前幾行(默認打印前10行)
-n --> 後接行數m,顯示前m行
tail --> 顯示指定文件末尾內容
-n --> 後接行數m,顯示後m行
history --> 查看歷史命令
後直接數字m --> 查看剛敲過的m條命令(包括剛敲的histroy m命令)
cal --> 顯示當月的日曆信息
find --> 在目錄下查找文件
-name --> 後接文件名,以該文件名去尋找當前目錄以及子目錄下所有的該文件
-exec --> 後接命令,將找到的文件均執行該命令
-ok --> 和exec一樣的功能,區別在於每次執行命令都會進行詢問
grep --> 在文件中搜索字符串,將找到的對應行均打印出來
tar --> 將文件進行打包/解包
tar -czvf 目錄名.tar.gz 目錄名 --> 將該文件進行打包
tar -xzvf 壓縮包 --> 將打包的文件進行解包
bc --> 浮點數計算器
chmod --> 修改文件的訪問權限
+、-、= --> 分別指加、減、賦予後面跟的權限
r、w、x --> 分別指查看、修改、執行權限
Linux的編譯器(gcc)
gedit file.c --> Linux下的記事本,擁有編輯功能,編輯完成後會出現一個file.c~文件,其實是將file.c進行了備份不用考慮 --> 可在該文件中編寫代碼
gcc file.c --> 生成可執行程序 --> 默認生成的可執行程序寫入到文件a.out
gcc -E file.c -o file.i --> 將文件執行完預處理後(c語言)結束,並將結果寫入file.i中
gcc -S file.c -o file.s --> 將文件執行完編譯後(彙編語言)結束,並將結果寫入file.s中
gcc -c file.c -o file.o --> 將文件執行完彙編後(機器語言)結束,並將結果寫入file.o中
gcc file.c -o mytext --> 將文件執行完預處理、編譯、彙編、鏈接(及生成可執行程序),並將結果寫入mytext中 --> 完成整個翻譯過程
./a.out --> 執行當前工作目錄下的a.out
當執行的程序陷入死循環時,ctrl+c可以終止循環
注意:Linux默認的發佈版本爲Release,轉換爲Debug發佈 --> gcc file.c -o mytext_d -g
Linux默認的鏈接方式爲動態鏈接,轉換爲靜態鏈接 --> gcc file.c -o mytext_s -static
當然了,不適用默認的就會佔用更大的空間
Linux的編輯器(vim-系統自帶的文本編輯器)
vim 文件名 --> 新建文件/修改文件 --> 當該文件名存在時爲修改,不存在時爲新建並且下方會進行提醒
編輯
i --> 光標所在位置前插入
a --> 光標所在位置後插入
o --> 在當前行下面插入一行
O --> 在當前行的上面插入一行
I --> 在當前行的行首插入
A --> 在當前行的行尾插入
保存
:wq(:x)--> 保存並退出
:wq! --> 強制保存退出
:q! -->強制退出
查找
/ --> 後接查找內容,定位到第一個找到的
n --> 查找下一個
N --> 查找上一個
? --> 後接查找內容,定位最後一個找到的
n --> 查找上一個
N --> 查找下一個
替換
r --> 替換光標中的字符
:開始行,結束行s/舊的內容/新的內容 --> 替換每一行的第一個
:開始行,結束行s/舊的內容/新的內容/g --> 替換所有
:開始行,結束行s/\<舊的內容\>/新的內容/g --> 將舊的內容作爲單詞替換,若舊的內容作爲其他單詞的一部分則不進行替換
:%s/舊的內容/新的內容 --> 全文替換
刪除
s --> 刪除光標的一個字符並直接進入插入模式
x --> 刪除光標中的位置
dw --> 刪除光標所在位置到當前單詞詞尾
db --> 刪除光標所在位置到當前單詞詞首
dd --> 刪除當前行
m(數字)dd --> 刪除當前行及以下m行
dG --> 刪除光標所在行到文件結尾
d0 --> 刪除光標到當前行行首
d$ --> 刪除光標到當前行行尾
預處理
預處理包含宏替換、去註釋、頭文件展開、條件編譯
預定義符號
__FILE__ //進行編譯的源文件
__LINE__ //文件當前的行號
__DATE__ //文件被編譯的日期
__TIME__ //文件被編譯的時間
__STDC__ //如果編譯器遵循ANSI C其值爲1,否則報錯提示未定義
宏定義
宏定義分爲:#define定義標識符、#define定義宏
注意:#define機制允許把參數替換到文本中,這種實現稱爲宏(或定義宏)
#define ADD( x ) x*x --> 參數列表的左括號必須與ADD緊鄰,如果兩者之間有任何空白存在,參數列表就會被解釋爲後面x*x的一部分