Linux基本指令(下)

1.Linux

在Linux系统中一切皆是文件,我们新建的文件、键盘、显示器等皆是文件,所以使用scanf/cin获取键盘输入信息和printf/cout向屏幕上输出信息,这一切的本质其实就是文件操作,而文件操作文件必须被先打开,所以这些设备文件在访问之前,也必须被打开。

1.1echo指令和printf指令

echo指令用法:echo 数据,该指令默认将数据打印到显示器上,本质其实就是将数据写入显示器这个文件中。
echo后面的数据可以用双引号/单引号或者不加引号,大多数场景都是使用双引号的,其他用到的很少;
不使用双引号的:echo $PATH,这个用来输出环境变量的值; echo *txt输出匹配的文件名;
其他你要输出字符串,就使用双引号的就行;单引号几乎用不到
在这里插入图片描述
printf指令与其差不多,但echo会自己换行,printf需手动加
在这里插入图片描述

1.2重定向操作符

1.2.1输出重定向操作符 > 和输入重定向符 <

刚才我们说过echo默认是向显示器这个文件中写入数据,但其实echo也可以向其他文件中写入数据,如下:
我们发现,我们可以将数据写入到 hello.txt 这个目标文件中,然后我们再次写入,我们可以看出,exho写入数据之前会将文件中原本的内容清空,然后写入。我们还可以发现,如果目标文件不存在,他会创造一个文件出来。
在这里插入图片描述

1.2.2追加操作符>>

输出重定向操作符 > 会清空目标文件中的内容,追加操作符不会清空,会在原数据后追加数据
在这里插入图片描述

1.2.3终端本质也是文件

我们使用的Linux终端其实也是一个文件,如下图,终端也是一个文件,它在/dev/pts这个路径下,当我们只开一个终端的时候,这个路径下只有一个数字名文件,再开一个,我们发现多了一个数字名文件,而这些以数字名命名的文件其实就是我们的终端,我们打开一个终端他就会创建一个文件。
在这里插入图片描述
那既然终端也是个文件,echo又可以把数据通过输出重定向符向其他文件写入数据,那我们是不是可以利用这个来模拟实现微信的收发消息?是的,可以。
在这里插入图片描述

2.文件类型

Linux中判断文件的类型不看文件后缀,如 .txt / .c,我们需要查看文件的属性才能知晓。
如下,我们可以根据文件第一个类型属性进行辨别。
d:目录文件
-:普通文件
c:字符文件
b:块设备文件
l:连接文件
p:管道文件
在这里插入图片描述
但是,系统不观心文件后缀,不代表工具(gcc)不观心。
在这里插入图片描述

3.mv指令

mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move(rename)files,经常⽤来备份⽂件或者⽬录
语法mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
常⽤选项:
• -f:force强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
• -i:若⽬标⽂件(destination)已经存在时,就会询问是否覆盖!

如果目标文件存在,则是移动文件,源文件是目录的时候,则整体移动,此时目标文件也得是目录才能移动。目标文件不存在,则是文件改名。
在这里插入图片描述

4.cat指令

语法: cat [选项] [⽂件]
功能:查看⽬标⽂件的内容
常⽤选项:
• -b对⾮空输出⾏编号
• -n对输出的所有⾏编号
• -s不输出多⾏空⾏

cat指令可以读取文件中的内容,cat后面更文件的话可以读取文件中的内容,和在中间加上输入重定向操作符 < 的结果一样,如果cat后面不加文件,默认读取键盘上的内容,即读取键盘这个设备文件。
在这里插入图片描述
cat -n对输出的所有⾏进行编号
在这里插入图片描述

5.tac指令

tac指令与cat指令一样,但区别是会方向输出文件中的内容
在这里插入图片描述

6.more指令

语法: more [选项]
功能:more命令,功能类似cat
常⽤选项:
• -n指定输出⾏数
• q退出more
在这里插入图片描述

一般我们会使用more指令查看存在大量数据的文件,如系统日志。
他会显示文件展示进度,按键盘下键可以向下继续查看文件内容,按q退出查看。
缺点:不能向上看。
在这里插入图片描述

