Linux 命令行使用基础

终端类型

只使用文本的终端被称为字符终端(Character Terminal)或基于文本的终端(Text-Based Terminal),统称命令行界面(CLI,Command Line Interface)。其硬件设备标准代表是 DEC 公司 1978 年生产的 VT100。

图形终端(Graphics Terminal)不仅可以处理文本,还可以显示任何能使用小点在屏幕上进行绘制的内容,也就是可以通过图形用户界面(GUI,Graphical User Interface)和服务端交互。Unix 的 GUI 都基于 X Window System。在图形终端中,用户可以通过鼠标、键盘和触摸屏等设备进行交互操作,相比于命令行界面,图形终端更加直观和易用。

在现代计算机系统中,通常都同时支持命令行界面和图形界面。命令行界面通常用于系统维护、编程和高级用户操作等任务,而图形界面则主要用于日常应用程序的操作和交互。

可以通过查看 $TERM 变量来了解当前使用的终端配置文件:

[root@server3 ~]$ echo $TERM
vt100

常用组合快捷键

在终端中常用的快捷键如下:

快捷键 说明
【Tab】 命令补全/文件名补齐。
【Ctrl】+C 中断操作,停止程序运行。
【Ctrl】+D 键盘输入结束/退出终端/删除光标后字符。
【Ctrl】+Z 暂停当前进程并丢入后台。
【Ctrl】+S 暂停当前程序,暂停后按下任意键恢复运行。
【Ctrl】+A 将光标移动到命令行首。
【Ctrl】+E 将光标移动到命令行尾。
【Ctrl】+L 清屏。
【Ctrl】+【Shift】+N 新建终端窗口。

命令提示符

成功登录系统后,终端会显示如下命令提示符:

[root@101c7 ~]$

各字段的含义如下:

字段 说明
root 标识当前登录的用户身份
101c7 表示当前主机的名称
~ 表示当前所在的目录。其中,~表示当前用户的主目录,是一个变量。
# 如果当前用户为 root,命令提示符为 #;如果为普通用户,则为 $。

命令格式

一般命令格式如下,中括号 [] 表示非必须输入:

命令名称 [-选项] [参数1] [参数2]...

命令名称

一行命令第一个输入的部分绝对是命令(command)或可执行文件。

当命令太长时,可以使用反斜杠 \ 来转义回车(必须立刻接特殊字符才能转义),使命令输入连续到下一行。

命令严格区分大小写,通常由小写字母构成。

选项

选项(options)前通常会加 - 号,例如 -h。

有时表示输入选项完整全名,则使用 – 符号,例如 --help

多个选项可以用一个 - 连接起来,例如 -abc,表示同时使用 a、b、c 三个选项。

参数

参数(parameter)用于向希望运行的程序传递信息,通常是一些文件名,告诉命令从哪里可以得到输入,以及把输出送到什么地方。

参数之间用空格隔开,多个空格会被视为一个空格。如果参数中含有空格,应该使用双引号或单引号将其括起来,例如:"file name"

执行命令

在命令行执行命令时,通常有以下两种情况:

  • 按下回车键后,命令立即运行并显示结果,等待下一条命令输入。
  • 进入到该命令的环境中,直到结束该命令才回到命令提示符的环境。

在命令正常执行完毕后,会返回一个值。如果命令执行成功,则返回值为 0。如果命令执行过程中出错没有完成全部工作,则返回一个非零值(可以通过变量$?查看)。

命令执行顺序

命令的执行顺序按照以下优先级排列:

  1. 以相对/绝对路径执行命令,例如 /bin/lsls
  2. 由别名(alias)找到该命令来执行。
  3. 由 bash 内置的(builtin)命令来执行。
  4. 通过$PATH 变量的顺序找到的第一个命令来执行。

执行多条命令

可以用分号将多条命令写在同一行,这些命令将会依次执行。

例如:查看 root.txt 文件属性;修改其权限为 6755;再次查看 root.txt 的属性:

[root@101c7 ~]$ ll root.txt ; chmod 6775 root.txt ; ll root.txt 
-rw-r--r--. 1 root root 7549 Sep 11 11:59 root.txt
-rwsrwsr-x. 1 root root 7549 Sep 11 11:59 root.txt

报错信息

以下是两条报错信息:

[user1@101c7 root]$ cat nohup.out ; catt
cat: nohup.out: Permission denied
bash: catt: command not found

上面的报错信息使用冒号 : 分隔成了三段,分别表示:命令、参数和报错原因。

命令别名

使用alias命令可以为命令或一组命令指定自定义名称。例如,将命令ll -a | more设置为lm

[root@101c7 ~]$ alias lm='ll -a | more'

要查询已定义的别名,可以使用-p参数:

[root@101c7 ~]$ alias -p
alias cp='cp -i'
alias egrep='egrep --color=auto'

如果要取消别名,使用unalias命令:

[root@101c7 ~]$ unalias lm

如果要临时挂起别名,例如想要使用原始的ls命令而不是带有--color=auto参数的别名ls,可以在命令前面加上反斜杠\字符:

[root@server3 ~]$ \ls -la
total 64

历史命令

使用快捷键 [Ctrl]+r 可以搜索历史命令记录。搜索结果继续按 [Ctrl]+r 显示上一个找到的命令:

(reverse-i-search)`history': history | grep dump

可以使用 history 命令查询输入过的历史命令列表。默认情况下,历史命令保存在 ~/.bash_history 中。只有在注销登录后,此次会话所执行的命令才会写入文件中。

可用参数:

参数 说明
-c 清除所有记录。
-d 删除指定编号的命令记录。
-a 插入当前历史记录到指定文件末尾,默认会将此次会话的历史记录写入到 .bash_history 文件中。
-w 写入当前的历史记录到指定文件中。

例如,要显示最近的 5 条历史记录:

[root@101c7 ~]$ history 5
  888  date
  889  time
  890  w -i
  891  cat .bash_history 
  892  history | tail -n5

可以通过!记录编号直接执行对应的命令。例如,要重新运行第 890 条记录,可以输入:

[root@101c7 ~]$ !890
w -i
23:41:23 up 1 day,  8:32,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.2.101    04:01    3.00s  0.84s  0.00s w -i
root     pts/1    192.168.2.101    15:12    8:28m  0.01s  0.01s -bash

如果使用!!,则会执行上一个命令。

清屏

直接输入 clear 命令能清屏:

[root@101c7 ~]$ clear