分享

bash的特性

 微笑如酒 2018-04-11

这是我在寒假学习Linux时所做的笔记,若有什么不足之处大家可以留言呐~

bash的特性

1.命令历史:history

-c:清空当前历史命令;-d OFFSET [n]:删除指定位置的命令;-w:将当前历史命令缓冲区命令写入历史命令文件中(HISTSIZE(命令历史缓冲区大小)默认为1000)
  • 命令历史的使用技巧:

!n:执行命令历史中的第n条命令;!-n:执行命令历史中倒数第n条命令;!!:执行上一条命令;!string:执行命令历史中最近一个以指定字符串开头的命令!$:引用上一个命令的最后一个参数Esc松开后按 . :引用上一个命令的最后一个参数Alt+ . :引用上一个命令的最后一个参数

2.命令补全,路径补全

  • 命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次TAB,可以给出列表;否则将直接补全;

  • 路径补全:搜索我们给出的起始路径下的每个文件,并试图补全;

3.命令别名:alias

alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号'将原来的命令引起来,防止特殊字符导致错误。

  • alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。

  • alias 新的命令=’原命令 -选项/参数’
    (有选项或参数时要加单引号,若只有命令可以不加单引号)

  • 要删除一个别名,可以使用 unalias 命令

  • alias 可查看所有别名

比如在.bashrc文件的最后一行加入 alias ..='cd ..',然后再source .bashrc更新一下配置文件,这样以后只要输入两个点就可以返回上一层目录啦~

4.命令替换:

把命令中某个子命令替换为其执行结果的过程

$(COMMAND)或者 `COMMAND`echo “The current directory is $(pwd).” #这样就会输出当前目录

【总结】bash支持的引号:

` `:命令替换“”:弱引用,可以实现变量替换‘ ’:强引用,不完成变量替换

5.命令行编辑:

  • 光标跳转:

    • Ctrl+A:跳到命令行首

    • Ctrl+E:跳到命令行尾

    • Ctrl+U:删除光标至命令行首的内容

    • Ctrl+K:删除光标至命令行尾的内容

    • Ctrl+L:清屏

6.命令行展开

在Linux bash中可以使用命令行展开特性一步完成需要分开成多步完成的操作,达到事半功倍的效果。在Linux指令参数位置使用{}将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开。

  • 例如

    /tmp/{x,y}    #生成/tmp/x和/tmp/ymkdir {1..10}    #生成1-10为名的文件夹mkdir -p  {1..10}/{1..10}    #在名为1-10的文件夹里再生成1-10为名的文件夹

7.文件名通配:globbing

# man 7 glob 可获得以下列表:*:任意长度的任意字符?:任意单个字符[ ]:匹配指定范围内的任意单个字符  [a-z], [A-Z], [0-9], [a-zA-Z]  [[:space:]]:空白字符  [[:punct:]]:标点符号  [[:lower:]]:小写字母  [[:upper:]]:大写字母  [[:alpha:]]:大小写字母  [[:digit:]]:数字  [[:alnum:]]:数字和大小写字母  [^]:匹配指定范围之外的任意单个字符  [^0-9]:非数字  [^[:alpha:]]:非字母

8.管道及重定向

I/O重定向:改变数据输入/输出来源

>:覆盖输出,原有内容被覆盖;>>:追加输出,保留原有内容,在尾部新增新内容;set -C:禁止对已经存在文件使用覆盖重定向,若要强制覆盖输出,则使用 >|;set +C:关闭上述功能;2>:只能重定向错误输出,不能输出标准输出;2>>:追加,重定向错误输出;&>:重定向标准输出或错误输出至同一个文件;<>
<:here document,在此处生成文档,后一般加="" eof(end="" of="" file)="" 或end,表示文档结束标记。#="" cat="" mp/myfile.txt=""> The first line.> The second line.> EOF表示在 myfile.txt 文件中追加以上两行(EOF 行不追加)。所以,可以以这种方式在脚本中生成文档。

管道

前一个命令的 输出,作为后一个命令的 输入(组合小命令完成复杂任务)命令1 | 命令2 | 命令3 | …

比如:在我的答案·生信编程直播(第一题)-人类基因组的外显子区域到底有多长中,我就使用了管道来解决问题~

tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。

-a:向文件中重定向时使用追加模式;



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多