-
標準流,重定向
查看全部 -
標準輸入流輸出流以及錯誤流
查看全部 -
argv :? 代碼的個數
argc[] :? 代碼是啥
查看全部 -
vim分為三種模式
一般模式:以vim打開或新建一個文件就可以直接進入一般模式,在此模式中,你可以使用上下左右來進行光標的移動,可以刪除字符或整行,可以復制粘貼文件數據。
編輯模式:顧名思義,就是可以編輯文本的模式,在一般模式下,按下“i,I,o,O,a,A,r,R”這些字母可進入編輯模式,進入編輯模式后在左下方會有INSERT或REPLACE的字樣。
在編輯模式下按下ESC鍵會退出到一般模式下。
命令行模式:在一般模式下,輸入” :, / , ? “這三個字符中的任意一個會將光標移動到當前頁面最下面的一行,在這個模式中可以進行數據查找、替換、保存、離開vim等操作。
使用vim filename可進入vim一般模式:
一般模式下熱鍵說明:
移動光標的方法
h?或?向左箭頭鍵(←)光標向左移動一個字符
j?或?向下箭頭鍵(↓)光標向下移動一個字符
k?或?向上箭頭鍵(↑)光標向上移動一個字符
l?或?向右箭頭鍵(→)光標向右移動一個字符
如果你將右手放在鍵盤上的話,你會發現?hjkl?是排列在一起的,因此可以使用這四個按鈕來移動光標。?如果想要進行多次移動的話,例如向下移動?30?行,可以使用?“30j”?或?“30↓”?的組合按鍵,?亦即加上想要進行的次數(數字)后,按下動作即可!
[Ctrl] + [f]屏幕『向下』移動一頁,相當于?[Page Down]按鍵?(常用)
[Ctrl] +屏幕『向上』移動一頁,相當于?[Page Up]?按鍵?(常用)
[Ctrl] + [d]屏幕『向下』移動半頁
[Ctrl] +屏幕『向上』移動半頁
+光標移動到非空格符的下一列
–光標移動到非空格符的上一列
n那個?n?表示『數字』,例如?20?。按下數字后再按空格鍵,光標會向右移動這一行的?n?個字符。例如?20?則光標會向后面移動?20?個字符距離。
0?或功能鍵[Home]這是數字『?0?』:移動到這一行的最前面字符處?(常用)
$?或功能鍵[End]移動到這一行的最后面字符處(常用)
H光標移動到這個屏幕的最上方那一行的第一個字符
M光標移動到這個屏幕的中央那一行的第一個字符
L光標移動到這個屏幕的最下方那一行的第一個字符
G移動到這個檔案的最后一行(常用)
nGn?為數字。移動到這個檔案的第?n?行。例如?20G?則會移動到這個檔案的第?20?行(可配合?:set nu)
gg移動到這個檔案的第一行,相當于?1G?啊!?(常用)
nn?為數字。光標向下移動?n?行(常用)
搜尋與取代
/word向光標之下尋找一個名稱為?word?的字符串。例如要在檔案內搜尋vbird?這個字符串,就輸入?/vbird?即可!?(常用)
?word向光標之上尋找一個字符串名稱為?word?的字符串。
n這個?n?是英文按鍵。代表『重復前一個搜尋的動作』。舉例來說,如果剛剛我們執行?/vbird?去向下搜尋?vbird?這個字符串,則按下?n?后,會向下繼續搜尋下一個名稱為?vbird?的字符串。如果是執行??vbird?的話,那么按下?n?則會向上繼續搜尋名稱為?vbird?的字符串!
N這個?N?是英文按鍵。與?n?剛好相反,為『反向』進行前一個搜尋動作。?例如?/vbird?后,按下?N?則表示『向上』搜尋?vbird?。
使用?/word?配合?n?及?N?是非常有幫助的!可以讓你重復的找到一些你搜尋的關鍵詞!
:n1,n2s/word1/word2/gn1?與?n2?為數字。在第?n1?與?n2?行之間尋找?word1?這個字符串,并將該字符串取代為?word2?!舉例來說,在?100?到?200?行之間搜尋?vbird?并取代為?VBIRD?則:『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g從第一行到最后一行尋找?word1?字符串,并將該字符串取代為word2?!(常用)
:1,$s/word1/word2/gc從第一行到最后一行尋找?word1?字符串,并將該字符串取代為word2?!且在取代前顯示提示字符給用戶確認?(confirm)?是否需要取代!(常用)
刪除、復制與貼上
x, X在一行字當中,x?為向后刪除一個字符?(相當于?[del]?按鍵),?X?為向前刪除一個字符(相當于?[backspace]?亦即是退格鍵) (常用)
nxn?為數字,連續向后刪除?n?個字符。舉例來說,我要連續刪除?10?個字符,?『10x』。
dd刪除游標所在的那一整列(常用)
nddn?為數字。刪除光標所在的向下?n?列,例如?20dd?則是刪除?20?列(常用)
d1G刪除光標所在到第一行的所有數據
dG刪除光標所在到最后一行的所有數據
d$刪除游標所在處,到該行的最后一個字符
d0那個是數字的?0?,刪除游標所在處,到該行的最前面一個字符
yy復制游標所在的那一行(常用)
nyyn?為數字。復制光標所在的向下?n?列,例如?20yy?則是復制?20?列(常用)
y1G復制游標所在列到第一列的所有數據
yG復制游標所在列到最后一列的所有數據
y0復制光標所在的那個字符到該行行首的所有數據
y$復制光標所在的那個字符到該行行尾的所有數據
p, Pp?為將已復制的數據在光標下一行貼上,P?則為貼在游標上一行!舉例來說,我目前光標在第?20?行,且已經復制了?10?行數據。則按下?p?后,?那?10?行數據會貼在原本的?20?行之后,亦即由?21?行開始貼。但如果是按下?P?呢??那么原本的第?20?行會被推到變成?30?行。?(常用)
J將光標所在列與下一列的數據結合成同一列
c重復刪除多個數據,例如向下刪除?10?行,[ 10cj ]
u復原前一個動作。(常用)
[Ctrl]+r重做上一個動作。(常用)
這個?u?與?[Ctrl]+r?是很常用的指令!一個是復原,另一個則是重做一次~?利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦!
.不要懷疑!這就是小數點!意思是重復前一個動作的意思。?如果你想要重復刪除、重復貼上等等動作,按下小數點『.』就好了!?(常用)
一般模式進入編輯模式的按鍵說明:?
i, I進入插入模式(Insert mode):
i?
為『從目前光標所在處插入』,?I?為『在目前所在行的第一個非空格符處開始插入』。?(常用)
a, A進入插入模式(Insert mode):
a?
為『從目前光標所在的下一個字符處開始插入』,?A?為『從光標所在行的最后一個字符處開始插入』。(常用)
o, O進入插入模式(Insert mode):這是英文字母?o?的大小寫。o?為『在目前光標所在的下一行處插入新的一行』;?O?為在目前光標所在處的上一行插入新的一行!(常用)
r, R進入取代模式(Replace mode):
r?
只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下?ESC?為止;(常用)
上面這些按鍵中,在?vim?畫面的左下角處會出現『–INSERT–』或『–REPLACE–』的字樣。?由名稱就知道該動作了吧?。√貏e注意的是,我們上面也提過了,你想要在檔案里面輸入字符時,?一定要在左下角處看到?INSERT?或?REPLACE?才能輸入喔!
[Esc]退出編輯模式,回到一般模式中(常用)
一般模式切換到命令行模式的按鍵說明:
:w將編輯的數據寫入硬盤檔案中(常用)
:w!若文件屬性為『只讀』時,強制寫入該檔案。不過,到底能不能寫入,?取決于當前用戶對于文件的權限,一般情況下文件的所有者以及root用戶的權限較大。
:q離開?vim (常用)
:q!若曾修改過檔案,又不想儲存,使用?!?為強制離開不儲存檔案。
注意一下啊,那個驚嘆號?(!)?在?vim?當中,常常具有『強制』的意思~
:wq儲存后離開,若為?:wq!?則為強制儲存后離開?(常用)
ZZ這是大寫的?Z?喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存后離開!
:w [filename]將編輯的數據儲存成另一個檔案(類似另存新檔)
:r [filename]在編輯的數據中,讀入另一個檔案的數據。亦即將?『filename』?這個檔案內容加到游標所在行后面
:n1,n2 w [filename]將?n1?到?n2?的內容儲存成?filename?這個檔案。
:! command暫時離開?vim?到指令列模式下執行?command?的顯示結果!例如『:! ls /home』即可在?vim?當中察看?/home?底下以?ls?輸出的檔案信息!
vim?環境的變更
:set nu顯示行號,設定之后,會在每一行的前綴顯示該行的行號
:set nonu與?set nu?相反,為取消行號!
作者:vic_wei7
鏈接:https://www.jianshu.com/p/581dcdc05277
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。查看全部 -
gcc? max.c hello.c -o main.out
#include "max.c"
int main(){? max(a,b);}
查看全部 -
我們現在寫一個程序avg.c,求任意個數的平均值:
#include <stdio.h>
int main()
{
? ? ? ? int s,n;
? ? ? ? scanf("%d,%d",&s,&n);
? ? ? ? float v=s/n;
? ? ? ? printf("v=%f\n",v);
? ? ? ? return 0;
}
退出vim進行編譯cc avg.c -o avg.out,我們得到avg.out,我們輸入3000,3。
?我們再寫一個統計輸入的程序input.c:
#include <stdio.h>
int main()
{
? ? ? ? int flag=1;
? ? ? ? int i;
? ? ? ? int count=0;
? ? ? ? int s=0;
? ? ? ? while(flag){
? ? ? ? ? ? scanf("%d",&i);
? ? ? ? ? ? if(0==i) break;
? ? ? ? ? ? count++;
? ? ? ? ? ? s+=i;
? ? ? ? }
? ? ? ? printf("%d,%d",s,count);
? ? ? ? return 0;
}
我們對這個函數進行編譯cc input.c -o input.out,我們輸入3000 3000 0,輸出總工資6000和人數2人
我們使用以上兩個程序結合起來,將所有數據進行統計input.out,之后通過管道經過avg.out計算平均值,命令可以寫為./input.out | ./avg.out,然后進行輸入,輸入完成我們便得到了對應的平均工資。 以上就是通過管道,將兩個小程序連接起來得到更復雜的程序的過程
查看全部 -
我們現在寫一個程序avg.c,求任意個數的平均值:
#include <stdio.h>
int main()
{
? ? ? ? int s,n;
? ? ? ? scanf("%d,%d",&s,&n);
? ? ? ? float v=s/n;
? ? ? ? printf("v=%f\n",v);
? ? ? ? return 0;
}
退出vim進行編譯cc avg.c -o avg.out,我們得到avg.out,我們輸入3000,3。
?我們再寫一個統計輸入的程序input.c:
#include <stdio.h>
int main()
{
? ? ? ? int flag=1;
? ? ? ? int i;
? ? ? ? int count=0;
? ? ? ? int s=0;
? ? ? ? while(flag){
? ? ? ? ? ? scanf("%d",&i);
? ? ? ? ? ? if(0==i) break;
? ? ? ? ? ? count++;
? ? ? ? ? ? s+=i;
? ? ? ? }
? ? ? ? printf("%d,%d",s,count);
? ? ? ? return 0;
}
我們對這個函數進行編譯cc input.c -o input.out,我們輸入3000 3000 0,輸出總工資6000和人數2人
我們使用以上兩個程序結合起來,將所有數據進行統計input.out,之后通過管道經過avg.out計算平均值,命令可以寫為./input.out | ./avg.out,然后進行輸入,輸入完成我們便得到了對應的平均工資。 以上就是通過管道,將兩個小程序連接起來得到更復雜的程序的過程
查看全部 -
管道:|
查看根目錄: ls /
查看Linux默認配置目錄: ls /etc/
將etc文件輸出到一個管道:ls /etc/ | grep 關鍵字符
(如:ls /etc/ | grep ab:要查找某個目錄下有多少個文件名包含"ab")
“|”是文件輸出到grep,作為grep的輸入,在Linux中作為管道,用于連接在兩個獨立的小程序建立通道,比如將“ls”的輸出結果傳給“grep”的輸入
grep是C語言的小程序,可以查詢包含指定字符的文件
查看當前進程的文件:ps(查看進程的命令) -e
(如:ps -e | grep ssh ?查看目前有多少含有ssh的進程應用)
查看全部 -
“|”在Linux中作為管道,用于連接在兩個獨立的小程序建立通道,比如將“ls”的輸出結果傳給“grep”的輸入
grep是C語言的小程序,可以查詢包含指定字符的文件
ps -e查看當前在運行的進程
查看全部 -
標準輸入流 ---> 鍵盤輸入
標準輸出流 --> 終端輸出
標準錯誤流 --> 錯誤輸出
重定向機制
>>重定向到該文件,無覆蓋
>重定向到該文件,最新
<重定向輸入文件
1>正確結果導入 2>錯誤結果導入
查看全部 -
stdin 標準輸入流 鍵盤
stdout標準輸出流 顯示器
stderr標準錯誤流
printf是對fprintf的封裝
fprintf(stdout, ?);
scanf是對fscanf的封裝
fscanf(stdin,"%d",&a);
fprintf(stderr," ");
查看全部 -
#include<stdio.h>
int
?main(
int
?argv,
char
*?argc[])
{
??
printf
(
"argv?is?%d\n"
,argv);
?
? int
?i;
?
for
(i=0;i<argv;i++){
??
printf
(
"argc[%d]is?%s\n"
,i,argc[i]);
?
? }
?
?
return
?0;
}
main 函數中 argv參數 表示執行該程序時 輸入的有效項(程序名+參數)個數;
???????????????? argc[] 參數 表示執行該程序時輸入的有效項內容(程序名, 參數);
main 中 argv 和 argc 的作用:
?? ?argv 表示參數的個數;
?? ?argc 存放參數的內容;
查看全部 -
輸出重定向:> 和 >>? ? ? ? ? ? ? ? ? ? ? ? ? >表示覆蓋,>>表示追加?
輸入重定向:<
./a.out >> a.txt
?>> 追加內容
> 單箭頭 不覆蓋,保持最新
./aout < input.txt 輸入流
輸出流、錯誤流、輸入流
./a.out 1>t.txt 2>f.txt <input.txt
查看全部 -
stdin輸入流
stdout輸出流
stderr錯誤流
查看全部 -
ls -l -a:詳細顯示隱藏內容
cp 文件名 文件名 拷貝
\n換行
查看全部
舉報