Linux之命令系统(三)

命令系统


shell、terminal和console

上一章节中我们已经学习过什么是shell,shell是一种命令解析器,它给用户提供了一个输入命令并接受机器返回结果的界面。

那么什么是terminalconsole呢?

**console:**The operator’s station of a mainframe.

terminal: An electronic or electromechanical device for entering data into a computer or a communications system and displaying data received. Early terminals were called teletypes, later ones VDUs.

上图所示的就是console(控制台),一般console只能有一个(显示器或电脑用串口线连接)。

上图是terminal的示意图,它是一个封装程序,一个terminal运行一个shell来扩充为一个具备shell功能的的程序。

console 和 terminal的概念都源自大型机,console可以看作为一个特殊的terminal。现在用的一般都是引申义,一般情况下可以混用。

Linux帮助系统

在学习使用Linux的时候,我们会遇到很多以前没有用过的命令和功能,这个时候最好的解决办法就是求助于man.

man的使用方法很简单,例如查看ls的帮助手册,可以直接使用命令man ls即可查看ls的命令帮助。

LS(1)                                       User Commands                                LS(1)



NAME  #命令全名,简单的说明及用法
       ls - list directory contents

SYNOPSIS #基本语法
       ls [OPTION]... [FILE]...

DESCRIPTION #详细说明语法中参数的用法
       List information about the FILEs (the current directory by default).  Sort entries alphabeti‐
       cally if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file
 #中间省略
       -1     list one file per line

       --help display this help and exit

       --version
              output version information and exit

       SIZE  may be (or may be an integer optionally followed by) one of following: KB 1000, K 1024,
       MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

       Using color to distinguish file types is disabled both by  default  and  with  --color=never.
       With --color=auto, ls emits color codes only when standard output is connected to a terminal.
       The LS_COLORS environment variable can change the settings.  Use the dircolors command to set
       it.

   Exit status: #错误返回值
       0      if OK,

       1      if minor problems (e.g., cannot access subdirectory),

       2      if serious trouble (e.g., cannot access command-line argument).

AUTHOR  #作者
       Written by Richard M. Stallman and David MacKenzie.

REPORTING BUGS #bug提交联系方式
       Report ls bugs to bug-coreutils@gnu.org
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report ls translation bugs to <http://translationproject.org/team/>

COPYRIGHT  #版权保护
       Copyright  ©  2011 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or later
       <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and redistribute it.  There is NO WARRANTY,  to
       the extent permitted by law.

SEE ALSO ##在哪里可以看到更多关于该命令的文档
       The full documentation for ls is maintained as a Texinfo manual.  If the info and ls programs
       are properly installed at your site, the command

              info coreutils 'ls invocation'

       should give you access to the complete manual.



GNU coreutils 8.12.197-032bb               September 2011                                      LS(1)

眼尖的同学应该注意到了手册中开头和结尾的地方写的LS(1)了,那么这是什么意思呢?它代表的是一般用户可使用的命令。

在man中,常见的几个数字的含义如下表所示:

代号代表的含义举例
1用户在shell环境下可以操作的命令或可执行文件man 1 ls
2系统内核可调用的函数和工具man 2 reboot
3一些常用的函数与函数库,大部分C的函数库man 3 readdir
4设备文件的说明,通常是在/dev下的设备man 4 null
5配置文件或某些文件的格式man 5 interfaces
6游戏man 6 lol 😂
7惯例与协议等,例如Linux文件系统,网络协议等man 7 tcp
8系统管理员可用的命令man 8 reboot
9跟kernel有关的文件
o旧文档
n新文档
l本地文档

在man手册中,我们可以用到的快捷键如下:

快捷键功能快捷键功能
Ctrl+f(orward)向下翻一页Ctrl+d(own)向下翻半页
Ctrl+b(ackward)向上翻一页Ctrl+u§向上翻半页
/查找q(uit)退出

随堂练习:

man -f            #whatis
man -k            #apropos

在Linux中还有一种在线求助的方式info,有兴趣的可以了解一下。

zsh

通配符

  • 代表单个任意字符

    代表任意几个任意字符

请看下面的例子,并自己动手尝试一下通配符的使用

suyelu@HaiZei-Tech:~$ ls
a.log  code  HaiZei  helloworld  你好world
suyelu@HaiZei-Tech:~$ ls *ld
helloworld  你好world
suyelu@HaiZei-Tech:~$ ls ??world
你好world
suyelu@HaiZei-Tech:~$ ls ?????world
helloworld
suyelu@HaiZei-Tech:~$

除了***?**这两个通配符之外,Linux中还有下面几种通配符

