# 文本模式下指令的下达

文本模式登陆后取得的程序被称为壳(shell),linx 的壳程序就是厉害的 bash 这一支!关于 bash 后续会介绍

# 开始下达指令

下面是几个重要概念

$ command [-options] parameter1 parameter2
  指令      选项        参数1       参数2
1
2
  • command:指令(command)或 可执行文件(如批次脚本 script)

  • command:是指令名称,例如变换工作目录的指令是 cd 等

  • 中括号是可选配置参数

    • - 一个短横线,如 -h,这是选项的简写
    • -- 两个短横线,是选项的完整名称,如 --help
  • 指令、选项、参数等中间以空格来区分,不论空几格 shell 都视为一格,所以空格是很重要的特殊字符

  • 按下 enter 按键后,就代表一行指令的开始启动

  • 指令太长的时候,可以使用反斜杠 \ 来跳脱 enter 按键,使指令连续到下一行

  • 严格区分英文大小写

其他的介绍,后续 bash 时会详细讲解

ls -al ~
ls     -al  ~
ls -a   -l ~
1
2
3

以上三条命令都是一样的结果,看明白规则了没

# 语系的支持

很多时候,可能会发现,输入指令之后,显示的结果是乱码,是因为 linux 可以支持多国语系, 终端机在默认情况下,无法支持以中文编码输出数据的,可以更改为英文。

可以这样做:

# 查看目前支持的语系
[mrcode@study ~]$ locale
# 如果是中文的话,则是 LANG=zh_CN.UTF-8
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

# LANG 的语系为 en_US.UTF-8,这已经是英文环境下的编码了
# 但是可以通过以下的方式临时来修改语系

# LANG 只与输出信息有关
[mrcode@study ~]$ LANG=en_US.utf8
# lc_all 则表示所有的都使用该语系
[mrcode@study ~]$ export LC_ALL=en_US.utf8

# 记得,上面的操作方式是临时的,注销 linux 后,就不生效了,后续会讲解这个

# 可以修改 `/etc.local.conf` 来达到持久化改变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 基础指令的操作

  • date:显示日期与时间
  • cal:显示日历
  • bc:简单好用的计算器

# date

[mrcode@study ~]$ date
Fri Oct  4 23:41:16 CST 2019
# 格式化输出
[mrcode@study ~]$ date +%Y/%m/%d
2019/10/04
[mrcode@study ~]$ date +%H:%M
23:41
1
2
3
4
5
6
7

前面说到指令后面带选项一般是带 - 号,但是某些特殊情况下是带 + 号, 对于这里的格式化参数占位符,不用死记硬背,后面会告诉你

# cal(calendar) 显示日历

# 显示当前月
[mrcode@study ~]$ cal
    October 2019    
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26

# 显示整年,这里只贴出部分
[mrcode@study ~]$ cal 2019
                               2019                               

       January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                   1  2                   1  2
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    3  4  5  6  7  8  9
13 14 15 16 17 18 19   10 11 12 13 14 15 16   10 11 12 13 14 15 16
20 21 22 23 24 25 26   17 18 19 20 21 22 23   17 18 19 20 21 22 23
27 28 29 30 31         24 25 26 27 28         24 25 26 27 28 29 30
                                              31
        April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6             1  2  3  4                      1
 7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

语法为

cal [month] [year]
1

如 2015 年 10 月

[mrcode@study ~]$ cal 10 2015
    October 2015    
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

1
2
3
4
5
6
7
8
9

# bc 计算器

# 进入 bc,会显示当前版本等信息
[mrcode@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

# 下面就可以输入你要计算的公式,按回车显示结果

1+2+3+4
10
7-8+3
2
10*52
520
10^2
100
10/100
0
10*2-1
19

# 离开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

上面计算发现了一个问题, 10 / 100 = 0,应该有小数才对,设置小数的语法如下

# 在 bc 环境中,使用 scale = 数值
# 后面数值表示你需要几位小数
scale=3
10/100
.100

1
2
3
4
5
6

# 重要的几个热键 tab、ctrl+c、ctrl+d

在 shell 中有很多的功能组合键,下面是一些重要的几个

# tab

tab 算术 Linux 的 Bash shell 最棒的功能之一了,具有 命令补全文件补齐 的功能, 但是在不同的地方输入有不一样的结果

[mrcode@study ~]$ ca   # 连续按两下 tab tab
# 出来了所有以 ca 开头的指令都出来了
cacertdir_rehash     cache_writeback      canberra-boot        case
cache_check          cairo-sphinx         canberra-gtk-play    cat
cache_dump           cal                  cancel               catchsegv
cache_metadata_size  ca-legacy            cancel.cups          catman
cache_repair         calibrate_ppa        capsh                
cache_restore        caller               captoinfo      

# 文件补齐      
[mrcode@study ~]$ ls -al ~/.bash
.bash_history  .bash_logout   .bash_profile  .bashrc

# 指令参数补齐       
[mrcode@study ~]$ date --
--date        --help        --reference=  --rfc-3339=   --universal   
--date=       --iso-8601    --rfc-2822    --set=        --version  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  • 命令补全:
  • 文件补齐:
  • 选项/参数补齐:若安装了 bash-completion 在某些指令后面使用,可参数补全

命令和文件笔者没有分清楚到底在什么情况下是什么,书上说了, 由于 CentOS 7 多了 bash-completion,就是有点分不清

# ctrl + c

中断指令的,比如输错了指令,或则这个领了 find /,会刷屏好一会,这个时候就可以终端它

# ctrl + d

通常代表键盘输入结束(end of file 或 end of Input)。

另外也可以用来取代 exit 的输入,例如在文字界面使用 ctrl + d 就能够直接离开了(相当于 exit)

# shift + Page UP/Page Down

翻页功能,在文本界面执行某些指令时,输出的信息很长,导致前面的部分已不再当前屏幕中了, 就可以使用该按键来前后翻页

# 错误信息查看

[mrcode@study ~]$ DATE    # 故意输错了指令
bash: DATE: command not found...  # 显示错误信息,后续会详细讲解
Similar command is: 'date' # 给了你一个可能的解决方案
1
2
3