当前位置: 首页 > article >正文

Linux基本指令2

07.man指令(重要):

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项] 命令

man ls查看ls指令更多的说明。

man man:

man指令就是一个接口或者一个在线的手册。 

常用选项

-k 根据关键字搜索联机帮助

num 只在第num章节找

-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。

解释一下,面手册分为8章

1 是普通的命令

2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)

3 是库函数,如printf,fread

4是特殊文件,也就是/dev下的各种设备文件

5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

6 是给游戏留的,由各个游戏自己定义

7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明

8 是系统管理用的命令,这些命令只能由root使用,如ifconfig。

Linux当中也支持printf:

printf这些接口我们可能都会用:

07.cp指令(重要):

在Linux当中存在一条指令叫echo,这条指令可以将后面的字符串原封不动的显示出来。注意:字符串中不能有标点符号。

下面这条指令可以将字符串"hello Linux"写入lesson.txt文件当中。

echo打印时默认会把输出的结果显示出来, 当echo 带上 “ > ”号时没有在显示器上显示"hello Linux",但其实已经被写入到了lesson.txt的文件当中了。

cat指令是打印文件内容。

在指令后面带一个 > 符号,后面跟一个文件名,它的现象是1.没有在显示器显示2.而是这个数据被写入到文件中,这种行为我们把它叫做输出重定向。输出重定向代表的含义是:本来应该显示到显示器的内容,打印到文件中。

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

功能: 复制文件或目录

my_lesson.txt本来不存在,是执行上述cp lesson.txt my_lesson.txt命令行之后新建的一个文件,并且该文件的大小和内容与原文件一模一样。拷贝的文件不能与被拷贝的文件同名:

拷贝普通文件时可以在当前目录下直接进行拷贝。

如果我们不想拷贝到当前目录下,想要拷贝到上级目录下,我们该怎么写呢?

不在同一目录下的同名文件可以存在,并且不会报错。 

如果我们想拷贝一个目录该怎么拷贝呢?

目录不能直接拷贝,要带-r选项,因为目录是递归式定义的。

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

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

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

拷贝目录在root账户下不会询问,即使加了-i也不会询问。 

删除目录会提问:

加上-i选项也会提问:

删除文件会询问: 

两次创立同一个文件会询问: 

加上-i选项也会询问,但是前提是这个文件必须已经创建了:

若是之前文件不存在,即使加了-i选项也不会询问: 

若是之前文件存在,即使加了-f选项,依然会询问:

以上都是在root账户下的测试,普通用户可能会和上述结果不一样。 

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

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

-r和-R用法相同。

08mv指令(重要):

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

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

my_class.txt文件名被改成了class1.txt的文件名。

也可以将文件进行剪切,剪切和拷贝不一样,拷贝是再复制一份,剪切是移动位置。

mv class.txt ../与mv class.txt ..相同。 

 将上级目录的test.txt文件剪切到当前目录下。只有这一种写法,..test.txt这种写法就不可以。 

把当前目录的普通文件移动到上级目录中,并且上级路径没有该文件名,这种方式叫做剪切并重命名。

对于目录和文件mv指令可以直接使用,不用带-r选项就可以使用。

若当前要把一个目录dir1 mv 到上级目录test,如果上级目录中有test目录,则不是重命名,而是把dir1目录放到test目录下。

功能:

1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的 目录中。

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

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

常用选项:

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

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

ctrl + c :终止因为程序或者指令异常,而导致我们无法输入的情况。

两个问题:

1.你是如何看待指令的

指令和可执行程序都是可以被执行的,指令就是可执行程序。

2.我们在执行指令之前,系统应该先做什么?

先在系统中查找对应的指令,指令一定是在系统的某一个位置存在的。

指令一般在系统当中/usr/bin下,usr是根目录,bin是在usr的目录下。

通过下图可以发现所有的指令本质上在我们的系统当中是存在的。可以得出两个结论:1.指令是在系统中特定的路径下存在的2.这些指令一定是某种可执行程序,对应的指令一定是用C/C++/Python/shell所写的可执行程序。

指令的本质就是可执行程序,和我们自己写的代码编译好的程序,没有本质区别。

所有的软件、指令、工具都是可执行程序。

 指令的本质就是文件-可执行文件,就是直接安装到了系统的某种路径下,可以让我们执行时系统自动去找。

which这条指令是查看对应的指令它的路径的。

ll等价于ls -l ,就是因为ll是ls -l的别名,--color指的是配色方案,alias指令相当于是取别名。

重命名不想用的话要这样写:

重命名是临时的,当关闭Xshell再登陆上之后,重命名就不在了。

 重命名也可以用汉字和数字代替:

09 cat

echo指令默认把字符串写到显示器的文件当中。  

把应该写到显示器文件当中的内容写到普通的磁盘文件当中,这种行为我们将它叫做重定向。

cat指令打印文件的内容。

这里的echo和cat的区别是:echo后面跟的是字符串,也就是它自己认为跟的是字符串,而cat跟的是文件名。

当我们重定向多次时,cat记录的结果只有一次。

