1.3 与Linux交互
与Linux交互
在所有的问题之中,最先要解决就是:如何才能够让Linux做我们想让它做的事情?
我们可以用各种方式做到这一点:例如,一个Linux程序员,可以用编程语言通过操作系统的编程接口与 Linux 进行交互如果,如果足够牛的话,甚至可以考虑撇开编程接口,直接与Linux内核进行交互。但是,作为一个普通的Linux系统管理员,我们还是倾向于通过现成的操作命令接口(User Command Interface)与Linux打交道。与Linux的“核(kernel)”对应,操作命令接口很 形象地被称为“壳(shell)”。
简单来说, Shell 就是一种能让你与 Linux 之间进行“对话”的软件。Shell 等待你输入,向 Linux 解释你的输入,并且处理各种各样的系统的输出结果,把这些结果展示给你。这种交互可以是即时交互(从键盘输入,并且可以立即得到响应),也可以是非即时交互(shell 脚本1)。
我们所使用的 CentOS 系统上的默认 Shell 叫做 Bash(The GNU’s Bourne Again Shell)。Bash 也是绝大部分 Linux 平台上的默认 Shell。
事实上,Linux 为用户提供了两种截然不同的“壳”:—种是命令行 式 shell(Command Line Interface shell ,即 CLI shell),用户利 用这些字符命令或者 shell 脚本来组织和控制作业的执行,或者对 计算机系统进行管理。另—种是图形界面 shell(Graphical User Interface shell 即 GUI shell),用户通过点击,拖动图像图标来完 成同样的事情。
在 Linux 中,传统意义上的 shell 指的就是命令行式的 shell,在下 面课程中,如果没有特别注明,所提到的 shell 就是命令行式的 shell。
当文本模式下登入系统或在图形界面下打开终端,首先将看到的是一个提示
符(prompt)。提示符本身就包含了相当多的信息:CentOS 的标准提示符包括了 登录用户名、登入的主机名、用户当前所在的目录(working directory)和提示符 号,例如:
[aaa@qq.com~]$
其中,’stu’为登录用户名,’localhost’为登录主机名,’~’ 表示当前用户正处在 stu 用户的 家目录中,’$’则表示当前登录用户为普通用户。
小试牛刀
这时就可以输入命令了,为熟悉 shell,我们选择的三个有代表性的命令来小试牛刀,这三个命令分别为 whoami、echo 和 nano。
whoami
首先来试一试 whoami,在命令提示符后键入 whoami 命令,然后回车,命
令将输出当前登录用户的用户名。
[aaa@qq.com ~]$ whoami
stu
whoami 是 Linux 中最简单的命令之一,不能带参数,只有两个选项,所以 我们可以看得很清楚,要通过 Shell 给 Linux 下达命令很简单:只要在提示符后 敲进命令,然后再回车,就可以执行这个命令,并在终端里输出相应的结果(如 果有的话),命令结束后,再给出新的提示符;如果出错,那么就会在终端中输 出相应的错误信息,然后再给出新的提示符。
切记,Linux 区分大小写。换一句话说,whoami 和 WHOAMI 或 whoAmi 是不一样的。
选项(option):包括一个或多个字母的代码,一般来说前面有一个’-’号或者’–’符号(’-’或者’–’符号是必要的,Linux 用它来区别选项和 参数),选项可以看作是一种开关,一般用于控制命令的行为。事实 上,Linux 中的命令在正常情况下最少有两个选项,–help 和— version。
参数(parameter) :一个字符串,参数一般用来向命令传递一些时运 行所需的信息(例如文件或主机名称等),Linux 大多数命令都被设 计为可以接纳参数。
命令本身、选项和参数中间用空格来分隔, 不论空多少格,shell 都 视为一格;
echo
接接下来来看第二个命令 echo,这个命令就相对复杂许多了,不仅有很多选
项,还可以跟参数。我们首先来看命令最简单的使用方法,在命令提示符后键入 echo 命令,空格之后跟上一个字符串”Hello, Linux world.”,然后回车,命令将在 屏幕上回显此字符串”Hello, Linux world.” 这个命令带了一个参数就是字符 串”Hello, Linux world.”
[aaa@qq.com ~]$ echo “Hello, Linux world.”
Hello, Linux world
echo 命令可以带选项,如在 date 后跟上’-n’选项,表示在回显指定字符串后不换行:
[aaa@qq.com ~]$ echo -n “Hello, Linux world.”
Hello, Linux world.[aaa@qq.com ~]$
或者跟上’-e’选项,来输出以反斜杠开头的转义字符,其中,’\t’表示制表符,’\n’表示换行:
[aaa@qq.com ~]$ echo -e 序号\t 姓名\t 成绩\t 备注\n1\t 张三\t59\t 补考
序号 姓名 成绩 备注
1 张三 59 补考
所有的 ASCII 码都可以用“\”加数字(一般是 8 进制数字)来表示。 而 C 语言中定义了一些字母前加”\”来表示常见的那些不能显示的 ASCII 字符,如\0,\t,\n 等,就称为转义字符,因为后面的字符,都不 是它本来的 ASCII 字符意思了。
echo 命令中的转义字符与C语言中的转义字符基本一样,可以参考 echo 命令的帮助文档
用法:/bin/echo [选项]... [字符串]... 或:/bin/echo 长选项 将 STRING 回显到标准输出。
-n 不尾随换行符
-E 禁用解释反斜杠的转义功能(默认)
--help 显示此帮助信息并退出
--version 显示版本信息并退出
若-e 可用,则以下序列即可识别:
\\ 反斜杠
\a 响铃声
\b 退格
\c 不再产生新的输出
\e 转义符
\f 换页
\n 新行
\r 回车
\t 水平制表符
\v 竖直制表符
\0NNN 字节数以八进制数 NNN (1 至 3 位)表示
\xHH 字节数以十六进制数 HH (1 至 2 位)表示
nano
最后我们来看 nano 命令,nano 是一个文本编辑工具。nano 命令与上面两个命令不太一样,这个命令有自己的界面, 我们在命令行下输入 nano, 回车,就来到了 nano 界面中,这时我们就可以在光 标处输入文本了,我们可以用箭头键来移动光标,也可以按 Alt+M打开鼠标支持 来移动光标:
保存和退出
如果你要保存所做的修改,按下Ctrl+O。想要退出,按下Ctrl+X。如果你退出前没有保存所做的修改,它会提示你是否要保存。如果不要,请按N,反之,则按Y。然后它会让你确认要保存的文件名,确认或修改后按Enter即可。
如果你没有修改好而不小心按了保存键,您可以在请求确认文件名时按Ctrl+C来取消。
剪切和粘贴
要剪切一整行,请用Ctrl+K(按住Ctrl不放,再按下K键)。光标所在的行便消失了。要粘贴它,只需把光标移动到您所要粘贴的位置,然后按Ctrl+U即可。要移动多行,只需多按几次Ctrl+K把需要移动内容都剪切下来,然后按一次Ctrl+U就可以把刚剪切的内容全部粘贴上来。
如果你想使用更精确的剪切控制,则需要给文本做标记。移动光标到需要剪切文本的开头,按下Ctrl+6(或者Alt+A)。然后移动光标到待剪切文本的末尾:被做了标记的文本便会反白。要撤消文本标记,只需再按一次Ctrl+6。用Ctrl+K来剪切被标记的文本,用Ctrl+U来粘贴。
搜索特定文字
当你想搜索某特定文字时,只要想成”WhereIs”而不是”Search”,事情就简单了。只要按下Ctrl+W,键入你要搜索的字符串,再按Enter就可以了。想再次搜索相同的字符串,可以直接按Alt+W。
注意:在nano帮助文档里,Ctrl-键被表示为一个脱字符(^),因此Ctrl+W被写成了^W,等等。Alt-键被表示为一个M(从”Meta”而来),因此Alt+W被写成了M-W。
推荐阅读
-
1.3 与Linux交互
-
终端-Linux命令之非交互SSH密码验证-Sshpass
-
Linux——expect自动交互语言及应用示例
-
QT实现终端交互(Windows和Linux通用)
-
Linux下subversion的安装与配置 博客分类: Linux linuxsubversion配置安装新增版本库新增用户
-
《Unix/Linux网络日志分析与流量监控》获奖 日志
-
linux 同步IO: sync、fsync与fdatasync(转载) 博客分类: 转载linux原理 syncfsyncfdatasync
-
CPU利用率与Load Average的区别 博客分类: 并发&异步&无阻塞Linux/Windows loadcpu
-
Android原生代码(Java)与HTML(JS)的交互
-
Js 和 JQuery 与HTML元素之间的交互