在所有的问题之中,最先要解决就是:如何才能够让Linux做我们想让它做的事情?我们可以用各种方式做到这一点:例如,一个Linux程序员,可以用编程语言通过操作系统的编程接口与Linux进行交互如果,如果足够牛的话,甚至可以考虑撇开编程接口,直接与Linux内核进行交互。但是,作为一个普通的Linux系统管理员,我们还是倾向于通过现成的操作命令接口(User CommandInterface)与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的标准提示符包括了登录用户名、登入的主机名、用户当前所在的目录(workingdirectory)和提示符号,例如:

命令序列 1

[stu@localhost~]$

其中,'Stu'为登录用户名,'localhost'为登录主机名,’~’ 表示当前用户正处在stu用户的家目录中,’$’则表示当前登录用户为普通用户

注意

¨        根据  Bourne Shell 的传统,普通用户的提示符以'$'结尾,而根用户以’#’结尾

¨        ’~’ 符号不是一个固定的目录名称,而是一个”Shell 变量”,代表使用者的”家目录”,举例来说,如果我以dev01用户身份登录系统,dev01的家目录是’/home/dev01’,那么’~’就代表’/home/dev01’,如果我以root身份登录系统,而root的家目录是’/root’,那么’~’就代表’/root’。至于到底”家目录”和”Shell 变量”到底是什么,我们在后继的教程中会详细讨论。

这时就可以输入命令了,为熟悉shell,我们选择的三个有代表性的命令来小试牛刀,这三个命令分别为 whoami、echo和nano。

注意

¨        Linux中所谓的命令(Command),本质上就是一个与命令同名的可执行(Runnable)的二进制文件或者Shell脚本。

¨        这些可执行文件一般都放在/bin、/sbin、/usr/bin或者/usr/sbin等目录中,当要执行命令的时候,Shell 就会在这些目录或者其他用户指定的目录中(我们在后面会详细讨论如何指定这写目录)搜索相应可执行文件,找到以后就运行,如果找不到文件,那么Shell就会在终端中输出相应的错误信息。

¨       切记,Linux 区分大小写。换一句话说,whoami 和WHOAMI 或 whoAmi是不一样的。

重要

¨       选项(option):包括一个或多个字母的代码,一般来说前面有一个’-’ 符号或者’--’符号(’-’或者’--’符号是必要的,Linux用它来区别选项和参数),选项可以看作是一种开关,一般用于控制命令的行为。事实上,Linux中的命令在正常情况下最少有两个选项,--help和—version。

¨       参数(parameter):一个字符串,参数一般用来向命令传递一些时运行所需的信息(例如文件或主机名称等),Linux大多数命令都被设计为可以接纳参数。

¨       命令本身、选项和参数中间用空格来分隔,不论空多少格,shell 都视为一格;

命令

用法:whoami [选项]...

显示与当前的有效用户ID 相关联的用户名。

¨       --help         显示此命令帮助信息并退出

¨       --version     显示命令版本信息并退出

注意

¨       所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C语言中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

¨       echo命令中的转义字符与C语言中的转义字符基本一样,可以参考echo命令的帮助文档

命令

用法:/bin/echo [选项]... [字符串]... 或:/bin/echo 长选项

将 STRING 回显到标准输出。

¨        -n       不尾随换行符

¨        -e       启用解释反斜杠的转义功能

¨        -E       禁用解释反斜杠的转义功能(默认)

¨        --help  显示此帮助信息并退出

¨        --version   显示版本信息并退出

若-e可用,则以下序列即可识别:

¨        \\    反斜杠

¨        \a    响铃声

¨        \b    退格

¨        \c    不再产生新的输出

¨        \e    转义符

¨        \f    换页

¨        \n    新行

¨        \r    回车

¨        \t    水平制表符

¨        \v    竖直制表符

¨        \0NNN    字节数以八进制数 NNN (1至3位)表示

¨        \xHH     字节数以十六进制数 HH (1至2位)表示

注意:BASH中可能内含自己的echo 程序版本,它会覆盖这里所提及的相应版本,可能在命令具体行为上有些许区别。

最后我们来看nano命令,nano是一个文本编辑工具,我们在第一部分的知识点4中提到过。nano命令与上面两个命令不太一样,这个命令有自己的界面,我们在命令行下输入nano, 回车,就来到了nano界面中,这时我们就可以在光标处输入文本了,我们可以用箭头键来移动光标,也可以按Alt+M打开鼠标支持来移动光标:按Ctrl+G 可以查看nano的帮助文档,在帮助文档中可以查看nano各种命令快捷键的详细用法。接着,按Ctrl+X可以退出当前查看或编辑的文档。

[1] Shell脚本是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。

