linux学习笔记3.0

命令
service network restart 重启网络
systemctl network restart
systemctl restart ssh
name=“value” 变量赋值
$(1.../@/*/#/0/?/$) 位置变量
test EXPRESSION 测试命令
export 设置全局变量
readonly name 设置只读变量
env、printenv、export、declare -x 查看全局变量
shift 左移参数
let 算数运算
read 接收输入
locate 查询系统上预建的文件索引数据库
find 通过遍历指定路径完成文件查找
xargs 分割过大参数
压缩/解压缩:
compress/uncompress
gzip/gunzip
bzip2/bunzip2
xz/unxz
zip/unzip
tar 打包文件
cpio 通过重定向打包压缩备份
sed 行编辑器


shell脚本编程基础

编程基础
程序:指令+数据
程序编程风格:
过程式:以指令为中心,数据服务于指令
对象式:以数据为中心,指令服务于数据
shell程序:提供了编程能力,解释执行
程序的执行方式
计算机运行二进制指令
编程语言:
低级:汇编
高级:
编译:高级语言-->编译器(程序员)-->目标代码(java,C#)
解释:高级语言-->解释器(电脑)-->机器代码(shell,perl,python)
编程基本概念
编程逻辑处理方式:
顺序执行,循环执行,选择执行

shell编程:

过程式,解释执行
编程语言的基本结构:
各种系统命令的组合
数据存储:变量、数组
表达式:a+b
语句:if

shell脚本:

包含一些命令或声明,并符合一定格式的文本文件
格式要求:
首行shebang机制
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
声明所使用的语言
shell脚本用途:
自动化常用命令
执行系统管理命令
创建简单的应用程序
处理文本或文件


创建shell脚本:

第一步:使用文本编辑器来创建文本文件
第一行必须包括shell声明序列:#!
添加注释,以#开头
第二步:运行脚本
给予执行权限,在命令行上指定脚本的绝对或相对路径
直接运行解释器,将脚本作为解释器程序的参数运行
脚本规范:
脚本代码开头约定
1、第一行一般为调用使用的语言
2、程序名,避免更改文件名为无法找到正确的文件
3、版本号
4、更改后的时间
5、作者相关信息
6、该程序的作用,及注意事项
7、最后是各个版本的更新简要说明
脚本调试
检测脚本中的语法错误(只能检测出语法错误)
bash -n
调试执行
bash -x


变量

变量:命名的内存空间
数据储存方式:
字符
数值(整型,浮点型)
变量类型作用:
1、数据存储格式
2、参与的运算
3、表示的数据范围
附:
强类型变量:
变量不经过强制转换,他永远是这个数据类型,不允许隐式的类型转换。一般定
义变量是必须指定类型,参与运算必须符合类型要求;调用为声明变量会产生错
误。如:java,c#
弱类型变量:
语言的运行时会隐式做数据类型转换。无须指定类型,默认均为字符型;参与运
算时会自动进行隐式类型转换;变量无须事先定义可直接调用
。如:bash(不支持浮点数),php
变量命名法则:
1、不能使用程序中的保留字(if,for等)
2、只能使用数字、字母以及下划线,且不能以数字开头
3、见名知义
4、统一命名规则:驼峰命名法(AbcDfg大驼峰;abcDfg小驼峰)


bash中变量种类

根据变量的生效范围等标准划分为下面变量类型:
局部变量:
生效范围为当前shell进程,对其他任何shell进程均无效
变量赋值:name=‘value’
可以使用引用value:
(1)可以是直接字串:name=“root”
(2)变量引用:name=“$USER”
“”:强引用,其中的变量引用会被替换为变量值
‘’:弱引用,其中的变量引用不会被替换为变量值,而保持原字符串
(3)命令引用:name=command name=$(command)
显示已定义的所有变量:set
附:""可以保留变量内容格式
删除变量:unset name

环境(全局)变量:
生效范围为当前shell进程及其子进程,全局变量可往下传(父->子),但不能
回传
变量声明、赋值:
export name=VALUEexport
可将将局部变量转换成环境变量
declare -x name=VALUE
变量引用:$name,${name}
显示所有环境变量:
env
printenv
export
declare -x
删除变量:
unset name
bash内建的环境变量:
PATH、SHELL、USER、UID、HOME、PWD、SHLVL(查看当前shell层级)、LANG(
语言)、MAIL、HOSTNAME、HISTSIZE、_(上个命令的最后一个字符串)
附:

()与{}的区别
共同点:执行多个命令的组合
不同点:()开个一次性子shell,对当前shell环境无影响,用于一次性任务(括号内
shellpid=当前shellpid,变量继承当前变量)
{}不开启子shell,对当前环境有影响,位置变量超过10需用{10}表示
{}中前后都需要加空格,且命令都需要跟;

本地变量:
生效范围为当前shell进程中某代码片断,通常指函数

位置变量:
$1,$2,...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
只读变量:
只能声明,不能修改和删除
声明只读变量:
readonly name、declare -r name
查看只读变量:
readonly -p

退出状态
进程使用退出状态来报告成功或失败
0代表成功,1-255代表失败
$?变量保存最近的命令退出状态
退出状态码
bash自定义退出状态码
exit[n]:自定义退出状态码
注意:
1、脚本一旦遇到exit命令,脚本会立即终止,终止状态码取决于exit命令后面
的数字
2、如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的
最后一条命令的状态码
3、命令错误不影响继续执行,语法错误终止执行


shift

作用:将输入参数整体向左移(默认一位),后一位取代前一位
shift多用于循环


算数运算

bash中的算数运算:help let
+,-,*,/,%(取模,取余),**(乘方)
实现算数运算:
1、let var=算数表达式
2、var=$[算数表达式]
3、var=$((算数表达式))
4、var=$(expr arg1 arg2 arg3 ...)(arg参数)
5、declare -i var=数值
6、echo ‘算数表达式‘ |bc
乘法符号有些场景中需要转义,如*
bash有内建的随机数生成器:$RANDOM(0-32767)
echo$[$RANDOM%50]:0-49间的随机数
增强型赋值:
x+=(x=x+1)、-=、*=、/=、%=
let x+=3:x自加3后自赋值
自增,自减:
let var+=1
let var++
let var-=1
let var--

逻辑运算
0 false
1 true
与;或
0&0=0;0|0=0
0&1=0;0|1=1
1&0=0;1|0=1
1&1=0;1|1=1

短路与,短路或
0&&0=0
0&&1=0
1&&0=0
1&&1=1
cmd1 && cmd2
若cmd1为假,cmd2不执行;反之,cmd2执行
0||0=0
0||1=1
1||0=1
1||1=1
cmd1 || cmd2
若cmd1为真,cmd2不执行;反之,cmd2执行

xor 异或
0^0=0
0^1=1
1^0=1
1^1=0
同为假,异为真
作用:取反

条件性的执行操作符
根据退出状态而定,命令可以有条件地运行
&&:代表条件性的AND THEN
||:代表条件性的OR ELSE


条件测试

判断某需求是否满足,需要由测试机制来实现:
专用的测试表达式需要由测试命令辅助完成测试过程
评估布尔声明,以便用在条件性执行中:
真,返回0
假,返回1
测试命令:
test EXPRESSION
[ EXPRESSION ](用于普通匹配)
[[ EXPRESSION ]](用于利用扩展正则匹配)
注意:EXPRESSION前后必须有空白字符
test命令
长格式的例子:
test"$A"=="$B"&&echo"Strings are equal"
test "$A" -eq "$B" &&echo"Integers are equal"
简写格式的例子:
["$A"=="$B"]&&echo"Strings are equal"
["$A" -eq "$B"]&&echo"Integers are equal"
bash的数值测试
-v(VAR)变量VAR是否设置
数值测试:
-gt是否大于
-ge是否大于等于
-eq是否等于
-ne是否不等于
-lt是否小于
-le是否小于等于
bash的字符串测试
字符串测试:
==是否等于
>ascii码是否大于ascii码
<是否小于
!=是否不等于
=~左侧字符串是否能够被右侧的PATTERN()所匹配
注意:此表达式一般用于[[]]中,扩展的正则表达式
-z“STRING”:字符串是否为空,空为真,不空为假
-n“STRING”:字符串是否不空,不空为真,空为假
注意:用于字符串比较时的用到的操作数都应该使用引号

bash文件测试
存在性测试:
-a FILE:同-e
-e FILE:文件存在性测试,存在为真,否则为假
存在性及类别测试:
-b FILE:是否存在且为设备文件
-c FILE:是否存在且为字符设备文件
-d FILE:是否存在且为目录文件
-f FILE:是否存在且为普通文件
-h或-L FILE:存在且为符号链接文件
-p FILE:是否存在且为命名管道文件
-S FILE:是否存在且为套接字文件
文件权限测试:
-r FILE:是否存在且可读
-w FILE:是否存在且可写
-x FILE:是否存在且可执行
文件特殊权限测试:
-u FILE:是否存在且拥有suid权限
-g FILE:是否存在且拥有sgid权限
-k FILE:是否存在且拥有sticky权限
文件大小测试:
-s FILE:是否存在且非空
文件是否打开:
-t fd:fd文件描述符是否在某终端已经打开
-N FILE:文件自从上次被读取之后是否被修改过
-O FILE:当前有效用户是否为文件属主
-G FILE:当前有效用户是否为文件属组
双目测试:
FILE1 -e FILE2:FILE1是否是FILE2的硬链接
FILE1 -nt FILE2:FILE1是否新于FILE2(mitme)
FILE1 -ot FILE2:FILE1是否旧于FILE2

bash的组合测试条件
方式一:
cmd1&&cmd2 并且
cmd1||cmd2 或者
!cmd 非
方式二:
EXPRESSION1(表达式) -a EXPRESSION2 并且
EXPRESSION1 -o EXPRESSION2 或者
!EXPRESSION 非
注意:必须使用测试命令进行


使用read命令来接收输入

用read命令把输入的值分配给一个或多个shell变量
-p 指定要显示的提示,输入不换行
-s 静默输入,一般用于密码
-n 指定输入的字符长度
-d 指定输入结束符
-t 指定TIMEOUT时间
read从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给
最后一个变量
read批量赋值:
read x y z <file
read x y z <<<"a b c"


防止扩展

反斜线:
会使随后的字符按原意解释
加引号来防止扩展:
单引号防止所有扩展
双引号也防止所有扩展,但以下情况例外:
$-变量扩展
反引号-命令扩展
-禁止单个字符扩展
!-历史命令替换


bash的配置文件

安生效范围划分:
全局配置:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
(profile:配置文件,放环境变量和启动程序)
(bashrc:bash run command,即bash的运行配置文件,放别名和函数)
个人配置:
~/.bash_profile
~/.bashrc
shell登录的两种方式
交互式登录:
1、直接通过终端输入账号密码登录
2、使用“su - UserName”切换用户
执行顺序:/etc/profile-->/etc/profile.d/.sh-->~/.bash_profile-- >~/bashrc-->/etc/bashrc
非交互式登录:
1、su UserName
2、图形界面下打开终端
3、执行脚本
4、任何其他的bash实例
执行顺序:~/bashrc-->/etc/bashrc-->/etc/profile.d/`
`.sh

按功能划分:
profile类:
为加交互式登录的shell提供配置
全局:/etc/profile,/etc/profile.d/*.sh
个人:~/bash_profile
功用:(1)用户定义环境变量 (2)运行命令或脚本
bashrc类:
全局:/etc/bashrc
个人:~/.bashrc
功用:(1)定义命令别名和函数 (2)定义本地变量

编辑配置文件生效
修改profile和bashrc文件后需生效
两种方法:
1、重新启动shell进程
2、.或source

Bash退出任务
保存在~/.bash_logout文件中(用户)
在退出登录shell时运行
用于:
1、创建自动备份
2、清除临时文件

$-变量(代表一些功能的组合)
h:hashall,打开这个选项后,shell会将命令所在路径hash下来,避免每次都
要查询。通过set +h,将h选项关闭
i:interactive-comments,包含这个选项说明当前的shell是一个交互式的
shell。所谓的交互式shell,在脚本中,i选项是关闭的
m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继续
,后台或者前台执行等
B:braceexpand,大括号扩展
H;history,H选项打开,可以展开历史列表中的命令,可以通过!来完成使用
,如:“!!”返回最近一个历史命令,“!n”返回第n个历史命令

附:
1、.(source)和直接运行脚本的区别
source运行脚本是在当前shell中运行,改变的是当前shell的变量
直接运行脚本是在shell子进程中运行,改变子进程变量,对当前shell无影响
2、脚本中不识别别名,别名无法生效

bash如何展开命令行(执行顺序)
1、把命令行分成单个命令词
2、展开别名
3、展开{}内容
4、展开~符
5、用命令替换$()和“”
6、再把命令行分成命令词
7、展开文件通配符
8、处理重定向
9、运行命令


文件查找

在文件系统上查找符合条件的文件
命令:
非实时查找(数据库查找):locate
实时查找:find
locate搜索速度快,但不能实时更新
find功能强大,但搜索很慢,影响服务器性能

locate
查询系统上预建的文件索引数据库
/var/lib/mlocate/molcate.db
依赖于事先构建好的索引
索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据
库(updatadb)
索引构建过程需要遍历整个根文件系统,极消耗资源
工作特点:
查找速度快
模糊查找
非实时查找
搜索的是文件的全路径,不仅仅是文件名
可能只搜索用户具备读取和执行权限的目录
locate命令
locate KEYWORD
有的选项:
-i 不区分大小写的搜索
-n N 只列举前N个匹配选项
-r 使用正则表达式

find
实时查找工具,通过遍历指定路径完成文件查找
工作特点:
查找速度慢
精确查找
实时查找
可能只搜索用户具备读取和执行权限的目录
find命令:
find [OPTION]...[查找路径][查找条件][处理动作]
查找路径:指定具体目标路径(默认为当前目录)
查找条件:指定的查找目标,可以文件名、大小、类型、权限等标准进行(默认
为找出指定路径下的所有文件)
处理动作:对符合条件的文件做操作(默认输出至屏幕)

查找条件
指搜索层级:
-maxdepth level 最大搜索目录深度,指定目录为第一级
-mindepth level 最小搜索目录深度
根据文件名和inode查找:
-name“文件名称”:支持使用glob(通配符:*,?,[],[^])
-iname“文件名称”:不区分字母大小写
-inum n:按inode号查找(inode节点编号)
-samefile name:相同inode号的文件
-links n:链接数为n的文件
-regex“PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名

根据属主、属组查找:
-user USERNAME:查找属主为指定用户的文件
-group GRPNSME:查找属组为指定组的文件
-uid UserID:查找属主为指定UID号的文件
-gid GroupID:查找属组为指定GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

根据文件类型查找:
-type TYPE:
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
-empty:空文件或目录
-prune:排除(prune:砍掉,去除)

组合条件:
与:-a
或:-o
非:-not;!
德?摩根定律:
(非A)或(非B)=非(A且B)
(非A)且(非B)=非(A或B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

根据文件大小来查找:
-size [+|-]#UNIT
常用单位:k,M,G,c(byte)
#UNIT:(#-1,#]
-#UNIT:[0,#-1]
+#UNIT:(#,无穷)

根据时间戳:
以“天”为单位:
-atime [+|-]#
#:[#,#+1)
+#:[#+1,无穷]
-#:[0,#)
-mtime
-ctime
以“分钟”为单位:
-amin
-mmin
-cmin

根据权限查找:
-perm [/|-]MODE
MODE:精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,/表
示并集(老版本为+)
-MODE:每一类对象都必须同时拥有指定权限,与关系
0表示不关注

处理动作
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行“ls -l”
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND{}\;:对查找到的每个文件执行由COMMAND指定的命令,对于每个
文件执行命令前,都会交互式要求用户确认
-exec COMMAND{}\;:对查找到的每个文件执行由COMMAND指定的命令
{}:用于引用查找到的文件名称自身
ok和exec选项后必须跟\;
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性
传递给后面的命令


参数替换xargs

xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或
回车符将stdin的数据分隔成为arguments
xargs -n 解决参数过长无法执行问题
find和xargs组合使用格式:
find|xargs COMMAND


压缩、解压缩及归档工具

compress/uncompress:Z
-d:解压缩,相当于uncompress
-c:结果输出至标准输出,不删除原文件
-v:显示详情

gzip/gunzip:gz
-d:解压缩,相当于gunzip
-c
-#:1-9,指定压缩比,值越大压缩比越大(默认为6)
zcat:不解压前提下查看文本内容

bzip2/bunzip2
-k:保留原文件
-d
-#(默认为9)
bzcat

xz/unxz
-k
-d
-#(默认为6)
xzcat

zip/unzip
打包压缩
zip -r /testdir/sysconfig /etc/sysconfig/
附:
1、linux中文件名后缀要求不严格,但压缩工具对文件后缀名要求严格
2、xz太新,并不常用,常用的还是gzip和bzip


tar工具

tar(Tape ARchive,磁带归档的缩写)
(1)创建归档
tar -cpvf /PATH/TO/SOMEFILE.tar FILE...
(2)追加文件至归档(不支持对压缩文件追加)
tar -r -f /PATH/TO/SOMEFILE.tar FILE...
(3)查看归档文件中的文件列表
tar -t -f /PATH/TO/SOMEFILE.tar
(4)展开归档
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH
(5)结合压缩工具实现:归档并压缩
-j:bzip2,-z:gzip,-J:xz

tar打包文件
-T:指定输入文件
-X:指定包含要排除的文件列表
分割(tar文件为多个小份文件):
split -b Size -d tar-file-name prefix-name
合并:
cat


cpio

功能:复制文件从或到归档
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具它可以解压
缩以“.cpio”或者“.tar”结尾的文件
cpio[选项]>文件名或者设备名
cpio[选项]<文件名或者设备名
-o:将文件拷贝打包成文件或者将文件输出到设备上
-i:解包,将打包文件解压或将设备上的备份还原到系统
-t:预览,查看文件内容或者输出到设备上的文件内容
-v:显示打包过程中的文件名称
-d:解包生成目录,在cpio还原时,自动的建立目录
-c:一种较新的存储方式


文本处理三剑客

sed,行编辑器,一次处理一行内容,自带循环
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环
功能:
主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
用法:
sed [option]...‘script’inputfile...

原文地址:http://blog.51cto.com/13672914/2102708

时间: 2024-10-10 17:48:08

linux学习笔记3.0的相关文章

嵌入式Linux学习笔记(0)基础命令。——Arvin

学习记录: 到今天为止ARM裸机开发学习进程:1.2.1-1.2.14 预科班知识Linux介绍学习进程:0.2.1-0.2.6 学习内容笔记: 学习了Linux的开发方式的优劣介绍 学习了常用文件夹命令 ls(list) ls -a 显示所有文件(包括隐藏文件) ls -l 显示所有详细信息 ls -a -l也可以 man(查询命令) man 1 ls(1表示查询命令,ls表示查询的内容) cd(change directory) cd ..代表上一层 cd ../../代表上上层 cd .是

【Linux学习笔记第0天:学前计划与其他】

             前言     因为学习ARM的原因,最近开始接触到Linux操作系统,原本并没 有写博客或是学习笔记的习惯,但听了马哥的建议之后,觉得如果 将学习中的知识点和感悟记录下来,一方面,是一份可以长久保存的 笔记,任何时候都可以重新翻阅:另一方面可以培养自己的文档撰写 能力,有利于自己今后的工作.同时,如果记录的东西,对某些迷茫的 同学可以有帮助的话,那也算做了件好事. 之所以要开始学习Linux,主要是因为学习ARM的过程中,需要在ARM上 跑系统,而就市面上的学习资料而言

linux学习笔记2.0

命令">" | >> file 标准输入重定向(覆盖):(追加)2> | 2>> file 标准错误重定向(覆盖):(追加)file < 标准输入重定向&> file == >file 2>&1 全部标准输出重定向tr 转换和删除字符tee [-a] file1 将stdin存入file1并输出(追加)cmd1 | cmd2 | cmd3 ... 管道(多次)附加mail -s "标题" 用

《鸟哥的Linux私房菜》学习笔记(0)

听说Linux已经有很长一段时间了,但是从未系统的学习过Linux.这次把在博客园的处女秀给了Linux,希望能够给自己学习Linux一种坚持的动力,坚持就是胜利,fighting! 在我看来,成为技术大牛之前,写博客主要是对自己所学的东西作以总结,涉及的东西也稍显浅薄,但是却能够为更深一步的学习打下基础,于是我选择了写博客!以前从未写过博客,博客给人第一印象——高大上,现在要写了,顿感压力山大,还好本人的初衷是为了知识的整理,暂时这样安慰一下我自己吧.初期的博客,我想肯定会是非常糟糕的,但是我

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

Linux学习笔记——例说makefile 增加系统共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Linux学习笔记——如何使用echo指令向文件写入内容

0.前言 本文总结如何使用echo命令向文件中写入内容,例如使用echo指令覆盖文件内容,使用echo指令向文件追加内容,使用echo指令往文件中追加制表符. echo向文件中输出内容的基本方法是使用IO重定向指令--">",默认情况下echo输出到标准输出中,使用>指令可重定向输出到文件中. 1.echo指令基本用法 [1]Linux官方用户手册--echo指令 [2]输入指令获得帮助 sudo echo --help 返回内容如下 用法:echo [短选项]... [字

linux学习笔记--vim程序编辑器

1,在linux系统中使用文本编辑器来编辑自己的linux参数配置文件是一件很重要的事情,因此系统管理员至少应该要熟悉一种文本编辑器. 2,不同的linux distribution各有不同的附加软件,linux命令行界面下的文本编辑器有Emacs,pico,nano,joe与vim 3,学习vim的重要性 (1)所有的UNIX Like系统都内置vi文本编辑器,其他的文本编辑器不一定存在 (2)很多软件的编辑接口都会主动调用vi (3)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确

Linux学习笔记三:Linux的权限处理命令

1.改变文件或目录权限  chmod 语法:chmod [{ugo} {+-=} {rwx}] [文件或目录] 或 [mode] [文件或目录] 第一种语法中: 这里的u是所有者,g是指所属组,o是指其他人 +是指增加权限,-是指减少权限,=是指赋予权限 r是指读权限,w是指写权限.x只是执行权限 第二种语法中: 在这里,r的值是4,w的值是2,x的值是1. 这里写的mode,是指一组数字.如:421.这里的421,是指所有者所拥有权限的数字总和是4,所属组所拥有权限的总和是2,其他人所拥有权限