7.less指令

• less⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具,功能极其强⼤
• less的⽤法⽐起more更加的有弹性,在more的时候,我们并没有办法向前⾯翻,只能往后⾯看
• 但若使⽤了less时,就可以使⽤[pageup][pagedown]等按键的功能来往前往后翻看⽂件,更容易⽤来查看⼀个⽂件的内容
• 除此之外,在less⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。

语法: less [参数] ⽂件
功能:less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽且less在查看之前不会加载整个⽂件。

选项:
• -i忽略搜索时的⼤⼩写
• -N显⽰每⾏的⾏号
• /字符串:向下搜索“字符串”的功能
• ?字符串:向上搜索“字符串”的功能
• n:重复前⼀个搜索(与/或?有关)
• N:反向重复前⼀个搜索(与/或?有关)
• q:quit

less指令和more指令一样,less可以向上查看,弥补了more的这一缺点。我们还可以使用 /字符串 查找文件中我们想要的内容,可以按 n 查找下一个包含此关键字的内容。比如我使用 /101 查找101字符串,他会跳转至此,并标黑显示。
在这里插入图片描述

8.head指令和tail指令

8.1head指令

head与tail就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head⽤来显⽰档案的开头⾄标准输出中,⽽tail想当然尔就是看档案的结尾。

语法:
head [参数]…[⽂件]…

功能:
head⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。

选项:
• -n<⾏数>显⽰的⾏数

默认最多展示10行,可根据 -n 展示指定行数。
在这里插入图片描述

8.2tail指令

tail命令从指定点开始将⽂件写到标准输出.使⽤tail命令的-f选项可以⽅便的查阅正在改变的⽇志⽂件,tail -f filename会把filename⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容.

语法: tail 必要参数 [⽂件]

功能:⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。

选项:
• -f循环读取
• -n<⾏数> 显⽰⾏数

默认最多展示10行,可根据 -n 展示指定行数。
在这里插入图片描述

8.3管道符 |

在 Linux 中,管道符 | 的核心作用是连接多个命令,将前一个命令的标准输出(stdout)作为后一个命令的标准输入(stdin),实现命令间的数据传递和协同处理。
因为不管是cat、tac、head、tail。我们都只能看见开头或者结尾的内容,如果一个文件中的内容特别多,我们向查看文件中间的内容就显得比较困难,而利用管道符就可以解决这一问题。
比如:现在我有一个 log.txt 文件,里面有1000行内容,我们想查看第501行至510行的内容,我们就可以这样做。
在这里插入图片描述

9.date指令

指定格式显⽰时间: date +%Y:%m:%d
⽤法: date [OPTION]… [+FORMAT]

  1. 在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记
    列表如下
    • %H:⼩时(00…23)
    • %M:分钟(00…59)
    • %S:秒(00…61)• %X:相当于%H:%M:%S
    • %d:⽇(01…31)
    • %m:⽉份(01…12)
    • %Y:完整年份(0000…9999)
    • %F:相当于%Y-%m-%d
  2. 在设定时间⽅⾯• date-s//设置当前时间,只有root权限才能设置,其他只能查看。
    • date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
    • date -s 01:01:01 //设置具体时间,不会对⽇期做更改
    • date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
    • date -s “01:01:01 20080523″ //这样可以设置全部时间
    • date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
    • date -s“20080523 01:01:01″ //这样可以设置全部时间
  3. 时间戳
    • 时间->时间戳:date+%s
    • 时间戳->时间:date-d@1508749502
    • Unix时间戳(英⽂Unix epoch,Unix time,POSIX time或Unix timestamp)是从1970年1⽉1⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

注意,+和后面的%(选项)之间不能有空格。
在这里插入图片描述

10.cal指令

cal命令可以⽤来显⽰公历(阳历)⽇历。公历是现在国际通⽤的历法,⼜称格列历,通称阳历。“阳历”⼜名“太阳历”,系以地球绕⾏太阳⼀周为⼀年,为西⽅各国所通⽤,故⼜名“西历”。

