echo
输出指定的字符串或者变量
补充说明
echo命令 用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
语法
echo(选项)(参数)
选项
-e:启用转义字符。
-E: 不启用转义字符(默认)
-n: 结尾不换行
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a发出警告声;\b删除前一个字符;\c不产生进一步输出 (\c 后面的字符不会输出);\f换行但光标仍旧停留在原来的位置;\n换行且光标移至行首;\r光标移至行首,但不换行;\t插入tab;\v与\f相同;\\插入\字符;\nnn插入nnn(八进制)所代表的ASCII字符;
参数
变量:指定要打印的变量。
实例
/bin/echo Hello, world!
在上面的命令中,两个词(Hello 和 world!)作为单独的参数传递给 echo,并且 echo 按顺序打印它们,用空格分隔
下一个命令产生相同的输出:
/bin/echo 'Hello, World!'
但是,与第一个示例不同,上述命令提供了单引号字符串 ‘Hello, world!’ 作为一个单一的一个参数。
单引号将可靠地保护它免受 shell 解释,将特殊字符和转义序列逐字传递给 echo。
例如,在 bash shell 中,变量名前面有一个美元符号 ($)。 在下一个命令中,引号内的变量名按字面意思处理; 在引号之外,它被转换为它的值。
/bin/echo 'The value of $PATH is' $PATH
# The value of $PATH is
# /home/hope/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
用echo命令打印带有色彩的文字:
ed
单行纯文本编辑器
补充说明
ed命令 是单行纯文本编辑器,它有命令模式(command mode)和输入模式(input mode)两种工作模式。ed命令支持多个内置命令,常见内置命令如下:
语法
ed(选项)(参数)
选项
A # 切换到输入模式,在文件的最后一行之后输入新的内容;
C # 切换到输入模式,用输入的内容替换掉最后一行的内容;
i # 切换到输入模式,在当前行之前加入一个新的空行来输入内容;
d # 用于删除最后一行文本内容;
n # 用于显示最后一行的行号和内容;
w # <文件名>:一给定的文件名保存当前正在编辑的文件;
q # 退出ed编辑器。
-G或——traditional:提供兼容的功能;
-p<字符串>:指定ed在command mode的提示字符;
-s,-,--quiet或——silent:不执行开启文件时的检查功能;
--help:显示帮助;
--version:显示版本信息。
参数
文件:待编辑的文件。
edquota
用于编辑指定用户或工作组磁盘配额
补充说明
edquota命令 用于编辑指定用户或工作组磁盘配额。edquota预设会使用vi来编辑使用者或群组的quota设置。
语法
edquota(选项)(参数)
选项
-u:设置用户的quota,这是预设的参数;
-g:设置群组的quota;
-p<源用户名称>:将源用户的quota设置套用至其他用户或群组;
-t:设置宽限期限。
参数
用户:指定要编辑磁盘配额限制的用户名或者工作组。
实例
配置系统的磁盘配额支持
首先,磁盘配额是区域性的,我们可以决定哪块分区进行磁盘配额,哪块分区不用(自然也就不用配置了)。一般而言,作为一台web虚拟主机服务器,/home和/www(或者类似的)是供用户存放资源的分区,所以可以对这两个分区进行磁盘配额。假定我们需要对/home分区实现用户级的限制,而对/www进行每个组的用户配额。
第一步:
vi /etc/fstab
找到对应于/home和/www的行,例如:
/dev/sda5 /home ext2 defaults 1 2
/dev/sda7 /www ext2 defaults 1 2
在/home里实现用户级的磁盘配额,所以对sda5行的挂装选项域做如下修改:
/dev/sda5 /home ext2 defaults,usrquota 1 2
注意,是usrquota哦。类似的,我们可以如下修改/www行:
/dev/sda7 /www ext2 defaults,grpquota 1 2
如编辑根用户
改/etc/fstab文件中
LABEL=/ / ext2 defaults,usrquota,grpquota 1 1
说明:/etc/fstab文件的每一行由六个字段组成:
- 第一个字段:文件系统(分区)的注释(类似卷标);
- 第二个字段:文件系统的装载点;
- 第三个字段:文件系统类型(磁盘配额只能在ext2文件系统上实现);
- 第四个字段:装载文件系统是使用的选项,如果只想实现基于用户的磁盘配额,就加入usrquota关键字,只想实现基于组的磁盘配额,就加入grpqouta关键字,如果两者都需要,就全写入,中间可以用逗号分隔。
- 第五个字段:表明该文件系统(分区)是否为只读,如果是0就表示只读,1表示可以读写。
- 第六个字段:表示系统启动执行fsck时检查的顺序。
注意:请特别注意这里的拼写,是usrquota和grpquota,不要写成userquota和groupquota。
进入单用户模式,用quotacheck生成.user或.group文件
quotacheck 你的目录
example:quotacheck / ; quotacheck /home
如果单用户模式报错的话umount你的设备/dev/hda*
再执行就ok了,重启动系统,如果一切正常的话,quota将开始正常工作。
设置用户和组配额的分配量
对磁盘配额的限制一般是从一个用户占用磁盘大小和所有文件的数量两个方面来进行的。在具体操作之前,我们先了解一下磁盘配额的两个基本概念:软限制和硬限制。
- 软限制:一个用户在文件系统可拥有的最大磁盘空间和最多文件数量,在某个宽限期内可以暂时超过这个限制。
- 硬限制:一个用户可拥有的磁盘空间或文件的绝对数量,绝对不允许超过这个限制。
通过edquota直接编辑数据文件:
使用编辑配额命令edquota为用户配置定额,在重新启动系统之后,我们假设lanf是需要定额的系统帐户,可以使用如下命令来为用户分配磁盘配额:
edquota -u lanf
这个命令将启动默认文本编辑器(如vi或其他由$EDITOR 环境变量指定的编辑器),其内容如下所示:
egrep
在文件内查找指定的字符串
补充说明
egrep命令 用于在文件内查找指定的字符串。egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。
语法
egrep(选项)(查找模式)(文件名1,文件名2,……)
实例
显示文件中符合条件的字符。例如,查找当前目录下所有文件中包含字符串"Linux"的文件,可以使用如下命令:
egrep Linux *
结果如下所示:
# 以下五行为 testfile 中包含Linux字符的行
testfile:hello Linux!
testfile:Linux is a free Unix-type operating system.
testfile:This is a Linux testfile!
testfile:Linux
testfile:Linux
# 以下两行为testfile1中含Linux字符的行
testfile1:helLinux!
testfile1:This a Linux testfile!
# 以下两行为 testfile_2 中包含Linux字符的行
testfile_2:Linux is a free unix-type opterating system
testfile_2:Linux test
过滤注释行和空白行
egrep -v '^\s*(#|$)' filename
eject
用来退出抽取式设备
补充说明
eject命令 用来退出抽取式设备。若设备已挂入,则eject命令会先将该设备卸除再退出。
eject允许可移动介质(典型是cd-ROM、软盘、磁带、或者JAZ以及zip磁盘)在软件控制下弹出。该命令也可以控制一些多盘片CD-ROM控制器,控制一些设备支持的自动弹出功能,以及控制一些CD-ROM驱动器磁盘托盘的关闭。与name相应的设备将被弹出,name可以为设备文件或者其挂载点,也可以为完整路径或者省略前面的/dev或者/mnt设备文件名。如果没有指定name,缺省使用cdrom。
有四种不同的弹出的方法,具体要看设备是CD-ROM, SCSI设备,可移动软盘,还是磁带而定。默认的弹出会依次尝试所有四种方法,直到成功为止。如果设备当前是挂载上来的,那么在弹出前要先卸载。
语法
eject(选项)(参数)
选项
-a<开关>或--auto<开关>:控制设备的自动退出功能;
-c<光驱编号>或--changerslut<光驱编号> 选择光驱柜中的光驱;
-d或--default:显示预设的设备,而不是实际执行动作;
-f或--floppy:退出抽取式磁盘;
-h或--help:显示帮助;
-n或--noop:显示指定的设备;
-q或--tape:退出磁带;
-r或--cdrom:退出光盘;
-s或--scsi:以SCSI指令来退出设备;
-t或--trayclose:关闭光盘的托盘;
-v或--verbose:执行时,显示详细的说明。
参数
设备名:指定弹出的设备名称。
elinks
纯文本界面的WWW浏览器
补充说明
elinks命令 能实现一个纯文本界面的WWW浏览器,操作方式与“lynx”类似。
语法
elinks(选项)(参数)
选项
-anonymous:是否使用匿名帐号方式;
-auto-submit:对于偶然遇到的第一个表单是否自动提交;
-config-dir:指定elinks指令运行时读取和写入自身的配置和运行状态的存放目录;
-dump:将HTML文档以纯文本的方式打印到标准输出设备;
-version:显示指令的版本信息;
-h:显示帮助信息。
参数
URL:指定要访问的URL地址。
elm
纯文本邮件客户端程序
补充说明
elm命令 是一个E-mail客户端管理程序,它提供了纯文本交互式全屏幕界面。
语法
elm(选项)
选项
-s<邮件主题>:指定新邮件的邮件主题;
-f<目录>:开启程序时,读取指定的目录;
-h:显示帮助;
-i<文件名>:将文件内容插入送出的邮件中;
-m:进入elm后,不显示指令说明;
-v:显示elm的版本信息;
-z:若收件信箱没有邮件,则不启动elm程序。
emacs
功能强大的全屏文本编辑器
补充说明
emacs命令 是由GNU组织的创始人Richard Stallman开发的一个功能强大的全屏文本编辑器,它支持多种编程语言,具有很多优良的特性。有众多的系统管理员和软件开发者使用emacs。
语法
emacs(选项)(参数)
选项
+<行号>:启动emacs编辑器,并将光标移动到制定行号的行;
-q:启动emacs编辑器,而不加载初始化文件;
-u<用户>:启动emacs编辑器时,加载指定用户的初始化文件;
-t<文件>:启动emacs编辑器时,把指定的文件作为中端,不适用标准输入(stdin)与标准输出(stdout);
-f<函数>:执行指定lisp(广泛应用于人工智能领域的编程语言)函数;
-l<lisp代码文件>:加载指定的lisp代码文件;
-batch:以批处理模式运行emacs编辑器。
参数
文件:指定要编辑的文本文件。
emacs命令操作大全
基本命令
C-x C-c : 退出Emacs
C-x C-f : 打开一个文件,如果文件不存在,则创建一个文件
C-g : 取消未完成的命令
编辑
C-z (redefined): Undo;原来C-z是挂起Emacs(然后用fg命令调出);C-x u 是默认的命令; 移动一下光标,再C-z就可以redo
M-d : 删除光标后的词语
移动光标
C-v : 向前翻页
M-v : 向后翻页
M-r : 将光标移动到屏幕中间那行
C-a : 移到行首
M-a : 移到句首,从行首到句首之间可能有空格
C-e : 移到行尾
M-e : 移到句尾
M-{ : 向上移动一段
M-} : 向下移动一段
C-right : 向前移动一个单词
C-left : 向后移动一个单词
C-up : 向前移动一段
C-down : 向后移动一段
M-< : 移到整个文本开头
M-> : 移到整个文本末尾
C-u 数字 命令 : 执行多次(数字表示次数)该命令;"M-数字 命令" 也可以
M-x goto-line : 移动到某一行
C-l : 重绘屏幕,效果就是当前编辑行移动窗口中央
Buffer 相关
enable
启动或禁用shell内建命令
概要
enable [-a] [-dnps] [-f filename] [name …]
主要用途
-
禁用一到多个内建命令。
-
启用一到多个内建命令。
-
直接调用与禁用的内建命令同名且在
$PATH路径下找到的外部命令。 -
打印所有内建命令,无论是否禁用。
-
打印处于启用状态的内建命令。
-
打印处于禁用状态的内建命令。
-
打印处于启用状态的posix标准内建命令。
-
打印处于禁用状态的posix标准内建命令。
-
打印posix标准内建命令,无论是否禁用。
-
从动态库中加载内建命令。
-
移除从动态库中加载的内建命令。
选项
-a 打印所有内建命令,无论是否禁用。
-d 移除从动态库中加载的内建命令。
-n 禁用内建命令或显示已禁用的内建命令。
-p 以可复用格式打印。
-s 只显示处于启动状态的posix标准内建命令。
-f 动态库中加载内建命令。
-ns 打印处于禁用状态的posix标准内建命令。
-as 打印posix标准内建命令,无论是否禁用。
参数
filename:动态库文件名。
name(可选):内建命令,可以为多个。
返回值
enable返回成功,除非name不是内建命令或有错误发生。
例子(以下内容限于篇幅不再列出返回值部分)
# posix special builtin
# 假设没有任何内建命令被禁用
# 禁用两个posix标准内建命令
enable -n set source
# 打印处于禁用状态的posix标准内建命令
enable -ns
# 打印posix标准内建命令,无论是否禁用。
enable -as
# 打印处于启用状态的posix标准内建命令
enable -s
# 假设没有任何内建命令被禁用
# 禁用一到多个内建命令
enable -n echo pwd
# 打印所有内建命令,无论是否禁用。
enable -a
# 打印处于启用状态的内建命令
enable
# 打印处于禁用状态的内建命令
enable -n
# 启用一到多个内建命令
enable pwd
Q&A
Q:请问-f,-d,-p的演示呢?
env
显示系统中已存在的环境变量
补充说明
env命令 用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用"-“作为参数选项时,隐藏了选项”-i"的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。
如果使用env命令在新环境中执行指令时,会因为没有定义环境变量"PATH"而提示错误信息"such file or directory"。此时,用户可以重新定义一个新的"PATH"或者使用绝对路径。
语法
env(选项)(参数)
选项
-i:开始一个新的空的环境;
-u<变量名>:从当前环境中删除指定的变量。
参数
- 变量定义:定义在新的环境中变量,定义多个变量定义用空格隔开。格式为“变量名=值”;
- 指定:指定要执行的指令和参数。
实例
[root@localhost ~]# env
hostname=LinServ-1
TERM=linux
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.2.111 2705 22
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
mail=/var/spool/mail/root
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
INPUTRC=/etc/inputrc
pwd=/root
LANG=zh_CN.UTF-8
SHLVL=1
HOME=/root
logname=root
SSH_CONNECTION=192.168.2.111 2705 192.168.2.2 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env