shell是什么?shell是用户和内核交互的接口,可以把它当做命令解释器,当用户输入命令后,shell就会将他进行解释然后送到内核中执行,
知道什么事shell后,那么我来了解一下linux中使用的是哪一个shell,难道linux的shell不止一个?当然,我们可以通过查看/etc/shells文件来查看当前系统有哪些shell
各个shell之间大同小异,只需掌握其中一个就Ok了,在大多数linux系统中,默认的shell就是bash,
那就开始了解一下bash:
1、bash shell的内置命令:
type 通过type我们可以知道一个命令式内置命令还是外部命令。
type [-t] 命令
-t :加入参数t时,结果为以下意思:
file:表示为外部命令
alias:表示该命令式别名所设置的名称
builtin:表示该命令为bash内置命令
2、bash中的变量的显示与设置
echo,unset
你可以使用echo这个命令来显示变量,但是变量在显示的时候,前面必须加上“$”才行,获得PATH的内容
echo $PATH 或者echo ${PATH}
那么如何设置一个变量呢:
下面是一些规则:
a 变量和变量内容是用一个=号连接的
b 等号两边是不能出现空格的,如果出现空格需要用单引号或者双引号
c 双引号内的特殊字符如$是可以保持原来的内容的,但是单引号不能
d 在一串命令中如果还需要其他命令提供信息,则可以使用反单引号`命令` 或者$(命令)
e 取消一个变量使用unset
3、查看环境变量
使用env 或者export命令
查看系统中所有的 变量
set
4、从键盘读取变量
这个知识点在shell script中用的很多
5、声明变量的类型
declare [-iaxr] var
a:数组类型
i 整形
x 全局变量
r 只读类型
看到上面的区别了吗?
下面来学习非常实用的技术
变量内容的删除,替换
删除变量的内容,主要记住四个符号:
#:从变量内容的左边开始,与你要删除的内容匹配的最短字符
##:从变量内容的左边开始,与你要删除的内容的匹配的最长字符
%:从变量内容的右边开始,与你要删除的内容匹配的最短字符
%%:从变量内容的左边开始,与你要删除的内容匹配的最长字符
其中的*代表0个或者多个任意字符
有关替换的语法:
${var /old/new}//替换最前面一个
${var //old/new}// 替换所有
bash登录信息的修改:
首先用cat /etc/issue
如果你想让所有的用户登录后取得一些信息,例如一些通告,该如何做呢?
修改/etc/motd文件
bash 的环境配置文件
下面给大家介绍两个概念:
login shell 和non-login shell
login shell:取得bash时需要完整的登录流程,就叫做login shell,举例来说从tty1-tty6登录,需要输入用户账号和密码,此时取得的bash成为login-shell
non-login shell:取得bash的时候没有登录
对于login shell 在启动的时候回读取两个配置文件
/etc/profile: 这是系统的整体设置,你最好不要改动
~/.bash_profile 或者~/.bash_login或者~/.profile 属于用户个人设置,你要改自己的数据就写入这里
对于下面的三个文件 login shell设置只会读取上面三个钟的一个,而读取的顺序一朝上面读取
由于/etc/profile 与~/.bash_profile都是在login shell的时候读取的,所以你要将自己的偏好设置写入上述文件后,通常都是要注销登录的,那么能不能直接读取配置文件而不注销呢,是可以的,使用source这个命令
source 配置文件
source ~/.bash_profile
或则 . ~/.bash_profile
数据流重定向
数据流重定向从字面意思来理解就是将数据传到其他地方,在默认的情况下,我们执行一个命令,不管其对与错,结果都是现实在控制台上,那么现在我们想保存到文件中,该如何做,请看下面:
范例1
将执行结果放置到result.txt
将执行的过程中的错误信息保存到err.log中
对于上面的案例简要解释:
标准输入 代码为0 使用<或者<<
标准输出 代码为1 使用>或者>>
标准错误输出: 代码为2 使用2>或者2>>
>表示清空后写入 >>表示累加
范例2 将错误信息丢弃,只显示正确信息
find /home -name .bashrc 2>/dev/null
范例3 将正确信息和错误信息分别存储到不同的信息中去
find /home -name .bashrc >list_right 2>list_error
标准输入
用简单的方式描述就是说将原来需要由键盘输入的数据改由文件的内容代替
范例1 利用cat 命令创建一个文件
cat >catfile
testing
cat file test
按Ctrl+d结束
然后利用cat catfile查看内容
范例2
管道命令
管道命令就是"|",所谓管道就是将一个命令的结果作为另一个命令的输入
范例1