`
su1216
  • 浏览: 670432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
深入入门正则表达式(jav...
浏览量:71872
E60283d7-4822-3dfb-9de4-f2377e30189c
android手机的安全问...
浏览量:128680
社区版块
存档分类
最新评论

《Unix & Linux 大学教程》 - 第二十五章 学习笔记

阅读更多

学习笔记,内容基础,适合初学者。

 

阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)

《Unix & Linux 大学教程》 - 第一、二章 学习笔记     Unix简介 & 什么是Linux?什么是Unix

《Unix & Linux 大学教程》 - 第三、四章 学习笔记     Unix连接 & 开始使用Unix

《Unix & Linux 大学教程》 - 第五、六章 学习笔记     GUI:图形用户界面 & Unix工作环境

《Unix & Linux 大学教程》 - 第七、八章 学习笔记     Unix键盘使用 & 能够立即使用的程序

《Unix & Linux 大学教程》 - 第九、十章 学习笔记     文档资料:Unix手册与Info & 命令语法

《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记     shell & 使用shell:变量和选项

《Unix & Linux 大学教程》 - 第十三章 学习笔记     使用shell:命令和定制

《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记       使用shell:初始化文件

《Unix & Linux 大学教程》 - 第十八章 学习笔记     过滤器:统计和格式化
《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记     过滤器:选取、排序、组合及变换
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记   过滤器:选取、排序、组合及变换 正则表达式

《Unix & Linux 大学教程》 - 第二十一章 学习笔记   显示文件

《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记   vi文本编辑器(一)

《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记   vi文本编辑器   (二)

《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记   vi文本编辑器   (三)

《Unix & Linux 大学教程》 - 第二十四章 学习笔记   目录操作

《Unix & Linux 大学教程》 - 第二十五章 学习笔记   文件操作

《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记   进程和作业控制

《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记   进程和作业控制

《Unix & Linux 大学教程》 - 附录F  时区与24小时制时间

 

 

 

第二十五章:文件操作

自动创建文件的情况:

1.很多程序,当需要时会自动创建

2.将输出重定向到文件

3.复制文件

4.touch

 

touch

语法:

touch  [-acm ] [-t  timefile ...

作用:不改变文件的情况下,改变文件修改时间和访问时间

time 是时间和日期,格式为[[YY]YY]MMDDhhmm[.ss]

默认情况下,touch将修改时间和访问时间设置为当前的时间和日期

 

 

ll

total 28

drwxrwxrwx  2 su1216 su1216 4096 2012-09-14 20:42 ./

drwxr-xr-x 17 su1216 su1216 4096 2012-10-25 16:10 ../

-rwxrwxrwx  1 su1216 su1216   20 2012-09-14 16:44 age*

-rwxrwxrwx  1 su1216 su1216   12 2012-09-14 16:43 name*

 

touch *;ll

total 28

drwxrwxrwx  2 su1216 su1216 4096 2012-09-14 20:42 ./

drwxr-xr-x 17 su1216 su1216 4096 2012-10-25 16:10 ../

-rwxrwxrwx  1 su1216 su1216   20 2012-10-29 11:36 age*

-rwxrwxrwx  1 su1216 su1216   12 2012-10-29 11:36 name*

 

 

-m :只改变修改时间

-a :只改变访问时间

-t :设置具体时间和日期

-c :不创建新文件

 

touch -m -t 201212210000 age;ll age(把age文件修改时间改为世界末日那天……)

-rwxrwxrwx 1 su1216 su1216 20 2012-12-21 00:00 age*

 

 

touch -c file1 file2(如果文件不存在,则不创建)

 

 

文件命名

1.最长为255个字符(最大长度由文件系统设置)

2.可以包含除了 / (斜线)和 null 字符之外的任何字符

最好不要使用特殊字符

最好不要使用test作为文件名,shell拥有一个名为test的内置命令

大写字母留给重要的文件

 

 

 

复制文件

cp

语法:

cp  [-ip ] file1 file2

-i(interactive,交互) :cp在替换已有文件时进行询问

-p(preserve,保持) :目标文件和源文件拥有相同的

 

cp  [ -ip ]  file... directory

作用:将文件复制到指定目录

 

 

cp  -r  [ -ip ]   directory1 ... directory2

作用:将目录复制到指定目录

 

 

 

移动文件

mv

语法:

mv  [-iffile... directory

-i(interactive,交互) :cp在替换已有文件时进行询问

-f(force,强制) :与-i相反,强制替换

 

 

重命名文件或目录

 

mv

语法:

mv  [ -if ]  oldname newname

mv  directory1 directory2 (如果directory2不存在,则重命名directory1为directory2;如果directory2存在,则合并directory1到directory2中)

 

 

 

删除文件

rm

语法:

rm  [-firfile ...

-i(interactive,交互) :删除前进行询问

-f(force,强制) :与-i相反,忽略文件权限和-i选项(某些系统上)

-r(recursive,递归) :删除整个目录树

************************************

注意:

rm -fr $HOME/$FILE

如果上面两个变量都没有定义,那么该命令则变为

rm -rf /

************************************

 

 

 

文件权限

普通文件
读取文件
写入文件
执行 执行文件
目录
读取目录
创建、移动、复制或删除目录条目
执行 搜索目录

每个文件有三组权限:一组针对属主;一组针对组;一组针对其他用户

 

setuid用来允许普通用户表示运行从root拥有的程序中挑选的程序。这意味着无论哪个用户标识运行程序,它都以root特权运行

 

 

 

Unix维护文件权限的方式:id、groups

属主 :创建文件的用户标识就是文件

属主是可以改变文件权限的唯一用户标识,第一组文件权限描述属主如何访问文件

每个用户都属于一个组,第二组权限应用于和属主位于同一组的所有其他用户标识

第三组权限应用于系统上的其他人以及剩下的每个人单独分配读、写和执行权限

 

 

查看用户所在组

id(显示当前用户信息)

uid=1000(su1216) gid=1000(su1216) groups=1000(su1216),4(adm),20(dialout),24(cdrom),46(plugdev),111(lpadmin),119(admin),122(sambashare)

groups  username

 

 

显示文件权限

ls -l

-rwxrwxrwx 1 su1216 su1216  2547 2012-10-29 16:36 setup.py

上面的信息分别对应为:

文件权限   链接数量   用户标识   属主的组   大小   日期   上次修改时间   文件名称

其中最左边十个字符分为4个部分

第一个代表类型(文件夹为d,文件为-)

第2-4个表示文件属主的权限

第5-7个表示组的权限

第8-10个表示系统上所有其他用户标识的权限

 

文件模式:

4=读权限

2=写权限

1=执行权限

0=没有权限

执行 分量
- - - 0+0+0 0
- - 0+0+1 1
- - 0+2+0 2
- 0+1+2 3
- - 4+0+0 4
- 4+0+1 5
- 4+2+0 6
4+2+1 7

 

 

 

改变文件权限

chmod

语法:

chmod  mode file...

只有属主和超级用户才可以改变文件的文件模式

 

 

为新文件指定权限的方式

umask用户掩码(user mask)

语法:

umask  [mode ]

 

Unix创建新文件时,将根据文件的类型为文件指定下述几种模式:

666:不可执行的普通文件

777:可执行的普通文件

777:目录

在这模式基础上,Unix再减去用户掩码(user mask)值。

除非有有很好的理由,否则应该将 umask 077 放入登录文件中

 

 

 

清空文件内容

shred

语法:

shred -fvuz  [file ...]

-v(verbose,详细) :处理过程中显示处理消息

-z :结束任务时将文件全部填充为0

-u :处理之后删除文件

f(force,强制) :忽略受限文件

作用:多次覆盖硬盘上已有的数据,使得难以恢复

 

 

 

链接

Unix创建文件时会做两件事情

1.Unix在存储设备上保留一块空间用来存储数据

2.Unix创建一个称为 索引节点(index node) i节点(i-node) 的结构,来存放文件的基本信息

 

i节点内容

stat

语法:

stat filename

作用:查看文件的i节点内容

  • 以字节为单位的文件长度
  • 包含文件的设备名称
  • 属主的用户标识
  • 组id
  • 文件权限
  • 上一次修改时间
  • 上一次访问时间
  • i节点上次修改时间
  • 指向该文件的链接数
  • 文件的类型(普通、目录、特殊、符号链接……)
  • 分配给该文件的块数

(各个文件系统之间i节点的准确内容可能有所不同)

文件系统将所有的i节点存放在一个大表中,称为 i节点表(mode table)

i节点表中,每个i节点由所谓的 索引号(index number) i节点号(i-number) 表示

 

目录不包含文件本身,只包含文件名称和其i节点号

文件名和i节点之间的连接称为链接

链接将文件名和文件本身连接起来 (所以i节点不包含文件名,一个i节点可以由不只一个文件名引用)

 

 

多重链接

ln

语法:

ln  file newname

file 是一个已有普通文件的名称

newname 是希望赋予链接的名称

 

语法:

ln  file... directory

作用:为多个普通文件建立新链接,并将新链接放入指定目录

ln *txt linux_learned/

 

 

注意:这种方式不能为目录创建链接;不能为不同文件系统中的文件创建链接

此链接称为硬链接(hard link),简称为链接

 

 

基本文件命令的工作方式

1.创建文件,创建目录(mkdir)

Unix留出相应的存储空间并创建i节点,然后Unix在适当的目录中通过使用指定的文件名或目录以及新i节点号置入一个新条目

2.复制文件(cp)

复制已有文件时(覆盖),Unix用源文件的内容替换已有内容,但是i节点号并不进行修改。

复制不存在的文件时(复制),Unix首先用新文件自己的i节点号创建一个全新的文件,然后将旧文件的内容复制到新文件中。旧文件名对应于旧的i节点号,新文件名对应新的i节点号

3.重命名文件或移动文件(mv)

Unix改变文件名,或者移动目录条目,或者两者都进行,但是保持相同的i节点号

4.创建链接(ln)

Unix使用指定的文件名创建一个新的目录条目,并指向原始文件的i节点号

5.移除链接(rm、rmdir)

Unix通过移除目录条目,消除文件名和i节点号之间的连接,如果文件已经没有链接,Unix会删除该文件

 

 

 

符号链接(symbol link、symlink) (软链接,soft link)

语法:

Usage: ln -s(--symbolic) TARGET LINK_NAME   (1st form)

  or:  ln -s(--symbolic)... TARGET                  (2nd form)

  or:  ln -s(--symbolic)... TARGET... DIRECTORY     (3rd form)

  or:  ln -s(--symbolic)... -t DIRECTORY TARGET...  (4th form)

In the 1st form, create a link to TARGET with the name LINK_NAME.

In the 2nd form, create a link to TARGET in the current directory.

In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.

Create hard links by default, symbolic links with --symbolic.

When creating hard links, each TARGET must exist.  Symbolic links

can hold arbitrary text; if later resolved, a relative link is

interpreted in relation to its parent directory.

(我觉得还是help中讲解的比较清楚)
 

 

ls -l显示的链接数量为硬链接数量,没有办法显示软链接数量

如果某一文件存在符号链接,那么删除这个文件时符号链接不会被删除,如果试图使用该链接,则会显示错误信息

 

 

 

ls -l /bin/sh

lrwxrwxrwx 1 root root 4 2012-02-02 11:30 /bin/sh -> dash

该文件为符号链接,文件大小为4字节,仅能容下实际文件的路径名(实际文件的路径名只有4个字符长)

 

查看文件本身长列表则必须指定文件实际名称

 

ls -l /bin/dash 

-rwxr-xr-x 1 root root 105704 2010-06-25 04:02 /bin/dash

 

 

 

--------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- -----------

目录使用符号链接

当目录使用符号链接时,cd和pwd命令可以有两种作用:

1.命令可以将符号链接视为一个实体,即实际目录的一个同义词,更像普通文件的硬链接

2.链接只不过是真实目录的一个跳板

 

cd、pwd

-L(logical,逻辑) :将符号链接视为真实的目录

-P(physical,物理) :用真实目录替换符号链接

 

 

 

查找与Unix命令相关的文件

whereis

语法:

whereis  [-bmscommand ...

-b(binary,二进制) :只显示可执行文件的路径名

-m :只显示联机手册中章节

-s :只显示源文件路径

 

 

 

通过搜索数据库查看文件

locate

语法:

locate  [-bcirSpattern ...

-r :启用正则

-i :忽略大小写

-c(count,总计) :显示匹配文件的总数

-b :匹配路径名的最后一部分,基名

-S(statistics,统计) :显示系统上locate数据库信息

注意:locate是在一个特殊的数据库中查找(该数据库中包含所有可公共访问的文件的路径名),该数据库自动维护并定期更新

当有新文件创建时,它并不会立即出现在数据库中,直至下一次更新

 

 

通过搜索目树查找文件

find

语法:

find  path... test... action...

1.路径

2.检测(书上翻译为测试,感觉不通顺阿!):对遇到的每个文件,find应用指定的检测条件

3.动作:搜索完成后,find对结果的每个文件执行的操作

 

下面为重要的检测选项

文件名
-name pattern 包含pattern 的文件名
-iname pattern 包含pattern 的文件名(不区分大小写)
文件特征
-type [dfbcpl] 文件类型:d=目录,f=文件,b=块设备,c=字符设备,p=命名管道,l=符号链接
-perm mode 设置为mode 的文件权限
-user userid 属主为userid
-group groupid 组为groupid
-size [-+]n [cbkMG] 大小为n [字节、块、k字节、M字节、G字节]
-empty 空文件(大小=0)
访问时间、修改时间
-amin [-+]n n 分钟前访问
-anewer file file 文件之后访问
-atime [-+]n n 天前访问
-cmin [-+]n n 分钟之前状态改变
-cnewer file file 文件之后状态改变
-ctime [-+]n n 天前状态改变
-mmin[-+]n n 分钟之前修改
-mtime [-+]n n 天之前修改
-newer file file 文件之后修改

在检测条件前使用“!”运算符可以对检测求反

下面是对比结果

 

find -name "*.txt"

./address.txt

./email Notes.txt

./so.txt

./test.txt

find '!' -name "*.txt"

.

./txt2

./name

./txt1

./todo

./age

ls

address.txt  age  email Notes.txt  name  so.txt  test.txt  todo  txt1  txt2

 

 

查找中可能会遇到没有权限的清空,下面命令可不显示此信息

find . -type d -name bin -print 2> /dev/null

 

 

 

下面为重要的动作选项

动作
-print 将路径名写入到标准输出
-fprint file 同-print:将输出写入到file
-ls 显示长目录列表
-fls file 同-ls:将输出写入到file
-delete 删除文件
-exec command  {} \; 执行command ,{}指示匹配的文件名
-ok command  {} \; 同-exec,但是在运行command 之前进行确认

-exec command {} \;

-exec将搜索输出发送给相应程序

command可以是任何命令,包括选项和参数

{}表示find查找到的路径名

为了表明路径的末尾必须以;(分号)结束命令(这里必须被引用)


 

find也支持正则,但是针对文件的全路径

手册中给出了一个例子

 

to match a file named `./fubar3',  you  can  use the  regular  expression `.*bar.' or `.*b.*3', but not `f.*r3'

 

