学习bash shell 第一天

在百度百科上找的解释

BashUnix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。
Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从cshksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展

笨办法bash shell  ---- 离开舒适区,刻意练习

为什么使用shell编程 ----可以把一些复杂的命令简单化,自动的实现默些功能,有规律的可以用shell来做

不适合使用shell编程

学习bash shell 网站https://wangdoc.com/bash/

实验准备

[root@bash ~]# uname -a
Linux bash 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@bash ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

vim的配置文件

系统级/etc/vimrc

用户级$HOME/.vimrc

对比vi和vim差异

[root@bash ~]# ll /usr/bin/vi
-rwxr-xr-x. 1 root root 928056 Oct 14 2020 /usr/bin/vi
[root@bash ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2337208 Dec 16 2020 /usr/bin/vim
[root@bash ~]# rpm -qf /usr/bin/vi
vim-minimal-7.4.629-7.el7.x86_64
[root@bash ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.629-8.el7_9.x86_64

也可以查看vi或vim的版本来对比差异

[root@bash ~]# vim --version | more      # +syntax
[root@bash ~]# vi --version | more # -syntax

配置vim 语法高亮 显示行号

语法高亮    # export $TERM=xterm

[root@bash ~]# echo $TERM         #在putty中
xterm

显示行号  :set number

[root@bash ~]# vi /etc/vimrc        #在全局下设置 加上 set number

配色方案

[root@bash ~]# ls /usr/share//vim/vim74/colors/
blue.vim delek.vim evening.vim murphy.vim README.txt slate.vim
darkblue.vim desert.vim koehler.vim pablo.vim ron.vim torte.vim
default.vim elflord.vim morning.vim peachpuff.vim shine.vim zellner.vim

字体颜色

[root@bash ~]# vi /etc/vimrc        #在全局下设置 加上colorscheme evening

第一个练习

[root@bash ~]# touch 05-30-01.sh
[root@bash ~]# vim 05-30-01.sh
1 # 清除
2 # 以root身份运行
3
4 cd /var/log
5 cat /dev/null > messages # null 类似与黑洞 进去了出不来
6 cat /dev/null > wtmp # 日志文件
7 echo "log 清除成功!"
[root@bash ~]# chmod +rx 05-30-01.sh
[root@bash ~]# ./05-30-01.sh
log 清除成功!

第二个练习

[root@bash ~]# vim 05-30-3.sh
1 #!/bin/bash
2 #一个bash脚本的正确开头部分
3
4 #当然要以root身份运行这个脚本
5
6 # 如果使用变量,这样更加灵活,优雅
7 LOG_DIR=/var/log
8
9 cd $LOG_DIR
10
11 cat /dev/null > messages
12 cat /dev/null > wtmp
13 echo "清除成功"
14 exit # 这个命令是一个正确,合适的退出的办法
15 #不带任何参数的exit,将返回退出的状态码
[root@bash ~]# chmod +rx 05-30-3.sh
[root@bash ~]# ./05-30-3.sh
清除成功

练习代码

[root@bash ~]# vim 05-30-2.sh
1 #!/bin/bash
2 #联系:显示时间和日期,列出所有登录的用户,系统运行时间
3 #并将上述信息保存到一个log file中
4
5 LOG_FILE=/temp/02-lab1.log
6 date
7 w
8 uptime
9
10 echo "" >> $LOG_FILE
11 date >> $LOG_FILE
12 w >> $LOG_FILE
13 uptime >> $LOG_FILE
14[root@bash ~]# ./05-30-2.sh
Mon May 30 18:17:28 CST 2022
18:17:28 up 5:52, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:04 6:44m 0.30s 0.30s -bash
root pts/0 192.168.114.1 14:38 0.00s 0.31s 0.00s /bin/bash ./05-
18:17:28 up 5:52, 2 users, load average: 0.00, 0.01, 0.05
#!/bin/bash
# 说明:这是一个联系date的脚本 echo "The number of days since the year's beginning is `date +%j`."
# +%j 用给出今年是本年的第几天
# 注意不要少了+号 echo "THE number of seconds elconds since 1970/07/01 is `date +%s`."
# +%s 将输出从UNIX元年到现在为止的秒数 PREFIX=temp
SUFFIX=$(date +%s)
FILENAME=$PREFIX.$SUFFIX echo $FILENAME
#这是一种常用的非常好的办法来生成的“唯一”临时文件的方法
#拍砖:但是,如果在一秒内需要有多个临时文件呢?
#但是,总是要比$$要一些 exit 0

bash 学习的更多相关文章

  1. Linux基础知识回顾及BASH学习

    2019-2020-030189224 <网络攻防技术与实践>第一周学习总结 Linux基础知识错题回顾 1.Linux中使用(B)命令新建空白文件. A .mkdir B .touch ...

  2. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  3. bash学习

    if 的使用 declare -i x=10 if [ $x -lt 14 ];then echo $x'小于14'; elif [ $x -gt 9 ];then echo $x'大于9'; els ...

  4. bash学习之变量的显示和设置

    显示变量:echo $MAIL或者 echo ${MAIL} [CJP@CJP ~]$ echo $MAIL /var/spool/mail/CJP [CJP@CJP ~]$ echo ${MAIL} ...

  5. bash学习之环境变量

    1.查看系统存在的环境变量env 和 export env命令:查看环境变量 [CJP@CJP ~]$ env HOSTNAME=CJP SHELL=/bin/bash HISTSIZE=1000 U ...

  6. BASH 学习笔记小结

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  7. linux bash学习(一)

    1.请你以 read 指令的用途,撰写一个 script ,他可以让使用者输入:1. first name 与 2. last name, 最后并且在屏幕上显示:“Your full name is: ...

  8. git Bash 学习

    ,ranh新建一个本地仓库并与github连接的方法 注:该终端也具有按tab键补全功能,应该合理应用 1. 新建一个文件夹,并将git bash的位置转到相应文件夹下(cd 命令转移) 2.git ...

  9. bash学习记录

    bash: 管理员:  提示符# 普通用户:提示符$ 环境变量 A=3(变量是指内存空间,A指的是内存空间的名称-变量标示符) PS1  \u@\h:\w\$  \u用户名 \h主机名 \w工作目录的 ...

  10. bash 学习笔记

    shell:能够操作应用程序的接口就称为shell. Linux由C编写的. TAB键的使用 alias:设置别名

随机推荐

  1. N皇后问题(DFS-深度优先算法)

    N皇后问题(DFS-深度优先算法) 题目描述: 在 N×N 的方格棋盘放置了 N 个皇后,使得它们不相互攻击(即任意 22 个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 45° 的斜线上. ...

  2. OpenEuler文件被锁定的解决方法|网卡修改不生效的解决办法

    欧拉系统(含centos等linux系统)修改文件,一直提示readonly,不让改.原因有可能是这个文件给锁定了. 解决方法: 使用以下两个命令: • chattr 改变文件属性 • lsattr ...

  3. 深入聊聊async&Promise

    正文 最近在学习JavaScript里的async.await异步,对于其中的Promise状态以及背后的Js引擎实际运行状态不大理解且很感兴趣,因此花了一点时间仔细研究了一下. 从Example说起 ...

  4. 不错的AI项目集合

    最近收集了一些不错的AI项目. AutoGPT:AutoGPT 的愿景是让每个人都可以使用和构建无障碍 AI.我们的使命是提供工具,以便您可以专注于重要的事情. Stable Diffusion we ...

  5. R数据分析:潜在转化分析LTA的做法和解释(一)

    之前给大家写了很多潜在类别分析的教程Mplus教程:如何做潜在类别分析LCA R数据分析:用R语言做潜类别分析LCA Mplus数据分析:潜在类别分析(LCA)流程(详细版) R数据分析:再写潜在类别 ...

  6. .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门

    .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门 原文地址:https://devblogs.microsoft.com/dotnet/introducing-aspn ...

  7. 【前端】【H5 API】addEventListener监听网络状态的变动

    WebviewObject Webview窗口对象,用于操作加载HTML页面的窗口 属性 id:webview窗口的标识 方法:监听 addEventListener 添加事件监听器 wobj.add ...

  8. FFmpeg中的色彩空间与像素格式3-像素格式

    FFmpeg 中的色彩与像素系列文章如下: [1]. FFmpeg中的色彩空间与像素格式1-色彩空间基础 [2]. FFmpeg中的色彩空间与像素格式2-RGB/YUV色彩空间 [3]. FFmpeg ...

  9. hhhhhhomework 验证码界面(非全部自己完成)

    import javax.swing.*;//import 代表"引入" //javax.swing 代表"路径" (在javax文件夹下的swing文件夹) ...

  10. C#HTTP网络请求时GetResponseAsync()方法抛出“远程服务器返回错误: (411) 所需的长度”异常

    在请求HttpWebRequest的报了如下的错误"远程服务器返回错误: (411) 所需的长度",结果网上 百度了一下说,再请求POST的时候,若没有参数的情况下,需要将进行如下 ...