文章目录
- 一:Linux基本指令
-
- (1)pwd(显示所在目录)
- (2)ls(列出文件或目录)
- (3)cd(改变目录)
- (4)touch(创建文件)
- (5)mkdir(创建目录)
- (6)rmdir和rm(删除)
- (7)man(查询)
- (8)cp(复制)
- (9)mv(移动或改名)
- (9)cat(查看文件内容)
- (10)more(逐行查看文件内容)
- (11)less(弃more用less)
- (12)head和tail(查看文件头或尾局部内容)
- (13)时间相关
- (14)cal(日历)
- (15)find(查找)
- (16)grep(行过滤)
- (17)zip/unzip(解压和压缩)
- (18)tar(在线解压)
- (19)bc(计算器)
- (20)uname -r(查看linux内核版本)
- 二:权限
系统:Centos 8.0
一:Linux基本指令
(1)pwd(显示所在目录)
功能:显示用户当前所在目录
补充:
-
Linux——一切皆文件,与Windows操作系统不同,Windows系统下的文件目录 是以“\”分割的,而Liunx则以 “/” 分割。而网页url也是以 "/"进行分割的,这是因为网页的服务器端使用的操作系统是“Linux”,那么反应在前端也正是这样子的。
-
Linux和Windows都是多用户操作系统。购买云服务器后,默认用户名是root,root是系统中唯一的超级管理员,掌握最高权限,其权限等同于操作系统,不像Windows一样,正因为root的权限太高,所以日常中如果用root登录,那么某些操作就具有危险性,极有可能危害系统。所以我们一般要创建一个普通用户以供正常使用,登录时使用普通用户登录即可。而且要注意普通用户的密码和root的密码绝对不能一样。
-
root登录和普通用户登录的区别。
普通用户登录时(比如我的用户名是zhangxing),目录会默认在/home/zhangxing。所有普通用户的全部保存在/home下
root登录时,root在直接就在根目录下,root的这个目录和home相当于是平级了。
(2)ls(列出文件或目录)
功能:若为目录,列出该目录内所有的子目录和文件;若为文件,列出文件名及其他信息。
语法:
ls 【选项】 【目录或文件】
选项参数:
参数 | 功能 |
---|---|
-a | 列出目录下的所有文件,包含以"."开头的隐含文件 |
-d | 将目录像文件一样显示,而不是显示其下的文件 |
-i | 输出文件的i节点的索引信息 |
-k | 以k字节的形式表示文件的大小 |
-l | 列出文件的详细信息 |
-n | 用数字的UID,GID代替名称 |
-F | 在每个文件名后面附上一个字符,用来说明该文件的类型(“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;"="表示套接字) |
-r | 对目录进行反向排序 |
-t | 以时间进行排序 |
-s | 在文件名后面输出该文件大小 |
-R | 列出所有子目录下的而文件 |
-1 | 一行只输出一个文件 |
- 关于ls -a
- 关于文件
在Windows系统下,创建一个文件,而不进行编辑,称这种文件为空文件,同时侧边信息也显示其字节为0。但是空文件也是占用磁盘空间的。因为文件=文件内容+文件属性,而文件属性也属于一种属性(比如说文件的类别),所以它也就会被保存下来因而占用空间 - Windows与Linux保存文件的区别
与Windows不同,Linux的文件类型与文件后缀名没有直接关系,但是我们在建立文件时,为了符号人的习惯,因此加上后缀名
那么Linux是如何区分文件类型的呢?如下,使用ls-a列出文件信息
缩写 | 表示类型 |
---|---|
d | 目录文件 |
l | 符号链接(可以理解Windows中的快捷方式) |
s | 套接字文件 |
b | 块设备文件;二进制文件 |
c | 字符设备文件 |
p | 命名管道文件 |
- | 普通文件 |
(3)cd(改变目录)
前言:Linux
- 文件夹结构为树形结构
- 相对路径和绝对路径
如有test.c文件,想要运行它
功能:改变工作目录
语法:
cd 【目录名】
cd / 返回根目录
cd ~ 返回用户目录
cd - 在两个目录之间来回切换
cd .. 返回上级目录
cd /home/exercise/test/ 绝对路径
(4)touch(创建文件)
功能:可以更改文件信息或创造新的文件
语法:
touch 【选项】 文件名
选项:
选项 | 功能 |
---|---|
-a | 仅仅更改Access时间 |
-c | 不建立任何文档 |
-d | 使用指定日期时间,而非此刻时间 |
-f | 负责解决BSD版本touch指令的兼容性问题 |
-m | 仅仅更改Modify时间 |
-r | 将指定文档或目录的日期时间全部设成参考文档或目录的日期时间 |
补充:
- “stat”命令用于查看文件的信息,Linux文件信息中有三个时间分别为Access,Modify,Change时间
(5)mkdir(创建目录)
功能:在当前目录下创建目录
语法:
mkdir [选项] [目录名]
选项:
选项 | 功能 |
---|---|
-p | 创建一串目录 |
补充:
- “tree”命令可以以树状的形式显示目录的层级结构
注意如果没有tree命令,请安装
yum install -y tree
(6)rmdir和rm(删除)
(remdir只能删除空目录,大多数情况主要使用rm)
语法:
rm [选项][目录或文件名]
选项:
特别说明:从删库到跑路
rm -rf / 慎用!!!(Linux是没有回收站的)
(7)man(查询)
功能:使用联机手册,查询相关命令
语法:
man 【选项】 【需要查询的命令】
选项 | 功能 |
---|---|
-k | 根据关键字搜索 |
num(1-8) | 在第num章节中查找 |
-a | 将所有章节都显示出来 |
汉化:汉化时确保使用root账号的登录,步骤如下。
原文链接Linux man命令中文汉化
- 在线获取汉化包
wget https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039de8788b15151c896150bc4/manpages-zh-1.5.1.tar.gz
- 解压安装
tar xf manpages-zh-1.5.1.tar.gz
cd manpages-zh-1.5.1/
./configure --disable-zhtw --prefix=/usr/local/zhman
make && make install
- 不要覆盖man命令,有可能会使用英文版,使用cman
cd ~
echo "alias cman='man -M /usr/local/zhman/share/man/zh_CN' " >>.bash_profile
source .bash_profile
- 试一下
cman ls
(8)cp(复制)
功能:复制文件或目录
语法:
cp [选项] [src] [des]
选项
选项 | 功能 |
---|---|
-f | 强行复制,无论文件或目录是否存在 |
-i | 覆盖文件前先询问用户 |
-r | 递归处理目录 |
补充
- 关于递归拷贝:Linux拷贝时默认拷贝的是文件,拷贝目录时要目录下的子目录及其文件全部拷贝,就要使用参数“r”
- 和Windows一样,Linux中相同目录内不准出现同名文件,所以拷贝时要进行重命名
(9)mv(移动或改名)
语法:
mv [选项] [源文件或目录] [目标文件或目录]
功能:mv发挥移动还是改名,由其命令中第二个参数而定,如果第二个参数为文件时,将会改名
当第二个参数为已经存在的目录时,将会把源文件或目录移动到目标目录中去
选项
选项 | 功能 |
---|---|
-f | 如果目标文件存在,不会询问直接覆盖 |
-i | 如果目标文件存在,先进行询问 |
(9)cat(查看文件内容)
echo命令:echo命令可以将内容写到文件当中
语法:
cat [选项] [文件]
功能:查看文件内容
选项
选项 | 功能 |
---|---|
-b | 对非空输出行进行编号 |
-n | 对输出的所有航进行编号 |
-s | 不输出多行空行 |
补充
- 关于tac和cat
为了方便讲解,使用下面的shell脚本生成多行内容的文件
count=0; while [ $count -le 10 ]; do echo "hello $count"; let count++; done > file.txt
cat输出时是从首行到尾行,且具有-n参数,而tac则是反向输出,并且不具有-n参数
(10)more(逐行查看文件内容)
cat命令的缺陷在于,对于多行文件,它会一次性全部显示完成,所以不方便查看特定行的内容
语法:
more [选项][文件]
功能:逐行查看内容。对于多行内容每显示满一屏,他会自动停止,按下回车则会显示下一屏。同时可以通过“/1000”这样的方式跳转到指定行。需要注意的是:more只能往下跳转,不能向上跳转
选项
选项 | 功能 |
---|---|
-n | 对所有输出行进行编号 |
q | 退出more |
(11)less(弃more用less)
less和more的区别:
- less可以向后翻也可以向前翻,而more只能向后翻
- 使用less就可以使用“pageup,pagedown”这些按钮实现翻页操作
- less的搜索功能更加强大
语法:
less [选项][文件]
选项
选项 | 功能 |
---|---|
-i | 搜索时,忽略大小写 |
-N | 显示每行行号 |
-字符串 | 向下搜索“字符串” |
?字符串 | 向上搜索“字符串” |
n | 重复前一个搜索(与/或?有关) |
N | 反向重复前一个搜索(与/或?有关) |
q | 退出 |
(12)head和tail(查看文件头或尾局部内容)
语法:
head -[查看多少行][文件名]
tail -[查看多少行][文件名]
补充
- 对于一个具有1000行的代码需要查看它的第500-510行该怎样做?可以这样:先保存其前510行于一个文件中,再从这个文件中提取后10行。
- 管道
可以发现上述做法很麻烦,所以可以简化成下面这样
(13)时间相关
A:显示
语法:
date+格式控制符
格式控制符
格式控制符 | 含义 |
---|---|
%H | 小时 |
%M | 分钟 |
%S | 秒 |
%X | 等于%H:%M:%S |
%d | 日 |
%m | 月份 |
%Y | 完整年份 |
%F | 等于%Y-%m-%d |
B:设定
C:时间戳
时间->时间戳
时间戳->时间
(14)cal(日历)
语法
cal -参数
功能
日历功能
(15)find(查找)
功能:按参数查看想要的文件
语法:
find -参数
常用:find -name [文件名](按文件名查找文件)
参数:find的参数非常多,所以能够实现非常多的查找功能,具体在使用时可以查阅相关手册
补充
- 关于which命令。像ls,pwd这些在linux中也是文件,它等同于Windows中的快捷方式,使用which命令可以查找到这些可执行命令的路径
- 关于whereis命令。可以帮助我们查找安装位置
(16)grep(行过滤)
功能:在某文件中,搜索满足条件的所在行
语法:
grep [选项][搜索的字符串][文件]
该功能最常用于日志文件,日志文件中在错误出一半会有error一类的提示符,所以可以很快进行定位
选项:
选项 | 功能 |
---|---|
-i | 忽略大小写 |
-n | 顺便输出行号 |
-v | 反选 |
(17)zip/unzip(解压和压缩)
功能:解压和压缩功能
语法:
压缩:zip [生成的压缩文件和后缀名.zip][要打包的文件或目录]
解压:unzip [压缩文件名](默认会解压到当前目录下)
解压到指定目录下
unzip [压缩文件名] -d [目录名]
(18)tar(在线解压)
功能:除具备基本的解压和压缩功能,其还具有其他高级功能
语法:tar的参数较多,一般需要组合使用,以下是出场率最高的几个组合
//压缩
tar -czf [生成的压缩文件和后缀名.tgz] [需要打包的目录或文件]
//解压
tar -xzf [需要进行解压的压缩文件] -C [解压到的目录]
//查看压缩文件
(19)bc(计算器)
语法:
直接输入bc
(20)uname -r(查看linux内核版本)
二:权限
(1)超级用户和普通用户
- 超级用户:想干什么就干什么
- 普通用户:权限受到部分限制
普通用户切换到超级用户
切换到其他用户
(2)Linux权限管理
A:文件访问者的分类
Linux把文件的访问者分为如下三类
- u(user):文件或文件目录的所有者
- g(group):文件和文件目录的所有者所在组的用户
- o(other):其他用户
B:文件类型和访问权限
使用ls-al列出文件的属性 信息
各种信息所展示的含义如下
A:文件类型
缩写 | 表示类型 |
---|---|
d | 文件夹 |
l | 软链接(可以理解Windows中的快捷方式) |
s | 套接字文件 |
b | 块设备文件;二进制文件 |
c | 字符设备文件 |
p | 命名管道文件 |
- | 普通文件 |
B:基本权限
权限 | 说明 |
---|---|
读(r) | 对于文件就是读文件;对于目录就是浏览目录信息 |
写(w) | 对于文件就是修改文件内容;对于目录就是移动删除目录内的文件 |
执行(x) | 对文件就是执行文件;对于目录就是进入目录 |
- | 无权限 |
C:权限的表示方法
字符表示方法
8进制表示方法
示例
D:权限的设置
(只有文件的拥有者和root才可以更改权限)
命令一:chmod(修改权限)
//基本格式
chmod [参数][权限][文件名]
//[权限]格式
[用户符号](+/-/=)[权限字符]
其中的用户符号
u
:拥有者g
:拥有者o
:其他用户a
:所有用户
其中的权限字符
+
:增加权限符号所代表的权限-
:去掉权限符号所代表的权限=
:向权限范围赋予权限符号所代表的权限
示例一:去掉拥有者的读权限
示例二:批量化操作
示例三:目录权限与文件权限
- 目录的读权限:是指允许查看目录下的文件(和目录下的文件没有关系)
- 目录的写权限:是指允许在该目录下创建文件(和目录下的文件没有关系)
- 目录的执行权限:就是指是否可以cd这个目录。由于目录的读写权限都是建立在执行权限上的,所以一旦执行权限被关闭,那么其读写权限也同样会被关闭
命令二:chown(修改文件拥有者和组)
chown [-参数(-R是递归,修改目录时加上)][目标用户名][文件名]
chgrp [-参数(-R是递归,修改目录时加上)][目标用户组名][文件名]
命令三:umask(默认权限)
创建普通文件或目录是他们的默认的权限是下面这样的
这些权限的默认值是由umask的值来决定的,可通过终端输入查看umask的值
对于root用户,其umask值为0022,对于普通用户则为0002
umask一共有四个数组,第一位用于定义特殊权限,剩下的三位与权限有关。对于目录,用户所能拥有的最大权限为777,对于文件则是目录的最大权限去掉执行权限,是666,因为执行权限是目录所必须要有的,而对于普通文件则不必要。
由于root的umask默认为022,如下,使用root创建目录时,其权限就是最大权限777去掉相应位置umask的权限,对于所属组和其他人则去掉写权限;而使用root创建文件时,也是如此,即为644
设定计算默认权限时,不应该直接将最大权限减去umask值,计算公式为mask& ~umask
。比如目录的最大权限是777,对应则为"111 111 111"
,umask值被设为2,对应为“000 000 010”,~umask则为“111 111 101
”,进行与操作,则为“111 111 101”
,则为775,对应权限字符为“rwx rwx r-x
”。再比如文件的最大权限为666,对应则为“110 110 110”
,进行与操作则为“110 110 100”,对应的权限字符为“rw- rw- r--
”
再比如将umask值设置0003,会是多少呢?对于文件:则为“110 110 100”
,即为664,对于目录则为“111 111 100”,则为774
附:
E:粘滞位
(注意:设置粘滞位一般是给目录设置的)
如下:test2这个文件夹隶属于root,但是普通用户却可以删除,这一点不可不谓危险
可以通过粘滞位解决,只需对目标目录设置粘滞位
chmod +t [目标目录]
当一个目录被设置粘滞位时,只有由以下三种人删除
- 超级管理员
- 该目录所有者
- 该文件的所有者