当我们把字符串内容改变时,cat打印的东西与之前内容不一样,与现在内容一样。

向目标文件进行写入的时候,输出重定向有两个特点:1.清空文件2.写入新内容。

如果想清空文件,有一个简化的写法 “>文件名”或者是“> 文件名”:

扩展:

如果我们想保留重定向之前的内容,我们要这样写:

注意:两个大于号是挨着的,中间没有空格,这种方式叫做追加重定向。

如果cat指令后面什么都没有输入,那么它是从输入设备开始读的:
 如果我们用 < 符号,我们发现它也能读取,这个 < 符号代表本来应该从键盘文件读取,现在不用从键盘读取,从指定的文件读取,这种方式叫做输入重定向。

cat text.c与cat < text.c是有区别的,这里暂时不做讲解。 

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

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

常用选项:

-b 对非空输出行编号

-n 对输出的所有行编号

-s 不输出多行空行,也就是有多行连续的空行的时候,只输出一行空行。

一个shell脚本:cnt=1; while [ $cnt -le 10000 ];do echo "hello Linux $cnt"; let cnt++; done > text.c 

cat不适合看大文本,cat适合看小文本,大文本适合more指令看。 

10.more指令

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

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

more指令会将显示的文本一屏占满,占满之后不再打印,按下enter键会自动向下翻,比较适合自顶向下的查看。

常用选项:

-n 对输出的所有行编号。

显示到500行就停下来,还能继续下翻,并且编号。

还可以在more的场景当中做文本搜索,如上。

q 退出more

举例:

11.less指令(重要)

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

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

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

除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

语法: less [参数] 文件

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

按下上键往上翻,按下下键往下翻。 

less -500这个命令行没有用,但是它也可以做文本查找。

选项:

-i  忽略搜索时的大小写

-N  显示每行的行号

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

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

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

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

q:quit

12.head指令

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的 开头至标准输出中,而 tail 想当然尔就是看档案的结尾。 

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

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

选项: -n<行数> 显示的行数

head指令默认提取文本的前n行,默认提取10行。

如果想提取前3行,可以这样写:

13.tail指令

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail - f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。

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

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

选项:-f 循环读取

-n<行数> 显示行数

举例:(简单讲解重定向和管道)

有一个文件共有100行内容,请取出第50行内容<br>
seq 1 100 > test # 生成1到100的序列装入test

方法1 head -n50 test > tmp #将前50行装入临时文件tmp

tail -n1 tmp #得到中间行

方法2 head -n50 test | tail -n1

tail指令默认也是提取10行,但是和head不一样的是tail提取的是后面的10行。

如果想提取文件中的行数该怎么办呢,比如1000到1020行?

这样就可以了,但是这样也会创建一个文件tmp.txt。

扩展:在Linux上我们可以创建一个管道:

 这样我们就可以拿到了,而且不会创建文件。这个 | 就叫做管道文件。这个 | 在对应的指令上就是一种符号,会被系统解释成为管道文件,这个管道文件不会真的在内存里存在,这个文件是一个内存级的文件,作用是把左侧的程序输出交给管道文件,让右侧的程序从管道文件当中再读到自己的程序当中。管道的容量是固定的,它的大小在操作系统中是确定好的,一般都是4kb、8kb、16kb,不同的版本,不同的操作系统,不同的位数有差别,

云服务器对应的man手册可能是不全的,如果查的时候有些接口可能用不了,可以试着安装一下,yum install -y man-pages,这个指令就叫做安装man手册。


http://www.kler.cn/a/532242.html

相关文章:

  • 如何创建折叠式Title
  • 整形的存储形式和浮点型在计算机中的存储形式
  • Rust中使用ORM框架diesel报错问题
  • BFS(广度优先搜索)——搜索算法
  • 数据 类型
  • 2025 年 YOLO 十大未来应用场景
  • wx050基于django+vue+uniapp的傣族节日及民间故事推广小程序
  • JUC 三大辅助类: CountDownLatch CyclicBarrier Semaphore
  • Chromium132 编译指南 - Android 篇(七):安装其他构建依赖项
  • 信息学奥赛一本通 2088:【22CSPJ普及组】逻辑表达式(expr) | 洛谷 P8815 [CSP-J 2022] 逻辑表达式
  • Java导出Excel简单工具类
  • 基于python去除知乎图片水印
  • Starrocks 对比 Clickhouse
  • 柔性数组与c/c++程序中内存区域的划分
  • 【办公类-99-01】20250201学具PDF打印会缩小一圈——解决办法:换一个PDF阅读器
  • TCP相关实验
  • 2025系统架构师---论数据访问层设计技术及其应用
  • 计算机网络——三种交换技术
  • 【Daily Code】leetcode热题100道
  • Day35-【13003】短文,什么是双端队列?栈和队列的互相模拟,以及解决队列模拟栈时出栈时间开销大的方法
  • Linux命令运行原理及权限管理
  • linux 进程补充
  • Acwing.基础课.排列数字(c++题解)
  • 前部分知识复习03
  • Java之类和对象
  • billd-live 一款开源、免费、技术先进的直播系统