Linux入门(三)

一、什么是shell?

  读者应该都知道计算机只认识由0和1组成的机器码,但是这些机器码对于我们一般来来说实在是太难记忆了。为了方便人与计算机进行交流,就是使用命令解释器。在Linux操作系统中,这个解释器就叫shell。

 其实当一个用户以命令行方式登录Linux操作系统之后即进入了shell应用程序,shell的功能就是将用户输入的命令翻译成Linux内核(Kernel)能够理解的语言,这样Linux的内核才能真正地操作计算机的硬件。

 总结:shell就是人与计算机沟通的桥梁,可以将shell看成用户与内核之间的一个接口,它通过接收并解释用户输入的命令,然后将它们传给内核,最后由内核执行这些命令。

二、bash

在Linux操作系统中存在许多种shell,一开始出现有bsh ---> csh ----> ksh ----> zsh --->  tcsh。

最后出现了Bourn-Again,简称bash,实际上的标准Linux shell。bash 与 bsh 兼容,同时加入了csh、ksh和tcsh的一些有用功能。

cat /etc/shellls :可以查看Linux系统中的所有shell。默认的shell 就是bash。

三、 type+命令:识别bash的内置命令

    L;inux操纵系统的命令分为两大类:一类是内部命令即内置在bash中的命令,一类是外部命令。外部命令是以可执行的方式存储在Linux的文件系统中的。

四、Bash变量

类型

     几乎所有的编程语言都有变量的概念,Bash当然也不例外。说道变量就少不了说一说类型。但与其他语言不同的是Bash属于无类型语言,如果强要说一种类型,可以认为都是字符串。说到这里,你可能会说,Bash里面也有整数类型吧,好像有整数的运算。但其是通过一些运算符,表达式或者命令将字符串视作整数处理的,其本质还是字符串

新建变量

Bash中的变量和其他脚本语言一样,都是无需声明,直接拿来用的。所以变量的第一次出现都是伴随着初始化的。

取用变量

变量前加一个 $ 符号。

a="hello world"
echo $a

初始化/赋值

     Bash中的变量由于无需声明,所以第一次出现都会伴随初始化。Bash中的变初始化(或赋值)方式共有三种:直接赋值、读取输入和命令替换。

(1)直接赋值:直接赋值就是使用一个等于号了,这在其他编程语言里也很常见,比如:

a=123
b=abc
c=‘123’
d=“hello world”

     注意:需要注意的是等号左右不能有空格!!!有其他语言编程经验的程序员,可能经常通过增加空格来使代码变得美观。然而这在Bash中是不允许的。

(2)读取输入:读取终端的输入给变量赋值,就是使用read命令。read和echo一样都是内嵌命令。直接看代码:

echo -n "Please Input your name:"
read name
echo "Hi,$name,welcome to uncle Jelly's cabin!"

或者可以使用read命令的 -p 选项来简化上述代码:

read -p "Please Input your name:" name
echo "$name,welcome to uncle jelly's cabin!"

(3)命令替换:这是非常实用的一种初始化或赋值的方式。利用其他命令的输出来给一个变量赋值。这需要用到反引用符号` `

         注意:这是数字键1左边的符号,可不是单引号。

dir=`pwd`
tim=`date`
echo "我在$dir目录下"
echo "现在时间是$time"

除此之外,还有另外一种命令替换的格式——$( )
比如上面的内容可写作
dir=$(dir)
tim=$(date)

两种替换方式的区别在于:
     1、` `内部需要进行转义才能嵌套使用命令替换如a=`cmd1 `cmd2``,是错误的,需要a=`cmd1 \`cmd2\``。而$()可以直接a=$(cmd1 $(cmd2))。
     2、此外一些其他特殊字符,在` `内部也需要转义。

五、Shell echo命令

Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。

1.显示普通字符串:

echo "It is a test"

这里的双引号完全可以省略,以下命令与上面实例效果一致:

echo It is a test

2.显示转义字符

echo "\"It is a test\""

结果将是:

"It is a test"

同样,双引号也可以省略

3.显示变量

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

#!/bin/sh
read name 
echo "$name It is a test"

以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:

[root@www ~]# sh test.sh
OK                     #标准输入
OK It is a test        #输出

4.显示换行

echo -e "OK! \n" # -e 开启转义
echo "It is a test"

输出结果:

OK!

It is a test

5.显示不换行

#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"

输出结果:

OK! It is a test

6.显示结果定向至文件

echo "It is a test" > myfile

7.原样输出字符串,不进行转义或取变量(用单引号)

echo '$name\"'

输出结果:

$name\"

8.显示命令执行结果

echo `date`

注意: 这里使用的是反引号 `, 而不是单引号 '。

结果将显示当前日期

Thu Jul 24 10:08:46 CST 2014

六、Shell printf 命令

我们学习了 Shell 的 echo 命令,现在我们来学习 Shell 的另一个输出命令 printf。

printf 命令的语法:

printf  format-string  [arguments...]

参数说明:

  • format-string: 为格式控制字符串
  • arguments: 为参数列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值