💭 写在前面
本篇将继续讲解 Linux 基本命令行操作,对 Linux 手册、复制文件或目录、移动文件与重命名操作和查看目标文件内容进行讲解。我会手把手去演示操作每一个指令的用法以及常用选项,这些命令不需要可以的去记它,记不得就去翻一翻,用多了自然就会记住滴。
?在写 C/C++ 的时候记不得某个函数,我们可以去查手册。
Linux 的命令有很多参数,我们不可能全记住,但是我们可以通过查看联机手册获取帮助。
举个简单的例子,我们想搜一下 printf ,但是又不想脱离 Linux 去搜,
这时我们可以去问系统的那个男人 —— man
$ man printf
?
查找不到:
[root@VM-12-2-centos ~]# man 3 printf
No manual entry for printf in section 3
[root@VM-12-2-centos ~]# man fork
No manual entry for fork
ps.云服务器上的内容精简了很多,很多指令查不到。需要安装,输入指令:
yum install -y man-pages
实际上,man 手册更多的是用来查指令和系统调用接口的。
所以,如果我们想查某个不懂的命令我们只需要 man 一下,问问那个男人就可以了。
我们现在再给大家看几个查询的案例:
$ man 3 printf
$ man 2 fork
$ man 1 printf
? 思考:man 后面带这些数字干什么?如果我不知道 man 有那些手册可以查看呢?
💡 我们可以问男人的男人 —— man man,查看一下标准手册给我们提供的手册:
$ man man
而这些数字我们也可以从中看到它们对应的意思:?
?
?是查命令, 是系统调用,?是C语言相关的接口。我们最常用的就是这三本手册。
所以我们给 man 标上不同的数字,以用来查不同的手册。
man [选项] 命令
?
📜 常用选项:
??? man 手册分为8章
总结:
① 对于没有 man 手册的问题:root 下输入 yum install -y man-pages 。
② man 手册可以查看不同的手册,手册编号?,默认是?。
③ 如果你不知道有啥手册可以查,输入?man man 查看。
这里我将深入浅出的去讲,为了方便讲解,我们先做出如下操作:
1,创建一个txt文件
2,用linux文本编译器打开
3,随便输入几句骚话
4,之后按ctrl+x退出
直接按Y,再ent回车即可
5,输入cat+文件名
nano 是 Linux 的文本编辑器,而 cat 就是把文本的内容显示出来。
我们现在试着用 cp 指令拷贝一份 file-bak.txt 出来:
$ cp test.txt test-bak.txt
查看一下---ls,再cat一下看看效果。
这就是 cp 指令的拷贝功能,我们下面就赶快来介绍一下这个命令。
cp [选项] 源文件或目录 目标文件或目录
🔨? 功能:复制文件或目录(类似于Windows中的复制粘贴功能)
📃? 说明:cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
📜? 常用选项:
我们不仅能拷贝,还可以指定路径去拷贝。
💭 拷贝一份 test.txt 到 dir 目录下:
$ cp file.txt ../ayf/dir/file.txt-1
?注意事项:如果在拷贝的时候,要拷贝的文件是拷贝在当前路径下,两个文件的名称不能一样。如果拷贝到不同路径下,可以一样。
?默认情况下 cp 是不允许拷贝目录的,如果需要我们应该要携带 -r 选项。
$ cp-r [源目录] [目标目录] # 拷贝目录
此外,加上 -f 可以强制拷贝,不询问你是否要拷贝。
$ cp -rf [源目录] [目标目录] # 强制拷贝目录
如果我们想把一个文件移动的到指定的目录下,在 Windows 里我们都是直接拖动的。
还可以右键文件,使用 "剪贴" 功能然后粘贴到你想要放置它的目录下,
点击粘贴后,原来的位置就没有了,文件就移动过去了。
刚才我们说了复制,除了复制外,当然还有剪贴功能。
同样的,在 Linux 下我们用 mv 指令去移动我们的文件:
?
下面我们来正式介绍一下。
mv [选项] 源文件或目录 目标文件或目录
🔨? 功能:① 剪贴文件或目录(可以剪贴普通文件,也可以整体剪贴目录)
????????????????? ② 重命名(类似于Windows中的重命名)
📃? 说明:
📜? 常用选项:
mv 命令除了剪贴功能,还有一个重命名的功能。
$ mv [文件] [新名字] # 重命名
?
? Linux 中,一定要注意不要轻易地删除文件,除非你特别的确认。
因为 Linux 没有真正的回收站,不像 Windows 你删了可以去回收站找。
Linux 中你删了就真的删了,但是如果你想 Linux 里也有像 Windows 那样的回收站,
我们通过 shell 脚本把 rm 改造成 mv,这个需要用 vim 去改。
感兴趣可以试试:(将 rm 改造成 mv)
vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
mv -i ~/.trash/\$@ ./
}
trash() {
mv $@ ~/.trash/
}
?定义两个 Linux 命令,把 rm 命令用 mv 命令重改,做一个回收站。
我们前面已经用过这个命令了,现在我们来正式讲解一下这个命令。?
cat [选项][文件]
🔨 ?功能:打印文件内容(查看目标文件的内容)
📜? 常用选项:
cat -n 选项:打印的内容带上行号?
$ cat -n # 打印,但是带行号
?
思考:cat 把文件内容打印出来,有什么用?
cat 有点像C语言中把文件内容全部读出来然后打印到屏幕上,
它比较适合用来查看短的文本或者代码,如果我们只是单纯的想把文件打开看看,
我们就可以 cat 一下这个文件,这就像 Winodws 里双击打开记事本一样。
这是一个比较有意思的指令!
cat 倒过来就是 tac,它的功能自然不言而喻,倒着打印文件内容:
$ tac [文件]
注意事项:tac 不能像 cat 一样 cat -n 带行号打印!
?cat 命令适合短文本的打印,那长文本我们可以用什么打印呢?
💭 为了有实际场景方便讲解,我们先伪造出一个十万行的文本:
cnt=1; while [ $cnt -le 100000 ]; do echo "Hello! $cnt"; let cnt++; done
?
打印了十万行 Hello,如果我们想把它存起来,我们可以在末尾加一个 > [文件名]??
$ cnt=1; while [ $cnt -le 100000 ]; do echo "Hello! $cnt"; let cnt++; done > large.txt
?
?搞定,现在我们就形成了一个十万行的文本了。
cat 不适合查看大文本,因为它会刷屏,最后让我们查到的永远都是最后几段。
?我们刚才创建的 latge.txt 足足有十万行,把 cat 都吓傻了。
💭 对于这种长文本,我们如果想查看可以使用 more 指令:
$ more large.txt
?占满一个屏幕后就不往下显示了,如果想继续往下显示,按回车:退出按Q
当然,more 还有许多选项,我们下面来正式介绍一下。
more [选项][文件]
🔨 ?功能:类似于cat,但是更适合查看长文本
📜? 常用选项:
?more -n :比如我们想直接查看第 10000 行的内容
more -n :比如我们想直接查看第 10000 行的内容
?
?less 更是重量级!
more 仅能向前移动,却不能向后移动,但 less 支持前后翻,我们更推荐使用 less。
less [参数] 文件
🔨 ?功能:less 与 more 类似,但 使用 less 可以随意浏览文件。
📃? 说明:
📜? 常用选项:
head [参数]... [文件]...
tail [参数]... [文件]...
📃 指令说明:
📜? 常用选项:
用法演示:我们拿之前创建的有十万行的 large.txt 去测试效果:?
?
?
?? 思考:如果我想查看 large.txt 文本的??行的内容呢?
?① 方法1:临时文件法?
?
?② 方法2:走管道
$ head -30020 large.txt | tail -20
?
📚 管道的作用:级联多个命令,来完成流水线式的数据处理工作。
💭 用法演示:我们提取一些 large.txt 文件中的数据
?
?这就是管道的基本使用方法,真的是非常的好用。