本文主要简单介绍一下高频使用的Linux基本命令和一些比较快捷的热键;
废话不多说,直接进入主题!!!
语法:
ls +选项+目录或文件
;(首先在Linux环境下目录的意思就相当于Windows环境下的文件夹);
功能: 展示出该目录或文件下的文件或普通文件,并列出其详细信息;
常用选项:
-l: 列出文件的详细信息;
-a: 将所有文件列出(包括隐藏文件);
-1: 在每一行值列出一个文件;
-s: 在文件名前面输出其文件大小(单位为byte)
-S: 将文件以大小排序;
-r: 对当前目录下的文件进行反向排序;
-R: 以递归的方式展现出当前目录下所有文件及其子文件;
-t: 对当前目录下的文件按照时间为顺序排序;
-d: 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录;
-i: 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件;
-k: 以 k 字节的形式表示文件的大小。ls –alk 指定文件;
-n: 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F: 在每个文件名后附上一个字符以说明该文件的类型,“ * ”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
实战演示:
ls 然后什么也不加,默认展示当前路径下的所有可见文件;
当然如果ls后面只有选项而没有目录的话,就会默认对当前目录指向命令;
如果我们想要看看这些文件的具体信息的话我们可以加上 “-l
”选项:
我们可以发现明显比上一次多了一些详细信息,比如时间、所有者等信息;
当然对于ls -l
命令我们也可以简写成:ll
也能达到上图的效果;
当然我们除了用以上命令查看文件的详细信息,我们还可以通过指令:stat 文件名
获得更加详细的信息:
其中:
Access:表示访问时间;
Change:表示文件属性修改时间;
Modify:表示文件内容修改时间;
三个时间简称ACM 时间
上面说了,在不做特殊处理的情况下,ls命令默认是展现当前目录下的可见文件,如果我们想要 看当前目录下的所有文件(包括隐藏文件) 嘞?那么我们就可以利用命令“-a
”:
我们可以看到多出来3个文件,这3个文件都是隐藏文件,在Linux中以**.** 开头的文件都是隐藏文件;
其中 . 表示当前路径 . . 表示上一级路径;后面我们将cd命令的时候也会用到它们;
当然我们在这里也可以利用一下,比如 我们想看一下当前目录的上一级目录都有什么内容,我们就看以利用:“ls -l ..
” 来查看:
好了刚才是题外话,我们现在接着来讲解ls命令;
当然ls 后面除了可以跟单个选项外,我们也可以跟多个选项,多个选项可以只用一个
-连接起来,多个选项组合在一起就是与的关系,Linux会同时满足这些命令的要求;
比如:“ls -al1
” //该命令的意思就是以每一行展现一个文件的格式展现当前所有文件的详细信息:
其中al1三个选项的顺序无所谓啦,自己想先写那个就可以先写那个;
同时你也可以将这几个选项分开写也是没问题的,:“ls -a -l -1
” ,也是同样的效果;
剩下的选项读者可以自行下去研究,我们点到为止!!!
语法: 就是单走一个
pwd
== 功能:== 显示出当前用户所处的目录;(非常适合“路痴”的小伙伴!)
选项: 无选项;
实战演示:
就比如现在我们在lInux系统中迷失了方向,那么我们是直接输入命令“pwd
”就可以知道自己处于哪个位置了:
红圈表示我们现在所处位置;
语法:
cd 目录名
功能: 进入所指定的目录中去;
选项: 无;
常见配合:
cd .
//进入当前目录;
cd ..
//回到当前目录的上一级目录;
cd ~
//回到家目录;
cd -
//回到最近一次访问过的目录(有点类似于Windows系统下的快捷键Tab+Alt窗口间的来回切换,这里是实现目录之间的来回切换)实战演示:
上面显示当前路径为/root,然后我们输入命令cd . 跳转到当前路径,就跟啥也没做一样,还是原来的目录;
当前目录是/root,我们输入命令cd . .跳转到当前目录的上一级目录;
我们会发现只有一个/
,这是Linux的根目录
,再往上cd也跳不动了,相当于到顶了;
在Linux系统和Windows系统中,文件多是以多叉树的形式存在的;
接下来我们再来介绍一下什么是绝对路径和相对路径
绝对路径:绝对路径是指目录下的绝对位置,直接到达目标位置;
比如上图:我们如果需要找到test.c文件,在Linux中我们就可以根据路径/home/bit/test.c
来找到它,而且绝对不会出错,因为改路径具有唯一性!!!;
相对路径: 相对路径是指以当前文件资源所在的目录为参照基础,链接到目标文件资源(或文件夹)的路径。
在Linux系统中,/
才是路径分割符,这一定需要和Window环境区分一下,因为在Window环境中\
才是路径分隔符;
接着演示:
回到用户家目录,由于我是用root身份登录的所以我的家是root,但是如果我们是用普通用户的身份登录的话,我们就会回到/home目录下;
剩下的命令,读者也可以下去自己尝试!!!
语法:
touch 文件
功能: 创建一个具体的文件(不是文件夹!!!),touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
选项:
-a: 或–time=atime或–time=access或–time=use只更改存取时间。
-c: 或–no-create 不建立任何文档。
-d: 使用指定的日期时间,而非现在的时间。
-f: 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m: 或–time=mtime或–time=modify 只更改变动时间。
-r: 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t: 使用指定的日期时间,而非现在的时间。;
实战演示:
我们利用touch命令在/root/Code目录下建立了一个test.c文件;
当然我们可以对其进行操作:
我们可以用nano文件打开它并对其进行操作,一般云服务器都内置了 nano 编辑器,如果没有,可以自己安装:直接输入命令即可:yum install -y nano
现在我们有了nano,我们直接输入命令nano +文件名
,就可以对对应文件进行操作了;
然后我们就会出现这样的界面,然后我们直接写代码就可以了;
比如我们先写个九九乘法表:
然后按Ctrl+X退出即可;然后他会问你是否保存修改,直接输入y即可,表示同意;
然后我们利用gcc编译器先编译这段代码:
输入命令:gcc test.c
然后我们会发现,在当前路径下多了个a.out文件,这个文件就相当于Window下的exe文件,我们直接输入命令./a.out
执行它!;
当然如果我们想要查看文件里面的内容怎么办?
1、我们可以利用nano 文件名直接进去查看;
2、利用 命令cat 文件名
;
就可以查看了:
比如:
我们直利用命令查看test.c文件里面的内容;
同理我们还可以查看a.out的文件:
只不过这全是二进制文件;
上面介绍了touch命令是用来专门建立普通文件的,接下来这个命令是专门用来建立文件夹的;
语法:
mkdir 选项 文件名
功能: 创建指定文件夹;
常用选项:
-p:, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
实战演示:
我们利用mkdir命令建立一个文件夹;
我们配合着常用选项,我们可以在文件夹中建立文件夹:
我们在Code4文件夹中建立了Code5到Code8的文件夹;
为了方便检查,我们可以利用tree命令来查看,如果tree命令不能用的话,则使用该命令下载一下:
#yum install -y tree
接着我们tree 目录
,就能将当前目录下的所有文件按按照树枝一样全部展现出来:
我们可以发现的确按照我们之前的想法,建立了多个文件夹;
上面我们似乎只讲了如何创建,却没讲如何删除,这不删除指令不就来了!!;
语法:
rmdir 选项 文件名
功能: 删除空文件按夹,注意一定要是空的才能删除,不是空文件夹会报错!!
常用选项:
-p: 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
适用对象 具有当前目录操作权限的所有使用者;
实战演示:
删除Code4内所有文件夹(包括Code4)
同时通过上图可以看见删除不为空的文件夹,的确会报错;
上面是只能删文件夹而且还必须为空,感觉有点鸡肋,接下来我们认识一个比较厉害的删除指令:
可以同时删除文件或目录;
语法:
rm 选项 目录
功能: 删除文件或目录
常用选项: ;
-f: 即使文件属性为只读(即写保护),亦直接删除
-i: 删除前逐一询问确认
-r: 删除目录及其下所有文件
使用对象: 所有使用者;
实战练习:
我们想要删除 Code目录,为了避免误操作,系统会一个一个的让我们确认,最后确定完了才会删除,如果我就像一次性删除,不要在问我了,那么我们直接加上-f
强制删除:
这一次删除就很顺利,系统也没有追着问我们了,直接就删除了;
那如果我们只是想删除文件夹里面的内容,但是对于这个文件夹我们还向留着,我们改怎么办?
我们直接输入命令:rm -rf Code/*
就好了:
Code文件里面啥也没有,只剩一个空文件夹;
既然rm这么强,那么我的/
(根目录里面的内容)能不能删?当然可以!
输入命令:rm -rf /*
;这也就是程序员经常开玩笑的删库跑路,很刑!!!
我们演示一下:(读者们不要轻易尝试,博主用的是云服务器,删了就删了,没啥重要的东西)
就会出现这样疯狂刷屏的现象,如果想要这种现象停下来(Ctrl+C)
最后系统直接崩溃,输入啥命令都没用!!!(如果数云服务器,去后台重装一下系统就行了);
上面我们说了文件或目录的删除和创建,接下来我么来讲解一下文件的复制:
语法:
cp 选项 源文件或目录(源头文件) 目标文件或目录
功能: 复制文件或目录
常用选项: ;
-f: 强行复制到目标文件或目录,不论目的文件或目录是否已经存在;
-i: 若源文件与目标文件同名则会询问是否需要覆盖目标文件;
-r: 递归处理将目录及其子目录或普通文件一起处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理;
-R: 递归处理将目录及其子目录或普通文件一起处理;
实际演练:
就比如现在我想将一个普通文件复制一份放在文件夹(或目录)里面,我们就可以利用命令cp 普通文件名 目标文件
:举个例子:我们现在要将test2.txt文件
复制一份倒dir文件里面,我们就可以利用命令:cp test2.txt dir
:
刚才是dir文件里面什么也没有我们可以顺利拷贝进去,系统也不会询问我们的意见,但是如果我们再次将test2.txt文件拷贝进dir文件的话,系统就会提示我们是否发生覆盖,如下:
我们只需要输入y/n(yes/no)就可以了;
当然上面都是针对普通文件的,如果针对目录的话,我们就要带上-r
选项不然会发生拷贝失败:
成功的:
当然如果我们将源文件拷贝倒目标目录或文件,目标目录或文件不存在时,系统会自动建立新的文件夹或目录,然后在将拷贝的文件放进去:
上面讲了创建、删除、复制,接下来讲讲文件的剪切和重命名;
语法:
mv 选项 源文件(源头文件) 目标文件或目录
功能:
Linux指令这么多,我们不可能全部都记住,为此,对于不理解的指令我们可以利用man命令去查找,man就好比一个新华字典,同时由于Linux内核是由C语言写的,所以man命令还支持查找C语言库函数!;
语法:
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指令查找C语言库函数:
man 找指令:
以上指令都是关于文件的创建、删除、复制、剪切、重命名的功能,关于文件内容的指令,我们将在下一期介绍!