Linux系统中所见皆文件
bin:所存放二进制可执行文件
boot:存放开机启动程序
dev:存放设备文件
home:存放用户
etc:用户信息和系统配置文件
lib:库文件
root:管理员宿主目录(家目录)
usr:用户资源管理目录
Linux系统文件类型:
普通文件:-
目录文件:d
字符设备文件:c
块设备文件:b
软连接:l
管道文件:p
套接字:s
未知文件。
软连接:
ln -s 文件1 文件2
为保证软连接可以任意搬移,创建时务必对源文件使用绝对路径。
硬链接:
ln file flie.hard
操作系统给每一个文件赋予唯一的innode,当有相同的innode文件存在时,彼此同步。
删除时,只将硬链接计数减一,innode被释放。
硬链接和软链接的区别:
软连接就是相当于一个快捷方式,打开的还是源文件
硬链接就相当于共享文件,就两个文件同吃同住。
find命令:
-type 按文件类型搜索 d/p/s/b/l/f 文件
-name 按文件名搜索
-maxdepth 指定搜索深度
-size 按文件大小搜索。单位:K,M,G
eg:find /home/itcast -size +20M -size -50M:它的意思是查找在20M到50M大小之间的文件
-atim,mtime,ctime:这个atime参数是开发者最近访问时间,mtime参数是开发者最近改动内容时间,ctime参数是开发者修改文件属性时间。都是find可用的查询参数。
-exec:将find搜索的结果集执行某一指定命令
eg:find /usr/ -name “tmp” -exec ls -l {} ; :这个命令的意思是查询/usr这个路径下文件名称为tmp的文件,把查询的结果放在后面大括号中,再加个转义字符表示本意,然后-exec执行大括号中的结果集。
-ok:以交互式的方式,将find搜索的结果集执行某一指定命令
eg:find ./ -name “tmp” -ok rm { } ; :这个命令表示我找到tmp文件,然后是否要进行删除它的操作,会提示开发者是否要进行删除。
-xargs:同-exec一样,也是把find搜索的结果集执行某一命令,区别在于当搜索完的结果集太大时,-exec会一股脑的处理,而-xargs会切片进行映射,处理效率会更高。
但是,xargs默认是以空格形式加以区分,若文件名是用空格隔开的,则会分成两个文件。
想要解决上述说的以空格区分的问题,则可以用参数 -print0
eg:find ./ -maxdepth 1 - type f -print0 | xargs -print0 ls -l;
它是把搜索完的结果集的分隔符以null形式打印,然后xargs也以null分隔符形式执行。
grep命令:找文件的内容
grep -r ‘要查找的内容’ ./ -n :这个命令是在当前目录下查找相关内容,并输出查到的内容的行数
**status 文件:**是查看文件状态和情况的
使用chown 一次修改所有者和所属组
sudo chown 所有者:所属组 待操作文件。
压缩命令:
tar zcvf 压缩完成的文件名字 要压缩的文件。
eg:tar zcvf jj.tar.gz j.c k.c
注意:这个z是gzip格式压缩的意思,c是创建压缩文件的意思,v是显示压缩流程的意思,f是文件的意思。这个是使用gzip格式压缩
eg:tar jcvf jj.tar.gz j.c k.c
注意,这个是使用bzip2格式压缩。
解压:
将zcvf中的c---->x
eg:tar zxvf jj.tar.gz 使用gzip格式解压缩。
tar jxvf jj.tar.gz 使用bzip2格式解压缩。
rar压缩:
rar a -r 压缩包名(带.rar后缀)压缩材料
eg:rar a -r testrar.rar stdio.h test2.mp3
rar解压:
unrar x 压缩包名(带.rar后缀)
zip压缩:
zip -r 压缩包名(带.zip后缀)压缩材料。
eg:zip -r testzip.zip dir stdio.h test2.mp3
zip解压:
unzip 压缩包名(带.zip后缀)
eg:unzip testzip.zip
GCC编译4步骤
1.预处理
2.编译
3.汇编
4.链接
编译参数:
-I:指定头文件所在目录位置
-c:只做预处理,编译,汇编。得到二进制文件
-g:编译时添加调试语句。主要支持gdb调试
-Wall:显示所有警告信息。
-D:向程序中“动态”注册宏定义。
动态库(共享库):就是一个库文件,在程序编译的时候会链接它,然后进行程序的编译,多个程序都公用这一个库,不给程序增添空间负担,但是运行速度慢。
静态库:也是一个库文件,但他相当于程序里面的一个东西,多个程序编译的时候,会把他拉进自己的程序文件中,每个编译程序都会拉一遍,会给程序增添空间负担,但是运行速度快。
两者区别:动态库是以时间换空间,静态库刚好相反。