初识Linux篇:第三篇
- 初识Linux篇:第三篇
- 1.Linux中常见的通配符
- 1.1*号通配符
- 1.2 ?通配符
- 1.3[ ]通配符
- 1.4{ }通配符
- 2.man指令
- 3.cp指令
- 4.mv指令
- 5.alias指令
- 6. echo指令
- 7.cat指令
- 8.more指令
- 9.less指令
- 10.head与tail指令
- 11.在Linux中写代码
- 总结
初识Linux篇:第三篇
😁本篇接着学习Linux的基本指令的学习
1.Linux中常见的通配符
🤔什么是通配符?通配符有什么没用?
概念:通配符是一种匹配文件名的一种特殊符号;
作用:帮助我们更加方便和快捷地查找和操作文件;
首先我们先切换到普通用户,普通用户更方便操作而且风险更低:
切换用户的命令:su 用户名
su:switch user(切换用户的意思);
1.1*号通配符
*号表示任何字符,它可以让你很快的筛选指定的文件或目录;
我们可以验证一下,* 号是不是匹配所有文件或目录?
比如,我想要查看所有的.c文件以及删除所有的.c文件,就可以用通配符*号去匹配:
1.查看所有.c文件:
2.删除所有.c文件:
注意:* 号也可以搭配其他指令,让我们更快的查找和操作文件或目录;
1.2 ?通配符
?:表示占用任意单个字符,用来匹配匹配文件名中单个字符;
比如,我想要查找第一个字符是 ‘t’ ,并且倒数第三个字符也是 ‘t’ 的文件:
1.3[ ]通配符
[ ]是匹配单个字符集,用来匹配这个[ ]中的一个字符;
比如,我想要显示第二个字符是 ‘t’ 或 ’e‘ 的文件:
1.4{ }通配符
{}:是字符串集,用来匹配花括号的中的一个字符串;
比如,我要查找含有”suzhou“或”yangzhou“的文件:
总结:
- *号通配符表示任意字符;
- ?号通配符表示匹配单个字符或占用单个字符;
- []表示匹配单个字符集中的任意一个字符;
- {}表示匹配字符串集中的任意一个字符串;
2.man指令
😭有时候我们会忘记某些指令怎么用,怎么办?
man(manul)指令:查看联机手册,也就是看看Linux中的命令该怎么用;
语法: man [选项] Linux命令
常用选项:
- num 只在第num章节找,不写默认从第一章找;
- -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用-a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕;
注意:
- man手册共8章,因此你的num只能在1~8之间;
- 我们不能用鼠标进行上下观看,可以用键盘上的上下键,或者键盘上的pgup,pgdown;
- 退出手册可以按键盘上的q键或者ctrl+c;
- 如果查不到,可能是man手册不完整,可以在root用户下输入以下命令:yum install -y man
我们输入:man man即可查看man的用法,以下是man的章节;
比如查看第三章C语言库函数中的printf函数:
3.cp指令
🤔什么是cp呢?
cp(copy)指令:用来拷贝文件或目录(加一个-r选项)的,也就是我们在windows下的ctrl+c和ctrl+v的结合;
语法:cp [选项] 源文件或目录 目标文件或目录
常用选项:
- -f 不要问我,强行复制文件或目录, 不论目的文件或目录是否已经存在;
- -i 覆盖文件之前先询问用户;
- -r 递归处理,将指定目录下的文件与子目录一并处理;
注意:
- 如果在同一个目录下,源文件名或源目录名与目标文件名或目标目录名相同,则拷贝失败,加-f也不行;
- 如果目标文件或目录不存在,则自动创建目标文件或目标目录;
- 如果目标文件存在,则源文件覆盖掉目标文件,如果目标目录存在,则源目录会拷贝到目标目录的当前路径下;
注意:
通过这两张图,我们可以看到这两个test.c文件的内容是不一样的,那么我们cp一下:
对于两目录名相同而言:
原图:
拷贝后:
4.mv指令
🤔什么是mv指令?
mv(move)指令:mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录;
在windows下通俗的讲就是对文件重命名或者对文件剪切+粘贴的操作;
语法: mv [选项] 源文件或目录 目标文件或目录
常用选项:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖;
🤔如何判断mv到底是重命名还是剪切呢?
其实我们都可以认为mv是剪切并重命名的意思,把目标文件看成一个目录,如果目标目录后有新的名字则表示剪切后重命名,没有新的名字则剪切后用自己原来的名字;
比如:
对于重命名:
对于剪切:
注意:
- mv的选项没有-r,也就是说它既可以剪切或重命名文件也能剪切或重命名目录;
- 在同一个目录下,如果源文件或目录名与目标文件或目录名相同,则剪切或重命名失败;
- 如果目标文件存在,则源文件覆盖掉目标文件,源文件消失,如果目标目录存在,则源目录会拷贝到目标目录的当前路径下,源目录消失;
- 如果目标文件或目录不存在则自动创建,将原文件数据拷贝过来,源文件消失;
举个例子:
5.alias指令
以后我们可以自己配置文件时可能会用到;
🤔什么是alias指令?
alias(别名):就是对指令起别名;
🤔🤔为什么ls -l就可以写成ll,这其实就用到了alias指令;
注意:which指令是用来查看指令的绝对路径, pwd是不行的,pwd只是显示我们自己写的所在文件的当前路径;
语法:alias [选项] 别名=’ 命令名称 ',双引号也可以;
常用选项:
- -p显示当前所有的别名设置;
值得注意的是:
alias仅作用于该次登陆的作业,若要每次登陆时都自动设置好别名,需要自己进行配置;
举个例子,我想让mkdir -p取名为为mk:
🤔那么如果我不想用别名了呢?
用unalias指令:取消对指令取别名;
语法:unalias [选项] 别名
常见选项:
- -a 删除当前会话的所有别名,包括ll这个别名;
注意:unalias,只能删除当前会话的别名,对于已经配置好的别名,在当前会话下也会被删除,但是在下一次打开后,又会自动生成;
但是我们重新打开会话框,对于系统的别名依旧存在:
6. echo指令
🤔什么是echo?
echo英文单词是回响的意思,可简单理解为为显示;
echo指令:在linux里是一个用于字符串输出的命令;
语法:echo [选项] 字符串
常用选项:
- -e 表示对于转义字符按对应的方式进行处理;
- -n表示输出不换行,默认会换行;
其实echo还有一个知识点就是输出重定向;
🤔🤔什么是输出重定向?
输出重定向可以理解为重新换个输出方向;
输出重定向符号:>,表示输出到目标文件;
我们看到,原本我们没有输出重定向,默认会输出在显示器文件上,但是我们加了>就输出到(写入到)目标文件中了;
🤔🤔为什么我会说显示器文件?
因为Linux下一切皆文件,如显示器文件(一种输出流),键盘文件(一种输入流),显卡文件,普通文件;
🤔🤔🤔那么你是怎样看待指令的?
其实指令也是文件,是一个普通文件,更细的说是一个可执行程序,只不过这个可执行程序在Linux中的/usr/bin这个特定的路径底下,每次使用指令时,系统会自动在这个特定的路径下找;
实在记不住这个路径没关系,我们刚才学了which指令,可以查看指令的所在位置;
回到正题,这个输出重定向可以将字符串输出到指定文件中,但是他有一个特性就是每次写入到这个文件中都会先清理这个文件,再写入新的内容;
🤔🤔🤔🤔那么如何不让它清理(也就是追加的写)呢?
这就涉及到追加输出重定向了,就是>>符号;
值得注意的是:
所以我们还可以利用输出重定向或输出追加重定向创建文件或目录,用输出重定向清空文件或目录;
7.cat指令
注意这里的cat可不是猫的意思,这里的cat时concatenate的缩写,是来连接的意思,可理解为将文件的内容连接到显示屏上;
🤔什么是cat指令?
cat指令:查看目标文件的内容, 但是cat只适用于看小文本;
语法:cat [选项] 目标文件
常用选项:
- -n 对输出的所有行编号;
- -s 不输出多行空行,只输出一行空行;
- -b 对非空输出行编号;
相信大家从上面已经看到这个指令很多了;
🤔我们刚才知道有输出重定向,那有没有输入重定向呢?
cat就是可以输入重定向;
我们可以得出结论输入重定向<,在默认情况下是从键盘中读取的,加上文件后是从文件中读取的;
选项的用法展示:
8.more指令
🤔more指令是用来干什么的呢?
向上面这种稍大的文本我们就不适合用cat看了,因为它会自动刷屏到结尾,我们可以用more来观看;
语法:more [选项][文件]
常用选项:
- -num 打印到num行
- q 退出more
注意:more是只打印满屏,不会将所有的都打印,只有当你按一下回车键才能继续往下打印一个,但是不能往上翻;
9.less指令
🤔🤔那有没有比more更好的查看大文本的指令呢?
less指令,既可以上下翻(上下键:慢翻,pgup/down:快翻),也可以搜索;
语法: less [参数] 文件
选项:
- -i 忽略搜索时的大小写;
- -N 显示每行的行号;
- /字符串:向下搜索“字符串”的功能;
- ?字符串:向上搜索“字符串”的功能
- q:quit退出;
10.head与tail指令
🤔🤔head与tail指令是干什么的呢?
head与tail指令是提取大文本的信息的,head是提取大文本前num行信息,tail是提取大文本后num行信息的,他们会将这些信息输出到显示器文件中;
注意:默认num是10行;
语法:head [选项] 文件
语法:tail [选项] 文件
常用选项:
- -num num表示查看的行数;
🤔那我想要200-300的信息呢?
但是这要创建一个文件,势必会占用磁盘空间;
所以介绍一个新的符号’|‘,管道(文件);
分析:先从head -300 out.txt处理,把前300行存到管道文件中,然后tail -101从管道这个文件中读取后101行,最后显示结果;
11.在Linux中写代码
我们现在先简单的学习一下如何在linux中写代码,需要用到编辑器nano;
1.先从yum软件资源安装包上安装nano编辑器,即输入这串指令:yum install -y nano
2.安装完后输入nano 文件名,进入nano编辑器,编写代码;
3.按ctrl+o保存内容,按ctrl+x退出nano编辑器,再按Y保存文件,进入是否修改文件,按回车退出编辑器来到xshell中;
4.编译,系统中只有C语言的编译器:输入gcc 文件 ,想对文件重命名的输入:gcc 文件 -o 重命名
5.运行,./a.out,注意这个a.out是默认的文件名,如果你重命名了就用重命名后的名字,即./重命名;
注意:这个编辑器也能够写cpp的代码,不过系统没有cpp的编译器,所以要装cpp的编译器:yum install -y gcc gcc-c++,然后编译时用g++编译即可;
🤔怎么保存你运行的结果呢?
总结
本篇主要介绍了一些Linux中的常见指令,如cp,mv,echo,su,通配符,man,which,alias,unalias,cat,more,less,head,tail等等,如果喜欢本篇不妨留下一颗小❤️,下篇见!