rev

将文件内容以字符为单位反序输出

补充说明

rev命令 将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。

语法

1
rev(参数)

参数

文件:指定要反序显示内容的文件。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@localhost ~]# cat iptables.bak
# Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
*filter
:INPUT DROP [48113:2690676]
:FORWARD accept [0:0]
:OUTPUT ACCEPT [3381959:1818595115]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Thu Dec 26 21:25:15 2013

[root@localhost ~]# rev iptables.bak
3102 51:52:12 62 ceD uhT no 5.3.1v evas-selbatpi yb detareneG #
retlif*
]6760962:31184[ PORD TUPNI:
]0:0[ TPECCA DRAWROF:
]5115958181:9591833[ TPECCA TUPTUO:
TPECCA j- ol i- TUPNI A-
TPECCA j- 22 tropd-- pct m- pct p- TUPNI A-
TPECCA j- 08 tropd-- pct m- pct p- TUPNI A-
TPECCA j- DEHSILBATSE,DETALER etats-- etats m- TUPNI A-
TPECCA j- pmci p- TUPNI A-
TPECCA j- ol o- TUPTUO A-
TIMMOC
3102 51:52:12 62 ceD uhT no detelpmoC #

restorecon

恢复文件的安全上下文

补充说明

restorecon命令 用来恢复SELinux文件属性即恢复文件的安全上下文。

语法

1
restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...]

选项

1
2
3
4
5
6
7
8
-i:忽略不存在的文件。
-f:infilename 文件 infilename 中记录要处理的文件。
-e:directory 排除目录。
-R/-r:递归处理目录。
-n:不改变文件标签。
-o/outfilename:保存文件列表到 outfilename,在文件不正确情况下。
-v:将过程显示到屏幕上。
-F:强制恢复文件安全语境。

实例

假设CentOS安装了apache,网页默认的主目录是/var/www/html,我们经常遇到这样的问题,在其他目录中创建了一个网页文件,然后用mv移动到网页默认目录/var/www/html中,但是在浏览器中却打不开这个文件,这很可能是因为这个文件的SELinux配置信息是继承原来那个目录的,与/var/www/html目录不同,使用mv移动的时候,这个SELinux配置信息也一起移动过来了,从而导致无法打开页面,具体请看下面的实例:

/使用CentOS举例,如果默认没有安装apache,确保网络连接,使用下面的命令安装/
[root@jsdig.com ~]# yum install httpd
/我们在root的家目录新建一个html文件/
[root@jsdig.com ~]# pwd
/root

[root@jsdig.com ~]# vi index.html

/随便输入一段文字,保存退出/
welcome to www.jsdig.com

/将这个文件mv到网页默认目录下/
[root@jsdig.com ~]# mv index.html /var/www/html/

/*

  • 这个时候我们使用firefox浏览器输入127.0.0.1/index.html发现打不开,
  • 查看一下SELinux的日志文件,发现了下面这一段报错信息,从这个报错信息不难看出,
  • 进程httpd访问网页主目录中的index.html时被SELinux阻止,原因是因为,SELinux配置信息不正确,
  • 正确的SELinux配置信息应该是scontext=后面的部分,
  • 而index.html文件的SELinux配置信息却是tcontext=后面的部分,
  • 从tcontext=的第三段“admin_home_t”不难看出,这个文件的SELinux配置信息是root用户家目录的。
    */
    type=AVC msg=audit(1378974214.610:465): avc: denied { open } for pid=2359 comm=”httpd” path=”/var/www/html/index.html” dev=”sda1” ino=1317685 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file

/使用ls -Z也可以看出,文件和目录的SELinux信息不匹配/
[root@jsdig.com html]# ls -Z /var/www/html/
…. unconfined_u:object_r:admin_home_t:s0 index.html

[root@jsdig.com html]# ls -Zd /var/www/html/
…. system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

