学习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. 内网穿透之frp

    官网文档:https://gofrp.org 1 Frp介绍frp 是一个开源.简洁易用.高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议.frp 项目官网是 h ...

  2. Docker可视化容器管理工具之Portainer

    官网:https://www.portainer.io/ 仓库地址:https://hub.docker.com/r/portainer/ Portainer 是一个轻量级的管理 UI ,可让你轻松管 ...

  3. ContosoRetailDW数据库恢复问题

    https://www.microsoft.com/en-us/download/details.aspx?id=18279 下载 ContosoBIdemoBAK.exe和ContosoBIdemo ...

  4. Codeforces Round 890 (Div. 2)

    Tales of a Sort 题解 找到最大的能够产生逆序对的数即可 暴力\(O(n^2)\)枚举即可 const int N = 2e5 + 10, M = 4e5 + 10; int n; in ...

  5. shp转featureclass

    public void ConvertShapefileToFeatureClass() { // Create a name object for the source (shapefile) wo ...

  6. js面试题-代码实现

    新 API 最新的 url 参数获取的 API? URLSearchParams // 有如下一个url: http://localhost?a=1&b=2 function getUrlPa ...

  7. .NET 7 中的限流

    .NET 中的限流 https://devblogs.microsoft.com/dotnet/announcing-rate-limiting-for-dotnet/ 这里我们要宣布的是集成为 .N ...

  8. 2024年1月Java项目开发指南2:项目设计

    确定软件架构 1.前端用什么技术,什么框架,什么版本 2.后端用什么技术,什么框架,什么版本 3.用些什么软件,软件版本? 比如: 前端:vue3 + Element-Plus + Axios 后端: ...

  9. 【转载】理解分布式id生成算法SnowFlake

    分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种. https://segmentfault.com/a/1190000011282426 概述 SnowFlake算 ...

  10. nginx如何配置代理转发

    Nginx是个厉害的服务器,可以配置多个服务器,一个server就是一个服务器server {      listen       80;      server_name  *.yourdomain ...