Linux-指令与权限


系统:Centos 8.0

一:Linux基本指令

(1)pwd(显示所在目录)

功能:显示用户当前所在目录
在这里插入图片描述
补充:

  1. Linux——一切皆文件,与Windows操作系统不同,Windows系统下的文件目录 是以“\”分割的,而Liunx则以 “/” 分割。而网页url也是以 "/"进行分割的,这是因为网页的服务器端使用的操作系统是“Linux”,那么反应在前端也正是这样子的。
    在这里插入图片描述

  2. Linux和Windows都是多用户操作系统。购买云服务器后,默认用户名是root,root是系统中唯一的超级管理员,掌握最高权限,其权限等同于操作系统,不像Windows一样,正因为root的权限太高,所以日常中如果用root登录,那么某些操作就具有危险性,极有可能危害系统。所以我们一般要创建一个普通用户以供正常使用,登录时使用普通用户登录即可。而且要注意普通用户的密码和root的密码绝对不能一样。
    在这里插入图片描述

  3. 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 一行只输出一个文件
  1. 关于ls -a
    在这里插入图片描述
    在这里插入图片描述
  2. 关于文件
    在Windows系统下,创建一个文件,而不进行编辑,称这种文件为空文件,同时侧边信息也显示其字节为0。但是空文件也是占用磁盘空间的。因为文件=文件内容+文件属性,而文件属性也属于一种属性(比如说文件的类别),所以它也就会被保存下来因而占用空间
  3. Windows与Linux保存文件的区别
    与Windows不同,Linux的文件类型与文件后缀名没有直接关系,但是我们在建立文件时,为了符号人的习惯,因此加上后缀名
    那么Linux是如何区分文件类型的呢?如下,使用ls-a列出文件信息
    在这里插入图片描述
缩写 表示类型
d 目录文件
l 符号链接(可以理解Windows中的快捷方式)
s 套接字文件
b 块设备文件;二进制文件
c 字符设备文件
p 命名管道文件
- 普通文件

(3)cd(改变目录)

前言:Linux

  1. 文件夹结构为树形结构

在这里插入图片描述
在这里插入图片描述

  1. 相对路径和绝对路径
    如有test.c文件,想要运行它
    在这里插入图片描述

功能:改变工作目录
语法:

cd 【目录名】
cd /  返回根目录
cd ~  返回用户目录
cd -  在两个目录之间来回切换
cd ..  返回上级目录
cd /home/exercise/test/  绝对路径

(4)touch(创建文件)

功能:可以更改文件信息或创造新的文件
语法:

touch 【选项】 文件名

在这里插入图片描述
选项:

选项 功能
-a 仅仅更改Access时间
-c 不建立任何文档
-d 使用指定日期时间,而非此刻时间
-f 负责解决BSD版本touch指令的兼容性问题
-m 仅仅更改Modify时间
-r 将指定文档或目录的日期时间全部设成参考文档或目录的日期时间

补充:

  1. “stat”命令用于查看文件的信息,Linux文件信息中有三个时间分别为Access,Modify,Change时间
    在这里插入图片描述

(5)mkdir(创建目录)

功能:在当前目录下创建目录
语法:

mkdir [选项] [目录名]

选项:

选项 功能
-p 创建一串目录

补充:

  1. “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命令中文汉化

  1. 在线获取汉化包
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
  1. 解压安装
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
  1. 不要覆盖man命令,有可能会使用英文版,使用cman
cd ~
echo "alias cman='man -M /usr/local/zhman/share/man/zh_CN' " >>.bash_profile
source .bash_profile
  1. 试一下
cman ls

在这里插入图片描述


(8)cp(复制)

功能:复制文件或目录
语法:

cp [选项] [src] [des]

在这里插入图片描述
选项

选项 功能
-f 强行复制,无论文件或目录是否存在
-i 覆盖文件前先询问用户
-r 递归处理目录

补充

  1. 关于递归拷贝:Linux拷贝时默认拷贝的是文件,拷贝目录时要目录下的子目录及其文件全部拷贝,就要使用参数“r”
    在这里插入图片描述
  2. 和Windows一样,Linux中相同目录内不准出现同名文件,所以拷贝时要进行重命名
    在这里插入图片描述

(9)mv(移动或改名)

语法:

mv [选项] [源文件或目录] [目标文件或目录]

功能:mv发挥移动还是改名,由其命令中第二个参数而定,如果第二个参数为文件时,将会改名
在这里插入图片描述
当第二个参数为已经存在的目录时,将会把源文件或目录移动到目标目录中去
在这里插入图片描述
选项

选项 功能
-f 如果目标文件存在,不会询问直接覆盖
-i 如果目标文件存在,先进行询问

(9)cat(查看文件内容)

echo命令:echo命令可以将内容写到文件当中
在这里插入图片描述

语法:

cat [选项] [文件]

功能:查看文件内容
在这里插入图片描述
选项

选项 功能
-b 对非空输出行进行编号
-n 对输出的所有航进行编号
-s 不输出多行空行

补充

  1. 关于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的区别

  1. less可以向后翻也可以向前翻,而more只能向后翻
  2. 使用less就可以使用“pageup,pagedown”这些按钮实现翻页操作
  3. less的搜索功能更加强大
    语法:
less [选项][文件]

选项

选项 功能
-i 搜索时,忽略大小写
-N 显示每行行号
-字符串 向下搜索“字符串”
?字符串 向上搜索“字符串”
n 重复前一个搜索(与/或?有关)
N 反向重复前一个搜索(与/或?有关)
q 退出

(12)head和tail(查看文件头或尾局部内容)

语法:

head -[查看多少行][文件名]
tail -[查看多少行][文件名]

在这里插入图片描述
在这里插入图片描述
补充

  1. 对于一个具有1000行的代码需要查看它的第500-510行该怎样做?可以这样:先保存其前510行于一个文件中,再从这个文件中提取后10行。
    在这里插入图片描述
  2. 管道
    可以发现上述做法很麻烦,所以可以简化成下面这样
    在这里插入图片描述

(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的参数非常多,所以能够实现非常多的查找功能,具体在使用时可以查阅相关手册

find命令详解

补充

  1. 关于which命令。像ls,pwd这些在linux中也是文件,它等同于Windows中的快捷方式,使用which命令可以查找到这些可执行命令的路径
    在这里插入图片描述
  2. 关于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
在这里插入图片描述

附:

is not in the sudoers file解决

E:粘滞位

(注意:设置粘滞位一般是给目录设置的)
如下:test2这个文件夹隶属于root,但是普通用户却可以删除,这一点不可不谓危险
在这里插入图片描述

可以通过粘滞位解决,只需对目标目录设置粘滞位

chmod +t [目标目录]

在这里插入图片描述
当一个目录被设置粘滞位时,只有由以下三种人删除

  • 超级管理员
  • 该目录所有者
  • 该文件的所有者

猜你喜欢

转载自blog.csdn.net/qq_39183034/article/details/112894245
今日推荐