/使用restorecon来恢复网页主目录中所有文件的SELinux配置信息(如果目标为一个目录,可以添加-R参数递归)/
[root@jsdig.com html]# restorecon -R /var/www/html/
`

restore

所进行的操作和dump指令相反

补充说明

restore命令 是dump命令的逆过程,用于还原dump命令生成的备份文件。倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。

语法

1
restore(选项)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-b<区块大小>:设置区块大小,单位为Byte;
-c:不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件;
-C:使用对比模式,将备份的文件与现行的文件相互对比;
-D<文件系统>:允许用户指定文件系统的名称;
-f<备份文件>:从指定的文件中读取备份数据,进行还原操作;
-h:仅解除目录而不包括与该目录相关的所有文件;
-i:使用互动模式,在进行还原操作时,restore指令将依序询问用户;
-m:解开符合指定的inode编号的文件或目录而非用文件名称指定;
-r:进行还原操作;
-R:全面还原文件系统时,检查应从何处开始进行;
-s<文件编号>:当备份数据超过一卷磁带时,用户可以指定备份文件的编号;
-t:指定文件名称,若该文件已存在备份文件中,则列出它们的名称;
-v:显示指令执行过程;
-x:设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内;
-y:不询问任何问题,一律以同意回答并继续执行指令。

实例

1
dump -9 -u -f /dev/hda3 /home/frank/

用restore命令来恢复备份:

1
restore rf /dev/hda3 /home/frank

用restore命令来查看备份文件里的文件列表:

1
restore ft /dev/hda3

resize

命令设置终端机视窗的大小。

补充说明

resize命令 命令设置终端机视窗的大小。执行resize指令可设置虚拟终端机的视窗大小。

语法

1
resize [-cu][-s <列数> <行数>]

选项

1
2
3
-c  就算用户环境并非C Shell,也用C Shell指令改变视窗大小。
-s <列数> <行数>  设置终端机视窗的垂直高度和水平宽度。
-u  就算用户环境并非Bourne Shell,也用Bourne Shell指令改变视窗大小。

实例

使用 C shell

1
2
3
4
5
[root@localhost ~]# resize -c
set noglob;
setenv COLUMNS '99';
setenv LINES '34';
unset noglob;

使用 Bourne shell

1
2
3
4
[root@localhost ~]# resize -u
COLUMNS=99;
LINES=34;
export COLUMNS LINES;

设置指定大小

1
[root@localhost ~]# resize -s 80 160

repquota

报表的格式输出磁盘空间限制的状态

补充说明

repquota命令 以报表的格式输出指定分区,或者文件系统的磁盘配额信息。

语法

1
repquota(选项)(参数)

选项

1
2
3
4
-a:列出在/etc/fstab文件里,有加入quota设置的分区的使用状况,包括用户和群组;
-g:列出所有群组的磁盘空间限制;
-u:列出所有用户的磁盘空间限制;
-v:显示该用户或群组的所有空间限制。

参数

文件系统:要打印报表的文件系统或者对应的设备文件名。

实例

显示所有文件系统的磁盘使用情况

1
repquota -a

renice

修改正在运行的进程的调度优先级

补充说明

renice命令 可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。

语法

1
renice(选项)(参数)

选项

1
2
3
-g:指定进程组id;
-p<程序识别码>:改变该程序的优先权等级,此参数为预设值。
-u:指定开启进程的用户名。

参数

进程号:指定要修改优先级的进程。

实例

将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1:

1
renice 1 987 -u daemon root -p 32

注意:每一个行程都有一个唯一的id。

rename

用字符串替换的方式批量改变文件名

补充说明

rename命令 用字符串替换的方式批量改变文件名。

语法

1
rename(参数)

参数

1
2
3
原字符串:将文件名需要替换的字符串;
目标字符串:将文件名中含有的原字符替换成目标字符串;
文件:指定要改变文件名的文件列表。

实例

将main1.c重命名为main.c

1
rename main1.c main.c main1.c

rename支持通配符

1
2
3
?  可替代单个字符
* 可替代多个字符
[charset] 可替代charset集中的任意单个字符

文件夹中有这些文件foo1, …, foo9, foo10, …, foo278

如果使用rename foo foo0 foo?,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo*,foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。

如果使用rename foo0 foo foo0[2]*,从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。

rename支持正则表达式

字母的替换

1
rename "s/AA/aa/" *  //把文件名中的AA替换成aa

修改文件的后缀

1
rename "s//.html//.php/" *     //把.html 后缀的改成 .php后缀

批量添加文件后缀

1
rename "s/$//.txt/" *     //把所有的文件名都以txt结尾

批量删除文件名

1
rename "s//.txt//" *      //把所有以.txt结尾的文件名的.txt删掉

reject

指示打印系统拒绝发往指定目标打印机的打印任务

补充说明

reject命令 属于CUPS套件,用于指示打印系统拒绝发往指定目标打印机的打印任务。

语法

1
reject(选项)(参数)

选项

1
2
3
4
-E:当连接到服务器时强制使用加密;
-U:指定连接服务器时使用的用户名;
-h:指定连接服务器名和端口号;
-r:指定拒绝打印任务的原因。

参数

目标:指定目标打印机。

reboot

重新启动正在运行的Linux操作系统

补充说明

reboot命令 用来重新启动正在运行的Linux操作系统。

语法

1
reboot(选项)

选项

1
2
3
4
5
-d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;
-f:强制重新开机,不调用shutdown指令的功能;
-i:在重开机之前,先关闭所有网络界面;
-n:重开机之前不检查是否有未结束的程序;
-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。

实例

1
2
reboot        //重开机。
reboot -w //做个重开机的模拟(只有纪录并不会真的重开机)。

readonly

定义只读shell变量或函数

补充说明

readonly命令 用于定义只读shell变量和shell函数。readonly命令的选项-p可以输出显示系统中所有定义的只读变量。

语法

1
readonly(选项)(参数)

选项

1
2
3
-f:定义只读函数;
-a:定义只读数组变量;
-p:显示系统中全部只读变量列表。

参数

变量定义:定义变量,格式为“变量名=‘变量值’”。

实例

使用readonly命令显示系统中所有的已经定义的只读变量,输入如下命令:

1
2
3
4
5
6
[root@localhost ~]# readonly     #显示只读变量
declare -ar BASH_VERSINFO='([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")'
declare -ir EUID="0"
declare -ir PPID="31436"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="0"

对于只读变量而言,若用户对其值进行修改,则会立即报错。例如,使用该指令定义一个只读变量”test”,并且将其值初始化为”ok”,输入如下命令:

1
[root@localhost ~]# readonly test='ok'        #定义只读变量并初始化

那么当用户直接修改该只读变量时,就会被报错,如下所示:

1
2
[root@localhost ~]# test='my'                 #试图修改只读变量的值
-bash: test: readonly variable

当用户试图修改只读变量的值时,会被提示该变量为只读变量。