【Linux】从零开始学习Linux基本指令(二)

🚩纸上得来终觉浅, 绝知此事要躬行。

🌟主页:June-Frost

🚀专栏:Linux入门

🔥该文章主要了解Linux操作系统下的基本指令。

⚡️上一篇可以看这里 👉【Linux】从零开始学习Linux基本指令(一) 了解更多。

目录:

  • [⌛️ 一些常见指令](#⌛️ 一些常见指令)
    • [✉️ man指令](#✉️ man指令)
    • [✉️ cp指令](#✉️ cp指令)
    • [✉️ mv指令](#✉️ mv指令)
    • [✉️ which指令](#✉️ which指令)
    • [✉️ 文件查看](#✉️ 文件查看)
  • [❤️ 结语](#❤️ 结语)

⌛️ 一些常见指令

✉️ man指令

  • 语法 :man [选项] [命令]
    功能:可以访问Linux手册页,查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。

通过man指令,可以查看特定命令、函数、设备文件等的详细说明和用法,例如:查找ls指令,输入man ls 后,会出现下面的界面,这个界面介绍了ls的功能,选项等一系列信息。

 输入q就可以退出该界面。

📘 注意:输入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命令会自动查找其他手册页 ,直到找到相关手册或显示"未找到任何相关页面"的错误信息。

所以,我们无需指定使用哪个手册页,除非要查看特定手册页。例如要查找printfprintf在Linxu中也是一个指令,如果我们以man printf 查找,就会展示一号手册的内容,如果我们想查找C语言的printf函数 ,就得按照 man 手册编号 查找的内容 的形式,输入man 3 printf

📗一些常用的选项:

  • num 指定手册查找。
  • -k 根据关键字搜索联机帮助。
  • -a 将所有章节的都显示出来,比如上面提到的printf ,如果不用man 3 printf ,也可以使用man -a printf,因为当按下q退出后,会继续往后面搜索,直到所有章节都搜索完毕。

✉️ cp指令

  • 语法 : cp [选项] 源文件或目录 目标文件或目录
    功能:将一个或多个源文件或目录复制到指定的目标文件或目录。

在同级目录下,不允许存在同名文件或同名目录。

📗拷贝一个文件

为了证明文件是通过拷贝到达的目标地,对一个文件进行一个文本编辑(nano),这里对node里的test.txt文件 编辑了一个心想事成 。将该文件拷贝到上级目录:cp test.txt ..

如果在同级目录下拷贝文件需要改名字

📙拷贝一个目录

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。
  • -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。

通过这两个选项,就可以拷贝目录 ,和拷贝文件处理方式一样,只需要加上 -rf

如果拷贝目录到同级目录下,需要改名 ,例如:cp -rf node1 node1.bak

💡说明:

  1. 对于一个目录或文件,在拷贝时可以保证文件名 拷贝到新的路径之后保持不变 ,也可以指定文件名 ,将内容拷贝过去,文件名也发生修改 。例如:cp -rf dir ../node2 ,假如上级目录没有node2,这个命令可以在上级目录创建一个node2目录,再将dir的内容跟拷贝过去。
  2. cp指令用于复制文件或目录,如同时指定两个以上的文件或目录 ,且最后的目的地是一个已经存在 的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录 ,则会出现错误信息
  3. cp -rf /root/node /root/dircp -rf /root/node/* /root/dir 是不一样的,第一个指令是将node的内容包括目录本身 都拷贝到dir里,第二个不包括目录本身,只拷贝目录的内容。并且这两种方式都不会拷贝隐藏文件

📗另外一些常用的选项:

  • -i 或 --interactive 覆盖文件之前先询问用户。
  • -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理。

✉️ mv指令

语法 :[选项] <源文件或目录> <目标文件或目录>
功能:将文件或目录从一个位置移动到另一个位置,或者将文件或目录重命名,经常用来备份文件或目录。

cp命令相似,如果目标目录存在,就是将源目录整体剪切到目标目录里,如果目标目录不存在,那么就会在剪切目录的同时修改目录名。按照这个规则,同时就可以实现重命名。

📗一些常用的选项:

  • -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

✉️ which指令

  • 语法 :which [选项] 命令名
    功能 :帮助用户快速定位特定命令或程序的执行路径。
    说明:命令名是要查找的可执行程序的名称。可以是一个单独的命令名,也可以是多个命令名用空格分隔。

指令的本质是可执行文件 ,可以通过which看到所处的路径。例如 which ls

这里还出现了另一个命令alias ,这个命令可以设置指令的别名,使用alias时,必须使用单引号将原来的命令引起来,防止特殊字符导致错误。

注意:alias命令的作用只局限于该次登入的操作,相当于临时变量。若要每次登入都能够使用这些命令别名,就需要改变配置文件。


✉️ 文件查看

cat 指令

语法 :cat [选项][文件]
功能:查看目标文件的内容。

cat 适合查看小文件的内容,查看大文件会直接刷屏。

📗一些常用的选项:

  • -b 对非空输出行编号。
  • -n 对输出的所有行编号。
  • -s 不输出多行空行。

more 指令

  • 语法 :more [选项][文件]
    功能:查看目标文件的内容。

more 指令可以查看大文件,但是只能向后翻页 ,不太推荐,更推荐less 。

📗一些常用的选项:

  • -n 对输出的所有行编号。
  • -q 退出more。

less 指令

  • 语法 :less [选项] [文件]
    功能:用于查看(但不完全加载)文本文件,特别是那些比普通文本文件更大的文件,例如二进制文件。

less的功能比more更强大,除了可以向前翻页 ,还可以向后翻页 ,甚至可以通过搜索关键词定位到文件中的特定位置

📗一些常用的选项:

  • -i 忽略搜索时的大小写
  • -N 显示每行的行号
  • /字符串 :向下搜索"字符串"的功能
  • ?字符串: 向上搜索"字符串"的功能
  • n :重复前一个搜索(与 / 或 ? 有关)
  • N :反向重复前一个搜索(与 / 或 ? 有关)
  • q :quit

head 指令

  • 语法 :head [选项] [文件]
    功能:显示文件的前几行,默认显示前10行,也可以根据需求指定显示的行数。

head -100 file.txt 就是查看file.txt文件的前100行。

📗一些常用的选项:

  • -n 指定要显示的行数。
  • -q或--quiet或--silent:不显示包含给定文件名的文件头即隐藏文件名。
  • -v或--verbose:总是显示包含给定文件名的文件头即显示文件名。

tail 指令

语法 :tail [选项] [文件]
功能:将指定文件的最后几行显示在终端上,默认情况下显示最后10行,也可以根据需求指定显示的行数。不指定文件时,作为输入信息进行处理。常用查看日志文件。

📗一些常用的选项:

  • -f 循环读取。
  • -n 指定要显示的行数。

💫重点来了:

管道
  在Linux中,管道是一种进程间通信的方式 ,它可以将一个进程的输出直接连接到另一个进程的输入 ,从而实现数据交互。

对于管道的使用,主要有以下两种情况:

  • 匿名管道:也称为无名管道或临时文件,是两个进程间直接进行通信的一种方式。这种管道没有名字,仅在创建它的进程和它的子进程之间通信。匿名管道的创建通常是通过系统调用pipe()来实现,它会返回两个文件描述符,分别表示管道的读端和写端。
  • 系统调用管道:通过使用系统调用pipe()创建,可以实现将一个进程的输出重定向到另一个文件或进程。例如,当我们在shell中使用"|"操作符时,就是创建了一个系统调用管道。

无论是哪种类型的管道,都是通过在内核级别进行操作实现的。从内核角度来看,管道就像是一个文件,我们可以像操作文件一样对其进行读写操作。但是,与普通文件不同的是,管道的两端可以同时进行读写操作。

上面我们了解到了如何查看文件,现在可以运用系统调用管道查看5000--5020行的内容:


❤️ 结语

文章到这里就结束了,如果对你有帮助,你的点赞将会是我的最大动力,如果大家有什么问题或者不同的见解,欢迎大家的留言~

相关推荐
自由的dream3 分钟前
Linux的桌面
linux
xiaozhiwise34 分钟前
Makefile 之 自动化变量
linux
Kkooe1 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒2 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
意疏3 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师3 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu3 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
一只爱撸猫的程序猿3 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
我的K84094 小时前
Flink整合Hudi及使用
linux·服务器·flink