Shell

来源:互联网 发布:机器人说话软件 编辑:程序博客网 时间:2024/05/16 11:54

shell简介

  1. 什么是shell
    • shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。
    • shell是命令解析器,用户输入命令,它去解析。
    • shell类型 ash、bash、ksh、csh、tcsh
    • cat /etc/shells 看系统下的shell
    • echo $SHELL 看当前用户运行的shell
    • 程序在shell中运行
    • ls命令执行过程分析
    • shell中可以运行子shell
    • /bin/csh 退出子shell
    • linux下默认的shell是bash
  2. 存取权限与安全
    文件和目录的权限(-rwxr—r–)
    setuid(suid/guid) (chmod u+s g+s file)
    chown和chgrp(chown user file/chgrp group file)
    umask (umask nnn) (文件创建时的缺省权限位)

    • 文件和目录的权限(-rwxr–r–)

      文件的权限 硬链接数 用户名 用户组 文件大小 最近修改时间 文件名称 drwxr-xr-x 2 test test 4096 un 23 08:07 cppsocket1
    • 目录 一般文件 快捷方式 字符设备 块设备 socket设备文件 管道文件 -d - -l -c -b -s -p
    • chmod 改变文件或目录的权限位

      1. 非数字方式
        读 写 执行 s(具有超级用户)t(执行文件在缓存)eg: chmod u=rwx, g+w, o+r myfile
        注意:S位存在的意义:写一个程序,被执行是,临时拥有超级用户权限,执行完毕以后,有恢复普通身份,例如,写一个数据库脚本,这个数据库脚本具有超级管理员身份运行,运行完毕以后,恢复普通身份,避免破坏系统。
      2. chmod数字方式
        chmod mode file chmod 775 file
        r w x 数字代表 4 2 1
    • setuid(suid/guid)(chmod u+s, g+s file)

    • chown和chgrp(chown use file/chgrp group file)

      1. chown改变文件、目录所在的用户和用户组
      2. chgrp改变文件、目录所在的用户和用户组
    • umask(umask nnn) 用来指定,用户创建文件、目录,默认的权限位

shell 脚本

使用shell脚本的原因
* 功能强大
* 节约时间

  • shell脚本基本元素
# !/bin/bash#shell脚本mytext="hello world"echo $mytext;

注:

易犯错误:
1) 第一行#不是注释 其他#都是注释;
2) echo $mytextA;写错现象;
3) 写错现象#!bin/bash
4) 脚本如果没有执行权限,如何办 chmod 755 hello.sh

  • shell脚本运行方式
    ./01shell.sh $PATH

  • shell特性

    • 别名
      1. 通过alias 查看本用户下的alias配置
      2. 自定义别名alias ll=‘ls –I –color=tty’
      3. .bashrc该文件配置了bash的各种配置
    • 后台处理
      1. nohup tar –cvf 111.tar.gz 将压缩文件的任务后台运行
      2. jobs –l 可以查看后台正在运行的命令
    • 管道
      1. 把一个命令的输出作为另外一个命令的输入 ls -l| sort
    • 重定向 < 输入 >输出
      1. 与管道相关,可以改变程序运行的输入来源和输出地点
      2. sort<myfile.txt >myfile+sort.txt
    • 模式匹配
      1. 显示以txt为扩展的文件或者显示以a开头的文件,这种能力叫做模式匹配
      2. 正则表达式
    • 特殊字符
      1. 双引号(“”): 用来使shell无法认出空格、制表符和其他大多数特殊字符,比如:建立一个带空格的文件touch “wang bao ming”。
      2. 单引号(‘): 用来使shell无法认出所有特殊字符。
      3. 反引号(` ): 用来替换命令。
      4. 反斜杠(\ ): 用来使shell无法认出的特殊字符,使其后的字符失去了特殊的含义,转义字符。
      5. 分号(; ): 允许在一行上放多个命令。mv 1.txt 2.txt; mv 2.txt 3.txt;
      6. &:命令后台执行
      7. 括号():创建成组的命令
      8. 大括号{}:创建命令块。
      9. 竖杠(| ): 管道标示符
      10. < > &:重定向表示符
      11. * ? [ ] !:表示模式匹配
      12. $: 变量名的开头
      13. #: 表示注释(第一行除外)
      14. 空格、制表符、换行符:当做空白


 变量和运算符

本地变量
影响变量的命令
环境变量
引号
变量替换
运算符
位置变量
表达式变量
标准shell变量
运算符的优先级
特殊变量

简介:什么是shell变量?本地变量,环境变量,变量替换(显示变量),位置变量,标准变量,特殊变量,影响变量的命令

  • 本地变量
    1. 本地变量在用户现有的shell生命期的脚本中使用。
    2. 定义:variablename=value
    3. 使用: $MYVARecho $MYVARecho ${MYVAR}
    4. 注:定义本地变量:MYVAR=”test” = 左右不要有空格
    5. set显示本地所有的变量
    6. 定义只读本地变量 : readonly variablename 注: readonly myvar1=”test2” ;myvar1=”test2”; bash会报错误

注: 每登录一个终端,都会运行一个shell程序,这个本地变量,就保存在这个shell程序中;如果再新登录,将启动新的shell程序,与原来的shell不同。

  • 环境变量

环境变量用于所有用户进程(经常称为子进程)。登录进程称为父进程。shell中执行的用户进程均成为子进程。不像本地变量(只用于现在的shell),环境变量可用于所有子进程,这包括编辑器、脚本和应用程序。

  1. $HOME/.bashrc(/etc/profile,所有用户都使用的profile)
  2. 声明环境变量 export mytest="test"
  3. 查看新增的环境变量 env

未完,待续

0 0