标签:cti 标准输出 order mono HERE media 自动启动 eof pad
shell脚本用在什么地方
编写常用系统维护工具菜单
重要的性能参数、进程和日志分析
自动实现数据备份计划
自动批量搭建特定系统环境
防火墙自动配置脚本
服务器的配置文件安全比对
对批量设备进行远程巡检
[root@localhost ~]# cat /etc/shells //查看有哪些shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
初始化脚本执行顺序:/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
如果这些脚本中的变量发出冲突,那么以最后一个脚本的设置生效。
初始化脚本执行顺序:~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
/etc/profile:配置全局环境变量,影响所有用户
~/.bash_profile :配置个人环境,影响一个用户
/etc/bashrc :配置全局的别名或者shell选项,影响所有用户
~/.bashrc :配置个人别名或者shell选项,影响一个用户
登录Shell负责系统全局环境(env)初始化,会读取所有启动配置文件
非登录Shell默认会继承登录shell的环境变量,为了加快速度,无需读取所有启动配置文件,只需读取少量局部配置文件
退出登录Shell:~/.bash_logout
[root@localhost root]# history
……
556 useradd jerry
557 passwd jerry
558 crontab -e -u jerry
559 crontab -l -u jerry
[root@localhost root]# !562
crontab -l -u jerry
no crontab for jerry
[root@localhost ~]# vi /etc/profile
HISTSIZE=200
[root@localhost ~]# alias
alias cp=‘cp -i‘
alias l.=‘ls -d .* --color=tty‘
alias ll=‘ls -l --color=tty‘
alias ls=‘ls --color=tty‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
……
#!/bin/bash
#这是我的第一个脚本:打印Hello world
#脚本版本
#作者
#日期
str="hello world"
echo ${str}
////手工执行
[root@localhost ~]# cd /opt/scripts
[root@localhost scripts]# bash first_script.sh
hello world
[root@localhost ~]# chmod +x first_script.sh
[root@localhost ~]# ls -l first_script.sh
-rwxr-xr-x 1 root root 144 04-26 15:02 first_script.sh
[root@localhost scripts]# ./first_script.sh
hello world
[root@localhost scripts]# /opt/scripts/first_script.sh
hello world
[root@localhost ~]# ./first.sh // 必须有 x 权限
/boot
-rw-r--r-- 1 root root 1.8M 2010-03-17 vmlinuz-2.6.18-194.el5
[root@localhost ~]# bash /first.sh // 必须有 x 权限
/boot
-rw-r--r-- 1 root root 1.8M 2010-03-17 vmlinuz-2.6.18-194.el5
[root@localhost ~]# source /first.sh //不要求 x 权限
/boot
-rw-r--r-- 1 root root 1.8M 2010-03-17 vmlinuz-2.6.18-194.el5
方法一、二:会产生新的bash进程,有新的bash进程来解析脚本中的代码
方法三:不会产生新的bash进程,会使用当前的bash进程来解析脚本中的代码
#!/bin/bash
#这是我的第一个脚本:打印Hello world
#脚本版本
#作者
#日期
[root@localhost ~] vi /first.sh
#!/bin/bash
# This is my first Shell-Script.
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*
[root@localhost ~]# DAY=Sunday
[root@localhost ~]# echo $DAY //通过$符号引用指定名称的变量值
Sunday
[root@localhost ~]# DAY=“Today is Sunday”//变量值有空格用双引号括起来
[root@localhost ~]# echo $DAY
Today is Sunday
${变量名}
//
[root@localhost ~]# DAY=Sunday
[root@localhost ~]# echo “Today is Sunday ” > $DAY_file.txt
[root@localhost ~]# ls -a
. .. .txt
[root@localhost ~]# echo “Today is Sunday ” > ${DAY}_file.txt
[root@localhost ~]# ls -a
. .. Sunday_file.txt
var2=$( rpm -qf $(which fdisk) )
[root@localhost scripts]# echo -e "123\n123"
123
123
[root@localhost scripts]# echo - "123\n123"
- 123\n123
#!/bin/bash
read -p "please input you name: " name
read -n3 -p "input password: " pass
echo -e "\n your username is $name password is $pass"
[root@localhost ~]# echo $FILESVR
filesvr.sxjy.com
[root@localhost ~]# export FILESVR //导出为全局变量
[root@localhost ~]# bash
[root@localhost]~# echo $FILESVR //子程序引用全局变量
filesvr.sxjy.com
[root@localhost root]# set
……
SHELL=/bin/bash
TERM=xterm
UID=0
USER=root
consoletype=pty
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# PATH="$PATH:/root"
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
[root@yuelu0324 tmp]# a=b
[root@yuelu0324 tmp]# b=1
[root@yuelu0324 tmp]# echo ${${a}}
-bash: ${${a}}: bad substitution
[root@yuelu0324 tmp]# echo ${$a}
-bash: ${$a}: bad substitution
[root@yuelu0324 tmp]# echo ${!a}
[root@localhost ~]# rpm -q bind &>/dev/null && echo ok || echo no
no
[root@localhost ~]# rpm -q setup &>/dev/null && echo ok || echo no
ok
[root@localhost ~]# cat bak.sh
#!/bin/bash
TARFILE=bak-`date +%s`.tgz //Unix的时间戳,从1970-1-1 0:0:0 到某个时间的秒数
tar zcf $TARFILE $@ &> /dev/null
echo "已执行 $0 脚本,"
echo “共完成 $# 个对象的备份"
echo “具体包括: $*”
[root@localhost ~]# ./bak.sh /etc/passwd /etc/shadow
已执行 ./bak.sh 脚本,
共完成 2 个对象的备份
具体包括:/etc/passwd /etc/shadow
传递命令序列到程序
[root@localhost ~]# lftp 10.10.10.1 << EOF
> ls pub
> get pub/passwd
> quit
> EOF //后面一定不要有空格
-rw-r--r-- 1 0 0 1759 Jul 11 06:00 passwd
[root@localhost ~]# cat << EOF > test.sh
> #!/bin/bash
> echo "this is here document test"
> EOF
[root@localhost ~]# cat test.sh
#!/bin/bash
echo "this is here document test"
#!/bin/bash
read -p "请输入要创建数据库的名称:" name
mysql -u root -p123 << EOF
create database $name;
show databases;
EOF
[root@localhost test]# bash test.sh
请输入要创建数据库的名称:sxjy
Database
information_schema
cacti
mysql
sxjy
name="hello"
myname0=‘My name is $name‘
myname1="My name is ‘$name‘"
myname2=‘My name is "$name"‘
myname3="My $name is "$name""
myname4=‘My $name is ‘$name‘‘
echo $myname0
echo $myname1
echo $myname2
echo $myname3
echo $myname4
***系统管理工具***
1. 显示磁盘空间信息
2. 显示网络接口信息
3. 显示内存使用信息
0. 退出菜单
输入选项: 3
你的选择是 3
add new user: txy
user txy password:
user txy is ok
[root@localhost ~]# ./counter.sh /usr
The number of directory: 7511
[root@localhost ~]# ./counter.sh /etc
The number of directory: 257
[root@localhost ~]# ./counter.sh /root
The number of directory: 169
[root@localhost test1]# ./test.sh /etc conf log
以conf结尾的文件的数目是: 311
以log结尾的文件的数目是: 6
标签:cti 标准输出 order mono HERE media 自动启动 eof pad
原文地址:https://www.cnblogs.com/qluzzh/p/10306285.html