Linux基础指令(二)

一、文件管理

1.查找文件

find

查找格式: find 路径 选项 选项值

示例: find /usr -name stdlib.h

 find是搜索每个文件夹,慢。

查找任意文件

which

查找可执行文件,一般用来查找命令 (相比较而言,查找速度快。因为which 只在指定的路径下查找,查找的是可执行文件)

which并不是在路径里搜索文件,它是去环境变量里找。

 环境变量:就是一些可执行文件的路径,系统是通过环境变量找到可执行文件。

如果系统环境变量中没有配置ls和which的路径,那么在执行ls和vi命令的时候将会失败。

示例:which ls

locate

sudo updatedb

 locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。

 locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,

 所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库

2. 压缩文件 

tar

压缩: tar cvfz dir.tar.gz dir

解压缩: tar xvfz dir.tar.gz

tar xzvf test809.tar.gz -C test 解压到指定路径下

 c 创建压缩文件

 x 解压缩

 v 显示压缩过程

 f 将多个文件打包生成一个文件

 z 以gzip格式压缩

3.链接文件

 ln

建立硬链接: ln an.c an.bak // 根据物理编号inode 节点,建立连接

 此时 an.c 和an.bak 是同一个文件的两个inode节点(文件节点)

 创建文件的时候,文件名就是一个硬链接。

touch a.c
//a.c会成为这个文件的第一个硬链接
//文件的本质是数据,我们需要通过链接访问这些数据。

 删除所有的硬链接,文件的本体就不在了。

建立软链接: ln -s an.c an.lnk // 根据路径 建立连接。 windows快捷方式一个概念

总结:

硬链接文件,相当于一个实时备份文件。 同时,文件的链接数+1 。 如果想删除文件,需要删除所有的索引域。

 索引域为0时,数据域才真正的被删除。如果文件多于1个索引。 而只删除了其中一个索引。文件的数据域并不会丢失。

软链接文件:相当于一个快捷方式。 它并不会增加文件的链接数。 是一个独立的快捷方式。 如果源文件被删除掉,

 这个文件就真的被删除掉了。 此时软链接文件失效。 只要在原来的路径下,创建相同名字的文件,则软链接文件重新生效 。

4.管道符

|

作用: 前一个命令的输出,作为第二个命令的输入。

grep 在文本中查找关键字

cat test.c|grep for 查看test.c的内容,将查找到的内容作为grep的输入。

管道符的作用,将cat test.c的输出作为输入传给grep命令,grep命令会在输入中查找for关键字

5. 重定向符号 :

把本应该输出的内容,存放到文件里

>

>>

> 重定向 会覆盖原来的内容

>> 追加重定向 会在原有内容的后面追加新内容

示例: ls / > file.txt

 

二、Gcc编译器

gcc(是一个编译器, 是GNU组织主要的编译工具)

 gcc 是一个跨平台(跨软件平台 和 硬件平台)的编译器。

跨平台,代码可以通过不同的编译器编译到适合不同平台运行的程序。

在windows下开发了一款软件,只需要使用linux支持的编译器对代码进行编译,这个软件就可以在linux下运行。这个过程叫做交叉编译。

1.编译命令

gcc 编译在不指定生成的可执行文件的名字时,默认的名字是 a.out

 -o 指定生成文件的名称

 gcc hello.c -o hello  编译hello.c文件,生成可执行文件的名字叫hello,可执行文件的名字自己起名

或者 gcc -o hello hello.c

./ 运行程序

./hello 运行名字叫做hello的程序

2.gcc 编译步骤

 经过了四步 1 预处理 2 编译 3 汇编 4 链接

 (1) 预处理

 如果只做预处理 gcc -E -o hello.i hello.c

-E代表只做预处理

include是将头文件的内容复制到include的位置。

define是使用宏值替换宏名

 

 (2) 编译(将c 文件变成汇编文件,注意此时还没有生成机器码)

 编译到汇编步骤 gcc -S -o hello.s hello.c

 (3) 汇编(将c 文件变成机器码文件(二进制文件))

 如果只做汇编 gcc -c hello.c, 会自动生成hello.o (机器码文件, 二进制文件)

 生成二进制文件人类已经无法阅读了

 (4) 链接

 gcc -o hello hello.c

-o 需要生成可执行文件的名字 hello 最终生成的可执行文件的名字

将使用的函数的源码(二进制)以及必要的库中的代码也加到可执行文件里

hello可执行文件是需要运行的 ./hello

链接之后程序变大。

3. gcc编译多个文件

main.c         add.c         del.c

main.c
void add();
void del();

int main()
{
    add();
    del();
    return 0;
}

///add.c//
#include <stdio.h>
void add()
{
printf("add\n");
}

///del.c/
#include <stdio.h>
void del()
{
printf("del\n");
}

gcc main.c add.c del.c -o main
./main

/add.h/
void add();

///del.h///
void del();

///main.c/
#include "add.h"
#include "del.h"
//""包含自己写的头文件,一般都是相对路径

int main()
{
    add();
    del();
    return 0;
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值