设为首页 收藏本站
查看: 702|回复: 0

shell -bash

[复制链接]

尚未签到

发表于 2018-8-18 11:28:37 | 显示全部楼层 |阅读模式
  Shell是用户和操作系统之间完成交互式操作的一个接口程。
  bash是Linux操作系统的默认shell程序。
  我们可以使用cat /etc/shells   查看当前系统中所有可以支持的安全shell。
  也可以直接输入shell命令的名字,切换shell
[root@localhost ~]# sh  
sh-4.2# bash
  注意:在更换shell时,最好在bash中更换其他shell,若已经切换其他shell,可以用exit命令返回
  bash的特性:
  1.alias:定义或显示别名
  当我们只输入alias不加任何参数,则显示所有的命令的别名
[root@localhost ~]# alias  
alias cc='mkdir -pv'
  
alias egrep='egrep --color=auto'
  
alias fgrep='fgrep --color=auto'
  
alias grep='grep --color=auto'
  
alias l.='ls -d .* --color=auto'
  
alias ll='ls -l --color=auto'
  
alias ls='ls --color=auto'
  
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  定义命令别名:alias [别名]='命令 +[参数]'
alias ww='rm -rfv'  2.unalias:删除命令别名
  使用方法:unalias 命令别名
[root@localhost ~]# unalias ww  
[root@localhost ~]# unalias cc
  
[root@localhost ~]# alias
  
alias egrep='egrep --color=auto'
  
alias fgrep='fgrep --color=auto'
  
alias grep='grep --color=auto'
  
alias l.='ls -d .* --color=auto'
  
alias ll='ls -l --color=auto'
  
alias ls='ls --color=auto'
  
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  定义别名第二类:
  在用户主机中会有一个私有的bash的配置文件,就在用户的家目录中的一个隐藏文件,文件名为.bashrc,其主要功能用来保存用户别名的定义。
  首先我们利用ls -a 找到.bashrc
  随后使用vim编辑命令别名,格式如下 DSC0000.png
  然后保存关闭即可
  注意:编辑保存之后,在当前已经运行的bash中并不会立即生效,需要重新加载此文件才能使配置生效。
  具体方法有俩种:
  1.重启bash,注销后再次登录即可
  2.使用source或者.命令执行.bashrc文件
[root@localhost ~]# . .bashrc  
-bash: /root: 是一个目录
  
-bash: /root: 是一个目录
  
-bash: /root: 是一个目录
  
-bash: /root: 是一个目录
  
-bash: /root: 是一个目录
[root@localhost ~]# alias  
alias cc='mkdir -pv'
  bash的快捷键
  C:Ctrl键
  M:Alt键
  E:ESC键
  DEL:Backspace键
  C+l:清屏,相当于clear命令
  C+a:将光标跳转至当前行首
  C+e:将光标跳转至当前行尾
  C+k:删除命令行编辑模式的光标所在位置至行尾的内容
  C+u:删除命令行编辑模式的光标所在位置至行首的内容
  C+c:结束前台进程
  M+.:引用上一个命令中的最后一个参数;(在XShell中不能用)
  E+.:功能同M+.
  三:命令历史history 命令:保存记录该用户之前使用过的命令
[root@localhost ~]# history  
    1  man su
  
    2    cd
  
    3  man cd
  
    4  ifconfig
  
    5  man su
  
    6  ifconfig
  
    7  echo
  
    8  echo -n this time
  
    9  echo this time
  
   10  echo -e The year is 2017 \n Today is March 5
  重复执行历史缓冲区中的命令
  !NUMBER:重复执行历史缓冲区中编号为“NUMBER”的命令
  !STRING重复执行历史缓冲区中最近的以“STRING ”开头的命令
  !?STRING重复执行历史缓冲区中包含了“STRING”最近的一次命令
  !-NUMBER重复执行历史缓冲区中倒数第“NUMBER”条命令
  使用上,下键可以从历史缓冲区中调用命令,按回车键执行
  C -r:在历史缓冲区中实施搜索,回车后执行
  !$:在历史缓冲区中调用最后一个命令的最后一个参数
  !^:在历史缓冲区中调用最后一个命令的第一个参数
  !:NUMBER:在历史缓冲区中调用最后一个命令的第"NUMBER"个参数
  !SEQUENCE:NUMBER:调用历史缓冲区中“SEQUENCE”命令的第“NUMBER”位置参数
[root@localhost ~]# !745  
cat a.txt b.txt
  

  
[root@localhost ~]# !cat
  
cat a.txt b.txt
  

  
[root@localhost ~]# !^
  
a.txt
  
