Linux【1】-命令帮助-4-1-linux命令说明

  • Linux是大小写敏感的系统,所有的命令、路径、参数、变量……都区分大小写
  • 您可以使用TAB键补全您的命令,无论任何时候,多按几次TAB总会有所帮助
  • Shell的功能键能够协助您更高效的编辑命令,请熟悉其键绑定,尽量使用它

一、命令的基本格式

在所有的问题之中,最先要解决就是:如何才能够让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)和提示符号,例如

[stu@localhost~]$
  • 其中,‘Stu’为登录用户名,‘localhost’为登录主机名,’~’ 表示当前用户正处在stu用户的家目录中,’$’则表示当前登录用户为普通用户
  • 根据 Bourne Shell 的传统,普通用户的提示符以’$‘结尾,而根用户以’#’结尾
  • ’~’ 符号不是一个固定的目录名称,而是一个”Shell 变量”,代表使用者的”家目录”,举例来说,如果我以dev01用户身份登录系统,dev01的家目录是’/home/dev01’,那么’~’就代表’/home/dev01’,如果我以root身份登录系统,而root的家目录是’/root’,那么’~’就代表’/root’。至于到底”家目录”和”Shell 变量”到底是什么,我们在后继的教程中会详细讨论。

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

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

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

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

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

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

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

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

二、命令提示符

登录系统后,第一眼看到的内容是:

[root@localhost ~]#

这就是 Linux 系统的命令提示符。那么,这个提示符的含义是什么呢?

[]:这是提示符的分隔符号,没有特殊含义。
root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。
@:分隔符号,没有特殊含义。
localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
#:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。

家目录(又称主目录)是什么? Linux 系统是纯字符界面,用户登录后,要有一个初始登录的位置,这个初始登录位置就称为用户的家: 超级用户的家目录:/root。 普通用户的家目录:/home/用户名。

用户在自己的家目录中拥有完整权限,所以我们也建议操作实验可以放在家目录中进行。我们切换一下用户所在目录,看看有什么效果。

  • [root@localhost ~]# cd /usr/local
  • [root@localhost local]#

仔细看,如果切换用户所在目录,那么命令提示符中的会变成用户当前所在目录的最后一个目录(不显示完整的所在目录 /usr/ local,只显示最后一个目录 local)。

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn