Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项] 命令
man指令就相当于一个精通linux的专家,你要查询的指令或者函数,他基本都直知道
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
查询rm命令:
根据NAME解释,可以知道rm指令是用来删除一个文件或者一个目录的,格式是rm+选项+文件,然后再选项介绍那一栏我又知道了各种选项的作用。这样,我就能快速的了解rm这个指令的用法。
如果你发现想要查找的内容没有找到,大概率是没有安装全man手册
yum -y intall man-pages
有的朋友可能会问,为什么全是英文呢?
没办法,这是外国人弄出来的玩意,为了保持原汁原味,我们在前期的学习中还是应该保持读英文的一个习惯。如果实在要用中文,可以去安装汉化包。
既然man也是个指令,那可以用man查询man指令吗?
答案是可以的。
通过描述我们知道,man包含了九个手册(section)
1 是普通的命令,如rm、ls、cd等(常用)
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)(常用)
3 是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
9 Kernel routines(非标准)。
使用手册的时候正确格式:man+对应手册编号+“查询内容”
如果我们没有指定手册编号的话,man会在手册当中依次按顺序查找,找到了就会马上停下来。这也是为什么我们用man rm 和man 1 rm的效果一样的。
而我们用man查询printf库函数时,如果没有标明哪个手册,man指令会从1号手册开始查找,发现linux有一个printf指令,于是就马上停下来了。
而当我们标明要在库函数手册里面查找printf时
所以,要想正确的找到自己想要的内容,应该要标明对应的手册编号(章节)
如果我们使用某个命令出现异常,或者是想要退出正在进行的指令的时候,就可以使用ctrl+c退出
在Linux中,
echo
是一个用于显示文本或字符串的命令。它通常用于在终端或脚本中输出信息。
echo [字符串]
例如,我可以用echo输出一个字符串,并在终端显示:
echo
命令还可以与其他命令和操作符一起使用,例如将文本重定向到文件:
>
在Linux中,
>
是重定向操作符,用于将命令的输出重定向到文件。具体来说,>
会创建或覆盖指定的文件,并将命令的标准输出写入该文件。
这也是为什么会创建一个output.txt文件,而且,如果已经存在output.txt文件且里面有内容的话,那里面的内容就会被清除。相当于c语言文件操作中的“w”操作。
使用 > +文件名 创建一个文件(该文件本来不存在)
使用 > +已有文件名 清空文件内容
>>
>>是追加重定向操作符,用法跟 > 相同,只不过在打开已有文件后不会清除原来文件内容,而是在文件尾部继续输入内容。
>>文件名 相当于c语言文件操作中的“a”(追加)操作。
<
在Linux中,
<
是另一种重定向操作符,它用于将文件的内容作为输入提供给命令。具体来说,<
将文件的内容重定向到命令的标准输入。
例如,考虑以下命令:
上述命令使用
cat
命令,它通常用于显示文件的内容。然而,通过使用<
操作符,它将文件 output.txt
的内容作为输入提供给cat
命令,而不是直接在命令行中指定文件名。这样可以将文件的内容传递给命令,而不是手动键入。
简单来说,在linux系统中,我们的键盘,显示屏其实都是“文件”。我们用cat+字符串,将字符串从键盘文件输入到显示屏文件,此时的文本输入源是键盘文件,而当我们使用cat < 某个文件,此时也会将信息输入到显示屏中,但是输入源却变成了“某个文件”。这就是输入重定向。
如果输入重定向的文件不存在的话,会报错,相当于c语言文件操作中的"r“操作。
在大多数情况下,这两个命令会产生相同的结果,即显示 output
.txt
文件的内容。然而,存在一些微妙的区别:
如果你正在编写一个脚本或命令行,使用输入重定向
<
可能更具可读性,因为它明确地指定了输入来源。如果你只是想在终端上查看文件的内容,并不打算将其输入到其他命令中,那么直接使用文件名作为参数可能更简洁。
大概意思就是--效果差不多,意义不一样
more
是一个用于查看文本文件内容的命令。它允许用户逐页浏览文件,使得在显示大型文本文件时更加方便。相比于cat
命令,more
提供了分页显示的功能。
语法:more [选项][文件]
-n 对输出的所有行编号
q 退出more
more只能向后翻看信息,并不能前后随意翻找信息
建一个大一点的文件big.txt,输入脚本
i=1; while [ $i -le 10000 ]; do echo "hello linux $i"; let i++; done > big.txt
这个脚本可以输入一万行"hello linux i" (其中i从1-10000)到文件big.txt中
如果使用cat来查看这种内容比较多的文件,就会一直刷屏,很难翻找信息
使用more,打满一屏幕的输出就停下来了
此时输入 / 关键字 可以迅速向下找到带有关键字的信息的位置
按q退出
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 其强大。 less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容! 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
head用来显示开头某个数量的文字区块,head 用来显示档案的 开头至标准输出中,通常用于监视日志文件或实时查看文件的变化
head 文件名默认查看前十行信息
跟head指令相反,用于显示文件的末尾内容。通常用于监视日志文件或实时查看文件的变化。
tail 文件名默认查看后十行信息
tail -n 文件名显示后n行信息
如何输出中间的内容?
假设我们现在要获取big.txt文件中的第8000-8010行的内容。
步骤一:用head获取big.txt前8010行的内容
步骤二:用>将head获取的内容输出重定向到一个临时文件temp.txt中
步骤三:用tail获取temp.txt文件中的后11行内容。
使用 | (管道)
head -8010 big.txt | tail -11
在Unix和类Unix系统中,管道(pipeline)是一种强大的机制,它允许将一个命令的输出直接作为另一个命令的输入。通过管道,可以将多个命令串联起来,形成一个数据处理流水线。
command1 | command2
这个命令的意思是,command1
的输出将成为 command2
的输入。这种机制使得可以通过连接简单的命令来完成复杂的数据处理任务,提高了系统的灵活性和可组合性。
多级管道是指将多个命令通过管道连接起来,形成一个多层次的数据处理流水线。这样可以在一条命令中实现更复杂的数据处理任务。理解多级管道时,可以将其看作是一系列数据处理步骤的组合,其中每个步骤都是一个独立的命令。
解读上面指令:先是在big.txt文件中获取前8080行的内容,并将这些内容作为tail的输入数据,再在这些数据中获取后11行的内容,最后将这11行的内容再次作为指令wc的输入数据--计算行数,得到11.
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H | 小时 |
%M | 分钟 |
%S | 秒 |
%X | 相当于 %H:%M:%S |
%d | 日 |
%m | 月份 |
%Y | 完整年份 (0000..9999) |
%F | 相当于 %Y-%m-%d |
当前时间转换为时间戳
在Unix和类Unix系统中,时间戳通常是指自1970年1月1日UTC午夜(称为“Epoch”)以来经过的秒数,这被称为Unix时间戳或Epoch时间。Unix时间戳是一种广泛使用的时间表示方式,它可以被存储为整数,方便在计算机系统中进行处理。
将时间戳转换为时间
考虑以下指令:
date +%Y-%m-%d -d @0
这条指令的意思是 将0这个时间时间戳转换为 “%Y-%m-%d”的格式
另外要注意的是,由于国内服务器会自动将时间转换为北京时间,所以0时间戳对应的时分秒应该是8:00:00
cal
是一个用于显示日历的命令。在许多Unix和类Unix系统上,cal
命令用于显示当前月份的日历,或者指定月份和年份的日历。
命令格式: cal [参数][月份][年份]
用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
直接输出今天的日历
输出这个参数代表的年份的日历(1-9999)
显示前一个月、当月、下一个月的日历
当前年份的日历
输出今天是2023年的第几天(11月29日)
Linux下find命令在目录结构中搜索文件,并执行指定的操作
查找某个路径下的文件
find pathname -name filename
其中pathname是路径,表示的是你要在哪个路径下面去查找,-name选项表示的是查找方式是按文件名查找, filename是要查找的文件名。输出绝对路径。
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
grep命令又叫行文本过滤工具,可以将所有具有关键字的行打印出来
考虑以下命令
grep "999" big.txt
这条命令的意思是,从big.txt文件中搜索所有具有关键字999的行,并将其打印。
输出带行号 ,这里的行号是指在原本文件中的行号
显示出没有 '关键字' 内容的那一行
忽略匹配信息的大小写
如何在temp.txt中搜索 不包含“Bit”关键字的行,并且不考虑“Bit”的大小写,结果带行号?
zip打包压缩,unzip解压解包
语法: zip 压缩文件.zip 目录或文件
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
zip -r test11.zip 11
test11.zip表示新的文件名,11表示需要打包的文件名,后面可接多个需要打包的文件名,用空格隔开
unzip test11.zip -d ./22
其中呢,-d选项表示将解压的目录提取到某个目录下。如果不写-d,那么就会默认解压在当前路径的目录下
yum install -y unzip zip
打包就是将一大堆文件或者目录变成一个总的文件,而压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
1.缩小体积,占据磁盘空间比较小,下载快
2.不会轻易丢失文件
跟zip指令一样,tar指令也可以将多个目录或者文件打包压缩,只不过底层实现其压缩功能算法不同而已。
语法:tar [选项] 文件与目录 .... 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
由于选项非常多,我这里只介绍最常见的几种用法。
打包压缩只需要记住 -czf选项,加v表示输出过程,如-cvzf(顺序无影响)
tar -czf 111.tgz 111
这条指令等价于 zip -r 111.zip 111
解压只需要记住 -xzf选项,加v表示输出过程,如-xvzf
tar -xvzf test1.tgz
tar -xvzf test1.tgz -C ../333
注意这里的-C,C是大写
bc指令就是召唤一个linux下的计算器,可以很方便的进行浮点运算
yum install -y bc
演示bc指令:
echo 1+2+3+4+5 | bc
uname用来获取电脑和操作系统的相关信息 ,可显示linux主机所用的操作系统的版本、硬件的名称等基本信息
语法:uname [选项]
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类 型,硬件平台类型,操作系统名称
uname -r
[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit
语法:shutdown [选项]
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
如果是在云服务器上运行linux,建议不要去关机,因为此时的关机就相当于将服务器关掉,要想在打开就要去后台打开了,所以我这里就不演示了。