Linux程序设计从入门到实战 - 第一章 Linux系统入门:核心命令实战

第一章 Linux系统入门:核心命令实战



1、Linux程序设计概要介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、从POST到Init,Linux的引导过程:在BIOS之后,操作系统才正式接管硬件资源

在这里插入图片描述

3、Linux命令行常用快捷键:加速你与Linux的交互速度

ll (两个小写的LL)告诉你当前目录底下有哪些内容
cd ~ 进入自己的当前用户的主目录
halt 关机

因为,在实际的工作中,GUI的存在会无谓消耗系统的资源,在服务器领域,绝大多数的时候都是命令行。
如何在命令行的模式中,完成用户和系统的交互。
在windows下通过Secure crt,与虚拟机中的linux进行远程连接。

核心命令实战(命令行下的快捷键)

提升命令行的使用熟练程度
Tab:补全
Ctrl+a:到行首
Ctrl+e:到行尾
Ctrl+Insert:复制命令行的内容
Shift+Insert: 粘贴命令行的内容

Ctrl+k:剪切光标处到行尾的字符
Ctrl+u:剪切光标处到行首的字符
Ctrl+w:剪切光标前的一个单词
Ctrl+y:粘贴上面3个的文本

Secure Crt: ctrl+s:假死,ctrl+q就可以解除了
Secure Crt: 如果你不小心按了ctrl+s,Secure Crt会假死,这个时候你可以按ctrl+q就可以解除了

4、cd:切换目录命令常用技巧

cd,叫做change directory,切换目录。
在这里插入图片描述
当用clear清屏后,此时在这种情况下,我不知道我当前所在的完整路径,可以敲pwd命令:
在这里插入图片描述

命令:cd进入目录,pwd显示完整的路径,在Linux当中,硬盘的文件组织和windows是不一样的。windows有C盘、D盘、E盘等等,Linux没有,它就是一棵树。
在这里插入图片描述
命令:cd … 表示返回上一级目录,cd / (表示从绝对路径之下开始找对应的文件夹)
在这里插入图片描述
命令:cd – 表示迅速返回上次目录,做环境配置的时候非常有用
比如说我下了一个软件包,我上一次目录是在/opt/底下建了一个目录,然后我又在/mnt底下建了一个目录,那我在来回切换的时候,我就用这个cd - 命令,这是非常非常有用的。

命令:cd ~ 表示返回当前用户的家目录
在这里插入图片描述

5、mkdir:递归建立目录与批量克隆目录结构的技巧

我现在提一个常见的需求,就是我想在当前目录底下,创建laoxia这个目录,在laoxia这个目录底下创建一个dingst目录,即创建laoxia/dingst
在这里插入图片描述

命令:递归的创建目录

在递归的创建目录,如果目录不存在,那么必须加 –p参数,mkdir –p laoxia/dingst
在这里插入图片描述

然后,我想在laoxia这个目录底下创建laoxia/c和laoxia/c++,以及dingst/c和dingst/c++这4个目录,此时可以一个一个的mkdir这几个目录,但是这个办法笨了点。

命令:批量建立目录

在这里插入图片描述

  • 大括号{}的用法:我们使用大括号的时候,如果中间有逗号,它将综合组成我们想要的字符。

6、touch:mtime,ctime和atime

命令:touch,修改文件的时间

如果文件不存在,我们就用touch新建一个文件,相当于在windows下用鼠标右键新建一个文件。
在linux下面文件有3个时间。
三个时间mtime:最后修改时间,如果修改了文件的内容,mtime会发生变动;
三个时间ctime:状态修改时间,如果移动了文件(类似于windows当中的剪切粘贴文件)、修改了文件属性(比如赋予权限的时候),ctime会发生变动;
三个时间atime:最后访问时间,如果查看文件的内容,atime会发生变动。

  • 参数 -d 表示,创建文件以后可以指定文件的修改时间。
    在这里插入图片描述
    比如我现在想创建一个和laoxia.c一样的dingst.cpp,那么
  • 使用-r这个参数
    在这里插入图片描述
    这个 -r 参数在我们打印日志的时候,还是比较有作用的。

