191145685 发表于 2018-8-25 12:47:42

shell基础特性1-9470860

  Bash的基础特性1
  1.命令历史History
  1.1环境变量:
  HISTSIZE:命令历史记录的条数;
  HISTFILE:~/.bash_history;
  HISTFILESIZE : 命令历史文件记录历史的条数
  History -d OFFSET
  -c
  History # : 显示历史中最近的#条命令;
  -a: 手动追加当前会话缓冲区的命令历史至历史文件中;
  1.2调用历史中的命令:
  !#:重复执行执行第#条指令;
  !!:重复执行上一条命令;
  !string:重复执行string这条命令;
  1.3调用上一条命令的最后一个参数:
  !$ | ESC键 . | Alt+.
  2.控制命令历史的记录方式:
  环境变量: HISTCONTROL
  Ignoredups :忽略重复的命令,连续且相同方为“重复”
  Ignorespace :忽略所有以空白开头的命令;
  Ignoreboth:Ignorespace   Ignoredups
  3.修改环境变量值的方式: export 变量名=“值”
  变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;
  4.命令补全:
  4.1bash执行命令:
  内部命令:
  外部命令:bash根据PATH环境变量定义的路径,自左至右宰每个路径搜寻以给定命令;
  直接补全: Tab,用户给定的字符串只有一条唯一对应的命令;则再次Tab会给出列表;
  4.2.路径补全
  把用户给出的字符串当作路径开头,并在其指定上级目录搜索以指定的字符串开头的文件名;
  如果唯一,直接补全。
  不唯一再次Tab,给出列表
  5.命令行展开
  ~ : 展开为用户的主目录;
  ~USERNAME :展开为指定用户的主目录;
  {} :可承载一个以逗号分隔的列表,并将其展 开为多个路径;
  6.命令的执行状态结果:
  成功
  失败
  bash 使用特殊变量$?保存最近一条命令的执行状态结果;
  0 :成功;
  1-255 : 失败
  程序执行有两类结果:1〉程序的返回值;
  2> 程序的执行状态结果;
  7.命令别名(alias)
  (1).alias
  显示当前shell进程所有可用的命令别名:
  (2). aliasNAME=’VALUE’
  定义别名NAME,其相当于执行命令VALUE
  注意:在命令行中定义的别名,进程当前shell进程有效;如果想永久有效,要定义在配置文件中:
  仅对当前用户: ~/.bashrc
  对所有用户:/etc/bashrc
  定义完想要生效需要做一下操作bash进程重新读取配置文件:
  source   /path/to/config_file
  . /path/to/config_file
  (3).撤销别名: unalias
  unalias[-a]name
  Note:如果别名同原命令的名称,则如果要执行原命令,可使用“\COMMAND”;
  8.glob(globbing)bash中用于实现文件名“通配“用于文件名或目录名的匹配,不要与grep混淆
  通配符 :*, ?,[]
  (1) *
  任意长度的任意字符
  a*b:
  aab,ab, a1122b
  (2) . ?
  任意单个字符
  a?b
  a1b.aab
  (3)   []
  匹配制定范围内的任意单个字符
  : a,b,c   中选一个
  :0-9任意其中一个数字
  :不区分字符的大小写
  : 大写
  (4)[^]
  匹配制定范围之外的任意单个字符
  专用字符集合:
  [:digit:]: 任意数字,相当于
  [:alnum:] : 任意数字或字母
  [:lower:] : 任意小写字母,相当于[^A-Z]
  [:upper:] : 任意大写字母
  [:alpha:] : 任意大小写字母
  [:alnum:] : 任意字母或数字
  [:space:] : 空白
  [:punct:] : 标点符号
  练习1:
  1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录:
  # ls -d /var/l**[[:lower:]]
  2.显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录:
  # ls -d /etc/^*[^0-9]
  3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录:
  # ls /etc/[^[:alpha:]][[:alpha:]]*
  4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/chang目录下:
  # cp -a/etc/m*[^0-9]/tmp/chang
  5.复制/etc目录次啊,所有以.d结尾的文件或目录至/tmp/chang.com目录中:
  # cp -a /etc/*.d/tmp/chang.com
  6.复制/etc目录次啊,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/cc目录中:
  # cp -a /etc/*.conf /tmp/cc
  9.bash 的快捷键:
  ctrl+l:清屏,相当于clear;
  ctrl+a: 跳转至命令开始处
  ctrl+e : 跳转至命令结尾处
  ctrl+c : 取消命令的执行
  ctrl+u :删除命令行首至光标所在处的所有内容;
  ctrl+k : 删除光标所在处至命令行尾部的所有内容;
  10.bash的I/O重定向及管道
  程序: 指令+数据
  读入数据: input
  输出数据: output
  打开的文件都有一个fd: file descrtptor (文件描述符)
  标准输入:keyboard , 0
  标准输出:monitor,   1
  标准错误输出: monitor,2
  11.I/O重定向: 改变标准位置
  11.1输出冲定向: COMMAND > NEW_POS, COMMAND >> MEW_POS
  >: 覆盖重定向,目标文的原有无内容会被清除;
  >>: 追加重定向,新内容会追加至目标文件尾部;
  11.2 #set–C: 禁止将内容覆盖输出至已有文件中;(只对当前进程有效)
  强制覆盖: >|
  #set+C:
  11.3 (1) 2>: 覆盖重定向错误输出数据流:
  2>>: 追加重定向错误输出流;
  (2)标准输出和错误输出各自定向至不同位置:
  COMMAND >/PATH/to/file.out   2> /path/to/error.out
  11.4合并标准输出和错误输出同一个数据流进行重定向:
  &> : 覆盖重定向       &>> :追加重定向
  COMMAND > /path/to/file.out 2> &1
  COMMAND >> /path/to/file.out 2>> &1
  11.5输入重定向: <
  显式使用:tr
  隐式使用:….
  12.Tr命令:转换或删除字符
  tr … SET1
  HERE Documentation :
页: [1]
查看完整版本: shell基础特性1-9470860