linux-----命令大全

本文详细介绍了Linux系统中的一些基本命令,包括ls、file、pwd、whoami、cd、which、touch、mkdir、rm、cp、mv、cat、echo、less、head、tail、find、grep、netstat、kill、top、df、jps、jstat、jmap、jstack和chmod的使用方法、功能和相关选项,帮助用户更好地理解和操作Linux系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ls

语法:ls [选项] [目录]
功能:ls有多个选项,对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
选项:

-l :以列表的形式列出文件详细信息
-a :显示目录下的所有文件包括隐藏文件,以点开头的表示隐藏文件,其中一个点表示当前路径,两个点表示上一级路径,我们将在下面的cd指令中讲解...
-d :将目录像文件一样显示,而不显示目录下的文件,这里的点,就表示当前路径
-R :列出所有子目录下的文件(以递归的方式) ,目录下的所有文件都会列出来
-n :用数字的 UID,GID 代替名称
-1 :一行只输出一个文件
-r :对目录反向排序
-k :以 k 字节的形式表示文件的大小。ls –alk 指定文件
-i :输出文件的 i 节点的索引信息。如 ls –ai 指定文件-
-t :以时间排序

在这里插入图片描述

Linux系统中,不以文件后缀区分文件类型,而是以第一个字符标识文件类型,
不管是文件后缀是.c还是.txt或是其他后缀,只有是以-开头的就是普通文件

d:目录文件,简单来说就是文件夹,我们可以在该目录文件下新建文件
-:普通文件,分为文本文件、动静态库、可执行程序等
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)-
s:套接口文件

file

语法:file [文件]
功能:查看文件类型

pwd

语法:pwd
功能:显示当前路径

whoami

语法:whoami 或者 who am i
功能:显示当前用户

cd

语法:cd [想要切换的路径]
功能:切换路径

which

语法:which [指令]
功能:查看指令的系统路径和相关信息
在这里插入图片描述

touch

语法:touch [文件名]
功能:新建文件,更改文档或目录的日期,包括存取时间和更改时间
在这里插入图片描述

mkdir

语法:mkdir [选项] [文件名]
功能:新建目录文件,可以同时创建多个目录文件,cd可以进入,但是不能在一个目录文件下再创建多个子目录
选项:

-p:递归建立多个子目录

在这里插入图片描述

rm

语法:rm [选项] [文件名]
功能:删除目录或文件
选项

-f:强制删除
-r:删除目录及目录下的所有文件,以递归的方式。

cp

语法:cp [选项] [源文件] [目标文件] [指定目录]
功能:复制文件或目录
选项

-f:强行复制文件或目录, 不论目的文件或目录是否已经存在
-r:递归处理,将指定目录下的文件与子目录一并处理。

mv

语法:mv [选项] [源文件] [目标文件]
功能:移动文件或重命名文件
选项

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

cat

语法:cat [选项] [文件]
功能:查看文件内容
选项

-b :对非空输出行编号
-n :对输出的所有行编号
-s :不输出多行空行

echo

语法:echo [内容]
功能:将字符串显示到标准输出,也就是屏幕上,echo默认换行
在这里插入图片描述
重向
通过重定向,我们可以将字符串写入文件中,字符串后面加 > 符号和文件名,就可以将本该显示到标准输出的字符串,写入文件中,如果文件不存在,就会自动创建文件
在这里插入图片描述
将本该显示到屏幕上的字符串写入目标文件中,同时输出重定向会清空文件原始内容再重新写入
想要保留之前的内容并写入就需要追加重定向 > 符号变成 >> 符号

less

语法:less [选项] [文件]
功能:查看文件内容,less用法比more更具有弹性,可以使用 [pageup][pagedown] (前后按键)等按键的功能来往前往后翻看文件,而且less在查看之前不会加载整个文件。
选项

-i :忽略大小写
-N :显示行号
/字符串 :向上搜索字符串的内容
?字符串 :向下搜索字符串的内容
n :重复前一个搜索(与/?有关)
N :返向重复前一个搜索(与/?有关)
q :退出less

head

语法:head [选项] [文件]
功能:显示文件内容的开头到标准输出,也就是屏幕上,head不加参数默认显示前10行
选项

-n<行数>

在这里插入图片描述

tail

语法:tail [选项] [文件]
功能:用于显示指定文件末尾内容,我们一般查看日志时肯定是查看最新的内容,也就是从尾部开始查看,tail就能很好的帮助我们查看最近的内容
选项

-f :循环读取
-n<行号> :显示行数
tail -f filename 会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容,
非常适合查看日志

借助管道操作,可以显示文件中间的内容
在这里插入图片描述

find

语法:find [path] [expression]
功能:命令能够基于通配符或正则表达式、目录树深度、文件日期、文件类型等条件查找文件
选项

path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,
如果未指定路径,则默认为当前目录。

expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
expression 中可使用的选项有二三十个之多,以下列出最常用的部份:
-name pattern:按文件名查找,支持使用通配符 *?-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
-size [+-]size[cwbkMG]:按文件大小查找,支持使用 +- 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、MMB)或 GGB)。
-mtime days:按修改时间查找,支持使用 +- 表示在指定天数前或后,days 是一个整数表示天数。
-user username:按文件所有者查找。
-group groupname:按文件所属组查找

find 命令中用于时间的参数如下:
-amin n:查找在 n 分钟内被访问过的文件。
-atime n:查找在 n*24 小时内被访问过的文件。
-cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
-ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
-mmin n:查找在 n 分钟内被修改过的文件。
-mtime n:查找在 n*24 小时内被修改过的文件。
在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的
时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。
关于时间 n 参数的说明:
+n:查找比 n 天前更早的文件或目录。
-n:查找在 n 天内更改过属性的文件或目录。
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

在这里插入图片描述

grep

语法:grep [options] pattern [files]
功能: 用于查找文件里符合条件的字符串或正则表达式。
选项

pattern - 表示要查找的字符串或正则表达式。
files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
options常用的选项:
-i:忽略大小写进行匹配。
-v:反向查找,只打印不匹配的行。
-n:显示匹配行的行号。
-r:递归查找子目录中的文件。
-l:只打印匹配的文件名。
-c:只打印匹配的行数。

netstat

语法:netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][–ip]
功能: 命令用于显示网络状态。利用 netstat 指令可让你得知整个 Linux 系统的网络情况
选项

-a或--all 显示所有连线中的Socket-A<网络类型>--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F--fib 显示路由缓存。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket-M--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r或--route 显示Routing Table-s或--statistics 显示网络工作信息统计表。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-v或--verbose 显示指令执行过程。
-V--version 显示版本信息。
-w或--raw 显示RAW传输协议的连线状况。
-x或--unix 此参数的效果和指定"-A unix"参数相同。
--ip或--inet 此参数的效果和指定"-A inet"参数相同。

示例:
在这里插入图片描述
Proto:连接协议的种类
Recv-Q:接收到字节数
Send-Q:从本服务器,发出去的字节数
Local Address:本地的IP地址,可以是IP,也可以是主机名
Foreign Address:远程主机的IP 地址
state:网络连接状态

  • LISTEN: 侦听来自远方的TCP端口的连接请求
  • SYN-SENT: 再发送连接请求后等待匹配的连接请求
  • SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
  • ESTABLISHED: 代表一个打开的连接
  • FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
  • FIN-WAIT-2: 从远程TCP等待连接中断请求
  • CLOSE-WAIT: 等待从本地用户发来的连接中断请求
  • CLOSING: 等待远程TCP对连接中断的确认
  • LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
  • TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
  • CLOSED: 没有任何连接状态

实战案例:

  1. 服务器上有大量TIME_WAI连接,如何优化TCP连接,快速释放tcp连接 ?
    在这里插入图片描述
    解决: 通过缩短 time_wait的时间来快速释放链接
    首先我们得知道他的默认等待时间是多少?
    在这里插入图片描述
    上图中我们可以看到,默认是60S,下面我们来缩短时间,并查看一下:
    在这里插入图片描述
  2. 显示网卡列表
    在这里插入图片描述
  3. 显示网络统计情况
    在这里插入图片描述
  4. 显示路由信息
    在这里插入图片描述

kill

语法:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
功能:用于删除执行中的程序或工作
选项


-l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
-s <信息名称或编号>  指定要送出的信息。
[程序] 可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。

最常用的信号是:
1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。

top

语法:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
功能:是常用的分析性能的工具,能够实时监控系统中各个进程资源占用的情况,这和windows中任务管理器有点类似
选项

d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
delay:设置的秒数
p:通过指定监控进程ID来仅仅监控某个进程的状态。
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S:指定累计模式。
s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i:使top不显示任何闲置或者僵死进程。
c:显示整个命令行而不只是显示命令名。

在这里插入图片描述
第一行,任务队列信息,同 uptime 命令的执行结果

系统时间:07:27:05
运行时间:up 1:57 min,
当前登录用户: 3 user
负载均衡(uptime) load average: 0.00, 0.00, 0.00
 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进程)

总进程:150 total, 运行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie

第三行,cpu状态信息