bash: a.txt: 未找到命令...
  在bash中与命令历史相关的内置变量
  HISTSIZE:历史缓冲区中能够保存的最大条目数量,默认1000
  HISTFILESIZE:~/.bash_history文件中能够保存的命令历史的最大条目数量,默认值是1000;
  HISTTIMEFORMAT:在命令历史缓冲区中记录历史命令时,同时记录命令执行的时间戳标记;可以使用date命令的FORMAT来表示时间的记录格式;默认值为空
  HISTCONTROL:控制命令历史的记录方式
  ignoredups:忽略连续且相同的命令被记录到历史缓冲区;此为默认值
  ignorespace:不将把空格开头的命令记录到历史缓存区;
  ignoreboth:上述俩种情况都不被记录到缓冲区;
  HISTCONTROL使用方法:HISTCONTROL='以上参数'
  四:命令补全
  1.构成命令字符串的补全(TAB键补全)
  参考PATH变量中的路径,对命令进行补全;
  如果给出的字符串在PATH变量对应的路径中是唯一的,则直接补全命令
  如果给出的字符串在PATH变量对应的路径中不唯一的,则bash给出提示
  2.命令参数所对应的字符串的补全(补全的是给出的路径)
  五:命令行展开
  ~:bash会自动将其展开为当前登录用户的家目录
[root@localhost ~]# ~  
-bash: /root: 是一个目录
  ~STRING;bash会自动将其展开为以“STRING”为用户名的家目录
  ~+:调用bash内置变量"PWD"的值
  ~-:调用bash内置变量"OLDPWD"的值
  2.{}展开
  在"{}"中,可以填充一个以","分隔的路径列表,bash会将其展开为多个独立的路径
  ~]# cp 1.txt{,.bak}
  1.txt{,.bak}==1.txt 1.txt.bak
[root@localhost ~]# mkdir -pv /china/{hn,hb,jl,hlj,qhd}/{lin,lina,linb}/class  
mkdir: 已创建目录 "/china"
  
mkdir: 已创建目录 "/china/hn"
  
mkdir: 已创建目录 "/china/hn/lin"
  
mkdir: 已创建目录 "/china/hn/lin/class"
  
mkdir: 已创建目录 "/china/hn/lina"
  
mkdir: 已创建目录 "/china/hn/lina/class"
  
mkdir: 已创建目录 "/china/hn/linb"
  
mkdir: 已创建目录 "/china/hn/linb/class"
  
mkdir: 已创建目录 "/china/hb"
  
mkdir: 已创建目录 "/china/hb/lin"
  
mkdir: 已创建目录 "/china/hb/lin/class"
  
mkdir: 已创建目录 "/china/hb/lina"
  
mkdir: 已创建目录 "/china/hb/lina/class"
  
mkdir: 已创建目录 "/china/hb/linb"
  
mkdir: 已创建目录 "/china/hb/linb/class"
  
mkdir: 已创建目录 "/china/jl"
  
mkdir: 已创建目录 "/china/jl/lin"
  
mkdir: 已创建目录 "/china/jl/lin/class"
  
mkdir: 已创建目录 "/china/jl/lina"
  
mkdir: 已创建目录 "/china/jl/lina/class"
  
mkdir: 已创建目录 "/china/jl/linb"
  
mkdir: 已创建目录 "/china/jl/linb/class"
  
mkdir: 已创建目录 "/china/hlj"
  
mkdir: 已创建目录 "/china/hlj/lin"
  
mkdir: 已创建目录 "/china/hlj/lin/class"
  
mkdir: 已创建目录 "/china/hlj/lina"
  
mkdir: 已创建目录 "/china/hlj/lina/class"
  
mkdir: 已创建目录 "/china/hlj/linb"
  
mkdir: 已创建目录 "/china/hlj/linb/class"
  
mkdir: 已创建目录 "/china/qhd"
  
mkdir: 已创建目录 "/china/qhd/lin"
  
mkdir: 已创建目录 "/china/qhd/lin/class"
  
mkdir: 已创建目录 "/china/qhd/lina"
  
mkdir: 已创建目录 "/china/qhd/lina/class"
  
mkdir: 已创建目录 "/china/qhd/linb"
  
mkdir: 已创建目录 "/china/qhd/linb/class"
  六:命令的执行结果
  bash中,命令的结果有俩种
  1.命令的输出结果:根据用户的需求获取到的命令执行的正常输出结果
[root@localhost ~]# echo lll  
lll
  命令引用或者命令替换
  ``相当于$()
  ``:反引号;
  示例:创建一个文件,文件名字为test-系统时间
  ~]#touch test-`date +%F+%H+%M+%S`
  2.执行命令的状态返回值
  与此前的一个命令是否成功执行相关的返回内容
  bash使用一个特殊的内置变量来保存其内容:$?
  $?实际上保存的是一个数值,其取值范围: 0-255
  其中:
  0:表示命令执行成功
  1-255:表示命令执行失败
  1,2,127:bash内置的命令执行失败的状态返回值
  1:表示小问题
  2:严重问题
  127:表示命令本身出现的问题
  其余数字:用户可以自定义的失败状态返回值
