echo:显示文本
-
作用:显示文本内容。
-
用法:echo [-neE] [字符串]
-
主要选项如下:
命令 | 描述 |
---|---|
-n | 不输出行尾的换行符 |
-e | 允许对下面列出的加反斜线转义的字符进行解释 |
-E | 禁止对在 STRINGs 中的那些序列进行解释 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
-e
命令 | 描述 |
---|---|
\a | 发出警告声 |
\b | 删除前一个字符 |
\c | 最后不加上换行符号 |
\f | 换行但光标仍旧停留在原来的位置 |
\n | 换行且光标移至行首 |
\r | 光标移至行首,但不换行 |
\t | 插入 tab 字符 |
\v | 与\f 相同 |
\\: | 插入“\“”字符 |
\nnn | 插入 nnn(八进制)所代表的 ASCII 字符 |
案例练习
(1)echo
显示字符串。 普通字符串可以在echo
后直接输入字符串,但这样当要输出某些字符(如“\”)时会有问 题(这种写法下,“\”是被当作继行符处理过滤掉的,要输出一个“\”必须输入“\”,跟 C 语 言中 printf 输出的要求相像),所以最好用’string’或"string",这样即使是“\”也可以输出,方便直观。
#echo hello world
hello world
#echo hello\ world
hello world
#echo hello\\ world
hello\ world
#echo 'hello\\ world' 或者: echo "hello\\ world"
hello\\ world
(2)echo 的转义显示:加上-e 参数输出多行。
#echo -e 'hello\nworld'
hello
world
(3)输出 ASCII 字符:echo -e \NNN(NNN 为 ASCII 字符的八进制码号,不符合八进制的 将会按照字面意义进行打印)。
#echo -e '\61 \62 \101 \141'
date:显示日期和时间
-
作用:显示或设置系统时间与日期。
-
用法:date [选项]显示时间用法(以“+”开头,后面接用法)
-
主要选项如下:
命令 | 描述 |
---|---|
-d,--date=STRING | 显示由 STRING 指定的时间,而不是当前时间。 |
-f,--file=DATEFILE | 显示 DATEFILE 中每一行指定的时间,如同将 DATEFILE 中的每 行作为–date 的参数。 |
-I,--iso-8601[=TIMESPEC] | 按照 ISO-8601 的日期/时间格式输出时间。 |
TIMESPEC=`date’ | (或者不指定时)仅输出日期,等于hours'、 minutes’或`seconds’时按 照指定精度输出日期及时间。 |
-r,--reference=FILE | 显示 FILE 的最后修改时间。 |
-R,--rfc-822 | 根据 RFC-822 指定格式输出日期。 |
-s,--set=STRING | 根据 STRING 设置时间。 |
-u,--utc,--universal | 显示或设置全球时间(格林尼治时间)。 |
--help | 显示帮助文件并退出。 |
--version | 显示版本信息并退出。 |
格式 FORMAT:控制着输出格式。仅当选项指定为全球时间时本格式才有效。分别解释如下。
%H
:小时(以 00~23 来表示)。%I
:小时(以 01~12 来表示)。%K
:小时(以 0~23 来表示)。%l
:小时(以 0~12 来表示)。%M
:分钟(以 00~59 来表示)。%P
:AM 或 PM。%r
:时间(含时、分、秒,小时以 12 小时 AM/PM 来表示)。%s
:总秒数。起算时间为 1970-01-01 00:00:00 UTC。%S
:秒(以本地的惯用法来表示)。%T
:时间(含时、分、秒,小时以 24 小时制来表示)。%X
:时间(以本地的惯用法来表示)。%Z
:市区。%a
:星期的缩写。%A
:星期的完整名称。%b
:月份英文名的缩写。%B
:月份的完整英文名称。%c
:日期与时间。只输入 date 命令也会显示同样的结果。%d
:日期(以 01~31 来表示)。%D
:日期(含年、月、日)。%j
:该年中的第几天。%m
:月份(以 01~12 来表示)。%U
:该年中的周数。%w
:该周的天数,0 代表周日,1 代表周一,依此类推。%x
:日期(以本地的惯用法来表示)。%y
:年份(以 00~99 来表示)。%Y
:年份(以 4 位数来表示)。%n
:在显示时,插入新的一行。%t
:在显示时,插入 tab 字符。MM
:月份(必要)。DD
:日期(必要)。hh
:小时(必要)mm
:分钟(必要)。CC
:年份的前两位数(选择性)。YY
:年份的后两位数(选择性)。ss
:秒(选择性)。
说明 只有超级用户才有权限使用 date 命令设置时间,一般用户只能使用 date 命令显示 时间。
案例练习
(1)显示当前时间。
#date
2009 年 08 月 02 日星期六 17:19:27 CST
(2)显示时间后跳行,再显示当前日期。
# date +%T%n%D
10:19:57
03/24/10
(3)显示月份。
# date +%B
三月
(4)显示日期与设定时间(12:34:56)。
date --date 12:34:56
2010 年 03 月 24 日 星期三 12:34:56 CST
(5)设置系统当前时间(12:34:56)。
# date --s 12:34:56
2010 年 03 月 24 日 星期三 12:34:56 CST
2.17 script:记录 Linux 会话信
script:记录 Linux 会话信息
- 作用:用来记录执行过的所有命令及命令的输出。
- 用法:script [选项] 文件
- 主要选项如下:
命令 | 描述 |
---|---|
-a,--append | 追加输出。 |
-c,--command<命令> | 运行命令而不是交互式 Shell。 |
-e,--return | 返回子进程的退出代码。 |
-f,--flush | 每次 write(写)后运行 flush(冲刷)。 |
--force | 即使输出文件是链接也依然使用。 |
-q,--quiet | 安静模式。 |
-t,--timing[=<文件>] | 将时间数据输出到标准错误(或文件)。 |
-V,--version | 输出版本信息并退出。 |
-h,--help | 显示此帮助并退出。 |
说明 许多系统管理员都知道保留一个包含各种任务、配置改变等活动日志的重要性。 对一些组织而言,保留“我做了这件事”或“约翰做了那件事”的简单日志就已足够; 但另一些组织则需要记录所有改变。对终端输出进行复制粘贴可能非常乏味,我们使 用一个叫作script的鲜为人知的程序来解决这个问题,它是大多数Linux产品util-linux 软件包的一部分。script 记录会话的一切内容,包括输入的内容和看到的内容,它甚 至记录颜色。因此,如果命令提示符或程序输出中包含颜色,script 将记录它。
案例练习
(1)使用 script。 简单执行以下命令:
$ script
在默认情况下,它向当前目录的 typescript 文件中写入内容,然后输入的一切内容都被记 录到那个文件中。要向另一个文件中记录日志,只需使用 script/path/to/file 命令。完成记录后, 输入 exit 退出。这个命令将关闭 script 会话并保存文件。可以使用 cat 或其他任何程序来检查 日志文件。使用 script 的缺点在于,它记录所有特殊的字符,因此输入的文件中将充满控制字 符和 ANSI 转义序列。可以在 script 中使用一个非常简单的 Shell 来解决这个问题:
$ SHELL=/bin/sh PS1="$ " script
使用 script 时,不要使用交互式程序或处理窗口的程序,如 vior top,它们会破坏会话的输 出结果。另外,日志文件会记录使用的任何命令行程序和完成一项任务所采取的步骤。如果需 要在脚本中编辑一个文件,可以考虑退出 script 会话,然后用 script -a(它在旧会话后添加新会 话)对文件进行编辑后再重新启动会话。
(2)script -a filename1 -t 2>filename2。
退出命令为 exit。
若要查看记录结果,使用 cat filename 即可,filename1 和 filename2 可以是同一个文件。
apropos:搜索关键字
- 作用:在 whatis 资料库中搜索特定字串。
- 用法:apropos[选项]关键字
- 主要选项如下:
命令 | 描述 |
---|---|
-d,--debug | 输出调试信息。 |
-v,--verbose | 输出详细的警告信息。 |
-r,--regex | 将每个 keyword 作为正则表达式解释。这是默认行为。每个 keyword 将匹配手册页和描述。 |
-w,--wildcard | 将每个 keyword 作为 Shell 样式的通配符解释。 |
-e,--exact | 每个 keyword 将精确匹配手册页名字和描述。 |
-a,--and | 只显示匹配所有 keyword 的手册页和描述。默认显示匹配任何 keyword 的项。 |
-l,--long | 不根据终端宽度缩减输出。 |
-s section,--section section | 只查找指定的手册 section。 |
-m system[,...],--systems=system[,...] | 用于查找其他操作系统的手册页。 |
-M path,--manpath=path | 指定从其他以冒号分隔的手册页层次查找。默认使用$MANPATH 环境变量。这个选项覆盖$MANPATH 的内容。 |
-L locale,--locale=locale | apropos 调用 C 函数 setlocale 来得到当前本地化信息,包括$LC_MESSAGE 和$LANG 。使用该选项提供一个 locale 字符串来临时更改本地化信息。 |
-C file,--config-file=file | 使用这个用户配置文件而不是默认的~/.manpath。 |
-h,--help | 打印帮助信息并退出。 |
-V,--version | 打印版本信息并退出。 |
案例练习
要“查找”文件,又不知道用什么命令,可以输入下面的命令:
$apropos search
其他部分可以根据实际情况增减。
locate:搜索文件
- 作用:用于查找符合条件的文件,它会去保存文件与目录名称的数据库中查找符合范本样 式条件的文件或目录。
- 用法:locate[选项]相关字
- 主要选项如下:
命令 | 描述 |
---|---|
-b,–basename | 匹配唯一的路径名称的基本文件名。 |
-c,–count | 只显示找到条目的号码 |
-d,–database DBPATH | 用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)。 |
-e,–existing | 只显示当前存在的文件条目。 |
-L,–follow | 当文件存在时跟随蔓延的符号链接(默认)。 |
-h,–help | 显示本帮助。 |
-i,–ignore-case | 匹配模式时忽略大小写区别。 |
-l,–limit,-n LIMIT | 限制为 LIMIT 项目的输出(或计数)。 |
-m,–mmap | 忽略向后兼容性。 |
-P,–nofollow,-H | 当检查文件时不跟随蔓延的符号链接。 |
-0,–null | 输出时以 NUL 分隔项目。 |
-S,–statistics | 不搜索项目,显示有关每个已用数据库的统计信息。 |
-q,–quiet | 不报告关于读取数据库的错误消息。 |
-r,–regexp REGEXP | 搜索基本正则表达式 REGEXP 来代替模式。 |
–regex | 模式是扩展正则表达式。 |
-s,–stdio | 忽略向后兼容性。 |
-V,–version | 显示版本信息。 |
-w,–wholename | 匹配完整路径名(默认)。 |
说明 有时候,明明知道某一文件或目录存在,却不知该到哪里去找到它,这时可以使 用 locate 命令来搜寻文件或目录。同 find 命令相比较,locate 命令从数据库中查找, 而不是每次搜索文件系统。因为是从数据库中查找,locate 的速度远远快于 find 命令。 但是,使用 locate 命令查找的结果仅仅是在当前数据库中。locate 数据库是通过 cron 的日任务更新的,用户也可以手工进行,使用“locate –u;updatedb”命令完成(通常 需要 root 权限)。当我们建立好这个数据库后,就可以方便地搜寻所需文件了。
案例练习
(1)建立数据库。
locate -u
(2)查找所有包含字符“kde”且在目录 bin 中的文件。
# locate kde | grep bin
/sbin/blockdev
/usr/kerberos/bin/kdestroy
/usr/sbin/lockdev