3376. L1-Change Mode

【问题描述】

Linux是著名的类UNIX操作系统。在Linux中有许多对Linux系统进行管理的命令,chmod 便是其中一个重要的命令,它可以对文件或目录的权限进行修改。他有符号模式和八进制模式两种主要的使用方法。

文件权限表示

用户类型:

  • user:文件的所有者,用u表示

  • group:文件所有者所在组,用g表示

  • others:其他用户,用o表示

  • all:所有用户,用a表示

模式:

  • r: 读,为可读

  • w:写,为可写

  • x:可执行,为可执行

  • -:对于没有的权限用-占位

类型:

  • 目录:用d表示

  • 文件:用-表示

对于一个文件的权限表示为一个长度为10的字符串,第一位是类型,是目录即为‘d’,否则为‘-’,二三四位为文件所有者的读,写,执行权限;五六七位为同组成员的读,写,执行权限;八九十位为其他用户的读,写,执行权限。

假设一个文件名字为a.cpp并且文件所有者可读写执行,同组可读,其他人可执行,那么他的表示为:

-rwxr----x a.cpp

如果a是个目录,那么他表示为:

drwxr----x a
chmod 的八进制模式

chmod的命令如下所示:

chmod [三位八进制数代号] [文件名或目录名...]

对于一个文件的权限可以用三位八进制数表示。首先用九位二进制,从左到右每三位为一组,每组分别为: 文件所有者的读,写,执行权;同组用户的读,写,执行权;其他用户的读,写,执行权;如果有这个权限该位为1,没有该权限该位为0。最后将每组的三位二进制写成一个0~7八进制数。具体如下表格:

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

所以如果要把a.cpp的权限设为文件所有者可读写执行,同组用户可读写,其他用户可读可执行,则命令为:

chmod 765 a.cpp

解释:

  • 文件所有者的权限用数字表达: rwx ,也就是 111 ,应该是 7。

  • 同组用户的权限用数字表达: rw- ,也就是 110 ,应该是 6。

  • 其它用户的权限数字表达:r-x ,也就是 101 ,应该是 5。

本题将给出Tchmod命令,输出T条对应文件的权限。

【输入形式】

第一行一个整数 T,表示共有T条命令。

接下来有 T 行,每行一条指令。格式如下:

chmod<空格>三位八进制数<空格>文件名或目录名

注意!!! :如果该文件名中有''."存在那么这是一个文件;如果文件名中不存在''.",则这是一个目录。

(保证文件名或目录名中只有26个小写英文字母且长度不超过20)

【输出形式】

对于每一条输入的chmod指令,输出对应的文件权限,格式如下:

长度为10的权限字符串<空格>文件名或目录名

【样例输入】

2
chmod 777 a.cpp
chmod 653 b

【样例输出】

-rwxrwxrwx a.cpp
drw-r-x-wx b





难度等级: 0
总通过次数: 63
总提交次数: 148