命令格式: cal 参数 [年份]

功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份

常⽤选项:
• -3显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
• -j显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
• -y显⽰当前年份的⽇历
• cal 年份显示该年日历
在这里插入图片描述

11.which指令

功能:搜索系统指定的命令
只会去/usr/bin/目录下查找命令。
在这里插入图片描述

12.whereis指令

功能:⽤于找到程序的源、⼆进制⽂件或⼿册
它不仅能查找可执行文件,还能查找文件的帮助文档、源代码文件等。它会在一些特定的系统目录(如 /bin、/sbin、/usr/bin、/usr/sbin、/usr/share/man 等)中进行搜索。
在这里插入图片描述

13.find指令

• Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。
• Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。
• 即使系统中含有⽹络⽂件系统(NFS),find命令在该⽂件系统中同样有效,只你具有相应的权限。
• 在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。

语法: find pathname -options
功能:⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)

常⽤选项
• -name按照⽂件名查找⽂件
• 其他选项需要在查,这个命令其实⽐较复杂

由于需要遍历大量的文件和目录,查找速度可能会比较慢。
在这里插入图片描述

14.alias指令

功能:设置命令的别名
如下:redir是个可执行程序文件,使用alias起一个go别名。
使用alias指令起的别名,关闭终端后再打开,别名就消失了。
在这里插入图片描述

15.grep指令

语法: grep [选项] 搜寻字符串 ⽂件
功能:在⽂件中搜索字符串,将找到的⾏打印出来
常⽤选项:
• -i:忽略⼤⼩写的不同,所以⼤⼩写视为相同
• -n:顺便输出⾏号
• -v:反向选择,亦即显⽰出没有’搜寻字符串’内容的那⼀⾏

grep后面带单引号和双引号都可以,也可以不带,如果过滤的内容有空格的话建议带
在这里插入图片描述

16.zip/unzip指令

zip指令用于压缩文件,unzip指令用于解压文件,压缩的文件后缀是zip

语法: zip 压缩⽂件.zip ⽬录或⽂件
功能:将⽬录或⽂件压缩成zip格式
常⽤选项
•-r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理

