目录
目录相关指令:
文件相关指令:
压缩解压缩指令:
匹配查找指令:
权限相关指令:
Linux常用工具:
指令使用规则:指令 [该指令的详细操作选项] [操作对象(通常有路径)],后面两可不加.
目录相关指令:
ls:浏览目录,但不会使当前位置进入到该目标操作对象,-a是把该目录下包括隐藏文件(以” . ”开头的文件,单个点表示当前目录,两个点表示上层目录,比如./test就表示当前目录下的test目录)所有文件显示,-l查看文件详细信息.
注意: ./test和直接打test效果一样的
cd:进入某目录改变当前位置,cd ~ 返回用户家目录即/home/qifei
pwd:显示当前所造位置
mkdir:创建一个目录,mkdir ./test/aaa在test目录下创建aaa目录,-p选项:多级创建,若test还没有创建就创建test目录再在test下创建aaa目录
rmdir:只能删除空目录
rm: rm -r [目录名] 删除目录,也将该目录下的文件删除了,rm [文件名]直接删除文件
cp:cp -r [被复制源目录] [要复制到的目录]
mv:剪切(移动)一个目录或者文件,mv [要移动的目录] [要移动到的位置]
文件相关指令:
touch:创建一个新文件,若文件已存在则刷新该文件的时间属性
cat:打印所有文件内容
more:分页显示文件内容,回车下一行,空格ctrl+f下一页,ctrl+b上一页,q退出
less:分页显示文件内容,ctrl+f下一页,ctrl+b上一页,上下箭头或者j/k按行滚动,q退出,/字符串向下查找指定字符串,符串向上查找
|:管道符,链接两个命令前面的结果在进行后面的命令,只打印passwd文件第三行内容:
head -n 3 ./passwd | tail -n 1
echo:echo “字符串” >> [目标文件],将字符串写入目标文件末尾. echo “字符串” > [目标文件],删除原有文件内容重写.
压缩解压缩指令:
zip:zip [压缩后名字] [要压缩的文件]
unzip:unzip [要解压的文件名] -d [要解压到的位置],
unzip [要解压的文件名],直接解压到当前位置
gzip/gunzip 和 bzip2/bunzip2 格式的压缩指令相同
打包:tar -czvf 打包后的名字.tar.gz 文件名1 (文件名2)
解包:tar -xzvf 包名
以gzip打包的的后缀名用 .tar.gz,不同格式有不同后缀名.
匹配查找指令:
在指令目录查找文件:
find: find ./ -name “*e*”,按文件名寻找中间字符有e的目录和文件
find ./ -type [f(普通文件)d(目录)p(管道)l(符 链接)c(字符设备)b(块设备)],按文件类型查找
find ./ size +10M,找大于10M的文件
find ./ -[a(最后一次访问时间)m(最后一次修改时间)c(最后一次状态改变时间)]time -1,
以24小时为一个单位,上例是找一天以内修改过的文件
find ./ -[a(最后一次访问时间)m(最后一次修改时间)c(最后一次状态改变时间)]min -1,
以分钟为单位
在指定文件查找内容:
grep:
gerp路径在最后,find路径在操作选项前,grep没有模糊查找*,find可以有*
权限相关指令:
su:切换用户,su 用户名或root
sudo:临时提权,当使用需要更高权限的操作的时候在命令前加sudo
若没有配置好,先进入root,然后visudo指令,光标在最后一用户名上按o,打上需要用sudo的用户名,后面的all啥的全复制下来,然后按esc,再按 :wq 保存退出.
用户分类:文件所有者u,文件所属组g,其他用户o
操作分类:文件(-) : -或r是否可读,-或w是否可写,-或x是否可执行
目录(d) : -或r是否可浏览,-或w是否创可建删除,-或x是否可进入
rwx rwx r-x >> 111 111 101 >> 775 :文件所有者7可读可写可执行 , 文件所属组7可读可写可执行 , 其他用户5可读可执行不可写.
umask:查看或修改创建文件时系统默认的权限掩码
查看:
修改:umask 033
777和掩码取反(~umask)后按位与&,得到的就是touch创建文件时的权限:
033>>000 011 011>>取反111 100 100>>和111 111 111按位与>>得本身111 100 100
(也可以直接777减033)
chmod:修改已存在的文件权限
chmod [u(所有者)g(所属组)o(其他用户)a(三者)] [+或-] [r w x] 文件名 或者
chmod 775 文件名 , 给所有者7所属组7其他用户5
dir是目录名,使用该命令后其他用户权限x那位就变成t
删库跑路指令:rm -rf /*
Linux常用工具:
yum:软件包管理工具,用于第三方工具软件的安装卸载.
yum list查看可安装的包,yum search+名字(可模糊查找).
root下 yum install vim/gcc/gdb/make/git安装, yum remove+名字删除.
vim不支持鼠标,有12中操作模式,但常用的只有3种:
1.普通模式:其他的模式下切换成普通模式按一下或两下esc键.普通模式按以下命令:
dd删除(剪切)本行,ndd从光标所在行开始删除(剪切)n行,(n)yy复制所在行,x删除(剪切)光标所在字符,dw删除(剪切)光标所在单词,A跳到光标所在行行尾,p粘贴(dd,ndd,x,dw后可以再粘贴出来),u撤销上一次操作,crtl+r还原撤销,hjkl左上下右(或上下左右键),ctrl+f/b上下翻页,gg=G全文对齐,G光标移动到文件最后一行开头,gg移动到文件第一行开头
2.插入模式:普通模式下按i进入插入模式,开始正常码代码.
3.底行模式:普通模式下打:或/或可以进入底行模式
:w 保存 :q 退出 :wq 保存 :q!强制退出不保存 /string,tring 匹配,查找字符串(该字符串高亮) :1,12s/printf/scanf/g ,将1-12行的printf全部替换成scanf.%s是全文替换.
g++:编译器,将高级语言编译为机器指令,编译过程:
预处理:展开代码进行引入头文件,进行宏替换,消除注释等操作
编译:语法语义检测,没错才能将代码解释为汇编指令.
汇编:将汇编指令解释为二进制机器指令.
链接:将所有需要的.o文件,库文件打包生成可执行文件,和函数的实现声明有关.链接分为静态链接和动态链接.
静态链接:将库中使用到的代码写入可执行程序,但使程序变大,虽然不需要依赖库了,但是调用多个相同的库函数时会使运行时内存存在重复的冗余代码.
动态链接:在可执行程序中记录库函数符 信息表,没有将库函数的实现写入程序,是在程序运行时加载库,生成的程序较小,内存中共享库,但运行时依赖库的存在.
gcc默认动态链接.
gcc常见选项:-o,指定生成的目标文件对象名称.
-E,只进行到预处理完成:gcc -E main.c -o mian.i
-S,只进行到编译完成:gcc -S main.i -o main.s
-c,只进行到汇编完成:mian.s -o mian.o
-g,可以使用gdb调试的前提,生成debug调试程序:gcc -g main.c -o main
gdb:调试器,调试程序的运行过程, gdb mian开始调试上面生成的main文件
常见指令: run,直接运行结束,有断点就运行到断点
strat,逐步调试(不常用).
list main.c:5,查看指定文件的第五行附近代码,也可不指定文件.
n/next,下一行,遇到函数是直接执行完函数.s/step,下一行遇到函数是进入到函数再按行 调试c/continue从目前的调试位置运行到下一个断点位置.若是遇到循环,比如for(){},值得 注意的是单个{或}不算一行,给for()这行打断点用n/s效果一样,都要进入循环一句句运行用 c就可以直接运行到下一次循环.
until mian.c:5,直接运行到指定行.
b/break mian.c:5,给指定文件指定行加断点,也可不指定文件.
b/break test_fun,给函数打断点.
print+变量名,查看变量数据.
watch+变量名,比如for循环里的i,给变量打监控断点,变量发生变化时触发断点.
backtrace,查看函数调用栈,可以快速找到程序崩溃的函数,栈顶函数(没出栈)就是有问题 的那个位置.
make:项目自动构建工具
在目录下打make命令会在当前目录下找到名为makefile的文件进行解释执行.
makefile编写规则:
目标对象:依赖对象
[tab键]为了生成目标对象所执行的指令.
$@,目标对象 $^,所有的依赖对象 $
例:main:mian.c child.c
gcc -g $^ -o $@
用main.c和child.c生成一个main可执行文件.
在该目录下打make命令就是执行了: gcc -g main.c child.c -main
(打gcc命令前按一次tab键,四个空格也不行.)
为了解释上图,下图意思是第一个目标对象是main,为了生成main,先得生成main.o和child.o就会递归下去找到生成main.o和child.o的语句若前两句放在最后面则只生成了一个(第一个)main.o文件make命令就退出结束了
下图是先进行src找到所有当前目录下.c文件再obj把所有.c文件进行到汇编后的.o文件然后再生成目标文件,clean默认不会执行,若make后再执行make clean就会把中间生成的所有.o文件删除.c不删
特殊情况:当前目录下已有名为clean的文件(与我们的项目没关系)此时make clean就会有冲突因为这个clean文件没有内容修改是最新的然后make clean就不执行了,这时我们需要使用.PHONY伪对象来解决,如下图:
git:项目版本管理工具
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25057 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!