📙 作者简介 :RO-BERRY
📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持
目录
- 补充上篇的细节
- 1.start 指令
- 2.man指令
- 3.nano指令
- 4.cp指令
- 4.1对文件做拷贝
- 4.2对目录做拷贝
- 4.3 拷贝所有文件以及目录到另一个文件
- 5.mv指令
- 5.1简单移动文件
- 5.2移动文件同时实现重命名
- 6. cat
- 6.1 echo指令以及输出重定向
- 6.2 cat打印
- 6.3 cat -s
- 6.4 cat -n
- 6.5【扩展】tac指令
- 6.6 cat其他用法
- 6.7 大文件读取
- 6.7.1 more指令
- 6.7.2 less指令
- 6.7.3 head指令
补充上篇的细节
从这里可以看出,我们的删除指令是只能删除可见文件的,隐藏文件是无法删除的
我们如果要删除,就必须要指定名字,不能删除目录文件这样大范围的删除了
这样设计是能好好保护很多文件的,因为有时候可能会误删文件,而隐藏文件有时候不容易看到的
1.start 指令
注:linux里使用机械键盘里的PgUp和PgDn可以翻阅之前打的指令以及后面的指令
2.man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是
man 指令
语法: man [选项] 命令
🎄常用选项
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按
下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文
件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
man指令是用来介绍linux里的其他指令的操作
我们打出man ls
linux就会显示出ls的一些基础信息用法啥的
然后最后是按H寻求帮助以及按q去退出界面回到linux指令页面
如果我们连man命令也不知道呢?
我们可以通过man man命令来看
如果我们一开始看不到和我一样的信息,我们可以按回车键,持续加载更多信息,因为man指令里是有很多信息,一个页面是不会一下全部加载出来
在这里其实4以后的字典都不会用到了解就可以
man找指令信息就是通过一个字典一个字典进行查找,从上往下,这个字典找到了就会输出这字典里这个命令的信息
我们想在字典1查找ls指令的信息就是通过在man 1 ls就可,一般默认省略了中间的1,一般就是从1开始
在这里就是我们的man + 字典编号 +对应操作 这就是一般基础格式
扩展:
我们在xshell里面输入
printf是一个基础的C语言输出函数
我们会发现printf在xshell也是一个可执行函数
那么我们可以直接进行输出也是可以的,这是以C语言的方式输出的
上面说了,一号字典存储的就是linux里面自带的指令,刚刚的printf在字典里就查找到一号就结束了
那我们不想在一号字典里查找怎么办?
此时你看到的就是字典3里面的print介绍
这就是指定手册查找
我们就可以看到
🐥man的使用格式就是 ----man 【制定手册】 查找数据
3.nano指令
就相当于linux里面的记事本
输入这行代码,我们就进入了file文本的写状态
我们随便写一个C语言代码
最下面的就是对应的Ctrl键+G或者X等功能
我们现在想退出
输出Ctrl键+X就退出来了
这里的cat就是查看文件的作用
查看一下内容就看到了我们刚刚存储的内容
有的会没有nano这个功能,我们需要自己下载
就输入
这样就安装好了
我们就可以无脑对文件进行内容输入了
4.cp指令
🐥语法:cp [选项] 源文件或目录 目标文件或目录
🎄功能: 复制文件或目录
💧说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
4.1对文件做拷贝
如果我们想拷贝文件到当前目录下可以吗
cp【拷贝指令】 file 【文件名】 . 【当前目录】
我们会发现file名称重名了,一个目录下不能存在两个相同名称的文件
我们将名字改一改,就会发现重新创建了一个名为file.txt的文件
访问其内容发现和file的内容是一模一样的
4.2对目录做拷贝
我们想把code目录拷贝到上层目录怎么办呢
我们发现不可以拷贝,只能拷贝文件
那么我想拷贝怎么办呢?
我们在前面加一个-rf r就是递归 f表示强制
我们访问上级目录里面发现就有这个文件
所以想拷贝目录需要带rf
我们还可以这样
拷贝完成而且内容一样
我们在后面可以加上绝对路径进行拷贝,但是在同级目录下是不可以实现同名称两个文件的,所以我们需要将其修改名称,完成不同名称但是内容一样的效果
4.3 拷贝所有文件以及目录到另一个文件
在这里会有一个疑问----我们实现拷贝的时候会不会拷贝隐藏文件呢?
其实是没有的,自己可以下去实现一下,在这里主要提一下
其实每个目录下都有一个点和两个点的隐藏文件,如果要对隐藏文件进行拷贝的话,必定会进行冲突
5.mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
🐥语法: mv [选项] 源文件或目录 目标文件或目录
🎄功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
我们刚学的cp也就是拷贝,就相当于复制粘贴,源文件是不会改变的
我们接下来学的mv指令就是将源文件move移动到目标路径
5.1简单移动文件
5.2移动文件同时实现重命名
如果我们在移动项目后面加上一个具体路径且存在,那么就是将项目扔到目标路径,那如果目标路径不存在呢?
我们会发现就是将其重命名了
也就是说mv指令可以进行重命名操作
6. cat
🎄语法:cat [选项][文件]
🐥功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
在学习cat之前我们需要延伸几个概念
6.1 echo指令以及输出重定向
向一个文件中写入内容 ---- nano
输出所写的内容(相当于C语言里的printf) ----echo
echo默认会向显示器打印
加入大于符号就变成了默认向文件写入
另外我们前面什么都不写,使用重定向可以直接创建文件
6.2 cat打印
我们再次输入发现原来的数据被清空了,然后再次输入我们的新数据
也就是输出重定向,每次都会清空原始文件,然后在写入
我们两个大于号连起来的时候,输入数据不会将原数据清空,会在其基础上追加数据。
我们把“>>”叫做追加重定向
6.3 cat -s
6.4 cat -n
6.5【扩展】tac指令
我们将cat倒过来写tac,同样可以输出文件,但是会将文件倒着输出
6.6 cat其他用法
但是其实使用cat test就可以实现上述功能了,但是这两个方式本质是不一样的,其根因会在后面章节讲到
6.7 大文件读取
我们在Linux里写一段脚本,本质上是一个while循环,写一个大文件初始值i为0,循环10000次,每次输入hello i进入文件file.ese
我们这个时候使用cat指令访问file.ese会发现会很快把所有数据打印出来
6.7.1 more指令
我们想慢慢看清楚每一个数据必须往上翻
我们就可以使用more命令,但是只能回车下翻
6.7.2 less指令
但是在这里只能回车下翻,而且不能上下翻动很不方便
我们就可以使用less指令
more命令 只能回车下翻
less命令 可以上翻可以下翻 并且输入/333 会自动寻找在333行的数据
6.7.3 head指令
我们如果只想看前几个文件
使用head指令
我们如果想从尾部查看数据
我们可以使用tail指令,和head指令用法类似,也可以指定行数打印
那如果我们想提取文件中的任意中间部分呢?
我们想提取800-810之间的文件
我们可以将前810数据提取出来存入另一个新文件,然后在新文件中使用tail指令提取尾部十行即可
同样的也可以提取尾部然后采取提取头部的操作
但是这种做法很繁琐,并且还需要形成新文件占据空间,这种做法非常的不优雅
这样既不用开辟新文件,也可以达到我们的目的
在这里我们用来分割两条指令的下划线我们叫做 命令行管道
这种写程序的方式也叫做流水线