纸上得来终觉浅, 绝知此事要躬行。
主页:June-Frost
专栏:Linux入门
该文章主要了解Linux操作系统下的基本指令。
⚡️上一篇可以看这里 【Linux】从零开始学习Linux基本指令(一) 了解更多。
通过man指令,可以查看特定命令、函数、设备文件等的详细说明和用法,例如:查找ls指令,输入man ls
后,会出现下面的界面,这个界面介绍了ls
的功能,选项等一系列信息。
注意:输入
man man
就可以向在线手册查询man指令。
可以发现在手册页中有9种手册,简单了解一下:
可执行程序或shell命令(Executable programs or shell commands)
:提供了关于Linux系统中可执行程序和shell命令的说明和用法,包括它们的名称、功能、参数、选项、示例等。这些手册页通常包括标准命令、shell内置命令、shell特殊字符、shell选项等。系统调用(System Calls)
: 列出了Linux系统提供的系统调用,以及它们的函数原型、参数、返回值和功能描述。库调用(Library Call)
:提供了C语言标准库中各种函数的详细说明和用法。设备文件(Special Files)
:列出了Linux系统中的特殊文件,包括设备文件、管道文件、套接字文件等,以及它们的使用方式和命令。文件格式(File Formats)
: 提供了关于Linux系统中常见文件格式的说明和解释,例如配置文件、日志文件、备份文件等。游戏(Games)
:提供了Linux系统中的各种游戏和娱乐软件的使用说明和指南。杂项(Miscellaneous)
:提供了Linux系统中一些其他工具和功能的说明和用法,例如文本编辑器、网络工具、备份工具等。管理员命令(System Administrative Commands)
: 提供了Linux系统中管理员需要使用的命令的说明和用法,包括系统管理命令、用户管理命令等。内核例程(Kernel routines)
: 提供了关于Linux内核内部结构和机制的说明和解释,包括进程管理、内存管理、文件系统等。
在Linux系统中,man命令默认使用的手册是第1号手册,如果用户输入的命令在1号手册中找不到,man命令会自动查找其他手册页,直到找到相关手册或显示“未找到任何相关页面”的错误信息。
所以,我们无需指定使用哪个手册页,除非要查看特定手册页。例如要查找printf
,printf
在Linxu中也是一个指令,如果我们以man printf
查找,就会展示一号手册的内容,如果我们想查找C语言的printf函数,就得按照 man 手册编号 查找的内容
的形式,输入man 3 printf
。
一些常用的选项:
num
指定手册查找。-k
根据关键字搜索联机帮助。-a
将所有章节的都显示出来,比如上面提到的printf,如果不用man 3 printf
,也可以使用man -a printf
,因为当按下q退出后,会继续往后面搜索,直到所有章节都搜索完毕。
在同级目录下,不允许存在同名文件或同名目录。
拷贝一个文件
为了证明文件是通过拷贝到达的目标地,对一个文件进行一个文本编辑(nano),这里对node里的test.txt文件编辑了一个心想事成。将该文件拷贝到上级目录:cp test.txt ..
如果在同级目录下拷贝文件需要改名字
拷贝一个目录
-f 或 --force
强行复制文件或目录, 不论目的文件或目录是否已经存在。-r
递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。
通过这两个选项,就可以拷贝目录,和拷贝文件处理方式一样,只需要加上 -rf
。
如果拷贝目录到同级目录下,需要改名,例如:cp -rf node1 node1.bak
。
说明:
- 对于一个目录或文件,在拷贝时可以保证文件名拷贝到新的路径之后保持不变,也可以指定文件名,将内容拷贝过去,文件名也发生修改。例如:
cp -rf dir ../node2
,假如上级目录没有node2,这个命令可以在上级目录创建一个node2目录,再将dir的内容跟拷贝过去。- cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
cp -rf /root/node /root/dir
和cp -rf /root/node/* /root/dir
是不一样的,第一个指令是将node的内容包括目录本身都拷贝到dir里,第二个不包括目录本身,只拷贝目录的内容。并且这两种方式都不会拷贝隐藏文件。
另外一些常用的选项:
-i 或 --interactive
覆盖文件之前先询问用户。-R 或 --recursive
递归处理,将指定目录下的文件及子目录一并处理。
语法:[选项] <源文件或目录> <目标文件或目录>
功能:将文件或目录从一个位置移动到另一个位置,或者将文件或目录重命名,经常用来备份文件或目录。
与cp
命令相似,如果目标目录存在,就是将源目录整体剪切到目标目录里,如果目标目录不存在,那么就会在剪切目录的同时修改目录名。按照这个规则,同时就可以实现重命名。
-f
: force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i
:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
指令的本质是可执行文件,可以通过which
看到所处的路径。例如 which ls
。
这里还出现了另一个命令alias
,这个命令可以设置指令的别名,使用alias时,必须使用单引号将原来的命令引起来,防止特殊字符导致错误。
注意:alias
命令的作用只局限于该次登入的操作,相当于临时变量。若要每次登入都能够使用这些命令别名,就需要改变配置文件。
① cat
指令
语法:cat [选项][文件]
功能:查看目标文件的内容。
cat
适合查看小文件的内容,查看大文件会直接刷屏。
一些常用的选项:
-b
对非空输出行编号。-n
对输出的所有行编号。-s
不输出多行空行。
② more
指令
more
指令可以查看大文件,但是只能向后翻页,不太推荐,更推荐less 。
一些常用的选项:
-n
对输出的所有行编号。-q
退出more。
③ less
指令
less的功能比more更强大,除了可以向前翻页,还可以向后翻页,甚至可以通过搜索关键词定位到文件中的特定位置。
一些常用的选项:
-i
忽略搜索时的大小写-N
显示每行的行号/字符串
:向下搜索“字符串”的功能?字符串
: 向上搜索“字符串”的功能n
:重复前一个搜索(与 / 或 ? 有关)N
:反向重复前一个搜索(与 / 或 ? 有关)q
:quit
④ head
指令
head -100 file.txt
就是查看file.txt文件的前100行。
一些常用的选项:
-n
指定要显示的行数。-q或--quiet或--silent
:不显示包含给定文件名的文件头即隐藏文件名。-v或--verbose
:总是显示包含给定文件名的文件头即显示文件名。
⑤ tail
指令
语法:tail [选项] [文件]
功能:将指定文件的最后几行显示在终端上,默认情况下显示最后10行,也可以根据需求指定显示的行数。不指定文件时,作为输入信息进行处理。常用查看日志文件。
一些常用的选项:
-f
循环读取。-n
指定要显示的行数。
重点来了:
管道
在Linux中,管道是一种进程间通信的方式,它可以将一个进程的输出直接连接到另一个进程的输入,从而实现数据交互。
对于管道的使用,主要有以下两种情况:
- 匿名管道:也称为无名管道或临时文件,是两个进程间直接进行通信的一种方式。这种管道没有名字,仅在创建它的进程和它的子进程之间通信。匿名管道的创建通常是通过系统调用pipe()来实现,它会返回两个文件描述符,分别表示管道的读端和写端。
- 系统调用管道:通过使用系统调用pipe()创建,可以实现将一个进程的输出重定向到另一个文件或进程。例如,当我们在shell中使用“|”操作符时,就是创建了一个系统调用管道。
无论是哪种类型的管道,都是通过在内核级别进行操作实现的。从内核角度来看,管道就像是一个文件,我们可以像操作文件一样对其进行读写操作。但是,与普通文件不同的是,管道的两端可以同时进行读写操作。
上面我们了解到了如何查看文件,现在可以运用系统调用管道查看5000–5020行的内容:
文章到这里就结束了,如果对你有帮助,你的点赞将会是我的最大动力,如果大家有什么问题或者不同的见解,欢迎大家的留言~