Linux基础(指令+工具)
Linux基础指令
- 基本概念
1.谈到linux,最先想到,linux和window有什么区别呢?
linux是一个多用户操作系统,多用户同时操作,但都有各自访问权限
linux下一切皆文件,文件夹也只是一个目录类型的文件而已
linux下的目录结构与磁盘分区的关系:目录结构唯一,是一个树形结构,最底层是一个根目录;可以将磁盘分区挂载在目录上给目录分配空间,即给一个指定的目录单独分配一块存储空间
window与linux不同,window的目录结构为一种磁盘分区以及分配目录结构的方式,即每一个单独空间都有一定的目录结构
2.文件所在位置的路径表示
绝对路径:路径以根目录作为起始
相对路径:路径以当前所在目录作为起始
- 目录相关指令:
基础指令的格式:命令名称 【操作选项】 【操作对象】
(1)ls 浏览当前目录,查看当前目录下内容
目录就是常说的文件夹,打开一个新的终端,默认会处于一个目录中,这个目录就是当前登录用户的家目录
ls -l 查看文件中详细内容信息
ls -a查看隐藏文件
文件类型并不以文件后缀区分,后缀只是便于用户区分的一种标记而已
linux下以.符号作为起始的文件名都是预测文件
ls -la 组合选项,查看包含隐藏文件在内的所有文件详细内容信息
(2)man 手册查看 man ls 按q退出
(3)pwd 显示当前所在目录的路径
. 表示当前目录自身
.. 表示是当前目录的父目录
(4)mkdir 创建目录
mkdir -p 递归多层级创建目录 如果那一层不存在就创建那一层
(5)rmdir 删除空目录 如果删除目录中存在需要删除的文件夹 删除一般不采用rmdir 而是使用rm删除
rmdir -p 删除目录的同时将父目录删除
(6)rm 删除文件或目录(默认只能删文件,不能删目录)
rm -r 递归的删除掉目录中所有文件之后,然后再删除目录自身
rm -f 忽略提示信息直接进行操作
(7)cp 拷贝一个文件到指定位置
cp -r 递归拷贝目录中所有文件到制导位置
(8)mv 将一个文件移动到另一个位置(剪切)
(9)cd 进入指定的目录(改变当前的工作路径)
- 文件相关指令:
(1)touch +文件名 刷新文件的时间属性,如果指定文件不存在则创建这个文件
在linux下,一个文件有三种时间属性: 访问时间、修改时间、状态改动时间。
访问时间: 记录文件最近被阅读的时间(vim,cat,more等命令都能修改该值)。
修改时间: 记录文件最近被修改的时间(ls -l命令显示的时间即为该时间)。
状态改动时间: 记录该文件的inode节点被修改的时间。touch命令除了-d和-t选项外都会改变该时间。而且chmod,chown等命令也能改变该值。
(2)cat 打印文件内容(常用于查看短小的文件内容,直接在终端上打印)
(3)more 分页显示文件内容
空格:向下翻页 回车:向下按行滚动 q:退出
(4)less 分页显示文件内容
进入后:按f/b上下翻页 j/k按行滚动 匹配查找字符串:/ + str向下查找 ?+ str 向上查找 按q退出
(5)head 显示文件的前n行内容 默认前10行
也可以指定行数: head -n 3 +文件名 显示前3行内容
(6)tail 显示文件的末尾n行内容 默认末尾10行
也可以指定行数: tail -n 3 +文件名 显示末尾倒数3行内容
(7)head 和tail混合使用 通过管道符 实现显示文件 第10行内容
head -n 10 文件名 | tail -n 1
管道符:连接两个命令,将前边命令的处理结果,交给后边命令继续处理
- 打包相关指令:
三种压缩方式:
(1)zip/unzip:
zip test.zip file1 file2…
unzip test.zip
(2)gzip/gunzip:
gzip test.gz file1 file2…
gunzip test.gz
(3)bzip2/bunzip2:
bzip2 test.bz2 file1 file2…
bunzip2 test.bz2
常用打包压缩指令:
tar 对多个文件或文件夹进行打包/解包,并且可以进行压缩/解压缩
tar -c:打包 tar -x :解包
-z:按照gzip格式压缩/解压缩 -j:按照bzip2格式压缩/解压缩
即:tar -czvf 打包压缩 tar -xvf 解包解压缩
- 匹配查找指令
(1)grep 在指定文件中匹配包含指定字符串的行
-n 显示匹配到的包含指定字符串的行在文件中的行号
-R 在指定目录中对所有文件逐个进行字符串匹配
-v 匹配不包含指定字符串的行
-i 忽略大小写进行匹配
(2)find 在指定的目录中查找符合指定规则的文件
-name 通过文件名查找文件
-size +/-[cbkMG]通过文件大小查找文件 根据文件大小 +表示大于该大小的文件 -表示小于该大小的文件
-type 通过文件类型查找文件
-amin/-mmin/-cmin -ctime/-atime/-mtime 按照时间查找文件(min是分钟 time是天 a是访问时间 m是内容修改,c是文件变更(权限,位置变更))
- 权限指令
(1)su username 切换用户
(2)sudo 对当前用户的这次操作进行提权
(3)u文件所有者 g文件所属组 o其他用户
r可读【可浏览】 r可写【在目录中创建删除文件 文件内容修改】 w可执行 【可进入】
(4)umask 查看或设置权限掩码 umask 002 对应权限 775
默认在shell中文件创建权限 掩码取反 或 777-usmask
(5)chmod 修改文件权限
(6)特殊权限:沾滞位 目录文件针对其他用户的一个权限
每个人只能在目录中创建文件或删除自己的文件,不能删除别人的文件
(7)chown 修改文件所有者 chown root file
linux基础工具
- yum安装工具
1,yum makecache命令:将服务器的软件包信息缓存到本地
2,yum search命令:在所有软件包中搜索指定名称的软件包
3,yum upgrade/update命令:更新所有软件包(二者区别不大)
4 ,yum clear all 命令:清除缓存中所有软件包
5,yum install命令: 安装
6,yum remove命令: 卸载
- 编辑器 vim
(1)普通模式:完成文本操作,光标移到,其他指令操作
光标移动: hjkl-左下上右; ctrl+f/b-上下翻页; gg/G-文档首行、尾行跳转
内容操作∶复制: yy/nyy,粘贴: p/np;剪切删除: dd/ndd—删除行,x-删除光标所在字符, dw-删除单词其他操作:撤销-u,反向撤销-ctrl+r;全文对齐-gg=G
(2)插入模式 i 插入数据
(3)底行模式:保存退出文件 Esc-> : wq :q :q!(强制退出)
注意:一个文件保存常出现的bug提示:
vim打开一个文件后,通常会创建一个临时文件以.sw*结尾
vim打开文件后,创建临时文件,编辑的时候会修改这个临时文件,只有在保存的时候,才会将修改的信息,写入到源文件中
注意:正常退出vim的时候会删除临时文件并且在文件没有正常关闭退出vim时,这个临时文件不会被删除每次打开源文件的时候都会有提示信息,这时候退出,
使用ls -a查看隐藏文件,删除掉这个交换文件以后就不会有提示了
- 编译器
(1)编译阶段:
预处理阶段:展开所有代码(引入头文件,宏替换,删除注释……
编译阶段:检查语义语法错误;如果没有错误则将C语言解释成为汇编语言
汇编阶段:将汇编代码解释成为二进制的cpu指令
链接阶段∶将所有的指令代码打包到一起(不仅是打包我们自己的代码,还有链接库文件中的库函数指令代码),进行组织为可执行文件
(2)gcc编译器指令
gcc:C语言编译器、g++:C++语言编译器
-E只进行预处理;-S只进行编译处理;-c只进行汇编处理-О指定输出文件名称
(3)动态链接库/静态链接库
动态链接︰链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函数的符号信息
表,在运行可执行的时候需要去加载动态库到内存中。如果动态库不存在,则程序无法运行
动态链接的优缺点:生成可执行程序比较小,运行时动态库被加载到内存中,可以多个程序使用同一份内存中库函数代码;缺点是运行时需要依赖动态库的存在,不存在则无法运行 gcc编译器采用了动态链接库
静态链接∶链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到了可执行程序文件中,程序运行的时候没有什么依赖
静态链接的优缺点:程序运行没有其他依赖,可以直接运行;但是可执行程序比较大,并如果多个程序使用同一个库中的函数,则这些程序同时运行时,则相同的库函数代码在内存中会存在多份,各是各的。
- gdb调试器
目的:为了排查程序的运行错误
程序的错误分类:编译错误,链接错误,运行时错误(运行中逻辑不对以及程序运行时崩溃)
调试程序的前提:程序必须是一个debug版本,gcc/g++默认生成release版本, -g选项 生成debug可调式版本
gdb常用调试指令:gdb ./test.exe
流程控制:
r run :直接运行程序
start:开始逐步调试
l list:查看调试行附近代码
n next:下一步—逐过程—遇到函数直接运行完毕
s step:下一步—逐语句—遇到函数进入函数继续调试
until:直接运行到指定位置 until test.c:16 运行到16行
continue:继续从当前调试位置运行
b break:打断点 break test.c:14 在14行断点
ib info break: 查看断点信息
d delete:删除断点 delete id
watch:变量监控断点—当变量发生改变的时候停下来 watch variable_name
q quit:退出gdb
内存控制:
p print:查看或设置变量内容 示例:print variable_name 查看变量 print variable=3 可以设置更改变量值大小
bt breaktrace:查看函数调用栈—通常用于检测程序运行时崩溃位置
- make/Makefile:项目的自动化构建工具
Makefile:文本文件,记录一个项目的构建规则流程
makefile编写规则:
目标对象,依赖对象 , \t 为了生成目标对象要执行的指令,预定义变量 ,伪对象
预定义变量的使用:$@表示目标对象 $^表示所有依赖对象 $<表示依赖对象的第一个
伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成 .PHONY:
make:是一个解释程序,对Makefile中记录的构建规则流程逐步解释执行,完成项目的构建
make解释执行规则:
1,make指令表示运行make解释程序,程序会在当前目录下找到名称为makefile/Makefile文件,解释执行其中的项目构建规则
2,判断目标对象是否已经存在,存在的话是否需要重新生成—根据源码文件的最后一次修改时间对比
3,make每次在makefile中只会找到第一个目标对象进行生成,生成之后退出
4,make在生成目标对象的时候,会先查找依赖对象的生成规则,先生成依赖对象,然后再去生成目标对象
基本写法示例:
main:main.o child.o
gcc $^ -o $@
%.o:%.c
gcc -c $< -o $@
.PHONY:clean
clean:
rm main.o child.o main
- git项目版本管理工具
1, 在github建立远程仓库
2,将远程仓库克隆到本地: git clone https://github/AllenSquirrel/….
3,提交本次修改记录 git add —all ./ (提交指定文件 git add path/file)
4,提交本次仓库版本管理 :git commit -m “本次修改的备注信息”
5, 将本地版本同步到远程仓库:git push origin master(master是主分支)
还没有评论,来说两句吧...