Linux基本指令和操作(2)

本文详细介绍了Linux中的一些基本指令,包括适配符*的通配符功能,man指令用于查看手册,echo指令输出字符串到文件,cp和mv指令处理文件复制与移动,which指令查找指令路径,alias指令实现指令重命名,以及cat、more、less、head和tail指令用于查看和处理文件内容。此外,还探讨了如何通过head和tail组合截取文件指定行数区间的内容。
摘要由CSDN通过智能技术生成

目录

一. 适配符 *

二. man指令 -- 查看手册 

三. echo指令 -- 输出字符串到文件

四. cp指令 -- 复制

五. mv指令 -- 重命名或移动文件(剪切)

六. which指令 -- 查看指令所在的路径

七. alis指令 -- 指令重命名

八. cat指令 -- 输出文件内容

九. more指令 -- 查看文件内容

十. less指令 -- 查看文件内容

十一. head指令 -- 查看文件前n行内容

十二. tail指令 -- 查看文件最后n行内容

扩展:如何截取文件指定行数区间的内容


一. 适配符 *

* 在Linux中表示为通配符,可以匹配任何内容。如:*.cpp -- 后缀名为cpp的所有文件、test.* -- 文件名为test,后缀任意的文件。*可以与rm、ls等基本指令匹配,对相关文件进行操作,如:

  • ls *.c:拿出所有后缀名为.c的文件。
  • ls test.*:拿出所有名为test,后缀任意的文件。
  • rm *.c:删除所有后缀为.c的文件。
图1.1 通配符*的使用

二. man指令 -- 查看手册 

我们不可能记住Liunx的上千条指令,如果需要使用某条指令却不知道其具体使用方法,可以使用man指令查看手册。语法:man [手册号][指令],如:

  • man rm:查看rm指令(文件删除)的手册。
  • man ls:查看ls指令(文件名输出)的手册。
  • man printf:查看printf(输出指令)的手册。

注意:printf也是一条Linux基本指令,可模仿C语言的输出格式来输出。

  • 进入man手册之后,可以按Q退出 

man指令也可用于查找其本身的手册,man man就是查看man的使用手册。

图2.1 man的手册

手册共分为8张,其中最常用的是前3章:

  • 1 -- Linux系统下的普通命令。
  • 2 -- 系统指令,如fork线程创建。
  • 3 -- C语言指令,如printf、scanf。

如果不指定从哪一张中查找,就默认从第一章开始查找,一致查找到第8章。那么,如果直接输入man printf查找的是普通Linux指令printf,而不是C语言中的printf。如果要查看C语言的printf,应当显示指定第三章手册(man 3 printf)。

三. echo指令 -- 输出字符串到文件

  • 语法:echo 字符串 >/>> 文件名 
  • 功能:向文件中写入指定的字符串内容

在Linux下,我们认为一切都是文件,包括键盘、显示器等硬件以及普通文件。Linux下一切皆文件可以从输入输出的角度来理解,如:显示器可以作为内容输出的设备、可以由键盘读取数据,这些硬件具备与我们一般认识中的普通文件相似的特性:可供读写。

如果echo指定输出文件,则默认向显示器输出,可以使用>来进行输出重定向。在默认情况下,如果使用 echo + 输出重定向( > ) 多次向同一文件中写入字符串,那么后一次输入的内容会覆盖前一次的。如图2.2,多次向文件test1.txt输出"hello Linux",但最终文件中只有一个"hello Linux"。

图2.2 echo指令的使用及输出重定向>

如果不希望echo写入文件的内容覆盖原来的内容,可以使用追加重定向>>,但是 >> 追加重定向会默认换行,如果不希望换行,可以改用printf写入。

图2.3 追加重定向

还可以使用输出重定向来清空文件内容,语法:> 文件名。< 为输入重定向,cat < 文件名 可以输出文件内容。

图2.4 输入重定向和文件清空
  • 总结:三大重定向 
  1. > :输出重定向。
  2. >>:追加重定向。
  3. <:输入重定向。

四. cp指令 -- 复制

  • 语法:cp [选项]  源文件或目录  目标文件或目录
  • 功能:复制目录或文件到某一路径(还可以同时重命名)
  • 说明:如果同时指定多个目录或文件,如果最后一个参数为已经存在的目录,那会将多个文件或目录复制到最后一个目录下面。如果最后一个参数为不存在的目录,那么会报错。

