bash学习前方

#!/bin/sh

#!/bin/bash

查看shell版本

bash --version

bash 漏洞

bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞。利用这个漏洞,攻击者可能会接管计算机的整个操作系统,得以访问机密信息,并对系统进行更改等等。任何人的计算机系统,如果使用了Bash软件,都需要立即打上补丁

此次爆出的bash 漏洞在于BASH处理这样的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令!例如

envx=‘(){:;};echovulnerable‘bash-c"echothisisatest"

如果返回
      vulnerable
      this is a test
      这样的结果的话,请尽快升级

echo $USER(系统变量)

/etc/profile中定义全局变量

source /path/file.sh =. /path/file.sh与sh 不同

可以把当前脚本中的变量可以带到当前shell

vim a.sh

#!/bin/sh

source /etc/init.d/functions

action "it is a test deamon" /bin/true

故障排查命令

dmesg

cat /var/log/message

脚本清理/var/log/messages

#!/bin/sh

USER=0

DIR=/var/log/

if [ "$USER" -ne "$UID" ]then

echo "You must root"

exit 1

fi

cd $DIR

cat /dev/null >messages && echo "it is clear"

exit 0

时间: 2024-12-19 08:17:10

bash学习前方的相关文章

bash学习

bash编程学习 mkdir -p cd ~ ls -a tail -f  /var/log/httpd/access grep -i -E 同时过滤多个字符 alias 别名 which 查看文件所在路径. tree -L 查看文件目录 seq -s 打印数字序列echo {1,5} whoami w 当前登录的用户 sudo 让普通用户可以有root权限 lsof -i:port 列表打开的文件(初级) chkconfig netstat chattr 改变文件属性 :多个命令的分隔 2>标

BASH 学习笔记小结

1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我们真诚地建议您

Linux入门之bash学习

一.认识计算机硬件组成部分: 冯.诺伊曼体系结构定义了计算机有运算器.控制器.存储器.输入设备.输出设备五大部分    组成,还有一个原则是:必须是二进制的程序才能在系统中运行,它只能处理二进制文件.因此需    要将程序的源代码编译成二进制. 二.Linux哲学思想: 1.一切都是一个文件(包括硬件) 2.小型,单一用途的程序 3.链接程序,共同完成复杂的任务 4.避免令人困惑的用户界面 5.配置数据存储在文本中 三.了解ABI与API: ABI:应用程序二进制接口. API:应用程序做开发的

linux bash学习(一)

1.请你以 read 指令的用途,撰写一个 script ,他可以让使用者输入:1. first name 与 2. last name, 最后并且在屏幕上显示:"Your full name is: "的内容: #!/bin/bash #Program: # use input his first name and last name.Program shows his full name. #History: #2017/07/27 lzyer release read -p &q

bash学习笔记——bash是什么

bash是shell的一种,所谓的shell(壳)是一个接口,这个接口提供给用户操纵系统的能力,广义的shell包括图形界面和命令行界面,狭义的shell是指命令行界面的接口,这里的bash就是一种狭义的shell.Shell可以调用其他的程序,也可以执行一些自己本身支持的命令. bash是Bourne Again Shell的简称,是Linux的默认shell.系统一般会提供多个可用的shell,可用的shell写在配置文件/etc/shells中,用户使用的shell在用户登录系统时就可以指

bash学习笔记——Shell变量

在shell环境中可以设置变量,方便用户的使用.用户可以自定义变量,通过简单的语法就可以直接在shell环境中实现,例如:”x=100”等.同时,还有一些变量可以影响bash环境的操作,称为环境变量,例如PAHT,HOME,MAIL等,为了与自定义变量进行区别,这些变量一般为大写.其中,PATH变量是shell搜索外部命令(即外部应用)的路径,如果在PATH路径中没有找到命令,则shell会显示无法找到命令. 变量内容可以通过echo命令来显示,变量名字前需要加$符号.关于单引号与双引号,单引号

bash学习笔记——特殊字符

{xxx,yyy,zzz,...} 一个命令可以在文件名扩展中从逗号分隔的各模式来扩展参数列表. 文件名将会依照列表中逗号分隔开的模式匹配扩展. 在扩展中的所有模式都不能包含空白字符,除非空白字符是被转义或引用的. echo {file1,file2}\ :{\ A," B",' C'} file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C scriptname >filename重定向scriptname的输出到

bash学习笔记——变量

在一个双引号(" ")里的变量引用不会禁止变量替换.所以双引号被称为部分引用,有时也称为"弱引用".而在一个单引号里(' ')的变量替换是被禁止的,变量名只被解释为普通的字面意思.所以单引号被称为"全局引用",有时也被称为强引用. hello="A B C D" echo $hello # A B C D echo "$hello" # A B C D # 正如你所看到的:echo $hello和echo

数据流重定向和管道命令(bash学习02)

标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0,使用<或者<<,默认是键盘 标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认由屏幕显示 标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕 < 指定输入的数据媒介来源1> 将正确的内容 覆盖输出到指定的媒介1>> 将正确的内容 追加到指定的媒介2> 将错误信息覆盖输出到指定