bash的特性

bash的特性

Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell。事实上,还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用

bash是大多数Linux系统以及Mac OS X默认的shell,它能运行于大多数类Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。

bash特性之一:命令别名

获取当前用户可用的别名的定义:

# alias
  定义别名:

# alias  NAME=‘COMMAND‘
  生命周期:当前shell进程;

# unalias NAME

撤消别名:

bash的特性之二:命令历史

shell进程会保存其会话中用户曾经执行过的命令;命令通过其“历史文件”来持久保存此前执行过的命令;每个用户都有其自己专用的历史文件;

HISTSIZE:shell进程的缓冲区保留的历史命令的条数;

HISTFILESIZE:命令历史文件可保存的历史命令的条数;

默认均为1000;

1   # echo $HISTSIZE
2   1000
3   # echo $HISTFILESIZE
4   1000
       HISTFILE:当前用户的命令历史文件;

~/.bash_history

查看命令历史列表:

1   # history
   命令用法:

history -c:清空命令历史;

history  -d  OFFSET:删除指定的条目;

1   # history -d 156
  -a        将当前缓冲的历史行追加到历史文件中

-n        从历史文件中读取所有未被读取的行

-r        读取历史文件并将内容追加到历史列表中

调用命令历史列表中的命令以重执行之目的:

!#:再一次执行历史列表中的第#条命令;

1  # history
2  ....
3  72  cat test
4  73  history
5  # !72
6  cat test
7  Hello World
           !!:再一次执行上一条命令;

1  # cat test
2  Hello World
3  # !!
4  cat test
5  Hello World

        !STRING:再一次执行命令历史列表中最近一个以指定的STRING开头的命令;

1  # !cat
2  cat test
3  Hello World
           调用上一条命令的最后一个参数:

快捷键:ESC, .
    Alt+.

!$:给出的字符组合

显示最近的n条件命令历史:

history  #控制命令历史的记录方式:

通过HISTCONTROL环境变量进行,其取值:

ignoredups:忽略重复的命令;重复是指连续且相同的令;

ignorespace:以空白字符开头的命令不记入历史;

ignoreboth:上述两者同时生效;

修改变量值的方式:

NAME=‘VALUE‘

1  # echo $HISTCONTROL
2  ignoredups
3  # HISTCONTROL="ignoreboth"
4  # echo $HISTCONTROL
5  ignoreboth

bash特性之三:快捷键

Ctrl+a:跳至命令行首;

Ctrl+e:跳至命令行尾;

Ctrl+k:删除光标所在处至尾部的内容;

Ctrl+u:删除行首至光标所在处的内容;

bash的特性之四:命令补全和路径补全

命令补全:

shell程序在接收到用户执行命令的请求且分析完成之后,最左侧字符串将被当作命令去查找;

 查找机制:

(1) 查找内部命令;

(2) 查找外部命令:

1、去$PATH变量所指定的各路径下,自左而右逐个搜索各目录下的文件名;2、给定的打头的字符串如果能惟一标识某命令程序文件的文件名,则直接补全;3、不能惟一标识,再击tab可给列表;4、错误:没有任何命令可被此打头字符串标识;

路径补全:

在给定的起始路径的上级目录下,以对应路径下的打头字符串来逐一匹配上级目标下的每个文件:

惟一标识:tab补全;

不能惟一标识:tab, tab给出列表;

错误路径:没有响应;

bash的特性之五:命令行展开:

把命令行的给定的特殊符号自动替换为相应字符串的机制;

~: 自动替换为用户家目录;

~USERNAME:自动替换为指定用户的家目录;

{}:可承载一个以逗号分隔的路径列表,能够将其展开为多个独立路径;

    例如:

            /tmp/{a,b,c} /tmp/a /tmp/b /tmp/c

            /tmp/{a,b}/z /tmp/a/z /tmp/b/z

1  # cd ~
2  # pwd
3  /root
4  # cd ~testuser
5  testuser]# pwd
6  /home/testuser

bash特性之六:命令的执行状态结果:

命令的正常输出结果:命令的返回值;

 通过引用来保存下来或直接调用——“命令引用”

‘COMMAND‘

$(COMMAND)

1  # ls -ld ‘pwd‘
命令的执行状态结果:

成功:0

失败:1-255

1  # echo "Helllo World"
2  Helllo World
3  # echo $?
4  0
5  # echoa "Hello World"
6  -bash: echoa: command not found
7  # echo $?
8  127
       bash用一个特殊变量来保存最一次执行的命令的状态结果:

$?

bash中的引用:

‘‘:强引用

"":弱引用

“:命令引用

1  # echo ‘$PATH‘
2  $PATH
3  # echo "$PATH"
4  /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin5  :/usr/bin:/root/bin
6  # echo ‘pwd‘
7  /home/testuser

bash的特性之七:glob

  
  glob:文件名通配;快速引用多个文件;文件名整体匹配度检测;
   元字符:基于元字符可编写匹配模式(pattern);

   *:匹配任意长度的任意字符;

,pap,

p*:pa, p

?:匹配任意单个字符;

        p?, p?a, p??

p??: pa, pad,

[ ]:匹配指定集合内的任意单个字符;

        [a-z], [A-Z]:不区分字符大小写;

