Linuxのコマンドベースの学習 - vimの、GCC、メイクファイル、シェル


C言語では、参照は、ヘッダファイルを作成する場合、<>記号を使用し、ヘッダファイルを#include二つの二重引用符「を用いて内蔵Cヘッダファイル」を使用します

Vimのコマンド

設定VIM:

sudo vim /etc/vim/vimrc

開いているファイルの修復では、後に追加:

= 4セットTS:タブは4つのスペースで
の表示行番号:セットNU

あなたがファイルを開くためのvimを使用する場合は、ケースに何の入力モードがありません。

DD:カーソル行全体(共通)を削除
:NDD N-ディジタル。下カーソルを削除N行、例えば20ddカーソル線20ダウン削除さ
D1Gを:最初の行の全てのデータを削除するカーソル
のdGを:削除データが最後の行に、すべてのカーソル
$ D:カーソルを削除、行の最後の文字
D0:数が0である、の行の先頭にカーソルを1つの文字を削除
X、X-: Xは後方([DEL]ボタンに相当)一文字、Xフォワード消去しました([バックスペース]すなわちバックスペースに相当)文字を削除
NX: nは後方数、n個の連続削除文字


GCCコンパイラ

GCCのコンパイル処理:前処理、アセンブラ、コンパイラ、リンカ

gccのmian.c //デフォルトのリンクを生成生成するa.out
のgcc -oメインのmain.c //メインのためa.ouを変更されます
gccの-vのmain.c //表示コンパイル
はgcc -c main.cの//コンパイラファイルへのO

gccの缶の後ろに、複数のCファイルと任意の順序で
短所:gccのそれぞれは、変更されたか否か、すべてのソースファイルをコンパイルします


make和Makefile

研究の詳細なMakefileのドキュメント:
リンク「私はメイクファイルと一緒に書いた」します。https://pan.baidu.com/s/1Wvkz-vIFXzCHBq7OLS8p-w抽出コード:bx2p

コンパイルするだけで変更されたファイルがある一方で、現在のディレクトリ内のmakefileを探し、コンパイルに使用メイクが、変更のため、makeがプロジェクト全体のリンクのルール、コンパイラのメイクファイルをコンパイル記述するために使用されるファイル管理ツール、ですすべてのファイルを含むHファイルは、時間のファイルを再コンパイルされます

プロジェクトディレクトリにあるMakefile(ノートの場合、接尾辞なし)を作成
Makefileファイルの編集規則を:

目标:依赖文件集合
	命令1
	命令2
	……
object_o = main.o input.o calcu.o

main:$(object_o) //终极目标时生成main可执行文件,放在第一行
	gcc $(object_o) -o main //将所有的o文件链接

%.o: %.c
	gcc -c $<
//上面等效于,详情在下文:
/*
main.o : main.c
	gcc -c main.c // 将c文件编译成o文件
input.o : input.c
	gcc -c input.c 
calcu.o : calcu.c
	gcc -c calcu.c 
*/

clean:
	rm *.o
	rm main

あなたは、Makefileの変数を使用することができます:文字列
参照変数方式:$(変数名)、メモしてブラケットがあることを
割り当てのいくつかのために:

[=]:現在値が将来に依存する
[=]:現在の値とわずか約の現在値
(ブロッキングおよび非ブロッキングでVerilogのようなビット上の両方)
[=]:過去に関連付けられている現在の値
【+ =] + =などの通常の変数

test1 = lyf
test2 = $(test1)
test1 = fyl
//此时test2的值为fyl

test1 = lyf
test3 := $(test1)
test1 = fyl
//此时test3的值为lyf

test1 = lyf
test4 = yfl
test4 ?= $(test1)
//此时test4的值为yfl

object = mian.o input.o
object += calcu
//此时object = mian.o input.o calcu

[%]は:ワイルドカード*と同様、任意の長さの非ヌル文字列を表し、一致するファイル名を示し
オートメーション変数:

&@ []:ルールの対象のファイルセットを示します。複数のターゲットがある場合、モデルのルールでは、その後、「$ @」は設定された目標スキーマ定義を一致させるためにある
[<&]:名前が最初の目標ターゲットを依存しています。ターゲットが定義されている依存モード(すなわち、「%」)であれば、「$は、<」ファイルセットの一連のパターンに沿ったものです。それを1つずつ取り出されることに注意してください。上記と組み合わせて%、同等の場合
^ [b]:すべてのターゲット依存のセット。スペースで区切られています。依存性の対象にはいくつかの重複は、この変数は唯一維持するために、ターゲット上の重複依存削除されることがある場合

