1.[tab]
补全
命令补齐
$PATH
环境变量中补全的
Echo $PATH
路径中一各一个的找
文件名补齐
则是在
已经指定的目录前缀
2.History
:
文件当中或内存中
echo $HISTSIZE
当前
命令历史条目(保存在内存中
,直到关机才保存到
.bash_history
)
-c
:清空命令历史的
-a
:把当前缓存区的写到文件中:续写
history �Ca ~/.bash_history
-w
:把当前缓存区的写到文件中:覆盖
-n
:从文件到内存
Num
:最近执行过的
num
行命令
3
.
变量就是内存的命名空间
数据类型:数据在内存中的存储类型
!!:
命令历史中的最后一条命令
!ec:
命令历史中的最后一条命令以
ec
开头的命令
!
num
:表示执行命令历史中第
num
条命令
!?
abc
:最近包含
abc
字符串的命令
!
-3
:执行
history
中倒数第三条命令
touch a
Ls a
touch b
^touch^ ll :
表示被上一个命令
touch
用
ll
替换掉
ls a
cat
!
$:
表示查看
a
的内容
!$:
用于应用上一个命令最后一个参数
还可以
用:
cat +alt
键
+
一点号(
.
)
5
.
不让命令历史保存重复的行:
Export HISTCONTROL=ignorespace
:以空格开头的命令不再
history
中显示
Export HISTCONTROL=ignoredups
:把多个连续重复的同一命令只显示一个
Export HISTCONTROL=erasedups
:把多个不连续重复的同一命令只显示一个
注意:上诉设置
reboot
会失效
Ctrl+r
:从
命令历史中反向收索
命令展开:
Touch a-`date +
“
%H%M%S
”
`
TIME=$(date +%H%M%S)
大括号展开:
echo ${S}s
6
.
Shell
发展
sh->csh->ksh(
融合了
sh
,
csh)
Bash
基与
GPL
发行的
1.Sh->GNU
2.
弱类型
Shell
提供了编程环境,程序流程:(顺序,选择,跳转,循环),是一种动态语言,(
c++
面向对象,编译语言
,
静态语言),是一种脚步:解释(语言
bash
,
perl
,
Python
,
PHP
,
ruby
)运行
边解释边运行
开发语言:
编译:
c
、
c++
,静态语言
解释:
bash per Python PHP ruby
,动态语言
7.
变量类型:
本地变量
VARNAME=VALUE
环境变量
export VEANAME
预定义变量
(位置变量)
$0 $1$2….$9
$0
表示命令,
$1….$9
是参数
特殊变量
本地变量:变量对当前
shell
有效,对子
shell
无效
NAME=Jerry
NUM=34
Echo $(NAME)
引用变量
显示
Jerry
进子
shell
:
bash
环境变量:
export NAME
Echo $NAME
显示
Jerry
Bash
Echo $(NAME)
显示
Jerry
赋值是做命令替换:
TIME=$(date +%H%M%S)
FILE=`ls /etc`
FILE=
“
/ var/log/messages
”
Cat $FILE
加
{}
与不加
{}
的区别:
[root@station16 ~]#
[root@station16 ~]# JOB=Network
[root@station16 ~]# echo $JOB
Network
[root@station16 ~]# echo $JOBs
[root@station16 ~]#echo ${JOB}s
Networks
8.
脚本实例
vi dd.sh
#
!
/bin/bash #
使用的
shell
环境
检查语法:
bash �Cn first
。
Sh
有问题则报错,没有则不会
查看是否有执行权限
ll first.sh
chmod u+x first.sh
./first.sh=bash first.sh=sh first.sh
执行
Echo $PATH:
查看执行文件路径变量
增加用户的脚本
useradd.sh
#! /bin/bash
echo "add a user...."
useradd tom
echo "redhat" passwd --stdin tom
echo "add user tom success..."
查看下
/etc
下含
passwd
的文件并显示当前系统时间
#! /bin/bash
cd /etc
ls *passwd*
echo " currenty time is" | date +"%H:%M:%S"
~
[root@station16 ~]# !b
bash show.sh
passwd passwd-
10:51:52
备份
/etc/sysconfig
到
/root/
下,备份文件名包含备份时的系统时间,备份成功后显示成功。
vim back.sh
#! /bin/bash
echo "backup the /etc/sysconfig dir...."
cp -av /etc/sysconfig /root/sysconfig-`date +"%H:%M:%S"`.backup
if [ $? �Ceq 0 ];then
echo "backuping is successful.... the data is `date +"%H:%M:%S"`"
else
echo “you fool…”
fi
切换当前目录至
/etc
,显示当前目录
复制
/etc/skel
至
/home/Jack
改变
/home/jack
及其内部文件的组和其他用户的权限为无
显示
/home/jack
目录自身的权限等信息
新建用户
wendy
把
、
home/jack
的属主修改为
wendy
显示
wendy
的
id
信息
#! /bin/bash
cd /etc
pwd
mkdir /home/jack
cp /etc/skel /home/jack
chmod -R go=--- /home/jack
ls -ld /home/jack
echo "wendy" | useradd wendy
echo "useradd is sucessful ...."
chown -R wendy /home/jack
id wendy
~
~
~