相当于默认加上了^(脱字符)和$

$ find -regex './a.*'

./address.txt

./age

注意:在find中使用正则,圆括号和竖线都需要转义

 

处理查找到的文件

xargs

语法:

xargs  [-prt ] [-i  string ] [command  [argment ...]]

command 是命令名称

string 是占位符

argment 是从标准输入读取的参数

注意:默认情况下,xargs运行指定命令至少一次

 

find -type f | xargs echo

./txt2 ./name ./address.txt ./email Notes.txt ./so.txt ./txt1 ./todo ./test.txt ./age

(结果显示到了一行中)
 

下面是书中的一个例子

find -type f | xargs echo | wc -w(用来统计当前目录下有多少文件)

其实我不是很明白

首先,为什么要用echo,直接使用find -type f | wc -w不是更好

其次,这条命令并不能准确的统计出文件个数,如果你文件名中有空格,那么统计就会出错

我觉得使用下面的命令比较合适

find -type f | wc -l

 

-i(insert,插入) :允许使用{}做占位符,占位符在命令运行之前被参数取代

使用 -i 的时候,不要把其他选项和i连起来,否则会作为占位符处理

 

find -type f | xargs -i echo {} {}

./txt2 ./txt2

./name ./name

./address.txt ./address.txt

./email Notes.txt ./email Notes.txt