0.0%us【user space】— 用户空间占用CPU的百分比。
0.3%sy【sysctl】— 内核空间占用CPU的百分比。
0.0%ni【】— 改变过优先级的进程占用CPU的百分比
99.7%id【idolt】— 空闲CPU百分比
0.0%wa【wait】— IO等待占用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
0.0%si【Software Interrupts】— 软中断占用CPU的百分比

第四行,内存状态

1003020k total,  234464k used,  777824k free,  24084k buffers【缓存的内存量】

第五行,swap交换分区信息

2031612k total,   536k used, 2031076k free,  505864k cached【缓冲的交换区总量】
备注:
可用内存=free + buffer + cached
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,
第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。
纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

df

语法:df [-ahikHTm] [目录或文件名]
功能:df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息
选项

-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示

实例 1
将系统内所有的文件系统列出来!

[root@www ~]# df
Filesystem      1K-blocks      Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm

在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!

实例 2
将容量结果以易读的容量格式显示出来

在这里插入图片描述

实例 3
将系统内的所有特殊文件格式及名称都列出来

[root@www ~]# df -aT
Filesystem    Type 1K-blocks    Used Available Use% Mounted on
/dev/hdc2     ext3   9920624 3823112   5585444  41% /
proc          proc         0       0         0   -  /proc
sysfs        sysfs         0       0         0   -  /sys
devpts      devpts         0       0         0   -  /dev/pts
/dev/hdc3     ext3   4956316  141376   4559108   4% /home
/dev/hdc1     ext3    101086   11126     84741  12% /boot
tmpfs        tmpfs    371332       0    371332   0% /dev/shm
none   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs

实例 4
将 /etc 底下的可用的磁盘容量以易读的容量格式显示

[root@www ~]# df -h /etc
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /

jsp

语法:jps [options] [pid]
功能:jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其pid号。 jps相当于Solaris进程工具ps。不象"pgrep java"或"ps -ef grep java",jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程
选项

-q :仅输出VM标识符,不包括class
-l :输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件

实例 1
jps -v:显示虚拟机参数
在这里插入图片描述
实例 2
jps –l 输出主类或者jar的完全路径名
在这里插入图片描述
实例 3
jps –q 仅仅显示java进程号
在这里插入图片描述

jstat

语法:jstat [option] [pid] [间隔时间/毫秒] [查询次数] 注意:使用的jdk版本是jdk8
功能:jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。
选项

-t:可以在打印的列加上Timestamp列,用于显示系统运行的时间
-h:可以在周期性数据输出的时候,指定输出多少行以后输出一次表头
-vmid:Virtual Machine ID( 进程的 pid)
-interval:执行每次的间隔时间,单位为毫秒
-count:用于指定输出多少次记录,缺省则会一直打印

jstat -options
-class 用于查看类加载情况的统计
-compiler 用于查看HotSpot中即时编译器编译情况的统计
-gc 用于查看JVM中堆的垃圾收集情况的统计
-gccapacity 用于查看新生代、老生代及持久代的存储容量情况
-gcmetacapacity 显示metaspace的大小
-gcnew 用于查看新生代垃圾收集的情况
-gcnewcapacity 用于查看新生代存储容量的情况
-gcold 用于查看老生代及持久代垃圾收集的情况
-gcoldcapacity 用于查看老生代的容量
-gcutil 显示垃圾收集信息
-gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次仅当前正在发生的垃圾收集的原因
-printcompilation 输出JIT编译的方法信息

示例1
-class 类加载统计
先通过jps命令获取java的pid,然后使用该命令统计JVM中加载的类的数量与size
在这里插入图片描述

  • Loaded:加载类的数量
  • Bytes:加载类的size,单位为Byte
  • Unloaded:卸载类的数目
  • Bytes:卸载类的size,单位为Byte
  • Time:加载与卸载类花费的时间

示例2
-compiler 编译统计,用于查看HotSpot中即时编译器编译情况的统计
在这里插入图片描述

  • Compiled:编译任务执行数量
  • Failed:编译任务执行失败数量
  • Invalid:编译任务执行失效数量
  • Time:编译任务消耗时间
  • FailedType:最后一个编译失败任务的类型
  • FailedMethod:最后一个编译失败任务所在的类及方法

示例3
-gc 垃圾回收统计,用于查看JVM中堆的垃圾收集情况的统计
在这里插入图片描述

  • S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
  • S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
  • S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
  • EC:年轻代中Eden(伊甸园)的容量 (字节)
  • EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
  • OC:Old代的容量 (字节)
  • OU:Old代目前已使用空间 (字节)
  • MC:metaspace(元空间)的容量 (字节)
  • MU:metaspace(元空间)目前已使用空间 (字节)
  • CCSC:当前压缩类空间的容量 (字节)
  • CCSU:当前压缩类空间目前已使用空间 (字节)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

