【Linux】基本指令(二)

简介: 【Linux】基本指令(二)

1.Linux 基本指令(二)

1.1 man 指令

语法: man [选项] 命令

功能:man 指令可以查阅 Linux 的联机手册

root下安装 man 指令:

yum intall -y man-pages


通过 sudo 来为普通用户安装(普通用户使用sudo):

man man


man 可以查阅指令或库函数等内容… 我们先查阅一下 man 指令本身如何使用:

sudo yum intall -y man-pages

7cb729e465f741329f913bd5af26ce09.png


查找手册介绍:


序号 英文 中文

1☆ Executable programs or shell commands 普通的命令

2☆ System calls (functions provided by the kernel) 系统调用

3☆ Library calls (functions within program libraries) (C语言)库函数

4 Special files (usually found in /dev) 特殊文件

5 File formats and conventions, e.g. /etc/passwd 文件格式

6 Games 游戏

7☆ Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 附件和变量

8 System administration commands (usually only for root) 系统管理命令(通常为root使用)

9 Kernel routines [Non standard] 内核例程(非标准)

注:☆ 为常用手册。


man 默认从1号手册开始查找 man 后的内容,按照手册顺序依次向后查找,找到就显示,找不到就是找不到


按 q 退出查阅


查找 printf 指令:

[root@iZ0jlj1bbn1zk2zv671vzhZ ~]# man printf

fc3f2e16bb07457ea1615987b9468851.png

(注:Linux 下也有 printf 指令,在 1号手册 中)

在 Linux 下使用 printf 指令:

4a78da8c2b174751b92df6fd62b2a836.png

使用 man 在 3号手册(C语言库函数) 查找 printf:

[root@iZ0jlj1bbn1zk2zv671vzhZ ~]# man 3 printf

1.2 cp 指令

语法:cp [选项] 源文件或目录 目标文件或目录

功能: cp —— copy,顾名思义就是拷贝,复制文件或目录


常用选项:

-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在

-i 或 --interactive 覆盖文件之前先询问用户

-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理


拓展:

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。

注意:同一个目录下,不能存在同名文件

cp 为拷贝的操作,cp 指令默认拷贝的文件

8319ec3296e1456087c2fbf0535a72ba.png

cp 文件名 路径:拷贝文件


将 dir1 中文件拷贝到 上级目录 code 中:

5c32e1f8e3e54609a360f87a338679f2.png

cp -r 目录名 路径:r 为递归,递归拷贝文件,即拷贝目录


将 code 目录拷贝到 code_backup 目录:

929e4aef282646699a00297642d7797b.png

cp -f 文件名 路径:强制拷贝。平常状况下,路径下有同名目录会给出覆盖提示;-f 为暴力,为不给是否覆盖提示,直接覆盖

3e101b2183f845dc83e3b2f5ddbff51d.png

但是实际上这里的不给提示是有歧义的,我们可以测试一下:

a13d35ff1468423db332cc4c6789ce1b.png

那么这是为什么?其实是 cp 本身的问题,用 alias 查看了它的别名:

a2626c0dc4aa40dfa3a32b5c11a34980.png

这里的 cp -i 我们上面见过,它的意思是覆盖文件之前先询问用户,所以 cp 本质是 cp -i ,无论怎样都会先提问用户,比如我们的 cp -f 其实就被转换为了cp -i -f,这里我们可以通过 取消别名 的方式,来解决这个问题:

取消别名后:

fcbaea1f70a34f2dbbc9e402ad56b40b.png

恢复别名:

afee9a31683647e7a5447314e5286b27.png

1.3 mv 指令

mv —— move,可以 剪切文件/目录 或者 重命名文件/目录。


语法: mv [选项] 源文件或目录 目标文件或目录


功能:


当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。


当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。


常用选项:

-f :f —— force 强制的意思,如果目标文件已经存在,不会询问直接覆盖。

-i :若目标文件已经存在时,就会询问是否覆盖!

mv 可以重命名文件或目录

mv 文件名 新的文件名:文件重命名。如果当前面目录并没有这个名字,且不是一个存在的目录,shell会判定它是一个新的文件名


把 test.txt 重命名为 test1.txt:

a14e136a77404f468a7cc35663a9c097.png

mv 文件名 路径:剪切文件到指定路径

剪切 code 中的 test1.txt 到上级目录 root 中:

4d905b1331c2480697d464fc6c327c5b.png

mv 目录名 路径:剪切目录到指定路径

剪切 mydir 中的 dir1目录到 上级目录 中:

f6685ec79e0e4792a07ce68e1cf42201.png

mv 文件名 路径 新文件名:剪切文件到指定路径并重命名

将 lesson3 下的 newname.txt 剪切到 testcp1 并重命名为 newnew.txt :

09edba5d017044b6ba30bf58bb64b0c1.png

总结:


mv 文件名 不存在文件名:重命名 mv a.txt b.txt -> mv a.txt ./b.txt

可以理解为在当前目录下剪切并重命名

mv 文件名 路径:剪切 mv c.txt …/ 从当前路径剪切到上级路径

