shell内建命令Shopt

linux shell学习之自动检测并重启httpd服务

LINUX修改文件字符集

 

 

 

此内建命令改变额外的shell的可选行为。

[[email protected]
shell]# cat checkapache.sh

       
有些情况下,我们需要修改文件的字符集,以便解决乱码或者其他问题。在linux下,操作系统为我们提供了ICONV这个命令,下面我们来看一下这个命令的具体使用方法。

 

 

[plain] 

shopt

#!/bin/bash

[[email protected]
~]# iconv –help  

 

#using your program to show your system’s service

用法: iconv [选项…] [文件…]  

  shopt [-pqsu] [-o] [optname …]

echo “Now,the web service of linux system will be detected…”

转换给定文件的编码。  

 

echo

  

切换那些用来控制shell的各种可选的行为的变量的值。不带选项,或使用-p选项,则显示所有可设置的选项的列表,同时表明该选项是否被设置。
-p选项以可重用为输入的形式来显示输出。其他选项有以下含义:

#Detect www service

 输入/输出格式规范:  

 

#web=`/usr/bin/pgrep httpd`

  -f, –from-code=名称     原始文本编码  

 

web=$(/usr/bin/pgrep httpd)

  -t, –to-code=名称       输出编码  

-s

if [ “$web” != “” ]

  

 

then

 信息:  

启用每个optname。(set)

        echo “The web service is running now.”

  -l, –list                 列举所有已知的字符集  

 

else

  

-u

        echo “The web service is NOT running,It Will running Now!”

 输出控制:  

 

        /etc/rc.d/init.d/httpd start

  -c                         从输出中忽略无效的字符  

关闭每个optname。(unset)

fi

  -o, –output=FILE          输出文件  

 

 

  -s, –silent               关闭警告  

-q

======================================

      –verbose              打印进度信息  

 

将上面的脚本加入计划执行,就可以检测并启动httpd服务了,对网站运维管理特别有用。

  

抑制正常输出;返回状态表示optname是否启用。当有-q选项,且如果有多个optname参数时,若所有optname被启用,则返回值是零;否则返回非零值。

 

  -?, –help                 给出该系统求助列表  

 

shell学习之自动检测并重启httpd服务
[[email protected]
shell]# cat checkapache.sh #!/bin/bash #using your program to show
your systems service echo Now,the web servic…

      –usage                给出简要的用法信息  

-o

  -V, –version              打印程序版本号  

 

  

限制optname的值,仅可以使用内建命令set的-o选项所定义的值。(见内建命令set)

Mandatory or optional arguments to long options are also mandatory or
optional  

 

for any corresponding short options.  

如果使用-s或者-u,且没有optname参数,则显示结果的范围仅限于那些启用或关闭的相应选项。

  

 

For bug reporting instructions, please see: .  

除非特别说明,shopt选项默认是关闭的。

        如果要查看某个文件的字符信息,linux同样提供了file函数:

 

[plain] 

列出选项时,如果所有optname都是启用状态,则返回值是0,否则是非零值。在设置或取消选项时,返回状态是零,除非某个optname不是有效的shell选项。

[[email protected]
~]# file –help  

 

Usage: file [OPTION]… [FILE]…  

 

Determine file type of FILEs.  

 

  

shopt的选项列表如下:

  -m, –magic-file LIST      use LIST as a colon-separated list of magic
 

 

                               number files  

autocd

  -z, –uncompress           try to look inside compressed files  

 

  -b, –brief                do not prepend filenames to output lines  

如果设置的话,某个目录的名字被当做cd命令的参数执行。此选项仅在交互式shell中使用。

  -c, –checking-printout    print the parsed form of the magic file,
use in  

 

                               conjunction with -m to debug a new magic
file  

cdable_vars

                               before installing it  

 

  -f, –files-from FILE      read the filenames to be examined from FILE
 

如果设置的话,内建命令cd的不是目录名的参数,被当做变量名,该变量的值就是要被切换到的目录。

  -F, –separator string     use string as separator instead of `:’  

 

  -i, –mime                 output mime type strings  

cdspell

  -k, –keep-going           don’t stop at the first match  

 

  -L, –dereference          causes symlinks to be followed  

如果设置,cd命令的目录部分的小的拼写错误将得到更正。这些错误包括颠倒的字符,缺少的字符,和多余的一个字符。如果能找到校正后的结果,则校正后的路径被打印出来,并执行命令。此选项仅用于交互式shell。

  -n, –no-buffer            do not buffer output  

 

  -N, –no-pad               do not pad output  

checkhash

  -p, –preserve-date        preserve access times on files  

 

  -r, –raw                  don’t translate unprintable chars to \ooo
 

如果设置,Bash在执行该命令前,在哈希表中检查是否存在该命令。如果在哈希表中不存在,则执行一个正常的路径搜索。

  -s, –special-files        treat special (block/char devices) files as
 

 

                             ordinary ones  

checkjobs

      –help                 display this help and exit  

 

      –version              output version information and exit  

如果设置,Bash在退出交互shell前,列出所有停止的和正在运行的作业的状态。如果有任何作业正在运行,这将导致退出的时间推迟到第二次没有干预命令的退出(参见作业控制)。如果有任何作业被停止,shell总是推迟退出。

  

 

[[email protected]
~]# file -i a.log  

checkwinsize

a.log: text/plain; charset=us-ascii  

 

 

如果设置,Bash在每个命令后,检查窗口大小,如果必要的话,更新LINES和COLUMNS的值。

单文件的字符集转换:

 

[plain] 

cmdhist

[[email protected]
dir1]$ ls -l  

 

总计 4  

如果设置,Bash在同一个历史实体里面保存一个多行命令的所有行的内容。这样便于重新编辑多行命令。

-rw-r–r– 1 oracle oinstall 22 10-12 13:14 utf8.txt  

 

[[email protected]
dir1]$ file -i utf8.txt   

compat31

utf8.txt: text/plain; charset=utf-8  

 

[[email protected]
dir1]$ iconv -f utf-8 -t gbk -o gbk.txt utf8.txt   

如果设置,Bash改变它的行为以符合3.1版本,条件命令操作符‘=~’被引号包括的参数的方式。

[[email protected]
dir1]$ ls -l  

 

总计 8  

compat32

-rw-r–r– 1 oracle oinstall 15 10-12 13:43 gbk.txt  

 

-rw-r–r– 1 oracle oinstall 22 10-12 13:14 utf8.txt  

如果设置,Bash改变它的行为以符合3.2版本,当使用‘[[’条件命令的'<‘ 和
‘>’操作符时,区域特定字符串比较的方式。bash-4.0之前版本的Bash使用ASCII定序和strcmp(3);bash-4.1及之后的版本使用当前区域设置的定序和strcoll(3)。

[[email protected]
dir1]$ file -i gbk.txt   

 

gbk.txt: text/plain; charset=iso-8859-1  

发表评论

电子邮件地址不会被公开。 必填项已用*标注