一.Linux常见指令
前言:为了方便我们在Linux中写指令
介绍一下:
1.clear指令:
清屏操作
2.在Linux的命令行中,可以通过使用上下键来翻阅历史使用过的命令
3.Alt+Enter键:进入全屏模式,退出全屏模式
1.man
按q退出后,自动切换至下一行命令
我们刚才查看的是Linux下的ls命令,也就是使用的man手册的1号手册
那么我们接下来看一下3号手册
以printf为例
你会发现,这里依然是使用的1号手册,那么这是为什么呢?
这是因为printf在shell脚本中也是一个命令,但是这个命令跟C语言中的printf函数没有任何关联,它就是一个可执行程序
也就是说我们完全可以这样做
但是我们就是想让它在3号手册去查,该怎么办呢?
所以:
man 手册编号 查找的内容
如果大家使用man 3 printf后查不到,那么请使用root账号执行以下命令
yum install -y man-pages
为了讲解下面的cp命令,我们先了解一下nano工具
补充知识:nano
为了方便后续操作的理解,下面先给大家介绍一个工具nano(相当于windows中的记事本)
我们执行了
nano file.txt
后进入了下面这个界面,并且写了一段C语言代码
这里的^代表着ctrl键,
当我们想退出时,按ctrl+x
然后它问我们是否需要保存
我们输入y
然后按回车键
成功退出
如果大家的系统中没有nano
那么使用root账号执行以下命令:
yum -install -y nano
2.cp
大家应该知道:在windows中:同级目录下不允许存在同名文件或者同名目录,
在Linux中也是如此
windows中同名文件区分大小写,Linux中也是如此
我们把file.txt拷贝到了上级目录下
这里先介绍一下cat命令:
发现这两份文件内容完全相同,验证了cp命令的正确性
那么我们能不能拷贝到当前目录中呢?
答案是:不可以
那么我们非要拷贝到当前目录中呢?
我们可以给他改个名字
这样就成功拷贝到当前目录中了
以上我们证实了cp能拷贝文件,
那么cp能不能拷贝目录呢?
我们创建了一个目录dir1,
并且在dir1中创建了4个文件
想要拷贝到上级目录中,但是无法拷贝
因为cp默认不能拷贝目录
但是我们就是想要拷贝目录,怎么办?
cp -rf 目录名 目标位置 • 1
那么我如果想把dir1拷贝到当前目录下可以吗?
我们执行了: cp -rf dir1 dir1
结果发现我们把dir1拷贝到了dir1目录里面,并没有拷贝到当前目录里面(刚才多拷贝的我随手就删了)
那么我们就只能改一下名字了
我们也可以把该目录拷贝到其他目录下,并且可以同时更改文件名(这里以拷贝到/home/wzs目录下为例)
注意:拷贝的时候隐藏文件并不会拷贝过去
原因:
1.隐藏文件:我们拷贝的时候默认是我们自己认为把我们所能看到的文件都拷贝过去,
如果我们自己知道有隐藏文件的话,那么我们可以把隐藏文件单独拷贝过去
如果我们自己不知道有隐藏文件,那么隐藏文件的目的就达到了
2.隐藏文件就不应该被拷贝过去,因为每一个目录里面都自带两个隐藏文件
分别是一个点和两个点
如果把它们也拷贝过去,势必会发生目标目录下文件名的冲突问题
3.mv
注意:mv和cp一样,(src:源文件,dst:目标文件) mv src dst: 如果dst是一个目录,那么就会把src移动到dst这个目录里面 如果dst是一串路径后面跟有名字,那么就会把src移动到对应路径下并且把名字改成你所指定的那个名字
mv命令就相当于windows系统下的剪切命令
下面我们演示一下
我们把当前目录下的dir1 mv 到了上级目录,并且重命名为dir2,
然后我们分别ls上级目录下的dir2和当前目录下的dir1,发现移动成功
同理,普通文件也可以mv
注意:mv还可以对一个文件进行重命名
mv src dst 当dst为当前路径时: (1)当dst为已经存在的目录时,mv命令会把src移动到dst目录下面 (2)当dst是尚未存在的目录是,mv命令会把src移动到当前路径下,名字改为dst,也就是将src重命名为dst 如上图所示,我们将目录newdir 重命名为mvdir 对于普通文件也是如此
4.cat
补充知识:echo
echo命令:
1.我们输入什么内容,它就会向显示器中打印什么内容
2.echo “xxx” > 文件名
如果这个文件存在,那么会清空该文件的所有内容,然后写入xxx内容
如果这个文件不存在,那么会创建这个文件,然后写入xxx内容,类似于C语言中的fopen中的"w"选项
echo写入文件,默认会写入"\n"换行符
关于C语言文件操作的知识,大家可以看我的这篇博客:
输出重定向
下面我们隆重介绍一个概念:输出重定向
(两个作用:1.输出 2.重定向(即:重新改变了它的方向))
echo "hello world" 默认是向显示器中显示的 echo "hello world" > 9-29.txt 现在直接显示到了文件当中
在这里我们先引入一个Linux的设计哲学
Linux下一切皆文件:
Linux的设计者以这种哲学理念来设计Linux,
这么做有利于减少Linux系统的编码维护成本
这个哲学理念我们以后还会谈到,大家先有一个印象即可
那么我们回过头来继续去理解重定向
echo “hello world” 默认是向显示器中显示的 ------------ 默认是向显示器这个文件进行写入
echo “hello world” > 9-29.txt 现在直接显示到了文件当中 ------------ 现在向9-29.txt这个文件进行写入了
那么以后我们新建一个文件又多了一个选择
>文件名 • 1
又因为输出重定向在写入时默认会先清空该文件,那么我们发现
我们也可以通过相同的方式去清空一个文件
如果我们就是不想清空这个文件,我就是想要在它末尾追加新的内容,怎么办呢?
下面我们介绍一下:追加重定向
追加重定向
echo “hello 9.29-1” >> appendFile.txt
echo “hello 9.29-2” >> appendFile.txt
实现了我们刚才的需求,这就相当于C语言文件操作中的fopen的"a"选项
那么有没有>>>呢?,答案是:没有
接下来我们就能够向文件中写入多行内容了
那么我们回过头来继续学习cat
回到cat
1.cat -n: 对输出的所有行编号
2.cat -s:不输出多行空行
3.cat -b:对非空输出行编号
4.tac
逆向输出文件内容
cat其他用法
输入cat后,我们输入什么,cat就给我们打印什么(按ctrl+c)后退出
我们翻译一下:
输入cat后,我们输入什么,cat就给我们打印什么
cat从键盘文件中读取什么,就向显示器文件写入什么
也就是说cat默认读取的时候是从键盘文件中读取的
如果我们想要让cat从其他文件中读取呢?
我们就引出了输入重定向:<
<:把本来应该在键盘文件中读入的内容,更改成为普通文件中进行输入
cat的用途:通常用来打印一些比较短小的文件内容