cp指令常用选项指令:

  1. -r:递归复制,将一个目录下面的子目录和文件一同复制。如果不显示声明-r,那么就无法复制带有子目录和文件的目录。
  2. -i:如果存在名称冲突,文件覆盖之前询问用户是否要覆盖。
  3. -f:强制复制,存在文件名冲突时直接覆盖,不进行询问。
图4.1 cp指令的使用

五. mv指令 -- 重命名或移动文件(剪切)

  • 语法:mv [选项] 源文件或目录 目标文件或目录
  • 功能:1、文件或目录重命名     2、文件或目录的移动    3、移动 + 重命名
  • 说明:
  1. 如果第二个参数时文件名,则mv执行的重命名功能,如果第二个参数是单纯地路径,那么mv执行移动功能。     
  2. 如果第二个参数是 目录/文件名,mv执行 移动 + 重命名 功能。     
  3. 如果第二个参数是已经存在的目录名称,那么第一个参数(源文件或目录)可以有多个,mv会将这些文件均移动值第二个参数的路径下面。
  • 选项: -i:覆盖前询问用户是否覆盖      -f:不询问是否覆盖
图5.1 mv指令的使用

六. which指令 -- 查看指令所在的路径

  • 语法:which  [选项]  指令
  • 功能:获取指令所在路径
图6.1 which指令的使用

 如何看待指令?

  • 指令和可执行程序都是可以被执行的,指令就是可执行程序。在执行指令前,首先要在系统特定的路径下去查找指令。
  • 指令一定是某种可执行程序,因此,指令和我们自己编写好的代码编译生成的可执行程序,没有任何本质区别。
  • 结论:指令的本质就是可执行程序文件,放在特定的路径下(/user/bin/),调用时可以直接去查找。

七. alias指令 -- 指令重命名

  • 语法:alias 指令新名词 = '原名称'
  • 取消重命名:alias 已经存在的新名称 = ''

如:ll指令和ls -l指令的功能相同,其本质就是将ls -l重命名为ll

图7.1 alias的使用

八. cat指令 -- 输出文件内容

  • 语法:cat [选项] 文件名
  • 选项:(1)-b:输出非空行号    (2)-n:输出所有行号    (3)-s:不输出多行空行
图8.1 cat指令的使用

九. more指令 -- 查看文件内容

cat指令会一次性输出全部文件内容,适合查看小文件,不适合查看大文件。more指令会在打印满屏幕后暂停,按回车键才会继续打印下面的内容。

  • more -n<行号> 文件名  -- 如more -500 test.txt 为打印test.txt的前500行内容。
  • /字符串:向下查找指定的字符串内容。
  • q:退出more。

more指令有其固有缺陷:只能向下翻,不能向上翻。

使用脚本语言cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $cnt"; let cnt++; done > test.txt生成具有10000行内容的文件test.txt(每行都带有行编号)测试more指令的功能。

图9.1 more指令的使用方法

十. less指令 -- 查看文件内容

less指令的功能和使用方法与more指令基本一致,但less指令避免了more指令的最大缺陷,它既可以上翻查找,也可以下翻查找。

  • /字符串:向下查找字符串
  • ?字符串:向上查找字符串
图10.1 less指令的使用

十一. head指令 -- 查看文件前n行内容

  • 语法:head  [参数] 文件名
  • 说明:head -n<行数> 文件名 指令会在屏幕上打印文件前n行,如果-n省略,那么默认10行。
图11.1 head指令的使用

十二. tail指令 -- 查看文件最后n行内容

  • 语法:tail [参数] 文件名
  • 说明:tail -n<行数> 文件名 -- 在屏幕上打印最后n行,如果-n省略,那么默认10行。
图12.1 tail指令的使用

扩展:如何截取文件指定行数区间的内容

以截取文件test.txt文件的第1001~1010行为例,介绍两种截取方法

方法1:借助临时文件

将test.txt文件的前1010行用head指令取出,输出重定向到tmp,txt文件中。然后使用tail指令取出tmp.txt的最后10行,得到的就是test.txt的1001~1010行内容。这种方法的缺点是要占用磁盘空间,如果不继续使用临时文件还要手动删除。

图13.1 借助临时文件截取文件部分内容的流程

方法2:借助管道

  • 符号'|'在Linux下,会被系统解释为管道文件,这是一种内存级的文件。
  • 程序1 | 程序2:将程序1的输出交给管道|,然后交到程序2中执行。
  • 管道可以支持流水线工作:程序1|程序2|程序3|......

用head指令取出test.txt的前1010行交给管道,然后将管道中的内容作为交给tail指令,取出后10行,即可获取test.txt的第1000~1010行内容。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值