Linux常用基础指令、Linux常用工具(软件包)使用带图详解

目录

目录相关指令:

文件相关指令:

 压缩解压缩指令:

匹配查找指令:

权限相关指令:

Linux常用工具:


 指令使用规则:指令 [该指令的详细操作选项] [操作对象(通常有路径)],后面两可不加.

目录相关指令:

ls:浏览目录,但不会使当前位置进入到该目标操作对象,-a是把该目录下包括隐藏文件(以'' . ''开头的文件,单个点表示当前目录,两个点表示上层目录,比如./test就表示当前目录下的test目录)所有文件显示,-l查看文件详细信息.

 注意: ./test和直接打test效果一样的

 cd:进入某目录改变当前位置,cd ~ 返回用户家目录即/home/qifei

pwd:显示当前所造位置

所以值得一提的是Linux指令严格区分大小写

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:编辑器,写代码的.

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,?string 匹配,查找字符串(该字符串高亮)   :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:项目自动构建工具

先vim makefile,创建一个名为makefile的文本文件,里面写的时项目的构建规则.

在目录下打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:项目版本管理工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值