目录
- 指令
(1). ls
(2). pwd
(3). cd
(4). touch(重要)
(5). mkdir
(6). rm(重要)
(7). cat
(8). mv(重要)
(9). grep
权限 (非常重要)
总结
Linux 是一种类似 windows,mac 的操作系统,但是相较于这些我们熟知的操作系统,Linux 通常没有可视化界面,但不影响 Linux 在计算机领域的地位,由于 Linux 是一个开源的操作系统,这使得 Linux 有了安全性,稳定性,高效性(全世界人民都能看见底层的代码,也同时能一起参加 Linux 的迭代和更新)。所以许多企业内部都使用 Linux 作为开发环境,因此 Linux 也成为了每一个程序员的一个必备技能。
所以,各位少年,下面我们就一起来初步学习 Linux 吧!
一、指令
由于 Linux 没有可视化界面,这就意味着我们的操作都只能依赖我们的键盘,所以,学会基本的指令可以帮助我们快速上手 Linux。
1、ls
ls,全称:list,通过全称,我们就大概能知道 ls 的功能:列出该目录下的所有文件,基本语法就是:ls (选项)(路径)
(以下操作均在 centOS 版本上进行)
不带任何选项,任何路径:
此时默认路径为当前所在路径。
带 -a 选项:
a,全称:all,意为所有,所以这里相较于普通的 ls,这里将隐藏文件展示出来了
在 Linux 中,由 . 开头的文件均为隐藏文件,只能通过带上 -a 的选项才能看见
. 这个文件指的是当前路径
.. 这个文件指的是上级路径
带 -l 选项:
l,全称:list,意为列举,因此,我们能看见每个文件前面都带上一堆东西,包括文件的所属者( owner ),文件的所属组( group ),以及相应文件上次修改时间,以及权限和文件类型(这些到权限再进行详细的讲解)
当然也可以用 ll 进行替代:
为什么可以直接替代?
首先,在 Linux 中,存在 alias 这样的可以用于为指令取别名的指令,而 ll 在 Linux 底层中就是由 ls -l alias 为 ll 得到的
验证:
我们直接输入 alias 可以直接获得所有被 alias 的指令,通过管道和 grep (后面会讲) 我们就能得到下面
这里的 color=auto 这就是我们为什么可以看见文件夹和可执行程序有颜色的原因了
同时带上 -a 和 -l 的选项:
这时我们就同时使用了这两种选项的功能,当然也可以更简单点,直接使用 -al
带上路径:
~:home/XXX(由于我的用户名为 test_n ,所以这里是 home/test_n )
同时带上选项和路径:
2、pwd
pwd,全称:print working directory,意为打印当前路径/目录,无语法
3、cd
cd,全称:change directory,意为改变路径/目录,语法:cd 路径
cd -:返回上一次所在的路径
通过这张图我们应该就理解了
4、touch (重要)
touch,语法:touch (选项) 文件名 ,有两个功能:
(1). 假如 touch 后面接的文件名不存在,则创建对应的文件
(2). 假如 touch 后面接的文件名存在,则更新对应的文件时间
stat 可以展示文件的状态,包括其各种时间
此时我们 touch 一下这个文件
可以发现这个文件的所有时间都被更新了,由于其选项日常中用不到,所以在此不进行演示,有兴趣的可以进行查阅。
5、mkdir
mkdir,全称:make directory,意为创建目录/文件夹,语法: mkdir (选项) 文件夹名称
基础用法:
直接创建一个文件夹,但假如我们想创建如下一串目录的呢?
很遗憾,不允许,但是假如我们带上选项 -p ,那么该行为就可以了。
-p 的全称:parent,意为双亲,就是可以创建包括目标文件夹的上级目录,我们也知道目录其实就是一个多叉树,所以这里就是通过递归式的方式来一个一个进行创建文件夹。
假如你发现 tree 无法使用是因为没有安装相应的文件,可以使用
sudo yum install -y tree
这条指令来安装相应的文件。
6、rm (重要)
rm,全称:remove,意为移除,即移除文件,语法:rm (选项) 文件名
不带任何选项:
-r: 讲 -r 之前,我们先来一起认识一下 rmdir
rmdir, 全称:remove directory
作用:删除目录
假如我们想使用 rm 来直接删除文件夹,此时会出现提示:
假如我们使用 -r 选项:
此时系统会通过递归式来删除文件夹。
-f :
当我们要删除受保护文件的时候,会出现提示
此时输入 y ,则表示删除,输入 n,则表示不删除
假如此时,我们需要删除有许多受保护文件的目录,那么普通的删除需要我们手动输入 y ,效率大打折扣,但是假如使用 -f 选项,则可以直接删除这类受保护的文件:
所以,通常删除文件的时候,可以带上 -rf 选项,这可以提高删除文件的效率。
7、cat
cat,用于查看文件内容,语法:cat (选项) 文件名
不带任何选项:
-n :
-n 的作用:显示行号
8、mv (重要)
mv,全称:move,用法:(1). 移动文件 (2). 为文件重命名 语法:mv (选项) 文件名 路径/新文件名
移动文件:
为文件重命名:
-i :
假如 mv 的时候存在相同的文件,则会提示是否覆盖旧文件,输入 y 则覆盖,输入 n 则不覆盖,这可以帮助我们减少对文件的误操作。
-f:
-f 全称:force,意为强制,即不管是否存在相同的文件,直接一律进行覆盖操作。
9、grep
grep 用于查找字符串,语法:grep (选项) 字符串
注意:test.txt 是一个包含 0~10000 以及 10001 个 hello w的文件
不带任何选项:
-n :
跟之前的一样,输入行号。
-i:
此时我们向末尾加上 "abcdef" 和 "ABCDEF"两个字符串。
假如我们直接 grep abcdef 得到的结果没有 ABCDEF
但是假如我们加上 -i 则可以得到 ABCDEF
该选项作用就是:忽略大小写。
二、权限 (非常重要)
1、用户
在权限中,我们首先要知道用户,我们知道 windows 的一台机器可以支持两个人使用,同理,Linux 也可以做到,能做到这点的原因就是存在多用户。
而用户之间也有区别,其中权限最大的是超级用户 (root),其次才是普通用户,对于 root 而言,所有操作都不受权限的管理,而对于普通用户而言则需要受到权限的约束。
例如:root 可以任意转化为普通用户,而普通用户想要转化为 root 则必须输入密码。
切换方式为:
root -> 普通用户 :su 普通用户名
普通用户 -> root : su / su -
2、权限管理
Linux 中权限主要是争对三类人:
文件拥有者( user / owner )
文件拥有者所在的组( group )
其他人( other )
文件属性
我们可以看见每一个文件( 文件包括了文件内容和文件属性 ) 前面都有十个字符。
对于 Linux 而言,文件区分依靠的就是前面的第一个字符:
d:目录
-:普通文件(包括可执行程序,文本文件)
p:管道文件
l:链接文件
......
而不是像 windows 一样通过文件的后缀名来区分文件的。
PS:
但是这并不意味文件后缀就没有意义,因为这可以帮助用户更好地区分文件类型。
文件权限
这里先讲一下sudo
sudo 是一种短暂提升自身权限的功能,只有该普通用户为 root 信任用户才可以进行使用。
这里我们就能看见文件的 user 和 group 都是 root
除去一个字符外就剩九个字符,而这九个字符刚好三三为一组,分了三组,第一个是指的是 user 的权限,其包括了 r ( read ), w ( write ), x ( excute ) ( 读,写,执行),第二个则是 group 的权限,第三个则是 other 的权限。
对于 root 来说这些权限如同虚设,可以无视这些权限直接进行操作。
就以上面的 test.txt 文件为例,owner 没有执行的权限,假如我们直接进行执行会发生?
此时系统提示:权限不允许,也就是我们没有该权限。
那假如我们对 test.txt 进行读取呢?
此时则会将该文件的内容进行读取。
当然我们也可以对文件进行修改权限的操作:
chmod
chmod,全称:change mode,语法:chmod u/g/o/a +/- r/w/x
当然也可以使用数字来修改对应的权限,因为每类角色只有三个位置表示其相应的权限,每个角色有 8 种情况,因此可以使用数字来表示( 底层每个角色使用的是二进制来表示的,如:111 ,最多为 7 )。
此时所有角色对于 test.txt 的权限都有了,所有人都可以对其进行操作。
不知是否有人对刚创建的文件的权限有疑惑:为什么普通文件的权限和文件夹的权限不同?为什么文件的每一个角色的权限不同?
对于第一个问题:
普通文件的默认权限是 666
文件夹的默认权限是 777
对于第二个问题:
Linux 中存在 umask,可以对文件的默认权限进行一定的修改
PS: 这里的每一位数字都是八进制。
后面的三位数字才是关键,这里最后的 2 ,用二进制来表示就是 010,而原来的文件的默认权限666/777,我们可以看到除去了 other 写的权限。
这里的本质是 默认权限 & (~umask对应的数字),这里就不多解释了,可以简单理解为假如 umask 上和默认权限有相同的位的话,就在默认权限处删去。
我们也可以自己手动设置 umask 。
这里也同时验证了目录的默认权限为 777,普通文件的默认权限为 666。
chown && chgrp
chown,全称:change owner,意为修改文件拥有者。
chgrp,全称:change group,意为改变组。
语法:chown/chgrp (选项) 用户名 文件名
不带任何选项:
-R:
该选项也是递归式的修改文件拥有者和组,可以将目录中的所有文件都该掉。
file
file,可以用于查看文件的类型
目录权限
看上图,我们作为一个文件的 other ,竟然能在公共区域对别人的文件进行删除,这种事情有些不可思议,但是我们仔细思考又会知道,我们的文件权限只有对自身的读写执行的权限,而无法向上去控制别人对自己的删除的权限,因此,这也引出了粘滞位,因为这种事情本来就是由目录的权限所控制的。
粘滞位用法:chmod +t 目录
此时,我们再进行刚刚的操作
注意:
使用粘滞位后只能由 root ,该目录的所有者 , 该文件的拥有者删除。
总结
基础的指令可以帮助我们更好地适应 Linux 环境,也能够帮助我们提高开发效率,权限中对于三种不同的角色的权限可以提高开发时的安全性和高效性,也能一定程度的帮助减少误操作。愿我们在下一站相见!