举例
将test2⽬录压缩: zip test2.zip test2/*
解压到tmp⽬录: unzip test2.zip -d /tmp

文件的打包和压缩分别指的是文件合并和减少文件体积,合并文件可以防止文件丢失,文件压缩可以减少体积,节省存储空间,而文件是在网络中进行传送的,文件体积越小,网络传送的时间也就越短。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

17.tar指令(重要)

tar指令既可以用于压缩文件也可以用于解压文件,tar打包的文件完整后缀是.tar.gz,简单写成.tgz

打包/解包,不打开它,直接看内容
语法: tar [-cxtzjvf] ⽂件与⽬录 …
参数:
• -c:建⽴⼀个压缩⽂件的参数指令(create的意思);
• -x:解开⼀个压缩⽂件的参数指令!
• -t:查看tarfile⾥⾯的⽂件!
• -z:是否同时具有gzip的属性?亦即是否需要⽤gzip压缩?
• -j:是否同时具有bzip2的属性?亦即是否需要⽤bzip2压缩?
• -v:压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!
• -f:使⽤档名,请留意,在f之后要⽴即接档名喔!不要再加参数!
• -C:解压到指定⽬录

最常使用的几个选项是-c,-x,-z,-f,-C.一般组合使用,czf是压缩文件并起压缩文件名,zxf是解压,-C可以解压至指定文件
在这里插入图片描述

18.rz和sz

rz和sz其实是receive zip和send zip,即接收压缩文件和传送压缩文件,可以实现Linux和Windows,Linux和Linux之间文件的互传

这个⼯具⽤于windows机器和远端的Linux机器通过XShell传输⽂件.安装完毕之后可以通过拖拽的⽅式将⽂件上传过去.

以下是Linux和windows之间文件的互传中sz和rz的使用:
在这里插入图片描述
在这里插入图片描述
而Linux和Linux之间文件的互传如下:
在这里插入图片描述

19.bc指令

bc命令可以很⽅便的进⾏浮点运算,可以理解为 Linux/Unix 系统中的 “简易计算机”,它本质是一款高精度的命令行计算器工具
在这里插入图片描述

20.uname -r

语法:unam[选项]
功能:uname⽤来获取电脑和操作系统的相关信息。
补充说明:uname可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。
常⽤选项:
• -a或‒all详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
• -r专门用于获取当前系统的完整内核版本字符串,不包含其他多余信息,是查看内核版本最直接、最常用的命令。

怎么在Linux环境查看你的体系结构和系统内核版本?
uname -r

在这里插入图片描述

21.重要的⼏个热键[Tab],[ctrl]-c,[ctrl]-d

• [Tab]按键—具有『命令补全』和『档案补⻬』的功能,单机可以补全命令,双击可以显示含某些字符的全部命令
在这里插入图片描述
• [Ctrl]-c按键—让当前的程序『停掉』
例如退出bc
在这里插入图片描述
• [Ctrl]-d按键—通常代表着:『键盘输⼊结束(End Of File,EOF戒End OfInput)』的意思;另外,他也可以⽤来取代exit
• [Ctrl]+r按键:搜索历史命令
在这里插入图片描述
histroy指令可以查看最近的1000条左右的指令

在这里插入图片描述

22.shell命令以及运⾏原理

Linux严格意义上说的是⼀个操作系统,我们称之为“核⼼(kernel)“,但我们⼀般⽤⼾,不能直接使⽤kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使⽤kernel?
从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:
• 将使⽤者的命令翻译给核⼼(kernel)处理。
• 同时,将核⼼的处理结果翻译给使⽤者。
在这里插入图片描述
对⽐windows GUI,我们操作windows不是直接操作windows内核,⽽是通过图形接⼝,点击,从⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)。
shell对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在通过内核运⾏出结果,通过shell解析给⽤⼾。
• 帮助理解:如果说你是⼀个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你⼼动的MM⼩花。你看上了⼩花,但是有不好意思直接表⽩,那就让你你家⼈找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给⼩花,⽽我们找到的媒婆姓王,所以我们叫它王婆,它对应我们常使⽤的bash。
bash属于shell,shell是对bash这一类工具的统称。
在这里插入图片描述
外壳程序就是王婆婚介所,有任务的时候王婆就相当于一个进程来处理任务,当新任务到来的时候,会创建一个子进程(相当于实习生)
在这里插入图片描述

23.Linux权限

Linux下有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾。
• 超级⽤⼾:可以再linux系统下做任何事情,不受限制。
• 普通⽤⼾:在linux下做有限的事情。
• 超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。
命令:su [⽤⼾名]
功能:切换⽤⼾。
例如,要从root⽤⼾切换到普通⽤⼾user,则使⽤ su user。
要从普通⽤⼾user切换到root⽤⼾则使⽤ su root(root可以省略),此时系统会提⽰输⼊root⽤⼾的密码。
在这里插入图片描述
普通用户切换到root账户有su和su -两种方式
用 su 切换到 root(或其他用户):
只变 “身份权限”:你有了 root 的操作权限,但 工作目录不变(比如你之前在自己的 /home/你的名字 文件夹,切换后还在这里);
环境不变:之前你能用的命令路径、软件设置,切换后还是原样,可能找不到 root 专属的工具(比如调网络的 ifconfig、装软件的 yum 可能用不了)。
用 su - 切换到 root(或其他用户)
既变 “身份权限”,又变 “环境”:切换后 自动进入 root 的专属文件夹 /root
加载 root 的所有设置:能直接用 root 常用的命令(比如 ifconfig、yum),也能用到 root 预设的快捷操作,和直接用 root 账号登录的效果完全一样。
什么时候用:
临时改个文件、删个东西(权限够就行),用 su;
装软件、改系统配置、调硬件(需要 root 专属工具 / 设置),必须用 su -,不然会提示 “命令找不到”。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值