欢迎各位伙伴来到 每天学习 5 条 Linux 指令的 第一天!!!
这也是第一篇介绍 Linux 指令的文章,包括在接下来的所有指令的文章中,我主要都会以介绍指令的作用 及其实操效果为主,有时会涉及一些使用场景,中间也可能会穿插一些额外的拓展问题等等
在讲Linux的一些基本指令之前呢,我先给大家明确一个概念。那就是,什么是指令?我们在使用各种指令,是在做什么呢??也就是我们为什么学习 Linux 指令呢??
其实,Linux刚面世的时候是并没有图形化界面,说到这里,可能有人要问啦!哎哎哎,你说的这个 ”图形化界面“ 是个啥东西?? —— 你也可以简单理解为,看得到的。就如同windows下,你一开机进入系统,你就可以看到很多图标。
而早期的 Linux 的系统是没有图形化界面的,所有操作没办法像我们现在使用windows 这样,可以双击,可以右键,Linux它都不可以!!!它都是靠命令完成去完成各种各样的操作的。
而在我们企业的工作当中,大量的服务器维护工作都是需要远端通过SSH客户端来完成的,而不是像我们平常,给你一个看得到的windows系统,让你去完成各种工作,因此,没有了图形化界面,我们就需要通过各种命令 / 指令,来进行操作我们的系统,以此来达到完成各种工作的目标!!!
有人又要说啦!那你将这么久,你还没告诉我,什么是命名 或者 指令呢???
通俗来讲,指令,它就像是我们在使用windows操作系统下 进行的 各种日常操作(包括什么双击打开文件啊,什么右键删除啊…等等)。所谓指令,也就是起着这么一个作用(Linux平台)
更多的作用,只能是大家学习完 Linux 常用的基本指令之后,再慢慢去感悟!!
好了,废话不多说,我们进入今天的指令学习!!
今天学习的是……
ls 就是用来显示当前路径的文件名
[duck@localhost linux]$ ls
base_ir pro_address process README.en.md README.md yum_dgb
ls 我们称之为命令。ls -l 的 -l 我们称之为选项
ls -l #用来查看路径下的文件的详细信息
ls只是显示当前路径的文件名,ls -l 是显示除文件名以外的更多的文件属性!
ls -a #也是显示当前路径的文件名,只不过是所有的文件名!
那看到这里,有人会问啦,那这些 " . " 是什么东西啊?
windows下有隐藏文件,同理,Linux下也有!! 这些以 " . " 开头的文件名,就是Linux的隐藏文件!
ls -l -a #那就是显示当前路径下的所有文件的详细信息
OK,我们总结感悟一下,ls -a到底是一种什么感觉??它就好比我们在windows下,打开或者关闭这么一个按钮
到这里,可能又要有人问啦!哎哎哎,那这讲了大半天,那隐藏文件有什么用啊???
其实基本上我们也用不到,除非说,你想上传点什么小秘密,哎,对吧(斜眼笑)。
其实要说用处,那比较通常的一个,就是隐藏一些配置文件。
ls -i #查看文件的 inode 编号
inode 编号呢,就是这里的数字,大家也可以理解为,inode 编号就是文件的名字。就好比,我们在学校有学号,在其他地方有名字,这样的一个概念。
上述的 ls -ial 其实就等价于 ls -a -l -i 的写法,都是一样的。其中呢,ls -l 也可以直接写成 ll,如果你愿意的话,这里就不在做过多的演示了
如果在磁盘上新建一个 空文件,请问,该文件要不要在磁盘上占据空间呢???
先说答案,当然要!!!
答案是,当然算!!!
假如,我此时往一个空文件写入 abcdefg 二十六个字母,那文件的大小,会不会发生变化呢?? -—— 当然会!
修改时间会不会发生变化呢?? —— 也会!
那这些需要记录起来吗?? —— 需要!
那上述的这些所谓的,修改时间,文件大小,文件类型这些属性,是不是也是一种数据呢??? —— 是的!
那既然是数据,需不需要空间呢?? —— 需要!
那一个空文件,需要文件名吧? 需要创建时间吧?需要文件大小吧?需要文件类型吧?那这些都是数据吧?!那既然是数据,那就需要在磁盘占据空间!!
结论:文件 = 内容数据 + 属性数据
mkdir 就是在当前路径下创建一个目录 / 文件夹
[outlier@localhost ~]$ mkdir test
[outlier@localhost ~]$ ls
test
那此时如果我想创建一串目录呢?
很好,我们看到了,它不让我们创建一串目录!!!
那假设,我今天一定要创建这么一串目录呢???我一定要!
我们可以通过
[outlier@localhost test]$ mkdir -p d1/d2/d3/d4
创建完之后呢,我们就发现,欸!有了!
那我怎么查看,d1目录里面是否有d2这个目录呢,d2 里面是否有d3呢??
OK,到这里,我们先赶紧停一停,我们再来学习一个指令
# tree就是以树状结构,显示当前目录
[outlier@localhost test]$ tree
我们确实看到了我们的目录下,有 d1 d2 d3 d4,那我还是不信,你怎么证明d4在d3里,d3在d2里,d2在d1里呢???
那我们在来验证一下。
我们进入d1,再进入d2.。。。最后呢,我们确实看到了,我们所在的路径,就是我们创建的一串目录当中
可能有些人,运行 tree 这条指令的时候,报错了,那可能是你的环境没有安装tree命名。
我们可以运行一下这条指令 yum install -y tree
,这里就不给演示了
cd 就是进入某一路径的 !
[outlier@localhost ~]$ cd test
[duck@localhost process]$ cd ~
[duck@localhost ~]$ pwd
/home/duck
对于普通用户而言:/home/xxx:就叫做xxx的家目录
而对于root用户而已,家目录为 /root
而所谓的 cd ~
就是回到用户的家目录!!
[duck@localhost pro_address]$ pwd
/home/duck/linux/pro_address
[duck@localhost pro_address]$ cd ~
[duck@localhost ~]$ pwd
/home/duck
[duck@localhost ~]$ cd -
/home/duck/linux/pro_address
[duck@localhost pro_address]$ cd -
/home/duck
[duck@localhost ~]$ cd -
/home/duck/linux/pro_address
从上述指令,我们可以看到,本来在 /home/duck/linux/pro_address 路径下,通过cd ~
来到家目录,又通过 cd -
回到了原来的路径,再次 cd -
又回到了家目录。
所以,cd - 就是跳转至上一次我所处的路径!!!
# 我们先通过pwd查看当前所在路径
[duck@localhost linux]$ pwd
/home/duck/linux
# 不是说,一个点,表示当前路径吗,那我就cd . 然后再pwd查看我当前路径变化
[duck@localhost linux]$ cd .
[duck@localhost linux]$ pwd
/home/duck/linux
# 可以看到的是,cd . 表示的就是进入当前路径,那 cd .. 呢?
[duck@localhost linux]$ cd ..
[duck@localhost ~]$ pwd
/home/duck
# OK,我们同样可以看到,我们从linux这个目录回到了 /home/duck/linux 这一串路径中 linux 的上一级目录 duck
# 所以cd .. 就是返回上一级路径, .. 就是直接上级路径
OK,那到这里,可能又要有人问了,哎哎哎,那你这一点和两点有什么用呢??
两个点的,就好比我们在windows平台上的返回键,这个我理解了,那… 一个点呢???
#假设当前有一个编译好的cpp可执行文程序 -- test
[duck@localhost yum_dgb]$ ls -al
total 28
drwxrwxr-x. 2 duck duck 50 Aug 16 01:31 .
drwxrwxr-x. 7 duck duck 119 Aug 20 21:30 ..
-rwxrwxr-x. 1 duck duck 19928 Aug 16 01:31 test
-rw-rw-r--. 1 duck duck 480 Aug 16 01:31 test.cpp
那么我们要指向test的时候,该怎么执行呢?
./test
就是在执行 test.cpp 编译好的 test 可执行程序
要执行一个文件,你总得告诉我,这个文件在哪吧??
.
就是告诉我,这个文件在当前路径下,直接 /
执行它,就可以了!!!
[duck@localhost linux]$ pwd
/home/duck/linux #这里的 / 叫做 “路径分隔符”
# 而当我们不断的 cd ..的时候,总会退回到最开始的地方
[duck@localhost linux]$ cd ..
[duck@localhost ~]$ cd ..
[duck@localhost home]$ cd ..
[duck@localhost /]$ pwd
/ # 此时,这里的 /,我们称之为根目录!
其实,Linux系统中,磁盘上的文件和目录被组成一棵目录树(也被称为多叉树),每个节点都是目录或文件。而文件或者空目录即为它的叶子节点
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
父节点,可以有多个子节点,但是呢,一个子节点,一定只有一个父节点!!
所以从一个子节点,一直推导到 跟节点,这条路径,一定是唯一的,那么我们就称之为,路径具有唯一性!
(即,从test.c 一直到 跟目录/ ,不管是正向,还是方向,它都只有一条路径)
#这种查找方式,我们称之为 ”绝对路径“
[duck@localhost /]$ ls home/duck/linux/process/
lesson1 lesson2 lesson3
[duck@localhost /]$ cd home/duck/linux/process/
[duck@localhost process]$ pwd
/home/duck/linux/process #当前所处路径
#假设,我现在,想查找 linux 这个目录下的文件,那我可以采用 ”相对路径“
[duck@localhost process]$ ls ../README.en.md -al
-rw-rw-r--. 1 duck duck 868 Aug 14 20:18 ../README.en.md
OK,我们总结一下:从根目录开始,一层一层定位到文件/目录的方式,我们称之为绝对路径!
而不以根目录开始,而是以当前路径为参考点,这样的定位方式,我们称之为相对路径!
pwd 就是显示当前 “我” 所处的路径
[outlier@localhost ~]$ cd test
[outlier@localhost test]$ pwd
/home/outlier/test
touch 就是在当前路径下创建一个普通文件
[outlier@localhost test]$ touch text.txt
[outlier@localhost test]$ ls
text.txt
问题一:touch除了创建一个普通文件,还有其他作用吗??
我们来看一段指令
touch 同名文件,还能起到另一个作用,那就是,更新文件的最近修改时间,更新为最新时间!!!
OK,本章的基本指令就讲到这。如果能给你带来一定的帮助,或者是收获,我很开心。
同时,觉得对你有帮助的伙伴们,也可以 点赞 + 收藏⭐️ + 关注➕ 支持一下!
感谢各位观看!!