目录
前言:
在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来。
这一部分的笔记是以电子科技大学慕课《Linux操作系统编程》为基础写的。
在这一篇文章中,我们主要介绍一些常用的Linux命令。
正文:
1. 命令格式
命令名称 -选项 参数
如:ls -la /etc
2. 文件目录类命令
1、ls命令
命令名称:ls
命令英文原意:list(啊,就是缩写嘛)
功能描述:显示目录文件
语法:ls 选项[-a -l -d] [文件或目录]
-a:显示所有文件,包括隐藏文件
-l:详细信息显示
-d:查看目录属性
示例:
如图是我的文件夹:
如图是4种方法输出的结果:(如图所示 .vscode这个文件是隐藏文件,ls -a显示出来了)
2、pwd命令
命令名称:pwd
命令英文原意:print working directory
语法:pwd
功能描述:显示当前所在的工作目录
示例:
同样以刚才那个文件夹为例:
3. 目录操作类命令
1、cd命令
命令名称:cd
命令英文原意:change directory
语法:cd [目录]
功能描述:切换目录
示例:
$ cd / 切换到根目录
$ cd .. 回到上一级目录
如图,我从test文件夹中用cd ..回到了上一个文件夹,再用cd /回到了根目录
2、mkdir命令
命令名称:mkdir
命令英文原意:make directory
语法:mkdir [目录]
功能描述:创建新目录
示例:
$ mkdir newdir
如图,输入指令后多了个叫“newdir”的文件夹
3、rmdir命令
命令名称:rmdir
命令英文原意:remove directory
语法:rmdir [目录名]
功能描述:删除空目录
示例:
$ rmdir newdir
如图,输入后我亲爱的newdir被删除了
那么问题来了,如果不是空目录会发生什么呢?
我重新建立了newdir,然后将里面放入了一些文件
此时执行rmdir指令,删除失败
4. 浏览文件类命令
1、cat命令
命令名称:cat
命令英文原意:concatenate and display files
功能描述:连接文件并打印到标准输出设备上
选项:
-E 在每一行的末尾显示$
-n 为显示行添加行号
参数:指定要连接的文件列表
示例:
cat m1(在屏幕上显示m1的内容)
cat m1 m2(同时显示文件m1和m2的内容)
如图,其中1~7行是1.cpp的内容,8~19行是2.c的内容,同时也使用了-E和-n这两个选项
2、more命令
命令名称:more
语法:more [文件名]
操作:
(空格)或f: 显示下一页
(Enter): 显示下一行
q或Q: 退出
功能描述:分页显示文件内容
示例:
我在vscode里写了一个很长的114514.cpp,如图所示,一眼望不到头。
此时在终端输入more 114514.cpp,可以看见没有完全显示出来。
此时我敲了下回车键,多输出了一行(虽然基本看不出来)
敲了下空格后,则是完完整整显示出来了
敲击q键之后就回到了终端的输入了
3、less命令
less命令与more命令用法类似,也可以用来浏览超过一页的文件。不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。
4、head命令
命令名称:more
语法:head [参数] <文件名>
参数:
-n:显示前n行,不指定此参数默认显示前10行
示例:
如图所示,简单易懂
5、tail命令
命令名称:tail
语法:tail [参数] <文件名>
参数:
-n:显示后n行,不指定此参数默认显示前10行
+n:从第n行显示到文件尾
-F:用于跟踪显示不断增长的文件结尾内容(通常用于显示日志文件)
示例:
我从50行开始显示114514.cpp
5. 文件操作类命令
1、cp命令
命令名称:cp
命令英文原意:copy
功能描述:可以将文件从一处复制到另一处,一般在使用cp命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录
语法:cp [参数] <源文件路径> <目标文件路径>
参数:
-p:连同文件的属性一起复制,而非使用默认方式,常用于备份
-i:若目标文件已经存在时,在覆盖时会先询问操作的进行
-r:递归持续复制,用于目录的复制行为
-u:目标文件与源文件有差异时才会复制
示例:
如图,目录内有m1和m2两个文件夹,两个都是空的文件夹。
执行命令(-r可以忽视了,这里因为m1里面没有其他东西,所以-r没有用)
后可以看见m2内出现了m1
再执行↓
可以看见m1里面出现了m2,而m2打开之后里面又有m1
如果执行↓,可以看见略过了目录m2
其他的参数就不尝试了,可以自己去试一试~
2、rm命令
命令名称:rm
命令英文原意:remove
功能描述:删除文件和目录
语法:cp [参数] <目标文件路径>
参数:
-f:就是force的意思,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问用户是否操作
-r:递归删除,最常用于目录删除,它是一个非常危险的操作(老师ppt都这样说了,看得我非常想去尝试rm -rf /*了,啊,要不要再整一个虚拟机去试一试呢嘿嘿嘿)
操作:
删除某个文件:rm [文件名]
删除当前目录下的所有文件:rm *
递归删除某个目录:rm -r [目录名]
强制删除所有后缀名为txt的文件:rm -f *.txt
删除当前目录下的所有文件(询问):rm -i *
示例:
m2里面还有之前的m1文件夹,果然不能直接删除m2,必须-r才能删除。
然后做第二个测试:我在m1中放入了114514.cpp,1.cpp,main.cpp三个文件,然后执行
我只在第一个敲了y,后面都是敲的回车,结果只删除了114514.cpp。
经过测试,似乎在首字母是y的情况下都能成功删除,下面三种情况都成功了
3、find命令
命令名称:find
功能描述:用来寻找文件和目录
语法:find <路径> [参数]
参数:
-name filename:找出文件名为filename的文件
-size [+-] s:找出比s要大(+)或小(-)的文件
-type t:查找文件类型为t的文件,t的值主要有:一般文件(f)、设备文件(b、c)、目录(d)、连接文件(i)、socket(s)、FIFO管道文件(p)
-perm mode:查找文件权限刚好等于mode的文件,mode用数字表示,如0755
示例:
在网上搜索了之后发现find的用法挺复杂挺多的,这里就只给这样一个简单的例子了,详细的用法可以参照他人的博客,这里就不深入展开了
4、grep命令
命令名称:grep
命令英文原意:Globally search a Regular Expression and Print
功能描述:在文件中搜索匹配的字符并进行输出
语法:grep [参数] <要找的字串> <寻找字串的源文件>
参数:
-a:将binary文件以text文件的方式查找数据
-c:计算找到“查找字符串”的次数
-i:忽略大小写的区别,即把大小写视为相同
-v:反向选择,即显示出不包含“查找字符串”内容的那一行
示例:
如下图,我在114514.cpp里面计算找到114514这个字符串的个数,结果找到了22个。
至于反选之后,就输出了如下的结果(太长了就不完全截图了),反正里面一个114514都没有。
5、tar命令
命令名称:tar
命令英文原意:tape archive
功能描述:将用户指定的文件或目录打包成一个文件,也可以通过指定参数开启压缩/解压缩功能
语法:tar [参数] <文件>
参数:
-c:新建打包文件
-t:查看打包文件的内容含有哪些文件名
-x:解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j:通过bzip2的支持进行压缩/解压缩
-z:通过gzip2的支持进行压缩/解压缩
-v:在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename:filename为要处理的文件
-C dir:指定压缩/解压缩的目录dir
示例:
将当前目录的所有文件打包成test.tar(太长了就不截完了)
tar -cvf test.tar *
将当前目录的所有文件打包成test.tar,再用gzip命令压缩
tar -czvf test.tar *
查看test.tar中包含了哪些文件:(也不完全截图了)
tar -tf test.tar
将test.tar解打包:
tar -xvf test.tar
将test.tar.gz解压缩并解打包:
tar -xzvf test.tar.gz
顺带一提,可以很明显的看出gz是压缩过的。(空话)
后记:
老师上课的时候说:“万一哪一天,人类的图形界面用不了了,还能用命令行来写代码(指vim编辑器),你们一定一定要适应终端编程!”我:人类都堕落到这种程度了,估计我也救不了了(小声)
结果没想到终端的功能这么丰富,所以我还是乖乖用图形界面干活吧。
谢谢大家读到这里~