main.o : main.c
	gcc -c main.c
input.o : input.c
	gcc -c input.c
calcu.o : calcu.c
	gcc -c calcu.c

以下に相当する3つのルール上:

%.o: %.c
	gcc -c $<

擬似ターゲットフォーマット:

.PHONY:规则名
规则名:
	命令1
	命令2

Makefileの条件:
キーワード:ifeq、ifneq、IFDEF、IFNDEF
構文の2つの方法で:

//第一种
<条件关键字>
	<条件为真时执行的语句>
endif

//第二种
<条件关键字>
	<条件为真时执行的语句>
else
	<条件为假时执行的语句>
endif

パラメータを分析ifeq等しく、反対ifneqの
ブラケットは、パラメータは、単一引用符、または二重引用符にしていることができないようにifeq(<パラメータ1>、<パラメータ2>)// ifneq

IFDEFは反対IFNDEF、変数の値が空であるか否かを判定する
同じ使用IFNDEF IFDEF <変数名> //

Makefileの機能は、既に関数呼び出しに対して定義され、以下のパラメータのカスタムセットをサポートしていない機能は、複数のパラメータは、カンマで区切られた
$(名前パラメータセット機能)または関数名パラメータセット{$}

します。https://pan.baidu.com/s/1Wvkz-vIFXzCHBq7OLS8p-w抽出コード:bx2pリンク「私はメイクファイルと一緒に書きました」


シェルスクリプト

.SHファイル名の接尾辞、実行トップダウンからの複数の命令のストレージ

//第一行一定是:
!#/bin/bash

その後、許可を与える必要があります。chmod 777 xxx.shを

インタラクティブ://は括弧なしで変数にエコー、上記のmakefileと異なる
出力:エコー

echo "your age : $age , your name : $name"

入力:読み取り
読み取りメッセージが同時に表示された複数の値を取得することができると

read -p "提示信息" 变量1 变量2

操作は、変数、整数のみサポートされます。

value=$(( $int1 + $int2 )) //两个整形变量相加

(上記の値と$の間にスペースはありません)

テストファイルが存在するかどうかを確認するために、アクセス権などの情報を含む文字列かどうか

cmd1 && cmd2 //当cmd1执行正确,才执行cmd2
cmd1 || cmd2 //当cmd1执行不正确时,才执行cmd2

[]:これは、2つの文字列が等しいかどうかを決定することができる、唯一のシンボル又は= ==あります!

[ "$str1" == "$str2" ]

デフォルトの変数パラメータを入力するには、シェルコマンド
など:./ my.sh AB //パラメータ1であり、bはパラメータであり、2

$0~$n,表示shell脚本的参数,包括shell脚本命令本身,shlle 脚本命令本身为$0
$#: #表示最后一个参数的标号。。
$@:表示$1、$2、$3 ...

条件付きのシェル:
IF文

 if 条件判断语句 ; then
 	//要执行的命令
 elif 条件判断语句 ; then
 	//要执行的命令
 else
 	//要执行的额命令
 fi

case文:

case $变量in
"第1个变量内容")
	程序段
	;; //表示该程序块结束! !
"第2个变量内容")
	程序段;;
“第n个变量内容")
	程序段
esac

スクリプト機能は、次の機能をカスタマイズすることができるオプション

function fname(){
	//函数代码段
}

:必要な質量参加場合にのみ、関数の関数名は、呼び出された
fnameはAB //渡す2つのパラメータは指示
機能のパラメータを取得する方法を:

param1:$1
param2:$2

$ S1と同じことではないのデフォルト変数関数

ループ:

//第一种
while [条件] //括号 内的状态是判断式.
do //循环开始.
	//循环代码段.
done

//第二种
until [条件] //条件不成立时则执行
do
	//循环代码段
done

//第三种
for var in con1 con2 con3 ...
do
	//循环代码段
done

//第四种
for((i=0;i<10;i=i+!))
do
	//循环代码段
done




公開された17元の記事 ウォン称賛33 ビュー10000 +

おすすめ

転載: blog.csdn.net/fengge2018/article/details/105036720