今天我学习了linux的复制与删除指令,gcc的四大步骤(预处理,编译,汇编,链接),以及静态库函数、动态库函数,以及linux 下的if-else、for、while语句的编程,以及对于.sh文件编辑,虽然这只是初步,但更是基石。
主要的指令如下;
1.命令行下的复制粘贴与删除指令,查找行数,main函数以及main函数的替换
1.1 复制;yy(前提就是你得进入文件的命令行中),复制哪行,光标则需要移到首行的首地址,再者需要复制几行,在yy前面加上相应的数字即可。
例如#include<stdio.h>
int mian()
{
printf(“my name is jjh.\n”);
return 0;
}
从首行开始复制6行,也就需要将文件调至命令行下,光标移至#处,点击6yy,(接着需要将光标移到代码下的空白处),点击p即可成功粘贴,指令成功。如果不按括号里那么做,则会导致粘贴不完全,这我在上课初学时则就遇到了类似的问题,大家尽量别犯类似问题。
1.2 对于删除指令:dd
跟上面的yy复制指令有着类似的点,那就是我们要删谁,则需要将光标移到所需删除的行的首地址,当然了我们不是仅仅只删一行,删几行就在dd前面加数字几(前提就是我们还是在vim 的文件的命令行模式下进行操作)。
例如上面的代码,我要删除 return 0; 那么我们就将光标移到r处,输入dd即可,若是从此行往后删除3行,光标不动,输入3dd即可。
在此指令执行的期间,若要撤销,我们可以输入u即可。
1.3 显示行号
命令行下 在底行模式下输入 :set nu即可
1.4文件中查找main函数并用其他字符串替代它
命令行中 底行模式下加入:/name
对于替换main函数
在命令行中输入:%s/main/abc(某个字符串)
特殊情况1:例如 main() main main main 输入:%s/main/abc/g即可(/g可以针对多个一行的多个相同变量)
情况2 :只改变某一行的main函数 可用;s/main/abc/g
2.gcc的深层的四步(预处理、编译、汇编、链接) 对于目录下的文件操作,例如hello.c 文件
2.1预处理 gcc -E -o hello.i hello.c(生成预处理文件)
vim hello.i
2.2编译 gcc -S -o hello.s hello.i(生成编译代码)
vim hello.s
2.3汇编 gcc -c -o hello.o hello.s(生成目标文件)
vim hello.o
2.4链接 gcc -o hello hello.o(生成可执行文件)
ls
相应的目录下会出现a.out文件
之后执行./a.out ls 显示出之前.c文件的输出结果。
3.静态库函数以及动态库函数的创立
3.1 静态库函数的创立
例如你之前创立了一个add.c文件,一个test.c文件,将两个函数整理到一个库函数下。
步骤如下;
3.1.1首先就是编辑上面的两个文件.
3.1.2 gcc -E -o add.i add.c
3.1.3 gcc -s -o add.s add.i
3.1.4 gcc -c -o add.o add.s
3.1.5 ar -rcs libadd.a add.o ( 打包)
3.1.6 gcc test.c -L./ -ladd (add是库名)
那么静态库函数就可建立了,即是libadd.a。
3.2 动态库函数的建立
还是之前的hello.c
执行下面的指令行
gcc -shared fPIC -o libadd.so add.c
动态库函数就建立了
4 linux下.sh的if-else for while 语句
首先对于.sh文件的创立
开头应该加上 #!/bin/sh
值前加上$
之后新建了.sh文件
相应的代码如下
4.1 for语句
#!/bin/sh
num=2
for((i=1;i<100;i++))
do
touch"$i"
done
4.2 if-else语句
#!/bin/sh
if [ $1 -lt $2 ];then
echo “$1 is smaller.”
else
echo"$2 is bigger."
fi
4.3 while语句
i =1
while [i -lt 100]
do
echo $i
if [ $((i%num)) -eq o ];then
eceho $1
fi
done
-lt 小于 -eq等于 -gt大于
5.sh文件
对于.sh文件开头都应该加上预处理语句 #!/bin/sh
以及.sh文件不需要编译。
第一周 第二天的linux学习
最新推荐文章于 2023-01-02 21:42:00 发布