浅入了解shell基础

 
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
~
~
~

你可能感兴趣的:(基础,shell,职场,休闲)