linux 中文交互最好,与linux相交互 - wsdsb的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. Linux环境变量隔代,python基础题 - osc_vwtuqll7的个人空间 - OSCHINA - 中文开源技术交流社区...

    47.metaclass作用?以及应用场景? metaclass,直译为元类,简单的解释就是:当我们定义了类以后,就可以根据这个类创建出实例, 所以:先定义类,然后创建实例.但是如果我们想创建出类呢? ...

  2. linux rmi端口,RMI 两个端口 - 差不多先生的个人空间 - OSCHINA - 中文开源技术交流社区...

    在项目中使用rmi,发布到linux,unix,由于开了防火墙.需要配置防火墙端口.刚开始配置了一个固定端口,死都连接不通,后来同netstat -antup |grep pid 查看进程监听的端口, ...

  3. linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区...

    对于NFS中权限管理的理解,首先需要熟悉Linux中关于文件或文件夹的访问控制策略,其次要认识NFS中服务器如何控制客户端的访问. 默认情况下,Linux对于文件或文件夹的权限管理分为所属者(ownu ...

  4. linux冒泡算法程序,用蛮力法解决冒泡排序 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...

    冒泡排序是蛮力法的另一个经典体现. 算法思想:比较列表中相邻的元素,如果是逆序的话,就交换他们的位置.重复多次之后,最大的元素就排到了最后一个位置.第二遍操作将第二个元素排到了倒数第二个位置上,这样一 ...

  5. 着墨中文lisp登入_Lisp的本质 - climbdream的个人空间 - OSCHINA - 中文开源技术交流社区...

    又简单又有效率, 也不需要另外的预处理语言.我们可以在编译时就充分发挥宿主语言(此处是C/C++)的强大能力, 我们可以很容易地在编译时连接数据库, 建立数据访问层, 就像JSP或者ASP创建网页那样 ...

  6. 麒麟linux改中文,麒麟助手改版小结 - 优麒麟操作系统的个人空间 - OSCHINA - 中文开源技术交流社区...

    "恰到好处的解决方案才能让人满足"--Susan Weinschenk <设计师要懂的心理学> "同质化的竞争环境下,决定竞争差距的关键因素就是执行力和创新的 ...

  7. 关于linux内存管理说法不正确,Linux自我检测题 - osc_8wyy9cyu的个人空间 - OSCHINA - 中文开源技术交流社区...

    因为工作需要开始使用Linux,决定跟着刘超老师学习趣谈Linux操作系统,记录下他出的12个练习题,把这套题目当作一个工具,在后面的不断学习中,一个个解答这些问题,还要时常回过头来检测一下自己,对照 ...

  8. mysql跨年统计年前年后_PHP面试总结 - osc_chmxgjn9的个人空间 - OSCHINA - 中文开源技术交流社区...

    18.一群猴子排成一圈,按1,2,-,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,如此不停 的进行下去,直到最后只剩下一只猴子为止,那只猴子 ...

  9. linux 输入法框架,常用输入法框架简介 - 微信公众号:算法与编程之美 - OSCHINA - 中文开源技术交流社区...

    前言 之前使用的一直都是ibus-sunpinyin中文输入法,但在使用的过程中发现很多的词组都找不到,比较麻烦,所以打算换一下ibus-googlepinyin输入法,还没用,也不知道具体的效果怎么 ...

  10. linux内核等价多路径路由,高级路由 - 我是*李世民*的个人空间 - OSCHINA - 中文开源技术交流社区...

    策略路由背后的概念 Linux内核在默认情况下使用两张路由表:一张表用于本地路由,另一张可以由管理员来配置.如果内核编译支持策略路由,那么可以有多大255张不同的.相互独立的路由表.策略路由背后的主要 ...

最新文章

  1. su user oracle does not exist,Linux下oracle用户无法su切换的异常【终极解决方案_生产环境亲测有效】...
  2. Qt Creator分析QML应用程序
  3. c++ explicit(显式)关键字
  4. java axmlprinter_安卓xml配置文件解析工具-AXMLPrinter2.jar(androidmanifest.xml 反编译)下载官方最新版-西西软件下载...
  5. python 数据结构 树 dev get items_python数据结构之树(二叉树的遍历)
  6. 京东宣布全员涨薪两个月! 打工人流下了羡慕的泪水
  7. 【Es】es 无法启动 报错 Elasticsearch.init Bootstrap.setup OsProbe NullPointException
  8. 【Java】JSR 内存屏障
  9. C语言实实验步骤,C语言教程学习方法攻略
  10. java中Math.pow()实例_Java.math.BigDecimal.pow()方法实例
  11. js+springMVC 提交数组数据到后台
  12. c#正则表达式应用实例
  13. 传统车道线检测之黄白线、虚实车道线检测(附python代码)
  14. Shannon-Fano编码——原理与实现
  15. golang学习之五:error、painc、recover
  16. 计算机领域国际顶级会议
  17. 单片机学习知识点全攻略
  18. Python字符串底层原理
  19. 从零开始的MYSQL数据库命令行使用指南
  20. 为什么法线贴图偏蓝色?

热门文章

  1. SQL2005的SSMS连接SQL2012会有问题
  2. redhat 5.4 搭建本地YUM源
  3. Luogu1832 A+B Problem(再升级)
  4. [2018.10.11 T3] 欠钱
  5. BZOJ2005 [NOI2010]能量采集
  6. [数据结构] 非旋Treap
  7. axios请求拦截器获取报错信息
  8. 计算机辅助几何设计等值曲线,中国科学技术大学硕士专业:计算机辅助几何设计...
  9. wdcp v2.5.15 php版本,linux服务器/虚拟主机管理系统wdcp v2.5.6版本发布
  10. imu传感器工作原理_各种传感器工作原理汇总