通配符含义举例
[list]匹配list中的任意单一字符a[xyz]b a与b之间有且只有一个字符, 且只能是x或y或z, 如: axb, ayb, azb。
[!list]匹配除list中的任意单一字符a[!0-9]b a与b之间有且只有一个字符, 但不能是数字, 如axb, aab, a-b等
[c1-c2]匹配c1-c2中的任意单一字符a[0-9]b a与b之间有且只有一个字符,该字符是0-9之间的数字,如a0b, a1b,… ,a9b。
{string1,string2,…}匹配 sring1 或 string2 (或更多)其一字符串a{abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之一。

任务管理

  1. &

    在命令的后面加上**&**表示后台执行的意思

    command &
    
  2. ;

    在命令之间以**;**相连,表示顺序执行的意思

    command1;command2
    
  3. &&

    命令之间以**&&**相连时,只有第一个命令成功执行,第二个命令才会执行

    command1 && command2
    
  4. ||

    命令之间以**||**相连时,如果前一个命令执行失败,则执行第二个命令

    command1 || command2
    
  5. ``

    命令中如果包含另一个命令,则用符号**** 将它包括起来,在执行的时候系统将优先执行****中的子命令,然后将其结果代入父命令继续执行

    command1 `command2`
    
  6. ctrl + z

    在shell中执行命令时,同时按下**ctrl + z**可以将暂时挂起

suyelu@HaiZei-Tech:~$ vim helloworld.c

[1]+  Stopped                 vim helloworld.c
suyelu@HaiZei-Tech:~$

什么是挂起?

  1. bg

    执行**bg**命令,可以将挂起的命令后台运行

suyelu@HaiZei-Tech:~$ vim helloworld.c


[1]+  Stopped                 vim helloworld.c
suyelu@HaiZei-Tech:~$ bg
[1]+ vim helloworld.c &
suyelu@HaiZei-Tech:~$
  1. fg

    执行命令**fg**可以将后台执行的命令转为前台执行

  2. jobs

    在Linux系统中,执行**jobs**命令可以查看所有在后台执行和挂起的任务以及任务编号

suyelu@HaiZei-Tech:~/code$ jobs
[1]-  Stopped                 vim a.c  (wd: ~)
[2]+  Stopped                 vim b.c  (wd: ~)
[3]   Running                 ./a.out &

尝试执行fgbg加上任务编号,看看是什么效果

管道、重定向

  1. >

    重定向符

  2. >>

    作用于**>基本相同,不同的是>>将内容追加到文件的末尾,而>**内容覆盖原文件

  3. <

    与**>**刚好相反,是从文件到命令的重定向。它将文件的内容输出到命令作为输入

  4. <<

    ?

cat >> /etc/sysconfig/network << EOF
HOSTNAME=$HOST_NAME
EOF 

转义符

在Linux中转义符**\的应用十分广泛,除此之外,转义符还包括“”‘’**。

字符说明
‘’硬转义,硬引用,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
“”软转义,软引用,其内部只允许出现特定的shell元字符(KaTeX parse error: Can't use function '\`' in math mode at position 2: ,\̲`̲,\\):用于变量值替换、`用于命令替换、\用于转义单个字符
\反斜杠,转义,去除其后紧跟的元字符或通配符的特殊意义。

下表是部分转义字符对应表:

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符’’’092
代表一个单引号(撇号)字符039
"代表一个双引号字符034
?代表一个问号063
\0空字符(NULL)000
\nnn1到3位八进制数所代表的任意字符三位八进制
\xnnn1到3位十六进制所代表的任意字符三位十六进制
转义符在Shell中的应用
suyelu@HaiZei-Tech:~$ echo -e "\044"
$
suyelu@HaiZei-Tech:~$ echo  "\044"
\044
suyelu@HaiZei-Tech:~$ echo  $'\044'
$
suyelu@HaiZei-Tech:~$ echo  $'\44'
$

附录1 Shell元字符

字符说明
=变量名=值,为变量赋值。注意=左右紧跟变量名和值,中间不要有空格
``取命令的执行结果,与下文的$有相似之处
$变量值替换, 变 量 名 替 换 为 s h e l l 变 量 的 值 ; 为 避 免 在 文 本 连 接 时 混 淆 , 请 使 用 变量名替换为shell变量的值;为避免在文本连接时混淆,请使用 shell;使{变量名};$0… 9 代 表 s h e l l 文 件 的 参 数 。 ∗ ∗ 9 代表shell文件的参数。** 9shell()同``; ∗ ∗ 限 定 变 量 名 的 范 围 ; ∗ ∗ {}**限定变量名的范围;** []**整数计算;
>prog > file 将标准输出重定向到文件。
>>prog >> file 将标准输出追加到文件。
<prog < file 从文件file中获取标准输入
<<
|管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输入
&后台运行命令,最大好处是无需等待命令执行结束,就可以在同一命令行下继续输入命令
()在子shell中执行命令,在子进程中执行
{}在当前shell中执行命令,或用在变量替换的界定范围(例如上面的${变量名}用法)。
[]字符通配,匹配括号内之一
;命令结束符。例如p1;p2表示先执行p1,再执行p2
&&前一个命令执行成功后,才继续执行下一个命令。例:p1 && p2 ;若p1执行成功后,才执行p2,反之,不执行p2;
||前一个命令执行失败后,才继续执行下一个命令。例:p1 || p2 ;若p1执行成功后,不执行p2,反之,才执行p2;
!执行历史记录中的命令**!731**;匹配最近的一次命令**!echo**;取非ls /dev/sda[!1];结果取反**! echo ok ;echo $?**
%% 1相当于fg 1
^取非,和**!雷同;^string1^string2^**将上一命令的string1替换为string2
~home目录
#注释
*通配符,任意字符
?通配符,任一字符
.当前目录;source
-减号;上次工作目录
:真值;空命令
\转义
/目录分割符

附录2 ASCII码 对照表

Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释
0000 00000000NUL(null)空字符
0000 00011101SOH(start of headline)标题开始
0000 00102202STX (start of text)正文开始
0000 00113303ETX (end of text)正文结束
0000 01004404EOT (end of transmission)传输结束
0000 01015505ENQ (enquiry)请求
0000 01106606ACK (acknowledge)收到通知
0000 01117707BEL (bell)响铃
0000 100010808BS (backspace)退格
0000 100111909HT (horizontal tab)水平制表符
0000 101012100ALF (NL line feed, new line)换行键
0000 101113110BVT (vertical tab)垂直制表符
0000 110014120CFF (NP form feed, new page)换页键
0000 110115130DCR (carriage return)回车键
0000 111016140ESO (shift out)不用切换
0000 111117150FSI (shift in)启用切换
0001 0000201610DLE (data link escape)数据链路转义
0001 0001211711DC1 (device control 1)设备控制1
0001 0010221812DC2 (device control 2)设备控制2
0001 0011231913DC3 (device control 3)设备控制3
0001 0100242014DC4 (device control 4)设备控制4
0001 0101252115NAK (negative acknowledge)拒绝接收
0001 0110262216SYN (synchronous idle)同步空闲
0001 0111272317ETB (end of trans. block)结束传输块
0001 1000302418CAN (cancel)取消
0001 1001312519EM (end of medium)媒介结束
0001 101032261ASUB (substitute)代替
0001 101133271BESC (escape)换码(溢出)
0001 110034281CFS (file separator)文件分隔符
0001 110135291DGS (group separator)分组符
0001 111036301ERS (record separator)记录分隔符
0001 111137311FUS (unit separator)单元分隔符
0010 0000403220(space)空格
0010 0001413321!叹号
0010 0010423422"双引号
0010 0011433523#井号
0010 0100443624$美元符
0010 0101453725%百分号
0010 0110463826&和号
0010 0111473927闭单引号
0010 1000504028(开括号
0010 1001514129)闭括号
0010 101052422A*星号
0010 101153432B+加号
0010 110054442C,逗号
0010 110155452D-减号/破折号
0010 111056462E.句号
0010111157472F/斜杠
001100006048300数字0
001100016149311数字1
001100106250322数字2
001100116351333数字3
001101006452344数字4
001101016553355数字5
001101106654366数字6
001101116755377数字7
001110007056388数字8
001110017157399数字9
0011101072583A:冒号
0011101173593B;分号
0011110074603C<小于
0011110175613D=等号
0011111076623E>大于
0011111177633F?问号
010000001006440@电子邮件符号
010000011016541A大写字母A
010000101026642B大写字母B
010000111036743C大写字母C
010001001046844D大写字母D
010001011056945E大写字母E
010001101067046F大写字母F
010001111077147G大写字母G
010010001107248H大写字母H
010010011117349I大写字母I
01001010112744AJ大写字母J
01001011113754BK大写字母K
01001100114764CL大写字母L
01001101115774DM大写字母M
01001110116784EN大写字母N
01001111117794FO大写字母O
010100001208050P大写字母P
010100011218151Q大写字母Q
010100101228252R大写字母R
010100111238353S大写字母S
010101001248454T大写字母T
010101011258555U大写字母U
010101101268656V大写字母V
010101111278757W大写字母W
010110001308858X大写字母X
010110011318959Y大写字母Y
01011010132905AZ大写字母Z
01011011133915B[开方括号
01011100134925C\反斜杠
01011101135935D]闭方括号
01011110136945E^脱字符
01011111137955F_下划线
011000001409660`开单引号
011000011419761a小写字母a
011000101429862b小写字母b
011000111439963c小写字母c
0110010014410064d小写字母d
0110010114510165e小写字母e
0110011014610266f小写字母f
0110011114710367g小写字母g
0110100015010468h小写字母h
0110100115110569i小写字母i
011010101521066Aj小写字母j
011010111531076Bk小写字母k
011011001541086Cl小写字母l
011011011551096Dm小写字母m
011011101561106En小写字母n
011011111571116Fo小写字母o
0111000016011270p小写字母p
0111000116111371q小写字母q
0111001016211472r小写字母r
0111001116311573s小写字母s
0111010016411674t小写字母t
0111010116511775u小写字母u
0111011016611876v小写字母v
0111011116711977w小写字母w
0111100017012078x小写字母x
0111100117112179y小写字母y
011110101721227Az小写字母z
011110111731237B{开花括号
011111001741247C|垂线
011111011751257D}闭花括号
011111101761267E~波浪号
011111111771277FDEL (delete)删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值