7、ls:过滤文件与目录和查找**更新但不知文件名的技巧

在这里插入图片描述
参数 -F 可以清晰看到我们的目录和文件的区别,在shell编程当中特别容易过滤出文件和目录。

如果只是ls b/ 没有显示b目录底下什么东西都没有。
那如果使用参数 -R ,那么这个时候就会把b目录底下的信息给你列出来,这个参数 -R 表示递归的看。
在这里插入图片描述

参数 -R 可以递归的显示目录内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个时候会把a这个目录底下的二级目录递归的全部列出来,这个也是我们有用的一个技巧,就是当我们去检查这个目录,比如说我们在写程序的时候,打印生成log的时候,你去看它这个目录有没有正常生成。

命令 ll 是 ls 的别名:

在这里插入图片描述
在这里插入图片描述

在ls当中还有一个非常有用的技巧,比如在a目录底下新建一个文件dingstlaoxia.c,如果我根本就不知道这个文件叫什么名字,该怎么找这个文件呢,但是我直到这个文件最近更新过,这就是一个非常常见的需求。

如何用ls找出最近更新但是不知道名字的文件
  • 命令是:ls –lrt

直接在最后一排就是目标
在这里插入图片描述
在这里插入图片描述

8、find:按时间查找

命令:find
find 目录 条件
比如我们现在想要查找下,距离现在两天内的文件:
find . -atime -2
上面命令中的点 . 表示当前路径,-atime参数表示受到访问的时间。
在这里插入图片描述
你们看 -2 的时候,没有laoxia.c,也没有dingst.cpp,这个目的是什么呢:
减号表示,距离当前n天以内,比如说我当前时间是2024年5月3日为例,那么这个减号表示,2024年5月1日到5月3日;
没有符号,表示,从5月3日开始到n天以后,我现在是2,就相当于是从2024年5月3日到2024年5月5日;
加号,表示在n天以前的,以2为例,它要找的是2024年5月1日以前的。
这是非常有用的一个技能。

9、find-name和-type:按名称、按类型和查找结果取反

比如说我现在想找一个名字,按姓名查找的话:
-name 查找当前目录中以.c结尾的文件
-size 查找文件大小小于1个字节的文件
在这里插入图片描述
反向查找:!查找当前目录底下的目录
在这里插入图片描述
我们看到a目录里面有3个目录,那么通过find列出目录:
在这里插入图片描述
它把所有的目录都找出来了,包括里面的子目录c和c++都找出来了。
但是我现在不想找目录了,我现在想找文件,该输入什么命令呢?
在这里插入图片描述
这些都是非常常用的技能啊。

10、find-maxdepth:控制检索目录的深度

我们在前面看到,find把所有的子目录都找了出来,但是我们不想找到子目录,这时我们就可以控制目录的深度。
控制目录的深度:-maxdepth 1
在这里插入图片描述
此时只列出了一级目录。

11、find-newer:查找比某个文件后创建的文件

在编程中我们还有一个比较有用的技巧,我们经常会写一个文件,我们想看这些文件当中在什么时间是已经写过了,什么时间是没有写过的,我们可能会有一个这样的需求。
就是查找比某一个文件新,但是比某一个文件旧的文件。
在这里插入图片描述
我们先找一下比laoxia1.txt新的文件:
在这里插入图片描述
我们想找在laoxia1.txt之后建立的,又在laoxia3.txt之前建立的文件:
在这里插入图片描述
在这里插入图片描述

12、find与exec:在目录中删除所有的文件但保留指定的文件

到a目录中,我们现在有这么一个需求,一般来讲我们find以后肯定都希望它会做一个动作,我们就可以用 -exec 这个参数来做这样一个事情,exec 要做的事情就是我接一个可以运行的程序来运行它,比如说,我不关心目录,我就想看当前目录底下有哪些文件,我想看这些文件的详细信息,那么我可以这样干:
在这里插入图片描述
这个花括号表示命令前面那个find所找到的内容,而且这个花括号的前后必须要有空格,在花括号和空格之后呢,要给一个反斜杠\和分号,表示这个命令结束:
在这里插入图片描述
这个时候,它把目录底下的,包括子目录b底下的文件全部列出来给你看了。

