SHELL DAY01(Shell概述 、 编写及执行脚本 、 Shell变量 、 数值运算)

本文详细介绍了Linux Shell的基础知识,包括Shell脚本的设计、变量使用、数值运算,以及如何执行未设置x权限的脚本。通过多个案例,读者可以学习到如何编写和执行Shell脚本,了解Shell变量的扩展应用,以及掌握Shell中的算术运算。此外,还提供了编写报告用户环境信息和快速添加用户账号的脚本示例。
摘要由CSDN通过智能技术生成

案例1:Shell基础应用
案例2:简单Shell脚本的设计
案例3:使用Shell变量
案例4:变量的扩展应用
案例5:Shell中的数值运算

1 案例1:Shell基础应用

1.1 问题
本案例要求熟悉Linux Shell环境的特点,主要练习以下操作:

切换用户的Shell环境
练习命令历史、命令别名
重定向标准输入/输出/错误输出
管道操作实践

1.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:切换用户的Shell环境

什么是shell?

Shell是在Linux内核与用户之间的解释器程序,通常指的是bash,负责向内核翻译及传达用户/程序指令,如图-1所示。

在这里插入图片描述

图-1

shell的使用方式:

1.交互执行指令:人工干预,执行效率底。

2.非交互执行指令:安静地在后台执行,执行效率高,方便写脚本。

若需要临时使用另一种Shell环境,可以直接执行对应的Shell解释器程序,比如只要执行ksh可以切换到ksh命令行环境。

[root@svr5 ~]# yum -y install ksh              //若缺少ksh请先安装ksh包
.. ..
[root@svr5 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh                                        //确认当前系统已识别ksh
[root@svr5 ~]# ksh                              //进入ksh环境
[root@svr5]~# exit                              //返回到切换前的bash环境

若希望修改用户的登录Shell,管理员可以直接通过usermod(或useradd)命令设置。比如,以下操作可将用户zhangsan的登录Shell改为/bin/ksh:

[root@svr5 ~]# usermod -s /bin/ksh zhangsan              //执行修改操作
[root@svr5 ~]# grep 'zhangsan' /etc/passwd
zhangsan:x:516:516::/home/zhangsan:/bin/ksh              //修改后

步骤二:快捷键与Tab键补齐,常见快捷键如表-1所示
在这里插入图片描述

表-1

步骤三:练习命令历史

1)检查历史命令的容量。

默认记录1000条,通过全局变量HISTSIZE设置,对所有用户有效:

[root@svr5 ~]# grep HISTSIZE /etc/profile
HISTSIZE=1000

查看已为当前用户记录的历史命令条数:

[root@svr5 ~]# history | wc -l
1000

2)查看历史命令列表。

列出最近执行的10条历史命令:

[root@svr5 ~]# history | tail
 1028  grep 'zhangsan' /etc/passwd
 1029  cat /etc/redhat-release
 1030  usermod -s /bin/tcsh zhangsan
 1031  grep 'zhangsan' /etc/passwd
 1032  su - zhangsan
 1033  echo 1234567 | passwd --stdin zhangsan
 1034  su - zhangsan
 1035  grep HISTSIZE /etc/profile
 1036  history | wc -l
 1037  history | tail

3)调用指定的历史命令。

重新执行历史命令列表中的第1028条操作:

[root@svr5 ~]# !1028
grep 'zhangsan' /etc/passwd
zhangsan:x:516:516::/home/zhangsan:/bin/bash

重新执行最近一次以cat开头(根据实际情况变更)的历史命令操作:

[root@svr5 ~]# !cat
cat /etc/redhat-release
Red Hat Enterprise Linux Server… …

步骤四:练习命令别名

1)查看已经定义的命令别名列表。

当前的别名列表:

[root@svr5 ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
… …

步骤四:重定向标准输入/输出/错误输出

1)重定向标准输出。

使用 > 将命令执行的正常输出重定向到文件:

[root@svr5 ~]# ls -ld /etc/                        //正常应输出到屏幕
drwxr-xr-x. 140 root root 8192 82 04:45 /etc/
[root@svr5 ~]# ls -ld /etc/ > stdout.txt              //重定向到文件
[root@svr5 ~]# cat stdout.txt                      //确认重定向输出的结果
drwxr-xr-x. 140 root root 8192 82 04:45 /etc/

操作会覆盖目标文件(先清空、再写入):

[root@svr5 ~]# echo "I am the king." > stdout.txt          //覆盖目标文件
[root@svr5 ~]# cat stdout.txt                          //确认结果
I am the king.

改用 >> 可实现追加重定向输出:

[root@svr5 ~]# ls -ld /etc/  >> stdout.txt              //追加输出
[root@svr5 ~]# cat stdout.txt
I am the king.                                          //原有内容还保留
drwxr-xr-x. 140 root root 8192 82 04:45 /etc/

2)重定向标准错误。

对于命令执行出错的信息,使用 > 无法保存,仍然会输出到屏幕。比如,可使用ls命令同时查看两个对象(其中nb.txt并不存在),重定向输出:

[root@svr5 ~]# ls -l nb.txt /etc/fstab > stderr.txt
 [root@svr5 ~]# cat stderr.txt                  //正常信息成功重定向到目标文件
-rw-r--r--. 1 root root 541 15 2017 /etc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值