初识shell

Posted cp-linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识shell相关的知识,希望对你有一定的参考价值。

1、解释器
1.1 shell认识
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
shell是解释器的总称,bash只是其中的一种 ;shell编程 bash脚本
[root@server0 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序
1.2 更改使用某一个解释器
usermod  -s
useradd -s /user/bi/bin/sh
/bin/kshn/ksh  nb
su - nb
2、重定向
标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
重定向输入  <  将文本输入来源由键盘改为指定文件
重定向输出  >  将命令行的正常执行输出保存到文件,而不是显示在屏幕
重定向输出  >> 追加
重定向错误  2>
重定向错误  2>>追加
混合重定向  &> 无论错误正确都覆盖到一个文件中
2>&1 意思是把 标准错误输出 重定向到 标准输出
[root@server0 ~]# ls /etc/hosts nofile  >log1  2>log2
#将一个存在的文件和不存在的文件 正确的导入log1,错误的导入log2
收发邮件的两种方法
echo hello | mail -s hello root
mail -s hello root < mail.txt  //需要具备一个文件

3、变量

3.1 变量赋值
[root@desktop0 ~]# a=11    等号两侧没有空格
[root@desktop0 ~]# b=22
引用变量$a  $b
[root@desktop0 ~]# echo $ab  #查看变量
输出11b
[root@desktop0 ~]# echo ${a}${b}  #注意括号
输出1122
3.2 取消变量:unset 
3.3 存储类型变量:整数型,浮点型。。。
3.4 使用类型:环境变量,位置变量,预定义变量,自定义
3.5 环境变量  配置文件/etc/profile  ~/.bash_profile
常见的环境变量:PWD、PATH、USER、LOGNAME、UID、SHELL、HOME、PS1、PS2
  PS1=XX#
env  //查看当前系统的所有变量
set  //列出所有变量
3.6 预定义变量
$0  //当前所在进程或脚本名
$*  //所有位置变量的值
$#  //已加载的位置变量的个数
$?  //上一条命令的输出状态,0表示正常,1或其他表示异常
$!   //后台运行的最后一个进程
3.7 位置变量  在执行脚本时提供的命令行参数
$1  //第一个变量
$2  //第二个变量
3.8 脚本的执行方式
当没有加x权限的情况
sh 脚本文件路径
source 脚本文件路径
. 脚本文件路径
3.9 双引、单引和反引
双引:使用双引号可以界定一个完整的字符串
touch a b     //创建两个文件
touch “a  b” //创建一个文件
单引:一个完整的字符串,并且屏蔽特殊符号
a=11
echo “$a”   //输出a的值
echo ‘$a’    //输出$a
echo “ab” == echo ‘ab’
echo “$a” != echo ‘$a’
反引:` ` 和$效果一样
将命令的执行输出作为变量值
[root@desktop0 ~]# echo $(ls)  #注意括号
1.sh anaconda-ks.cfg
[root@desktop0 ~]# echo `ls`
1.sh anaconda-ks.cfg
案例:每周五备份/etc/log
0 4 * * 5  tar -zcf /root/log.tar.gz  /etc/log        //这样容易造成每周五将原有的数据覆盖
0 4 * * 5  tar -zcf /root/log.`date +%F`.tar.gz  /etc/log    //这样就起到了每周五不会覆盖原有的数据
3.10 read 标准输入取值
格式:read [-p 提示信息] 变量名
3.11 stty -echo //关闭回显
stty echo //恢复
局部变量 a=11
全局变量 export a=11
 
4、expect预期交互
expect可以为交互式过程(比如FTP、SSH等登录过程)自动输送预先准备的文本或指令,而无需人工干预。触发的依据是预期会出现的特征提示文本。
yum -y install expect
#!/bin/bash
ip=176.19.1.65
expect << EOF (开头结尾保持一致)
spawn ssh root@$ip //spawn对屏幕监控
expect "password" {send "Taren1
"} //当屏幕出现password发送密码
expect "#" {send "touch /root/a.txt
"}
expect "#" {send "exit
"}
EOF

 

以上是关于初识shell的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习之Shell脚本初识

Java初识方法

初识shell

代码片段:Shell脚本实现重复执行和多进程

初识OpenGL 片段着色器(Fragment Shader)

初识OpenGL 片段着色器(Fragment Shader)