[root@localhost ~]# cp a.txt b.txt  
[root@localhost ~]# $?
  
bash: 0
  七:引用功能
  '':强引用
  被单引号引用的内容,bash在处理时,一律视为普通字符,即使其本身是bash定义的具有特殊功能和作用
  字符亦是如此,但单引号本身除外
  "":弱引用
  被双引号引用的内容,有些特殊字符仍然保留其特殊含义
  八:转义功能
  \:bash所定义的转义字符:大多数情况下,"\"只能转义其后面的一个字符
  \COMMAND:取消命令的别名,而使用命令本身的功能
  九:Globbing--文件名通配符,简称为glob
  *:匹配任意长度的任意字符的字符串,(某些特殊位置的"."字符不能匹配)
  ?:匹配任意的单个字符(某些特殊位置的"."字符不能匹配)
  []:匹配指定范围内的任意单个字符,必须匹配且只能匹配一个字符
  指定范围的方法:
  1.枚举法:列出所有有效字符
  2.范围指定:
  [0-9]:表示单个的十进制数字
  [a-z]:a,A,b,B,c,C....x,X,y,Y,z
  [A-Z]:A,b,B,c,C....x,X,y,Y,z,Z
  3.bash内建字符集
  [:lower:]:所有的小写字母
  [:upper:]:所有的大写字母
  [:alpha:]:所有的字母
  [:digit:]:所有的单个十进制数
  [:alnum:]:所有的字母和十进制数字
  [:punct:]:所有的符号
  [:space:]:空白符,包括空格和制表符
  4.反向匹配
  ^
  示例:~]# ls a[^[:digit:]]??     表示文件名的第二个字符不能是数字
  注意:当中括号中有脱字符表示字符集取反向匹配时,要注意*的使用;*的通配范围会导致
[root@localhost ~]# ls [:alnum:]??  
a b
  

  
[root@localhost ~]# ls a????
  
a.txt
  

  
aaaaa:
  十:管道
  |
  管道通常连接多个命令的;将管道符号前面的命令的执行的输出结果通过管道传递给管道符号后面的命令
  ,让后面的命令将前面的输出结果当做参数来使用
  wc命令:
  wc - 输出文件中的行数、单词数、字节数
  格式:wc[OPTION]...[FILE]...
  常用选项:
  -c,--byte:仅显示文件中的字节数
  -m,--chars:仅显示文件中的有效字符的数量
  -l,--lines:仅显示文件的行数
  -w,--words:仅显示文件中字的数量
  注意:1.一般来讲,凡是被管道连接的命令,都应该在执行成功之后完成命令结果的输出,否则管道无意义
  2.管道不是万能的,有些场合无法使用管道
  十一:输入输出重定向
  在使用计算机的时候,实现某个功能的主体是程序!
  程序=指令+数据
  数据至关重要!
  文件,IO-Input/Output
  在Linux系统中,能够完成输入和输出功能的实体:文件
  可以用于输入的设备:文件
  键盘,文件系统中的常规文件,网卡设备,声卡设备,磁盘设备
  可以用于输出的设备:文件
  显示器,文化系统中的常规文件,网卡设备,声卡设备,磁盘设备
  在内存中使用文件的方式是定义文件描述符,一个文件描述符对应一个文件;
  0:表示标准输入,stdin  从键盘输入的数据流
  1:表示标准输出,stdout到显示器的输出数据流
  2:表示标准错误,stderr 到显示器的错误数据流
  输入输出重定向:采用非标准设备实现的IO操作
  输入重定向
  <
  输出重定向
  >:覆盖输出重定向
  ~]# set -C   开启防止意外覆盖原文件的开关  可以使用">|"完成覆盖重定向输出的操作,
  无需关心是否开启此开关
  ~]# set +C   关闭防止意外覆盖原文件的开关
  >>:追加输出重定向
  错误重定向
  2>:覆盖错误重定向
  2>>:追加错误重定向
  合并标准输出和标准错误的重定向:
  1.COMMAND{>|>>}/PATH/TO/SOMEFILE 2>&1
  2.&>,&>>
  特殊的设备文件
  /dev/null: BlackHole,BitBucket(垃圾桶)
  /dev/zero: 泡泡机,吐零机;
  bash中的其他特殊符号
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-553395-1-1.html 上篇帖子: 小SHELL脚本 下篇帖子: shell study
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表