[0-9]

    [a-z0-9][[:upper:]]:所有大写字母;[[:lower:]]:所有小写字母;        [[:digit:]]:所有的数字;[[:alpha:]]:所有字母;[[:alnum:]]:所有字母和数字;[[:space:]]:空白字符;[[:punct:]]:标点符号;

{FNXX==XXFN}:匹配指定集合外的任意单个字符;
时间: 2024-12-05 18:27:40

bash的特性的相关文章

Linux之bash shell特性

一.shell是什么? Shell 本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 如图shell是一个应用程序,是用户管理应用程序的一个接口. 二.广义上shell的分类 GUI:图形用户界面 KDE,GNOME,XFCE CLI:

bash的特性(一)

一.Shell 说到bash,首先就必须先提一下shell.Shell是什么呢?Shell是一个C语言编写的给用户提供交互的接口程序.用户的大部分操作都是通过shell完成的. 广义上Shell主要分为两类: 1.GUI图形用户界面:主要有KDE.GNOME.XFCE等 2.CLI命令行界面:bash.zsh.fish.sh.csh.tcsh等.各个发行版主要使用bash. 二.bash的特性 (一)命令别名 在linux的使用和管理过程中,将会用到大量的命令,我们可以通过命令别名来避免一些常用

权限管理2 以及bash的特性 快捷键,补全功能以及变量的类型,登录类型,脚本

权限管理: owner          group         other 属主              属组            其它 权限:read   write     execute r           w            x 文件: -r:可以使用文件查看类的命令来显示相关内容 -w:可以使用编辑器修改内容 -x:可以将其发起一个进程 目录: -r:可以使用ls命令查看目录内容的的文件信息 -w:可以创建 删除文件 -x:可以使用ls -l命令查看内容的文件信息,

linux学习之路之bash及其特性

我们知道当我们用鼠标点击,或输入一个命令,系统就玩帮我们完成一个任务,那么当我们点击一个链接时,系统由是如何知道要去完成相应的操作呢?这是因为通过shell来完成的. 那么什么是shell呢? shell就是用户和操作系统之间的一个接口,通过这个接口shell接受来自用户的命令,并调用相应的应用程序来呼叫kernel来处理相应的工作. 在linux系统上面存放着多种类型的shell,这些shell存放在/etc/shells文件里,默认RedHat使用的shell为bash 下面介绍一些bash

谢烟客---------Linux之Bash基础特性条件测试&&自定义退出状态码(6)

条件测试 判断某需求是否满足,需要由测试机制来实现. 根据命令的执行状态结果,表达不同的测试条件 1.根据id命令的执行状态结果,判断用户是否存在 [[email protected] ~]# id root uid=0(root) gid=0(root) groups=0(root) [[email protected] ~]# echo $? 0 [[email protected] ~]# id help id: help: no such user [[email protected] 

bash的特性总结

什么是bash:       shell作为用户与计算机内核交互的接口,是用户与计算机沟通的桥梁,而bash(borne again shell)是众多shell里面最为流行一种,bash作为众多shell里面的一种有着众多的特性,掌握bash的众多特性将会是我们今后学习linux必经之路.       首先介绍一下bash的特性之一       命令历史:这个特性是将用户之前执行过的命令保存到缓存当中,通过上下键以及history命令的特殊选项来方便用过顺利完成操作系统功能.键入不带任何选项的

Linux之bash的特性

bash的特性(1)常用组合快捷键:,ctrl+d Ctrl+a: 跳转至命令行首 Ctrl+e: 跳转至命令行尾 Ctrl+u: 删除命令行首至当前光标所在处之前的所有内容 Ctrl+k: 删除当前光标所在处至命令行尾的所有内容 Ctrl+l: 清屏 Ctrl+c: 中止或取消 Ctrl+z: 把当命令送至后台 Ctrl+d:回到登陆用户登陆界面 (2)命令补全:命令的补齐,参数中目录或文件的补齐 当输入命令的部分是唯一的时候按TAB键就可以不全剩下的部分 当输入命令的部分不是唯一的,按两次T

5、自学——Linux的学习进度与任务【shell中bash的特性】

shell中bash的特性 shell中bash的特性 bash特性之一:命令行展开   把命令行的给定的一个特殊符号自动替换为别的字符串的机制 目录: 命令:cd [内置命令] 工作目录:当前所处的目录 cd:change directory(切换目录) cd 目标路径(不能是一个文件必须是一个目录) 所有从根起始的都是绝对路径:/文件名 基名:路径最后一个文件的名字  /x/y/z/m/n: 目标路径  /x/y/z/m: 是目录名或者路径名   两个命令: 获取路径的基名:   # bas

bash及其特性笔记

bash及其特性 shell: 外壳 GUI: Gnome,KDE,Xfce CLI: sh, csh, ksb, bash, tcsh, ksh, zch 程序: 进程 允许同一个用户登陆多次,互不相干,进程独立 进程: 在每个进程看来,当前主机上只存在内核和当前进程 进程是程序的副本,进程是程序执行的实例 用户工作环境: # $ shell, 子shell bash: 1. 命令历史 2. 管道.重定向 3. 命令别名 4. 命令行编辑 5. 命令行展开 6. 文件名通配 7. 变量 8.