Linux c语言实践开发笔记

  • 常用命令

    sudo apt-get install 软件名称 安装软件命令,sudo表示要用管理员权限,安
    装系统软件必须用管理员权限。

    sudo apt-get update 这个命令用于更新自己系统的资源

    cc -v 这个命令是检查当前编译器版本,gcc -v可以查到相同信息,

    软件 -v 查看系统中是否有某个软件和其版本。

    clear 这个命令是清洁屏幕

    cd ~ 表示进入当前用户的家目录,后面也可以用绝对路径进入家目录的某一文件夹

    pwd 查看当前工作目录

    ls 显示当前目录下包含哪些文件

    ls / 表示查看根目录内容。

    ls /etc/ | grep ab 查看etc中含有ab的文件或文件夹,这个命令用了管道,将ls
    的输出流作为grep命令的输入流。

    grep 查找管道传过来的或者文件中的特定的字符串或者字符,结果显示在终端,输出为包含字符串的文本行(若是单个文件)。对文件的格式是 grep 待查询字符 文件名,待查询字符前可以加参数,-i表示不区分大小写,-v表示反向查找,找出不含有待查询字符的行。若是多个文件,则输出包含特定字符串的文件名和文本行,grep “shis” demo* 表示查询所有以demo开头的文件。

    ls -l 可以显示当前目录中文件的详细信息

    ls /etc 查看etc目录

    ps -e 查看系统当前运行的进程

    ls /ect >>ect.txt 查看etc目录内容,并将这些内容重定向到etc.txt文件

    touch 创建文件

    cat 文件名 查看文件内容。

    cp 拷贝文件,例如:cp max.c min.c

    mkdir 创建文件夹(目录)

    rmdir 删除空文件夹

    rm 删除非空文件夹和文件

    rm *.o 删除所有以.o结尾的文件

    vim 文件编辑器,可以编辑存在的文 件,也可以创建文件,vim a.c 表示创 建文件并编辑。

    w 在vim中保存文件

    i 在vim中按i表示在当前光标位置处插入一个字符,按a是在当前光标后面插入一个字符,shift+a表示在行尾插入,o表示在下一行插入字符,shift+i表示在当前行的行首插入字符,shift+o表示在上一行插入字符。命令模式下两个dd可以整行的删除内容;按x可以删除光标处的字符。

    gcc -o 文件名.out 编译程序

    ./文件名.out 执行程序。


  • 编译程序
    在vim里面可以同时打开多个文件,在命令模式下进入“:”模式下输入:sp 文件名,就可以在原有基础上新加一个文件,二者显示在同一个界面上,可以通过ctrl+w+下箭头或者上箭头 在上面的文件和下面的文件相互转换,在命令模式下点击:后通过set nu 命令来设置程序行号;设置完行号后,在想要复制的代码第一行输入从此开始要复制的行数,然后按两次dd就可以将相应内容送到剪切板,然后换到别的文件,点击p就可以将代码复制过去。在“:”模式下点击wqa表示保存所有文件。
    编译多个文件方法:gcc max.c hello.c -o main.out 将多个文件编译到一个可执行文件当中;执行时用./main.out 即可。注意在hello中声明max函数。
    若在main函数当中有#include “max.c”时只需要编译主函数所在文件就行,且不需要声明。
    gcc -c max.c -o max.o 这个命令仅仅把max编译,但是max.o 不可以被执行;
    gcc max.o hello.c 这个命令将编译好的max.ohello.c同时编译,仅生成一个文件,这时在hello中直接是用max.o中的函数和内容,不需要声明(自己验证一下要不要声明);这样做是为了提高效率,节约时间。
    echo $? 这个命令用于在程序执行结束后查看main返回值

main中的参数

int main(int argv,char* argc[])
这两个参数由系统给出
当用./a.out编译程序时argv为1,此时,argc中只有"./a.out"一个字符串,当
在./a.out后面加上m个字符串时,argv为m+1;argv表示argc中字符串的个数。

make的使用

//make适合于管理一个大的含有很多程序的项目。
vi Makefile  
/*这个是使用make工具所需要的文件,每次使用make都要先编辑这样一个文件,
放入项目相关内容,在Makefile文件中注释以#开头,*/
例如:
hello.out:max.o min.o hello.c -o hello.out
//告诉make工具,要生成hello.out需要这三个文件
      gcc max.o min.o hello.c //告诉make,文件生成方式。
         //gcc前面的空格要注意是一个Tab,六个空格。
max.o:max.c
      gcc -c max.c         
//因为当前文件夹中不存在max.o,所以要现生成

写完Makefile文件之后,直接在命令行输入make就可以将Makefile文件所包含的
整个大的程序编译好,make严格按照Makefile中指定的方式来执行,Makefile中
以前编译好的文件,在本次编译中直接使用,若代码修改后,就会重新编译生成。

  • linux的输入流、输出流和错误流
printf是对fprintf的封装:fprintf(stdout,"格式化列表",参数列表);
scanf是对fscanf的封装:fscanf(stdin,"%d",&n);
fprintf(stderr,"错误信息");

stdout、stdin、stderr是三个文件指针变量,分别对应三个标准流文件,这
三个标准流文件与终端有默认的对应关系程序运行时系统会自动打开这三个标准
流文件。标准错误流要求函数返回值不等于0。

可以对以上三个流文件重定向,0对应标准输入流,1对应标准输出流,2对应标
准错误流,可以用"1>>文件名"来将输出流重定向,用"0<<文件名"来将输入流
重定向,">>"不会覆盖前面的内容,算是追加模式,即每次执行程序后显示时都
会显示以前的内容,而">"会把对应文件前面的内容覆盖掉即只显示本次执行产生
的内容,算是覆盖模式。
完整重定向语句为:./a.out 1 >> a.txt
可以对多个流同时重定向:./a.out 1>>a.txt 2>>f.txt

管道 “|”表示管道,将其前面一个操作输出流给后面一个操作作为输入流使用。例如:ps -e | grep ssh ,当然,两个不同的c语言程序也可以通过管道连接起来,将前一个程序的输出流作为后一个程序的输入流;示例:./intput.out | ./avg.out

猜你喜欢

转载自blog.csdn.net/qq_39785575/article/details/79944611