./so.txt ./so.txt

./txt1 ./txt1

./todo ./todo

./test.txt ./test.txt

./age ./age

结果居然有换行了,执行 find -type f | xargs -i echo {} 结果也是有换行的

 

ps:-i已经过时了(我的版本为xargs (GNU findutils) 4.4.2),应该使用-I。下面是手册中的说明

man xargs 写道
-I replace-str
Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead
the separator is the newline character. Implies -x and -L 1.

--replace[=replace-str]
-i[replace-str]
This option is a synonym for -Ireplace-str if replace-str is specified, and for -I{} otherwise. This option is deprecated; use -I instead.

使用 -I 的时候,占位符不能省略

 

 

-p :执行新命令的时候进行许可提示

find -name '[abcde].junk' | xargs -i -p echo {}

即使是echo,也是会给出提示需要确认的

 

-t: 显示生成了哪些命令 (如果设置了-p就不用设置此项了,因为提示的时候就会看到)

 

find -name '[abcde].junk' | xargs -i -t echo {}

echo ./a.junk 

./a.junk

echo ./e.junk 

./e.junk

echo ./d.junk 

./d.junk

echo ./b.junk 

./b.junk

echo ./c.junk 

./c.junk

 

-r:当xargs没有输入参数时,不运行命令 (默认情况下,xargs运行指定命令至少一次)

 