mv …/dir1 . 从上级路径剪切到当前路径

mv 文件名 目录 + 不存在文件名:剪切并重命名文件

目录同理


1.4 echo 指令(含输出重定向)

echo “字符串”:可以把字符串打印到屏幕上

719a5ed7f35f4f96bbbfd1a3400145e2.png

echo 在打印的时候默认是向显示器打印的。


echo “字符串” > 文件名:将字符串写入文件中,若文件不存在会创建文件,为输出重定向


将 “hello Linux”,输出重定向 到 mytest,txt 中:

2e365599231941febc9c1836a6e46321.png

测试 多次输出重定向 文件:

6350b3e003294c5faf550f6e380b613d.png

每次重定向后,文件中的内容为最后一次重定向的结果。覆盖式写入(准备写入之前,先清空文件)


说了这么久,那么 输出重定向到底是什么意思?


这里的 >为 输出重定向,echo 默认是打印到屏幕上的。


如果 > 对应的 目标文件不存在 ,则会 自动创建 ,并把本来应该显示到显示器上面的文本,写入到 文件 中,这一过程,就叫 输出重定向 。


拓展:

显示数据到显示器上,就是向显示器打印,可以理解为向显示器写入,可以把显示器看做一种文件。我们的C程序获取数据,比如 scanf、cin 都是从键盘读取到的,所以键盘也可以看做一种文件。

内存从键盘获取数据的过程,也就是 read ,对应着 input(输入)到程序中;内存显示数据到显示器的过程,也就是 write,对应着 output(输出) 到显示器上。这一过程就是IO。

之前我们学习C语言文件操作时,读写方法是对于文件的。所以我们可以抽象拓展出一个概念:Linux下一切皆文件

所以输出重定向就是把原本写入到 显示器文件 的内容写入到文件中

echo “字符串” >> 文件名:将字符串内容追加到文件中,为 追加重定向


例如追加字符串到 test.txt 中:

1543717084794ad694cae4be3545b854.png

追加自带换行,不断向目标文件中新增内容


1.5 cat 指令(含输入重定向)

语法:cat [选项] [文件]

功能: 查看目标文件的内容

常用选项:


-b 对非空输出行编号

-n 对输出的所有行编号

-s 不输出多行空行

cat 打印文件的内容到屏幕上,其实就是查看文件内容。


我们 nano 一个文件,使用 cat 查看内容:

28d47f6cbffa4eb88f19b35371ceb205.png

cat -s 文件名:省略多余空行 查看文件内容,就是指令之间最多输出一个空行

5b5c0f781148471988bbad4a069981df.png

cat -sn 文件名:-n 是对输出行编号,-sn组合使用就是省略空行输出编号并打印内容,可以看到省略了空行。

b746a14f783b46f3a37e3bbda64512ef.png

cat 会把文件内容读取到程序里,然后打印出来。


cat < 文件名:输入重定向,将文件中内容读取到 cat 中,并打印

0866379b840240d99da1df6fd4e10538.png

如果 cat 后不跟任何内容,那么就会 默认从键盘中读数据:

83567a10ce3f4fd2b0b96b2f57458bc9.png

所以,输入重定向就是改变原先从键盘上读取数据的方式,改为从其他文件中读取数据


其实这里使用 cat test.txt 和 cat < test.txt 的效果是一样的,但是还是有些区别:第一个是通过命令行参数获得文件名,第二个是通过重定向获得文件名。


1.6 wc 指令

语法:wc [-lwm]

功能:统计文件的行数、单词数、字符数


常用选项:


-l :仅列出行

-w :仅列出多少字(英文单字)

-m :多少字符

wc -l 文件名:显示文本文件有多少行和文件名


显示文件有多少行,并文件名

9a9a6c078a9641c486c2604558c13d8a.png

wc -l < 文件名:输入重定向,显示文本文件行数不显示文件名

d808499bdb924e7785fadf6fd384c157.png

1.7 more 指令

语法:more [选项] [文件]

功能:more命令,功能类似 cat

常用选项:

-n 对输出的所有行编号

q 退出more

测试 more 指令前,我们先写一个命令行脚本:

cnt=0; while [ $cnt -le 10000 ]; do echo "hello $cnt"; let cnt++; done >test.txt

意思是往 test.txt 中写入 hello 1 ~ hello 10000。

使用 cat 查看一下:

bdb096a3c2a94a09975ab64c5d3d9826.png

cat 只看到了结尾部分,说明 cat 适用于观看短文本。


长文本可以使用 more 指令观看:

dfd28e8946e342539c5a406a4b22900e.png

more 文件名:从头部查看文本内容,按回车逐行翻阅。


1.8 less 指令

语法: less [参数] 文件


功能:

less与more类似,但使用less可以 随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。


常用选项:


-i 忽略搜索时的大小写

-N 显示每行的行号

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

q:quit 退出


补充:


less 工具是对文件或其它输出进行分页显示的工具,应该说是linux查看文件内容的工具,功能强大。

less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看。

使用 less,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容。

less 拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

