花瓣小跑 发表于 2024-8-28 19:56:25

Linux常用下令及组件

Linux

MultiTask 的意思是多任务,代表着 Linux 是一个多任务的操纵体系。
SMP 的意思是对称多处置惩罚,代表着每个 CPU 的职位是相等的,对资源的使用权限也是相同的,多个 CPU 共享同一个内存,每个 CPU 都可以访问完整的内存和硬件资源。
ELF 的意思是可实行文件链接格式
Monolithic Kernel 的意思是宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是一个完整的可实行步伐,且拥有最高的权限。


[*] 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
[*] 混淆内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的步伐;
常用下令

echo(打印到终端)

cd(更改路径)

切换当前目录家路径:cd ~
切换俩个路径 cd -
ls(表现子文件)

-a:表现全部文件
-l:表现详情信息,文件类型, 文件全部者对文件的操纵权限, 文件所属组用户对文件的操纵权限, 其他人对文件的操纵权限, 硬链接计数, 文件全部者, 文件所属组, 文件大小, 文件的修改日期, 文件名
-F: 目录之外文件加/
mkdir(创建目录)

-p :多级目录
rm(删除)

rmdir:只能删除空目录
-i: 删除的时间给提示 -f: 逼迫删除文件, 没有提示直接删除并且不能规复, 慎用
cp(拷贝)

cp source dest

cp [选项] 源文件 目标文件 mv(移动、改名)

mv source dest
mv source... directory


[*]-b: 当目标文件或目录存在时,在实行覆盖前,会为其创建一个备份。
[*]-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操纵。
[*]-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
[*]-n: 不要覆盖任何已存在的文件或目录。
[*]-u:当源文件比目标文件新或者目标文件不存在时,才实行移动操纵。
cat、head、tail(文件检察)

cat:如果文件太大数据就不能完全表现出来了,因此该下令适合检察比较小的文件内容。
head -行数 文件名(默认十行)
tail -行数 文件名(默认十行)
ln(软连接、硬连接)

语法: ln -s 源文件路径 软链接文件的名字(可以带路径)
ln 源文件 硬链接文件的名字(可以带路径)
chmod权限修改

chmod [+-=] wrx(读、写、实行)
chmod [+-=]421(读、写、实行)
chown(修改所属者)

chown 新的全部者 文件名
chown 新的全部者:新的组名 文件名
tree(树状目录)

tree [-L n] # 检察当前目录的结构, n为表现的目录层数 tree 目录名 [-L n] # 检察指定目录的结构, n为表现的目录层数
pwd(表现当前目录)

torch(创建空文件)

which(表现实际路径)

>、>>

>: 将文件内容写入到指定文件中, 如果文件中已有数据, 则会使用新数据覆盖原数据
>>: 将输出的内容追加到指定的文件尾部
文件压缩

tar

c: 创建压缩文件 z: 使用gzip的方式进行文件压缩 j: 使用bzip2的方式进行文件压缩 v: 压缩过程中表现压缩信息, 可以省略不写 f: 指定压缩包的名字
tar 参数 天生的压缩包的名字 要压缩的文件(文件或者目录)
解压缩:
x: 释放压缩文件内容 z: 使用gzip的方式进行文件压缩, 压缩包后缀为.tar.gz j: 使用bzip2的方式进行文件压缩, 压缩包后缀为.tar.bz2 v: 解压缩过程中表现解压缩信息 f: 指定压缩包的名字
zip

zip [-r] 压缩包名 要压缩的文件
unzip 压缩包名 -d 解压目录(默认当前目录)
查找

find

find 搜索的路径 -name 要搜索的文件名
find 搜索的路径 -type 文件类型
-size 4k 表示的区间为 (4-1k,4k], 表示一个区间, 大于3k,小于即是4k -size -4k: , 表示一个区间, 大于即是0 并且 小于即是3k -size +4k: (4k, 正无穷), 表示搜索大于4k的文件
-maxdepth: 最多搜索到第多少层目录 , -mindepth: 至少从第多少层开始搜索
gcc、g++

预处置惩罚: 在这个阶段主要做了三件事: 展开头文件 、宏替换 、去掉注释行,这个阶段需要GCC调用预处置惩罚器来完成, 终极得到的还是源文件, 文本格式 编译: 这个阶段需要GCC调用编译器对文件进行编译, 终极得到一个汇编文件
汇编: 这个阶段需要GCC调用汇编器对文件进行汇编, 终极得到一个二进制文件
链接: 这个阶段需要GCC调用链接器对步伐需要调用的库进行链接, 终极得到一个可实行的二进制文件

区别

在代码编译阶段(第二个阶段):
后缀为 .c 的,gcc 把它看成是C步伐,而 g++ 看成是 C++ 步伐 在链接阶段(末了一个阶段): g++ 可以自动链接到尺度C++库, gcc如果要链接到尺度C++库需要加参数 -lstdc++
g++ 会自动界说__cplusplus宏,但是这个不影响它去编译C步伐
gcc 需要根据文件后缀判断是否需要界说 __cplusplus 宏 (规则参考第一条)
静态库/动态库

在Linux中静态库以lib作为前缀, 以.a作为后缀, 中心是库的名字自己指定即可, 即: libxxx.a
ar rcs 静态库的名字(libxxx.a) 原材料(*.o)
在Linux中动态库以lib作为前缀, 以.so作为后缀, 中心是库的名字自己指定即可, 即: libxxx.so
gcc 源文件(*.c) -c -fpic
gcc -shared 与位置无关的目标文件(*.o) -o 动态库(libxxx.so)
动态库无法加载标题

找到相关的设置文件
用户级别: ~/.bashrc —> 设置对当前用户有效 体系级别: /etc/profile —> 设置对全部用户有效
添加export LD_LIBRARY_PATH =$LD_LIBRARY_PATH :动态库的绝对路径
重启终端
优缺点

长处:
静态库被打包到应用步伐中加载速率快 发布步伐无需提供静态库,移植方便 缺点:
相同的库文件数据可能在内存中被加载多份, 消耗体系资源,浪费内存 库文件更新需要重新编译项目文件, 天生新的可实行步伐, 浪费时间。
长处:
可实现不同历程间的资源共享 动态库升级简朴, 只需要替换库文件, 无需重新编译应用步伐 步伐猿可以控制何时加载动态库, 不调用库函数动态库不会被加载 缺点:
加载速率比静态库慢, 以现在盘算机的性能可以忽略 发布步伐需要提供依赖的动态库

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Linux常用下令及组件