find -empty | xargs -t ls -l

ls -l ./b ./a ./d ./e ./c 

-rw------- 1 su1216 su1216 0 2012-10-31 16:01 ./a

-rw------- 1 su1216 su1216 0 2012-10-31 16:01 ./b

-rw------- 1 su1216 su1216 0 2012-10-31 16:01 ./c

-rw------- 1 su1216 su1216 0 2012-10-31 16:01 ./d

-rw------- 1 su1216 su1216 0 2012-10-31 16:01 ./e

(发现有5个空文件)

 

rm [abcde]*

(删除上面5个空文件)

 

find -empty | xargs ls -l

total 24

-rwxrwxrwx 1 su1216 su1216   12 2012-10-29 11:36 name

-rw-r--r-- 4 su1216 su1216  952 2012-10-12 15:22 so.txt

-rw-r--r-- 3 su1216 su1216 1979 2012-10-12 14:56 test.txt

(再次运行,发现还是执行了ls)

 

find -empty | xargs -r ls -l

(使用-r后,就不再执行)

 

xargs可以和任何程序一起使用,只要这些程序可以想xargs提供作为参数使用的字符串即可

 

(whoami; date) | xargs

su1216 2012年 10月 31日 星期三 16:13:57 CST

 

cat < so.txt | xargs > t.txt

