介绍
本实验环境采用带桌面的 CentOS 7.× 环境
目标
请你在 Bash 中完成如下任务:
在命令行中显示 当前所处的目录的名字。
在命令行中显示 当前登录的主机名。
在命令行中显示 当前登录用户名。
在命令行中显示 公元 1895 年 6 月的月历。
在命令行中显示 当前的格林威治(UTC) 时间。
同时,还需要在 Bash 中完成如下任务:
在 /home/shiyanlou 目录下新建(提示:touch)一个名为 1.txt 的空文件。
在命令行中使用文本编辑器(提示:nano)打开刚刚新建的文本文件 1.txt,将你在 1 中所使用的完整命令(包括选项和参数),按照每个命令一行的格式写入文本中,并保存。
拓展
外壳(Shell)
一个基本的 Linux 操作系统由 2 部分组成,即内核(Kernel)和外壳(Shell)。
内核(Kernel)是 Linux 操作系统的心脏,实现操作系统的基本功能,包括控制硬件设备、管理内存、提供硬件接口、处理基本 I/O、管理文件系统,为程序分配内存和 CPU 时间片等等。
但除非你有直接操作内核的本事,否则就需要一个居中的“接口(interface)”来和系统的内核打交道,与“核 (kernel)”对应,这个交互接口很形象地被称为“外壳 (Shell)”。简单来说, 外壳 (Shell) 就是一种能让你通过所谓的命令行 (command line) 与 Linux 内核之间进行“对话”的软件:Shell 等待你输入,向 Linux 内核解释你的输入,并且处理各种各样的内核输出,把这些结果以可视的方式展示给你。这种交互可以是即时交互(从键盘输入,并且可以立即得到响应),也可以是非即时交互(Shell 脚本文件)。
目前,Linux 上的主流 Shell 有三种,Bourne Again Shell(Bash)、 Korn Shell (ksh) 和 C Shell (csh),这些 Shell 功能强大,已经不仅仅是用户命令解释器了,还是编程语言以及完整的程序开发环境。
Bash(The Bourne Again Shell)
我们所使用的 CentOS 系统上的默认 Shell 是 Bash(The Bourne-Again SHell),它最初由 Brian Fox 编写并发布于 1989 年,并且轻松成长为使用最广泛的 Shell 之一。目前,Bash 是大多数 Linux 系统以及 Mac OS X 默认的 Shell。
事实上,Bash 这个略显奇怪的名字来源于一个双关语:Linux 早期有一个重要的 Shell (Bourne Shell) 的创建者 叫做 Stephen Bourne,为了向其致敬,Brian Fox 将他的 Shell 命名为 Bourne Again Shell 取其谐音 Born Again Shell。
命令(command)
Shell 中所谓的命令 (command) 有两类:外部命令 和 内置命令。
外部命令:本质上就是一个的可执行(runnable)的二进制文件或者 Shell 脚本文件。这些可执行文件一般都放在 /bin、/sbin、/usr/bin 或者 /usr/sbin 等目录中,当要执行命令的时候,Shell 就会在这些目录或者其他用户指定的目录中搜索相应可执行文件,找到以后就运行,如果找不到文件,那么 Shell 就会在终端中输出相应的错误信息。
内置命令:内部命令是写在 Bash 源码里面的,由 Shell 识别并在 Shell 内部完成运行,通常系统加载运行 Shell 就被加载并驻留在系统内存中,其执行速度比外部命令快。
Linux 中的命令名一般是一个小写英文字符串,往往是命令所完成任务的缩写,如 ls 命令是 list 的缩写,表示列出目录或者文件信息。
Linux 中的命令往往会跟着“选项(options)”或“参数(arguments)”,但这也不是绝对的,一些命令既没有选项也没有参数,一些命令只有其中一种。
选项(options):一个字符或字符串,一般来说前面有一个’-’符号或者’--’符号(带’-’符号的叫短选项,往往是一个字符;带’--’符号的叫长选项,往往是一个字符串),选项可以看作是一种开关,一般用于控制命令的行为。
参数(arguments):一个字符串,参数一般用来向命令传递一些时运行所需的信息(往往是命令的作用对象范围、程度等等)。
帮助手册(man)
学习 Linux 有一个重要工具——系统帮助文档,也即 man 命令,man 就是 manual 的缩写,用来查看系统中自带的各种参考手册(注意,不仅仅是命令噢)。例如我们现在要查看 who 命令的帮助文档,最简单的用法如下:
man who
这时就来到了 man 命令的界面中,界面如下所示,其中一般会有 NAME、SYNOPSIS、DESCRIPTION、AUTHOR、REPORTING BUGS、COPYRIGHT 和 SEE ALSO 等项目,具体这些项目解释了什么,可以参考下面注释内容:
WHO(1) User Commands WHO(1)
# 上面括号里面的数字是有意义的
NAME #这个命令(程序)的名称和简单用途的说明
who - show who is logged on
SYNOPSIS #命令(程序)语法
who [OPTION]... [ FILE | ARG1 ARG2 ]
DESCRIPTION #命令(程序)详细说明,包括选项与参数的用法
Print information about users who are currently logged in.
-a, --all
same as -b -d --login -p -r -t -T -u
-b, --boot
time of last system boot
#…… 此间省略若干行
--help display this help and exit
--version
output version information and exit
If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
If ARG1 ARG2 given, -m presumed: ‘am i’ or ‘mom likes’ are usual.
AUTHOR #命令(程序)的作者
Written by Joseph Arceneaux, David MacKenzie, and Michael Stone.
REPORTING BUGS #如果发现 bug 可以联系的电子邮件
Report who bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report who translation bugs to <http://translationproject.org/team/>
COPYRIGHT #命令(程序)版权协议
Copyright © 2010 Free Software Foundation, Inc. License GPLv3+: GNU
GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEE ALSO #何处获取命令(程序)的完整文档
The full documentation for who is maintained as a Texinfo manual. If
the info and who programs are properly installed at your site, the command
info coreutils 'who invocation'
should give you access to the complete manual.
GNU coreutils 8.4 November 2011 WHO(1)
当然,不同的命令(程序)的文档格式可能有些微区别,文档中还可能包括的项目有:
COMMANDS:当这个命令(程序)在运行的时候,可以在此命令(程序)中下执行内部命令;
FILES:这个命令(程序)或数据所使用或者相关的某些文件;
EXAMPLE:这个命令(程序)执行的一些参考的样例。
请你特别注意,系统的帮助手册分为好几个部分(不仅仅包括命令的帮助手册),每个部分中可能会存在同名的内容,举个例子来说好了,执行’man 1 read’ 和 ‘man 2 read’ 将显示不同内容,前者显示 read 命令的帮助文档,后者显示系统 read 函数的帮助文档,这是由于 man 命令可以后跟一个数字来表示要查阅的用户手册的具体部分,若不加数字,那 man 命令默认从数字较小的手册中寻找相关内容。具体数字代表何种内容可以参考下面的说明:
Shell 中可以操作的指令或可执行文件;
系统核心可使用的函数与工具等;
一些常用的函数 (function) 与库 (library),大部分为 C 的库 (libc);
设备文件的说明,通常在 /dev 下的文件;
配置文件或者是某些文件的格式;
游戏;
惯例与协议等,例如 Linux 文件系统系统、网络协议、ASCII 码等等的说明;
系统管理员可用的管理命令;
跟系统核心有关的文件。
网友评论