命令:find和exec ,找出当前目录下的所有常规文件,并显示详细信息
在这里插入图片描述
再给你看一个有意思的生成案例,比如说我想删除一个目录下面所有的文件,但是只保留一个指定的文件。
删除一个目录下面所有的文件,但是只保留一个指定的文件。
在这里插入图片描述
我们的需求是,我在一个目录底下,我要把这个目录底下所有文件都删除,但是只保留一个指定的文件,我先建立几个文件,然后我要把laoxia10这个文件留下来,把前面的laoxia1到laoxia9这9个文件都删掉:
在这里插入图片描述
这个是我们非常常见的一个删除。

13、xargs:提取命令行参数

xargs这个命令主要是帮助我们把文本当中的一些内容,当成一个命令行参数给它传递进来,这个在组合的时候特别有用。
在这里插入图片描述
在这里插入图片描述
我想把上面的内容变成每行3列形式显示出来,该怎么做呢?
在这里插入图片描述
这种提取命令行参数的好处是,它把原来文本当中的内容可以当成命令行参数给它灌进来,这是第一个作用;
第二个作用就是,往往把xargs当成一个组合。
在这里插入图片描述
可以将一个文件的内容作为命令行参数输入。
在这里插入图片描述
我想把当前目录里面所有的.txt文件找到以后全部删除,可以通过管道把命令前面find的结果灌到xargs所组合的删除命令里面:
在这里插入图片描述

14、chmod与umask:文件目录权限

在这里插入图片描述

文件目录的权限:

可以用三个8进制来表示权限:
这个权限是 U+ G + O
000-111 :7
从000到111,最大就是数字7,所以用8机制就够了。
在这里插入图片描述
比如上图,laoxiaTest.txt的权限是,对于当前用户是可读可写、但不可执行,和它在一个组的可以读、但是不可写也不可执行,除了当前用户和同一组的用户以外,其他的用户只有读的权限。

修改文件权限chmod

如果我想改变一下当前用户的权限,上图中laoxiaTest.txt的权限是是rw- r-- r–,二进制就是110 100 100,即644,我们这样改:
在这里插入图片描述

文件掩码umask

我们创建的文件,它有一个默认的权限。
默认的我们可以创建最大权限是666,但是为什么出现的却是644,这主要是我们的文件有一个umask,我们创建的一个文件的权限:
默认权限-umask
666
022
644
在这里插入图片描述
上图的0022是因为该数值是8进制的,所以前面带一个0,我们默认的umask是八进制的022。
在这里插入图片描述

15、cat /dev/null:创建文件、显示文件以及清空文件内

命令:cat
它有几个常用的作用:(1)查看文件;(2)把多个文件合并成一个文件;(3)创建新文件;(4)清空文件。

生成一个文件、创建一个文件

在这里插入图片描述
在这里插入图片描述
cat后面的这个箭头指向哪,就表示你到哪个文件去,<<EOF表示当你遇到EOF的时候你才能结尾,切记最后输入文件内容要结束的时候,输EOF的时候一定要顶头写。

查看文件内容(显示行号)

在这里插入图片描述
命令cat可以显示文件,如果用-n,-b也会显示行号,但是b不对空行编号。
在这里插入图片描述
在这里插入图片描述

清空文件的内容,但是保留文件名

cat /dev/null > 文件名
在这里插入图片描述

16、cut:截取文件内容

命令:cut,可以切分文件内容
我现在想把文件内容里面的love给提取出来,一个字符占1个字节:
在这里插入图片描述
在这里插入图片描述
-b表示按字节,1表示序列号。
在这里插入图片描述
从2开始往后提取,也可以从头开始提取一直到9这个位置。

17、vi使用(上):介绍

vim编辑器
通常的vi有两种模式,命令模式,编辑模式。

一开始用vi打开文件的时候,就进入了 命令模式。
命令dd就是剪切;
a,i 键进入编辑模式,如果我们从编辑模式退回到命令模式,按esc即可。