(上面的例子书中不是这么写的,原文是: xargs cat < filenames > master ,此命令无法执行,我也没看懂)

 

 

 

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

2
3
分享到:
评论

相关推荐

    linux知识学习笔记

    ### Linux知识学习笔记 #### 一、Linux操作系统概述 Linux是一种开源、免费的类Unix操作系统,自1991年由芬兰学生Linus Torvalds创建以来,迅速在全球范围内获得了广泛的关注和支持。它不仅具备强大的稳定性,还...

    鸟哥的私房菜Linux学习笔记

    #### 第二章 Linux是什么 **1. Linux历史** - **起源**: 1991年,Linus Torvalds基于GNU工具和Minix设计灵感开发出Linux内核。 - **重要事件**: - 1969年: Ken Thompson开发Unix原型。 - 1973年: C语言用于重写...

    Linux学习笔记.pdf,linux详解,LINUX

    本资料“Linux学习笔记.pdf”将带你深入理解Linux的基础知识和高级应用。 一、Linux系统概述 1. Linux的起源:Linux的诞生源于托瓦兹对Minix系统的不满,他决定创建一个符合个人需求的、免费的Unix-like操作系统...

    2009 达内Unix学习笔记

    集合了 所有的 Unix命令大全 登陆服务器时输入 公帐号 openlab-open123 telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss 老师测评网址 http://172.16.0.198:8080/poll/ 各个 ...

    linux系统学习笔记

    ### Linux系统学习笔记 #### 一、Linux系统Shell介绍 1. **Linux系统Shell类型**:Linux系统提供了多种Shell供用户选择,常见的包括Bourne shell (`sh`), C shell (`csh`), Korn shell (`ksh`)等。其中,`sh`是Unix...

    linux与unix经典编程

    - 第一部分的第二个至第十个字符分为三个三元组(triplet),分别表示文件属主、组用户和其他用户的权限。 - 第二部分表示文件的硬链接数目。 - 第三部分表示文件属主。 - 第四部分表示文件属主所在的默认组。 - 第...

    APUE读书笔记(Unix高级环境编程)

    #### 第二章 Unix标准化及实现 - **主要标准**:介绍POSIX标准、IEEE Std 1003.1以及其他相关标准。 - **主要Unix系统实现简介**:列举不同的Unix变种(如Solaris、AIX、HP-UX等),并简要说明其特点。 - **系统...

    第11章 Linux操作系统基础-教程与笔记习题

    以下是对"第11章 Linux操作系统基础"的主要知识点的详细阐述。 一、Linux操作系统简介 Linux是基于Unix的操作系统,由林纳斯·托瓦兹于1991年创建。它的内核是开源的,允许全球开发者对其进行修改和优化。Linux系统...

    嵌入式Linux入门笔记

    通过“嵌入式Linux入门笔记”,学习者将能了解嵌入式系统的基础概念,熟悉Linux内核、设备驱动、Bootloader的工作原理,掌握构建和调试嵌入式系统的技能,为成为一名合格的嵌入式Linux开发者打下坚实基础。

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    简明python教程_个人学习笔记.pdf

    在文件开头使用这种格式是Linux/Unix系统上的常见做法,但并不强制要求,且在其他操作系统上可以直接通过指定解释器执行,如`python helloworld.py`。 【Python数据类型】 Python支持四种基本的数值类型:整数(int...

    总结搜集的shell脚本学习笔记(完结篇).pdf

    ### Shell脚本编程知识点概述 #### 一、预备知识与基本概念 在开始Shell脚本文档的学习之前,首先需要理解Shell...以上就是文档《总结搜集的shell脚本学习笔记(完结篇)》中所涵盖的主要知识点,希望对你有所帮助。

    Linux 101考试模块化培训笔记(Andrew McGill)Linux 101 Examination Modular Training Notes (Andrew McGill)

    Linux 101考试模块化培训笔记是为Linux专业人士协会(LPI)的LPI 101考试准备的,尤其针对考试的第2版目标。这本培训笔记由Andrew McGill编写,属于Leading Edge Business Solutions公司的Linux培训计划的一部分。该...

    C-plus-plus-Series:学习C ++的旅程

    C ++入门手册第五版笔记与知识点整合 一.C ++基础知识 二。函数 三。类 四.IO库 ##五。顺序容器 六。泛型编程 七。关联容器 八。动态内存 九。拷贝控制 十。重载运算与类型转换 十一。面向对象程序设计 十二。模板...

    大一大二mysql笔记

    2. 第二范式(2NF):非主键属性完全依赖于主键。 3. 第三范式(3NF):消除传递依赖。 七、数据库安全性 1. 用户权限管理:GRANT和REVOKE命令分配和撤销用户权限。 2. 视图(View):提供安全访问,只允许用户看到...

Global site tag (gtag.js) - Google Analytics