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。如果命令执行过程中出错没有完成全部工作,则返回一个非零值(可以通过变量$?查看)。
命令执行顺序
命令的执行顺序按照以下优先级排列:
- 以相对/绝对路径执行命令,例如
/bin/ls
或ls
。 - 由别名(alias)找到该命令来执行。
- 由 bash 内置的(builtin)命令来执行。
- 通过$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