Shell

查看bash是否安全:

[root@localhost ~]# env x='(){:;}; echo be careful' bash -c " echo this is a test"
this is a test
*bash执行顺序:

/etc/profile–>/etc/profile.d–>~/.bash_profile–>/.bashrc–>/etc/bashrc

[root@localhost ~]# /root/i.sh
-bash: /root/i.sh: Permission denied
[root@localhost ~]# chmod +x i.sh
[root@localhost ~]# ./i.sh
HELLO world
执行脚本方法:
[root@localhost ~]# /root/i.sh
HELLO world
[root@localhost ~]# sh i.sh
HELLO world
[root@localhost ~]# source i.sh
HELLO world
[root@localhost ~]# . i.sh
HELLO world
[root@localhost ~]# bash i.sh
HELLO world

.和source加载文件,将局部变量加载成全局变量

多行注释:

:<<BLOCK

代码…

BLOCK

没有必要使用cat命令

eg:cat /etc/passwd | grep guru

使用1 guru /etc/passwd即可

变量的导出:

set:输出所有变量

env:输出全局变量

declare:输出所有变量、函数和已经导出的变量

定义全局变量:

[root@localhost ~]# export NAME=anliu
[root@localhost ~]# env |grep NAME
HOSTNAME=localhost.localdomain
NAME=anliu
LOGNAME=root
[root@localhost ~]# AGE=18
[root@localhost ~]# env |grep AGE
[root@localhost ~]# export AGE
[root@localhost ~]# env |grep AGE
AGE=18

设置登录提示语句:

[root@localhost ~]# vi /etc/motd

生成加密码:

CentOS 6:

grub-mkpasswd-pbkdf2

CentOS 7:

grub2-mkpasswd-pbkdf2

生成自然数:

[root@localhost ~]# echo {0..10}
0 1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# echo {00..10}
00 01 02 03 04 05 06 07 08 09 10

[root@localhost ~]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# seq 10 2 20(10~20,步长为2)
10
12
14
16
18
20
[root@localhost ~]# seq 8 10
8
9
10

-w:与尾数宽度相等

[root@localhost ~]# seq -w 8 10
08
09
10
[root@localhost ~]# seq -w 1 03
01
02
03

-f:格式化输出

[root@localhost ~]# seq -f "%3g" 8 12
  8
  9
 10
 11
 12
[root@localhost ~]# seq -f "%03g" 8 12
008
009
010
011
012

-s:使用指定字符串分隔数字

[root@localhost ~]# seq -s "`echo -e "\t"`" 8 12
8       9       10      11      12
[root@localhost ~]# a="北京欢迎你:\n 世界~~"
[root@localhost ~]# echo $a
北京欢迎你:\n 世界~~
[root@localhost ~]# echo -e $a
北京欢迎你:
 世界~~
生成随机数:
1、[root@localhost ~]# echo $RANDOM

2、[root@localhost ~]# awk 'BEGIN{srand();print rand()}'(生成随机小数)
0.681664

3、[root@localhost ~]# openssl rand -base64 12|md5sum |cut -c 1-8(截取8位随机数,带字母,md5sum加密)
d1df9d56

4、[root@localhost ~]# date +%s%N |cut -c 8-15
13164971
[root@localhost ~]# date +%s%N |md5sum |head -c 8(加密生成)
283ce550
5、[root@localhost ~]# cat /dev/urandom |head -n 10 |md5sum  |head -c 10
bf093e0b08
生成随机UUID:
[root@localhost ~]# cat /proc/sys/kernel/random/uuid
eed65d5c-95f8-4b02-833d-db03db002356
生成随机MAC地址:
[root@localhost ~]# echo "00:60:2F$(dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e ' /1 ":%02X"')"
00:60:2F:DD:E6:B2
[root@localhost ~]# [ -f file1 ] || touch file1(判断是否有file1,||:若没有,则创建file1)
[root@localhost ~]# [ -f file2 ] || echo "file2 meiyou"
file2 meiyou
[root@localhost ~]# [ -f file1 ] && echo "file1 you"(&&:若成立)
file1 you
变量:

变量是计算机内存的单元,其中存放的值可以改变;当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它放到一个变量中。

**命名规则:**可以由字母、数字和下划线组成,但是不能以数字开头,如果变量名是“2name”则是错误的。

在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。

1、变量用等号连接值,等号左右不能有空格。

2、变量的值如果有空格,需要使用单引号或双引号包括。

3、在变量的值中,可以使用“\”转义符。

4、如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 变 量 名 ” 或 用 变量名”或用 {变量名}包含。

5、如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。

6、环境变量名建议大写,便于区分。

调用变量:echo $变量名

删除变量:unset 变量名

变量叠加:

[root@web01 ~]# aa=123
[root@web01 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值