Linux的shell基础知识及课后习题解答----⼯坊学习记录--4.1
⽂章⽬录
⼀、shell 基础知识
1. 什么是shell
shell是系统跟计算机硬件交互时使⽤的中间介质,它只是系统的⼀个⼯具。实际上,在shell和计算机硬件之间还有⼀层东西——系统内核。如果把计算机硬件⽐作⼀个⼈的躯体,那系统内核就是⼈的⼤脑。⾄于shell,把它⽐作⼈的五官似乎更贴切些。⾔归正传,⽤户直接⾯对的不是计算机硬件⽽是shell,⽤户把指令告诉shell,然后shell再传输给系统内核,接着内核再去⽀配计算机硬件去执⾏各种操作。
1.1 记录命令历史
!是与命令历史有关的⼀个特殊字符,该字符常⽤的应⽤有以下3个。
!!:连续两个!表⽰执⾏上⼀条指令。⽰例命令如下:
!n:这⾥的n是数字,表⽰执⾏命令历史中的第n条指令。例如,!1002表⽰执⾏命令历史中的第1002个命令,如下所⽰:
!字符串(字符串⼤于等于1):例如!pw表⽰执⾏命令历史中最近⼀次以pw开头的命令。⽰例代码如下:
1.2 命令和⽂件名补全
按tab键可以帮我们补全⼀个指令、⼀个路径或者⼀个⽂件名。连续按两次tab键,系统则会把所有的命令或者⽂件名都列出来。
1.3 别名
前⾯的章节中也曾提到过alias,它也是bash所特有的功能之⼀。我们可以通过alias把⼀个常⽤的并且很长的指令另取名为⼀个简单易记的指令。如果不想⽤了,还可以使⽤unalias命令解除别名功能。
直接执⾏alias命令,会看到⽬前系统预设的别名,如下所⽰:
你也可以⾃定义命令的别名,其格式为 alias [命令别名]=[‘具体的命令’],⽰例命令如下:
1.4 通配符
在bash下,可以使⽤*来匹配零个或多个字符,⽤?匹配⼀个字符。⽰例命令如下:
1.5 输⼊/输出重定向
输⼊重定向⽤于改变命令的输⼊,输出重定向⽤于改变命令的输出。输出重定向更为常⽤,它经常⽤于将命令的结果输⼊到⽂件中,⽽不是屏幕上。输⼊重定向的命令是<,输出重定向的命令是>。
另外,还有错误重定向命令 2> 以及追加重定向命令>>,⽰例命令如下:
1.6 管道符
管道符 | ,它⽤于将前⼀个指令的输出作为后⼀个指令的输⼊,如下所⽰:
1.7 作业控制
当运⾏进程时,你可以使它暂停(按Ctrl+Z组合键),然后使⽤fg(foreground的简写)命令恢复它,或是利⽤bg(background的简写)命令使它到后台运⾏。此外,你也可以使它终⽌(按Ctrl+C组合键)。⽰例命令如下:
使⽤vi命令编辑,随便输⼊⼀些内容,按Esc键后,使⽤Ctrl+Z组合键暂停任务,如下所⽰:
此时提⽰已经停⽌了,然后使⽤fg命令恢复它,此时⼜进⼊刚才的vi窗⼝了。再次使其暂停,然后输⼊jobs,可以看到被暂停或者在后台运⾏的任务,如下所⽰:
如果想把暂停的任务放在后台重新运⾏,就使⽤bg命令,如下所⽰:
2. 变量linux重定向
变量PATH,它是shell预设的⼀个变量。通常,shel预设的变量都是⼤写的。变量就是使⽤⼀个较简单的字符串来替代某些具有特殊意义的设定以及数据。就拿PATH来讲,这个PATH就代替了所有常⽤命令的绝对路径的设定。有了PATH这个变量,我们运⾏某个命令时,就不再需要输⼊全局路径,直接输⼊命令名即可。
你可以使⽤echo命令显⽰变量的值,如下所⽰:
除此之外还有:ENV、HISTSIZE、HOSTNAME、HOSTTYPE、MAIL等等
2.1 命令 env
使⽤env命令,可列出系统预设的全部系统变量,如下所⽰:
登录不同的⽤户,这些环境变量的值也不同。当前显⽰的是root账户的环境变量。下⾯简单介绍⼀下常见的环境变量。
HOSTNAME:表⽰主机的名称。
SHELL:表⽰当前⽤户的shell类型。
HISTSIZE:表⽰历史记录数。
MAIL:表⽰当前⽤户的邮件存放⽬录。
PATH:该变量决定了shell将到哪些⽬录中寻命令或程序。
PWD:表⽰当前⽬录。
LANG:这是与语⾔相关的环境变量,多语⾔环境可以修改此环境变量。
HOME:表⽰当前⽤户的家⽬录。
LOGNAME:表⽰当前⽤户的登录名。
2.2 命令set
set命令和env命令类似,也可以输出环境变量,如下所⽰:
set 命令不仅可以显⽰系统预设的变量,也可以显⽰⽤户⾃定义的变量,例如:
虽然可以⾃定义变量,但该变量只能在当前shell中⽣效,如下所⽰:
使⽤bash命令可以再打开⼀个shell,此时先前设置的myname变量已经不存在了,退出当前shell回到原来的shell,myname变量还在。如果想让设置的环境变量⼀直⽣效,该怎么做呢?这分以下两种情况:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。