Linux基础指令、工具

目录相关指令

命令名称 [操作选项] [操作对象]
man 命令信息(查看命令信息内容)
ls——浏览当前目录
ls -l——浏览目录详细信息
ls -a——查看隐藏文件

mkdir ——创建目录
-p 递归多层级创建目录,哪一层不存在就创建哪一层 mkdir -p ./asd/df/ss
rmdir:删除空目录
-p:删除目录的同时,把祖宗目录也删除 rmdir -p ./asd/df/ss
rm:删除文件或目录(默认只能删文件,不能删目录)
-r :递归的删除掉目录中所有文件之后,然后再删除目录自身
-f:忽略提示信息直接进行操作
cp:拷贝一个文件到指定位置
-r:递归拷贝目录中的所有文件到指定位置
mv:将一个文件移动到另一个位置(剪切)
mv ./* command/:将当前文件下的所有文件移动到command文件下

文件相关指令

touch 后边跟一个文件名称,刷新文件的时间属性,如果文件不存在则创建这个文件
文件的时间属性三种:最后一次访问时间,最后一次修改时间,最后一次状态改变时间
cat 打印文件内容(常用于查看短小的文件内容)
more 分页显示文件内容
进入后:使用空格向下翻页;回车向下按行滚动;按q退出
less 分页显示文件内容
进入后:按f/b上下翻页;j/k按行滚动;匹配查找字符串:/string向下查找 ?string向上查找;按q退出
head -n 文件名 ——显示文件前n行内容
tail -n 文件名 ——显示文件末尾n行内容
显示文件的第十行数据:前十行的最后一行 head -n 10 文件名 | tail -n 1
特殊符号:|
管道符:连接两个命令,将前边命令的处理结果,交给后边命令继续进行处理

压缩解压缩

打包压缩指令:
打包压缩文件
三种压缩方式:
zip :zip test.zip file1 file2
gzip:gzip file
bzip2:bzip2 file
解压:
unzip 文件名.zip
gunzip file.gz
bunzip2 file.bz2

tar对多个文件或文件夹进行打包/解包,并且可以进行压缩/解压缩
-c 打包;
-x 解包;
-z 打包或解包时按照gzip格式压缩/解压缩;
-j 打包或解包时按照bzip2格式压缩/解压缩;
-v 显示详细打包解包信息;
-f 指定包名;
打包:tar -czvf file.tar.gz file1 file2 dir1 …;
解包:tar -xvf file.tar.gz

匹配查找指令

grep:再指定的文件中匹配包含指定字符串的行
grep ‘要查找的字符串’ 文件名
grep ‘root’ test
grep -n ‘root’ test:显示要查找的在多少行
grep -n -i ‘root’ test:-i忽略大小写查找
-R:在指定目录中堆所有文件逐个进行字符串的匹配
find:在指定的目录中查找符合制定规则的文件
find ./ -name ‘test’:通过文件名查找文件
find ./ -size +2000c:通过文件大小查找文件
find ./ -type d:通过文件类型查找文件
-amin / -mmin / -cmin / -ctime / -mtime:按照时间查找文件(min是分钟,time是天)
find ./ -mmin -3 :查找3分钟以内修改过的文件(这个命令常用于删除过期文件)

对文件访问权限

对于访问用户的分类:文件所有者u,文件所属组g,其他用户o
对于访问操作的分类:可读(可浏览)r,可写(在目录中创建删除文件)w,可执行(可进入)x
linux中文件权限的表示方式:
rex rex rex 不具备权限则以-表示
例:
-rw- r-- r-- ~~~~~~~~
所有者可读可写不可执行
所属组可读,不可写不可执行
其他用户可读,不可写不可知性

drw- r-- r–
前面第一个-表示文件类型,-表示普通文件,d表示目录类型(文件夹)

除了字符表示还可以使用八进制数字表示
111 111 111 -> 777
rwx rwx rwx

文件权限相关指令
设置文件的默认创建权限:通过文件创建权限掩码设置
umask 查看或设置权限掩码
默认在shell中文件的默认创建权限,就是掩码取反,或者777-umask
修改文件权限:
chmod 修改文件权限
针对指定用户添加或删除权限 chmod [augo]+/- [rwx] 例:chmod u+r asd.txt
直接使用八进制数字指定:chmod 777 asd.txt

特殊权限:沾滞位–针对其他用户的一个权限
每个人(其他用户)只能在目录中创建文件或者删除自己的文件,不能删除别人的文件

username -m username:添加用户
passwd username:设置密码

su root 切换管理员用户
useradd -m tmpuser:创建新用户,名为tmpuser
su tmpuser
创建好的新用户只能在自己的目录中创建文件
先确认是否在自己的目录下,如果没有,没有权限,需要切换到自己目录下/home/tmpuser
userdel -r test:删除用户
sudo:为用户操作提权限的命令

工具

  • 编辑器:vim

vim操作模式分类:共有12中,最常用的是三种—普通、插入、底行
模式切换:vim filename 打开文件后,默认处于普通模式
普通->插入:i 光标在哪里就从哪里开始插入; o 在光标所在行下方添加新行开始插入
插入->普通:ESC
普通->底行:英文冒号
底行->普通:按ESC(任意模式按ESC健都可以回到普通模式)

底行模式下的操作:
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存强制退出
普通模式下的操作:
光标移动操作:hjkl 左下上右;ctrl+f/b 上/下翻页;gg/G 文档首行和末尾行
文本内容操作:yy / nyy复制 / 复制n行;p / np粘贴 / 粘贴n行;dd 剪辑删除光标所在行
其他操作:u撤销操作; ctrl+r撤销的反向操作;gg=G全文对齐(按照C语言风格缩进对齐)

:vsplit新窗口出现在当前窗口的左边
:vnew==:vertical new
":vertical"可以出现在任何分隔窗口的命令前

CTRL-W h 到左边的窗口
CTRL-W j 到下面的窗口
CTRL-W k 到上面的窗口
CTRL-W l 到右边的窗口
CTRL-W t 到顶部窗口
CTRL-W b 到底部窗口
(变大写就是移动窗口)

  • 编译器:gcc/g++

编译过程:将高级语言代码解释成为机器指令经过了那些阶段
预处理阶段:展开所有代码(引入头文件,宏替换,删除注释…)
编译阶段:检查语义语法错误,如果没有错误将C语言解释成为汇编语言
汇编阶段:将汇编代码解释称为二进制的cpu指令
链接阶段:将所有的指令代码打包到一起(不仅是打包我们自己的代码,还有链接库文件中的库函数指令代码),进行组织成为可执行程序
gcc:C语言编译器、g++:C++语言编译器
-E 只进行预处理
-S 只进行编译处理
-c 只进行汇编处理
-o 指定输出文件名称
分步演示:
gcc -E test.c -o test.i
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc test.o -o test.exe
一步到位:
gcc test.c -o test
库:通常被认为是函数库,文件中包含大量的函数实现的二进制代码指令(比如我们所使用的printf函数)
链接方式:静态链接、动态链接;gcc/g++默认连接方式是动态链接
动态链接:连接动态库,在生成的可执行程序中只记录了库中的函数符号信息表,运行程序的时候再去加载动态库(相同函数代码在内存中多个程序可以共享);
静态链接:链接静态库,直接将在库中所使用到的函数指令写入到可执行程序中,程序可以直接运行不依赖库。

  • 调试器:gdb

调试器的功能:调试,观察程序的运行过程,通常目的是为了排查程序的运行错误。
调试程序的前提:程序必须是一个debug版本的程序-- gcc/g++默认生成release版本程序,若要生成debug版本,则使用-g选项
gcc -g test.c -o test.exe
可执行程序的分类:debug-调试版–不对代码进行优化,并且加入程序调试信息、release-发布版–不包含调试信息,并且对代码进行优化
gdb常用调试指令:gdb ./test.exe
流程控制:(加粗为对应简写)
r、 run :直接运行程序
start:开始逐步调试
l、 list n:查看第 n 行附近代码
lsit test.c:12 :查看程序第12行的代码
n、 next:下一步–逐过程–遇到函数直接运行完毕
s、 step:下一步–逐语句–遇到函数进入函数继续调试
until:直接运行到指定位置。 示例:until test.c:16 第16行
c、 continue:继续从当前调试位置运行

break:打断点
示例:break test.c:14 、break function_name
break function_name
info break:查看断点信息
i b、info break:查看断电信息
d、delete:删除断点 示例:delete id
watch:变量监控断点–当变量发生改变时停下 watch variable_name
q、quit:退出gdb调试

内存控制:
p、print:查看或设置变量内容,示例:print var_name 、print var=val
bt、backtrace:查看程序调用栈–通常用于检测程序运行时崩溃位置
栈顶位置的函数就是函数发生崩溃的位置

make/Makefile:项目的自动化构建工具
Makefile:是一个文本文件,其中记录一个项目的构建规则流程
Makefile的编写规则:
目标对象:依赖对象
\t(一个制表符) 为了生成目标对象要执行的指令

test:test.c
	gcc test.c -o test

预定义变量的使用: @ 、 @ 、 @^、 < ,用于指令中, <,用于指令中, <,用于指令中,@表示目标对象, 表 示所有依赖对象, ^表示所有依赖对象, 示所有依赖对象,<表示依赖对象的第一个

test:test.c
	gcc $^ -o $@
#$(wildcard ./*.c)获取当前目录下所有以.c结尾的文件的文件名称
src=$(wildcard ./*.c)
test:$(src)
	gcc $^ -o $@

如果只修改一个.c文件,需要重新编译所有.c生成可执行程序–效率低下
一次分为两步进行操作,先把每个.c生成自己的.o,再将所有的.o文件进行链接。
如果有一个.c文件发生了变化,只将该.c文件重新编译生成.o,再重新链接一次就可以生成可执行程序(其他的.c不需要重新编译)

#$(wildcard ./*.c)获取当前目录下所有以.c结尾的文件的文件名称
src=$(wildcard ./*.c)
#将src变量的内容中的.c替换成为.p,然后存放在obj变量中
obj=$(patsubst %.c, %.o, $(src))
test:$(obj)
	gcc $^ -o $@
%.o:%.c
	gcc -c $< -o $@

伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否要生成

#$(wildcard ./*.c)获取当前目录下所有以.c结尾的文件的文件名称
src=$(wildcard ./*.c)
#将src变量的内容中的.c替换成为.p,然后存放在obj变量中
obj=$(patsubst %.c, %.o, $(src))
test:$(obj)
	gcc $^ -o $@
%.o:%.c
	gcc -c $< -o $@

#伪对象:声明一个对象与外部文件无关,每次都要重新生成(不会因为当前文件是最新的而导致不需要重新生成)
#如果有对象不管外部是否存在,都要每次无论如何都执行语句,则可以声明为伪对象
.PHONY:clean
clean:
	rm -rf $(obj) test

make:是一个解释程序,对Makefile中记录的构建规则流程逐步解释执行,完成项目的构建
make的解释执行规则:
1.在命令行中敲击make指令,则表示运行make解释程序,程序会在当前目录下找到名称为makefile/Makefile的文件,解释执行其中的项目构建规则
2.在规则中,找到目标对象
3.make每次再makefile中只会找到第一个目标进行生成,为了生成目标,先生成依赖

项目的版本管理工具:git

git三板斧()
1.在github建立远程仓库
2.将远程仓库克隆到本地:git clone github链接
3.提交本次修改记录:git add --all ./ 只提交一个文件git add path/filename
4.提交本地仓库版本管理:git commit -m “本次修改的备注信息”
5.将本地版本同步到远程仓库:git push origin master (master是主分支)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值