示例4
-gccapacity 堆内存统计,用于查看新生代、老生代及持久代的存储容量情况
在这里插入图片描述

  • NGCMN:年轻代(young)中初始化(最小)的大小(字节)
  • NGCMX:年轻代(young)的最大容量 (字节)
  • NGC:年轻代(young)中当前的容量 (字节)
  • S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
  • EC:年轻代中Eden(伊甸园)的容量 (字节)
  • OGCMN:old代中初始化(最小)的大小 (字节)
  • OGCMX:old代的最大容量(字节)
  • OGC:old代当前新生成的容量 (字节)
  • OC:Old代的容量 (字节)
  • MCMN:metaspace(元空间)中初始化(最小)的大小 (字节)
  • MCMX:metaspace(元空间)的最大容量 (字节)
  • MC:metaspace(元空间)当前新生成的容量 (字节)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数

jmap

语法:jmap [options] [pid]
功能:jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成堆转储快照(Heap Dump)
选项

  • heap : 显示Java堆详细信息
  • histo : 显示堆中对象的统计信息
  • permstat :Java堆内存的永久保存区域的类加载器的统计信息
  • finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行 finalizer方法的对象
  • dump : 生成堆转储快照
  • F : 当-dump没有响应时,强制生成dump快

示例1
jmap -heap 9226 打印heap的概要信息,GC使用的算法,heap的配置及使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况
在这里插入图片描述
示例2
jmap -histo 9226 查看每个类的实例、空间占用统计,一般常用:jmap –histo 9226 | head -20(显示排名前20的记录)
在这里插入图片描述

jstack

语法:jstack [ options ] pid
功能

  • jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。
  • 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
  • jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。
    jstack命令主要用来查看Java线程调用堆栈的,可以用来分析线程问题(如死锁)

选项

  • F 当 jstack [-l] pid 没有响应时,强制打印一个堆栈转储。
  • l 打印关于锁的其他信息,比如拥有的java.util.concurrent ownable同步器的列表。
  • m 打印包含Java和本机C/ C++帧的混合模式堆栈跟踪。

chmod

语法:chmod [-cfvR] [–help] [–version] mode file…
功能:控制用户对文件的权限的命令
在这里插入图片描述

参数说明
mode : 权限设定字串,格式如下 :

[ugoa…][[±=][rwxX]…][,…]
其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • +表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,

如 who 的符号模式表所示:

who用户类型说明
uuser文件所有者
ggroup文件所有者所在组
oothers所有其他用户
aall所有用户, 相当于 ugo

operator 的符号模式表:

Operator说明
+为指定的用户类型增加权限
-去除指定用户类型的权限
=设置指定用户权限的设置,即将用户类型的所有权限重新设置

permission 的符号模式表:

模式名字说明
r设置为可读权限
w设置为可写权限
x执行权限设置为可执行权限
X特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
ssetuid/gid当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t粘贴位设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。

#权限rwx二进制
7读 + 写 + 执行rwx111
6读 + 写rw-110
5读 + 执行r-x101
4只读r–100
3写 + 执行-wx011
2只写-w-010
1只执行–x001
0000

例如, 765 将这样解释:

  • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
  • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
  • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

实例
将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

为 ex1.py 文件拥有者增加可执行权限:

chmod u+x ex1.py

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

此外chmod也可以用数字来表示权限如 :

chmod 777 file

语法为:

chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1

  • 若要 rwx 属性则 4+2+1=7;
  • 若要 rw- 属性则 4+2=6;
  • 若要 r-x 属性则 4+1=5。
chmod a=rwx file

chmod 777 file

效果相同

chmod ug=rwx,o=x file

chmod 771 file

效果相同

若用 chmod 4755 filename 可使此程序具有 root 的权限。

更多说明

命令说明
chmod a+r file给file的所有用户增加读权限
chmod a-x file删除file的所有用户的执行权限
chmod a+rw file给file的所有用户增加读写权限
chmod +rwx file给file的所有用户增加读写执行权限
chmod u=rw,go= file对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
chmod -R u+r,go-r docs对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod 664 file对file的所有者和用户组设置读写权限, 为其其他用户设置读权限
chmod 0755 file相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式。
chmod 4755 file4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。
find path/ -type d -exec chmod a-x {} ;删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用’-type f’匹配文件
find path/ -type d -exec chmod a+x {} ;允许所有用户浏览或通过目录path/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值