首页 > 代码库 > shell简介
shell简介
1、shell的工作原理
其实当一个用户以命令行方式登录Linux系统之后,即就进入了shell应用程序。例如:以dog用户使用telnet登录Linux系统之后,就会进入shell的控制。从此时起shell就随时恭候,等待你的差遣(即等你输入命令)并为你保质保量的提供服务(执行输入的命令)。如果你是以图形界面登录,当开启一个终端窗口后也将进入shell应用程序的控制。跟开启的dos窗口有些类似。
shell的功能是将用户输入的命令翻译成Linux内核能够理解的语言,这样Linux内核才能真正地操作计算机的硬件。简而言之,shell就是人与计算机沟通的桥梁。
可以将shell看成用户与Kernel之间的一个接口。shell主要是一个命令解释器,它接受并解释用户输入的命令,然后将它们传给Kernel。最后由Kernel来执行这些命令。
2、使用type识别bash的内置命令
Linux操作系统的命令分为两大类,一类是内部命令即内置在bash中的命令;另一类是外部命令(即该命令不是内置在bash中的)外部命令是以可执行文件的方式存储在Linux的文件系统中的。有时可能需要知道一个命令是内部还是外部命令,如所使用的Linux系统的PATH变量设置的问题,在执行外部命令时可能就需要给出完整的路径。
那么怎样区分哪些命令是外部命令,哪些命令是内部命令呢?即可以使用type命令。
[dog@dog ~]$ man type使用以上语句命令可以可以查看命令的类型。
type命令的语法格式如下:
type [选项] 命令名
-t:显示文件的类型,其文件类型如下:
file:为外部命令
alias:为别名
builtin:为bash的内置命令
-a:列出所有包含指定命令名的命令,也包括别名(alias)
-P:显示完整的文件名(外部命令),或者内部命令
以下是用type命令来显示pwd命令的类型。
[dog@dog ~]$ type pwd pwd is a shell builtin加上选项-a之后如:
[dog@dog ~]$ type -a pwd pwd is a shell builtin pwd is /bin/pwd加上选项-t之后如:
[dog@dog ~]$ type -t pwd builtin加上选项-P之后如:
[dog@dog ~]$ type -P pwd /bin/pwd3、使用通配符操作文件
Linux操作系统提供了如下的通配符:
*:将匹配0个(即空白)或多个字符
?:将匹配任何一个字符而且只能是一个字符
[a-z]:将匹配字符a~z范围内的所有字符
[^a-z]:将匹配所有字符但是a~z范围内的字符除外
[xyz]:将匹配方括号中的任意一个字符
[^xyz]:将匹配不包括方括号中的字符的所有字符
例如我们创建多个文件后,可以使用ls与以上的通配符结合进行查找文件。
4、利用Tab键补齐命令行
5、命令行中~符号的使用
(1)如果~符号后面没有用户名,则该符号代表当前用户的家目录;
(2)如果~符号后面跟一个用户名,则该符号代表这个用户的家目录。
6、history命令与操作曾经使用过的命令
输入history命令,可以显示之前使用过的命令,并且最左边显示命令编号,因而可以使用命令号重新执行所对应的命令。即输入“!“(惊叹号)符号,后面紧跟编号即可。
bash中提供的一些快捷键的使用如下:
(1)利用键盘的上、下箭头键可以在以前使用过的命令之间移动
(2)按Ctrl+R键在命令的历史记录中搜寻一个命令。当按Ctrl+R键之后,会出现如下的提示信息,此时即可输入要搜寻的内容。
(reverse-i-search)`‘:
(3)可以使用如下的组合键提取上一个命令最后面的参数,即
顺序地按Esc+.键
同时按Alt+.键
7、bash变量简介及大括号{}的用法
shell变量就是内存中一个命了名的临时存储区。变量中所存储的信息有以下两种:
(1)按用户的习惯定制shell所需的信息
(2)使一些进程正常工作所需的信息
在Linux系统中有一个名为PATH的预定义变量,在这个变量中存放着执行一个命令时要搜寻的路径,即如果一个命令存储在PATH所列出的任何一个路径中,用户就可以输入命令名来运行这个命令,其中每一个路径用:隔开。
[dog@dog ~]$ echo $PATH以上的命令就可以列出PATH变量的值
使用大括号{}可以一次建立多个文件,例如:
[dog@dog mumdog]$ touch {dog,wolf}即建立了两个文件dog和wolf
还可以创建多个文件的类型,例如:
[dog@dog mumdog]$ touch baby.{dog,wolf}即创建了baby.dog文件和baby.wolf文件
8、讲一个命令的输出作为另一个命令的参数
[dog@dog ~]$ echo "This computer system's name is 'hostname'" This is computer system's name is dog.super.com9、使用Linux命令进行数学运算
[dog@dog ~]$ n1=99;n2=53 [dog@dog ~]$ echo $[$n1+$n2] [dog@dog ~]$ echo $[$n1-$n2] [dog@dog ~]$ echo $[$n1*$n2] [dog@dog ~]$ echo $[$n1/$n2] [dog@dog ~]$ echo $[$n1%$n2]10、命令中反斜线(\)的用法
在Linux命令中有些字符已经赋予了特殊的含义,如$符号表示提取一个变量的值,如果要恢复一个特殊字符的原来含义,要在这个特殊字符之前冠以反斜线(\),即\之后的特殊字符逃脱其特殊含义而恢复原来的字面意思。
例如:
[dog@dog ~]$ echo "A baby dog's price is $6839.00" A baby dog's price is 839.00因为在Linux中系统将$6看成了一个shell变量。改为如下:
[dog@dog ~]$ echo "A baby dog's price is \$6839.00" A baby dog's price is $6839.00即可正确显示。
在命令行中,反斜线(\)还有另外一种用法。如果将反斜线(\)放在命令行的最后,就表示它是一个续行符号,即命令要在下一行继续。
反斜线(\)最后一种用法是,即放在通配符前恢复其原来的含义。
11、Linux命令中引号的用法
(1)单引号(‘):禁止所有的命令行扩展功能
(2)双引号(""):禁止所有的命令行扩展功能但以下特殊符号除外
- 美元符号($)
- 倒引号(`)
- 反斜线(\)
- 惊叹号(!)