less 文件名:查看文件内容支持上下翻阅


↑ 向上翻阅,↓ 向下翻阅,q 退出


less 支持查阅功能,方法为 / + 查阅内容,在一次查阅后,无法查阅到上次查阅内容前面的内容

611ceecb2bc340249db85138b8fec507.png

先查阅带9的内容,然后查阅带1的内容。上次查阅结果为带9的内容,9前面的内容无法被查阅。查阅带1的内容是从10开始查阅的。

2dc30c5b738e4657a1d23f4c30c80d2f.png

less 适合用于大文本:工程、日志


1.9 head 和 tail 指令(含管道用法)

head


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


功能:

head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10 行。


选项:

-n<行数> 显示的行数

head -n5 文件名:显示前五行,写成 head -5

fa9137b44785429bbf28d6af907d3808.png

tail


语法: tail[必要参数] [选择参数] [文件]


功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。


选项:

-f 循环读取

-n<行数> 显示行数

tail 默认打印尾部十行内容。


tail -n5 文件名:显示文件尾部五行内容

92208b06cdb24c7b975fb3cc09a59a18.png

学习了 head 和 tail,我们能否获取 mylog.txt 中间部分的 第500 - 520 行?


法1:借助中间文件 + 重定向


step 1:head -1020 test.txt > tmp.txt —— 将前1020内容重定向到 tmp.txt 中

301e66a3f63546f9b22cc2cc63e123ed.png

step2:tail -20 tmp.txt —— tail 截取 tmp.txt 的后20行

2af3ad10b9ce4eb585ec7de3da11d627.png

法2:管道


首先,介绍一下管道。我们生活中,管道是用来传输资源的,对于Linux中的管道也是。


| 就是管道的标志。计算机中最重要的资源是数据,| 就会被 shell 解释为链接两条指令用来传输数据的指令。我们可以把管道也当做一种文件。


先看两个管道的例子:


我们原本 统计行 需要用 wc -l test.txt,并且会打印文件名:

a3e58dc3d9464d9b8bcd14387e3d0135.png

但是学习了管道后,我们可以使用 cat test.txt | wc -l ,把 cat 的数据写到管道里,之后用 wc-l 到管道中读取,这样也不显示文件名。

aad2ba6616f249848ab30872479f18bd.png

cat test.txt 将内容放到管道中,head -1020 截取文件中前1020行,再把这些放入管道中,tail -20 截取这些的后20行

aad2ba6616f249848ab30872479f18bd.png


管道意义:集联多条指令,做数据的不断加工,支持流水线工作。


2.总结:

今天我们主要学习了9个基本指令,还了解了输入重定向、输入重定向和 管道用法 的用法,难度相比前一篇指令博客高一些。接下来,我们将继续学习Linux的的相关知识。希望我的文章和讲解能对大家的学习提供一些帮助。


当然,本文仍有许多不足之处,欢迎各位小伙伴们随时私信交流、批评指正!我们下期见~

c3ad96b16d2e46119dd2b9357f295e3f.jpg

相关文章
|
12天前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
72 20
|
2月前
|
Linux
linux-du指令
`du`命令是Linux系统中查看磁盘使用情况的基本工具之一。通过灵活使用 `du`命令的各种选项,可以准确、高效地获取文件和目录的大小信息,有助于系统管理员进行磁盘空间管理。无论是查找大文件、分析目录结构还是排除特定类型的文件,`du`命令都提供了丰富的功能和灵活的配置。理解和掌握 `du`命令的使用,对于维护和优化Linux系统的磁盘空间至关重要。
41 4
|
3月前
|
Linux Windows
【Linux】-基本指令(下)
【Linux】-基本指令(下)
【Linux】-基本指令(下)
|
2月前
|
安全 Ubuntu Unix
【Linux】基础指令
本文介绍了Linux操作系统的基本概念及特点,强调了其开源性、多用户多任务处理能力、稳定性和安全性。文章重点讲解了多个Linux基础命令,如ls、cd、touch、mkdir、rm、man、cp、mv、cat、less、find、grep、tar等,旨在帮助初学者快速掌握Linux命令行操作,为后续深入学习奠定基础。
74 0
|
3月前
|
Linux
【Linux第一弹】- 基本指令
【Linux第一弹】- 基本指令
46 1
|
3月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
55 3
|
3月前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)
|
3月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
42 0
Linux入门1——初识Linux指令
|
3月前
|
人工智能 Unix Linux
装杯 之 Linux指令
本文介绍了Linux操作系统的基本命令。首先欢迎各位进入Linux的世界,并展示了`ls`命令,用于列出目录下的文件和子目录。接着介绍了`pwd`命令,用于显示当前目录;`cd`命令,用于切换目录;`mkdir`命令,用于创建目录;`touch`命令,用于创建普通文件或修改文件时间戳;`rmdir`命令,用于删除空目录;以及`rm`命令,用于删除文件或目录。通过这些基本命令,你可以开始探索和管理Linux系统。
|
5月前
|
存储 人工智能 Ubuntu
Linux指令学习(一)
Linux指令学习(一)