在我们的vi学习使用中,你需要知道的几个内容:
dd删除行,dw删除一个单词,d$删除至行尾,d^删除至行首,dG表示从当前位置一直删除到文件末尾。
删除字符:可以在编辑模式下按backspace,命令模式可以用x,10x,表示连续删除10个字符,3dd,表示连续删除3行。

命令模式下的跳转:
光标快速定位:nG,表示移动到第n行。
命令:gg表示移动到第一行;G表示移动到最后一行。
跳到下一个单词的开头:w;下一个单词的结尾e,到前一个单词的开头b,到前一个单词的结尾ge。
到行头就是^,到行尾就是$。

复制就是yy复制光标所在的行,复制到行首y^,复制到行尾y$,复制1个单词yw,复制两个单词y2w,复制到文尾yG,从光标所在处一直复制到开头y1G。
如何粘贴:p
如果我们需要快速的交换上下行,ddp

查找字符串:r,替换整行cc,替换一个单词就是cw

18、vi使用(下):实战操作

在这里插入图片描述
设置行号:
:set number
在这里插入图片描述

  • gg
    迅速到文件的开头

  • G
    迅速到文件的最后

  • 点号 . 重复上一次的操作
    首先,按下x表示在命令模式下删除一个字符,然后不断按下.号键,就可以连续上一次的操作。
    dd就是剪切了一行,按p就粘贴了这一行。

  • 交换上下两行
    演示:我先定位到第10行,直接输入冒号加上数字,即 :10
    然后,ddp,就把第10行和第11行交换了。

  • 在行内实现光标的定位
    w表示下一个单词的开始,再按w就又跳到下一个单词的开头;
    下一个单词的结尾就是e,上一个单词的开头是b,前一个单词的结尾是ge

  • 复制整行
    命令是yy
    粘贴命令是p

演示:复制单词并粘贴
在这里插入图片描述
我先定位到第11行,按w定位到See这个单词,然后按yw复制该单词,再按p
在这里插入图片描述
它就在S后面把See 贴出来了。

  • 撤销
    命令是u

esc是进入命令模式,wq表示vi的存盘退出,q! 表示不保存强制退出。。

19、命令:grep搜索匹配

在这里插入图片描述
我想查这个文件当中,不包含laoxia这个字符串的行:
在这里插入图片描述
命令grep –v 查找不包含laoxia的行;
如果这个时候我想要显示包含laoxia的行,并且显示行号,就用参数-n
(n就是number的意思):
在这里插入图片描述
参数 -c 用来告诉你laoxia这个字符串在文件中出现了多少次。(c就是count的意思)

20、ps:查看进程命令

ps和grep组合起来,经常能够找到我们想要找的内容。
常见的ps命令有两类:一个是常见的ef,这个是表示unix格式的;还有一个是aux,这个是bsd风格。
在这里插入图片描述

解析:uid表示这个进程是哪个用户的,pid表示进程号,ppid表示父进程,c表示cpu的资源占用比,stime表示开始的时间,tty表示这个进程是在哪一个终端上面启动的,time表示这个进程使用的总时间,cmd表示正在执行的命令行。

在这里插入图片描述
其中STAT这一列表示进程的状态,S表示它是可以睡眠的,D表示它是不可睡眠的;
比如说想看这里面root用户的进程的状态:
在这里插入图片描述
上图所列出的这些进程是和我这个当前用户相关的。

演示:比如如果想要查看进程树(这也是比较有用的内容)
在这里插入图片描述
它就会以树形目录列出。

比如说我只想看其中某一个进程的信息:
在这里插入图片描述
这种非常有用的命令组合,只把和sshd相关的进程列出来给你看。

21、命令:netstat(我们编程当中经常看端口的命令)

在这里插入图片描述
它会看你网络的所有情况。

演示一个最常见的组合:
在这里插入图片描述
-l表示所有listen状态的网络连接,-n表示显示ip地址,-t表示tcp,-u表示udp,-p表示进程号。

在这里插入图片描述

22、gcc:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-I表示需要在那个目录中进行寻找。

23、gdb:

编译并开始调试:
在这里插入图片描述
列出行号:
在这里插入图片描述

在第3行,打断点,并开始运行:
在这里插入图片描述
P打印变量,这样就基本具备了调试的能力:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值