bash 订阅
Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。一个名为Shellshock的安全漏洞在2014年9月初被发现,并迅速导致互联网上的一系列攻击。这个漏洞可追溯到1989年发布的1.03版本。 展开全文
Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。一个名为Shellshock的安全漏洞在2014年9月初被发现,并迅速导致互联网上的一系列攻击。这个漏洞可追溯到1989年发布的1.03版本。
信息
外文名
bash
类    别
计算机程序
命令语法
Bourne shell命令语法的超集
中文名
重击
全    称
Bourne-Again Shell
bash概念
Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell [1]  。事实上,还有许多传统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的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只有使用了Bourne的特殊变量或内置命令的脚本才需要修改。 bash的命令语法很多来自Korn shell (ksh) 和 C shell (csh), 例如命令行编辑,命令历史,目录栈,$RANDOM 和 $PPID 变量,以及POSIX的命令置换语法: $(...)。作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名、文件名、变量名等等。 [2] 
收起全文
精华内容
参与话题
问答
  • docker 进入容器中bash 更换阿里源

    万次阅读 2020-04-15 06:35:48
    首先通过命令进入docker容器中的bash docker exec -it 容器id或容器名 bash 编辑软件源 首先需要安装vim apt-get install vim -y 编辑源 vim /etc/apt/sources.list 直接将前面的域名换成阿里的就行如下图 ...

    在Haproxy容器中需要安装Keepalived   换源的操作

    首先通过命令进入docker容器中的bash

    docker exec -it  容器id或容器名 bash

    编辑软件源 首先需要安装vim

    apt-get install vim -y

    编辑源

    vim /etc/apt/sources.list

    直接将前面的域名换成阿里的就行如下图

    mirrors.aliyun.com

     然后更新

    apt-get update

    如下图没有报错误信息表示成功 

    展开全文
  • GitHub教程 Git Bash详细教程

    万次阅读 多人点赞 2018-01-17 16:12:58
    作为一个萌新,我翻遍了网上的Git Bash教程,可能因为我理解力比较差,经常看不懂教程上在说什么。 (。-`ω´-)所以我决定自己一边摸索一边记录,写教程造福那些理解力跟我一样差的人…… 第一篇教程会涉及...

    作为一个萌新,我翻遍了网上的Git Bash教程,可能因为我理解力比较差,经常看不懂教程上在说什么。 (。-`ω´-)所以我决定自己一边摸索一边记录,写教程造福那些理解力跟我一样差的人……



    这个主要介绍Git Bash的使用教程。

    1 下载安装

    首先抛一个Windows用户的下载链接:Git for windows
    下载下来之后直接安装,除了下图选第一个,其他的不用改,直接next就行。
    下图这个是决定是否把git命令放到path中,你不用理解path是什么,反正你如果你加入到path之后,gitbash可能会变得反应特别慢。
    选这个use git from git bash only就是告诉他不要给我加到path中
    在这里插入图片描述
    安装完成后我的电脑上是显示了这么三个东西的。
    这里写图片描述

    • Git CMD:
        Git CMD我并没用过,但是我查了一下它是什么。据别人说,Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能。所以建议在使用的时候,用Bash更加方便(原网址)。
    • Git GUI:
        其次就是Git GUI,Git GUI是Git Bash的替代品,他为Windows用户提供了更简便易懂的图形界面。(但是相比GitHub Desktop这个桌面版客户端,_(:3 」∠)我觉得Git GUI也没什么用。)
    • Git Bash:
        最后是Git Bash,Git Bash是命令行操作,官方介绍有一句就是“让*nix用户感到宾至如归。”((;´༎ຶД༎ຶ`) 当然了,萌新用户使用了就肥肠憋屈。)

    2 设置用户

    下载之后打开是这个样子的,第一件事设置用户。注意这个不是登录哦,是给你的电脑设置一个用户,等你上传的时候,告诉远程仓库是谁上传的而已。

    git config --global user.name "Your Name"注意前边是“- -global”,有两个横线
    git config --global user.email "email@example.com"
    在这里插入图片描述


    3 本地文件夹的操作

    3.1 进入文件夹

    首先你可以试着打开你本地仓库的文件夹。
    比如我要打开E:\code有两种方法

    1. 直接在电脑上打开那个文件夹,然后在文件夹空白处右键选择Git Bash here
      在这里插入图片描述

    2. 在Git Bash中输入路径
      注意! 使用cd命令进入到目录中时,在Git-Bash中应该使用斜线”/”, 而不是反斜线”\”
      ①可以逐个输入文件夹名(在文件夹名称前要加cd )
      在这里插入图片描述
      ②也可以直接输入一个完整的文件夹路径
      在这里插入图片描述

    3.2 查看

    • 当前目录
      你输入命令之前上边有一行字,后边那段黄色的就是你所在的文件夹位置。你也可以输入$ pwd,回车之后进行查看。在这里插入图片描述
    • 查看当前文件夹都有什么文件$ ls
      在这里插入图片描述

    3.3 退出文件夹

    当然你也可能进错文件夹,要学会回退。
    $ cd .. 点和cd之间有空格

    就可以回退到上一个文件夹。
    在这里插入图片描述

    3.4 新建、删除

    $ mkdir +文件夹名字 只能新建文件夹
    我在E盘的code文件夹下新建一个front-end文件夹。建完之后打开文件夹看看创建成功了嗷。
    在这里插入图片描述
    touch +文件名 只能新建文件
    在这里插入图片描述

    $ rm 文件名.文件类型 删除文件
    在这里插入图片描述
    $ rm -r 文件夹删除文件夹 ,注意这个要回到上一级文件夹才可以删。比如我要删除front-end文件夹,front-end在code里边,我就要在code目录下删除。
    在这里插入图片描述


    4 仓库设置

    你既然学git,那就是想要把本地的代码放到远程仓库托管。
    托管就是,代码是小朋友,你就是他父母,你把它丢到托儿所,让托儿所帮你管。怎么去托儿所,总不能一生下来就在托儿所。你得把孩子从家里送过去吧。放学了你得把孩子接回来吧。(当然这个例子不太恰当。)
    那你需要一个本地存储代码的地方(家里),你还需要一个远程仓库(托儿所)

    4.1 初始化本地仓库

    进入到你想建立本地仓库的文件夹,它可以是空的,你建好了之后再写代码。里边也可以有东西,直接建就好。
    $ git init
    我用个空文件夹做示范:E:\code\front-end
    在这里插入图片描述
    初始化成功之后,你的文件夹里就会多出.git的隐藏文件。 (●′ω`●)千万不要乱删,你如果看他烦你就设置一下不显示隐藏文件。

    4.2 新建远程仓库

    打开github右上角,点击new repository
    在这里插入图片描述
    在这里插入图片描述

    • 说一下仓库的私有和公有
      本来也是个开源社区,很多大佬们都把自己的东西开源了,也就是放在共有仓库里,可以让人查阅。也鼓励大家使用共有仓库 (๑•́ ₃•̀๑)。
      以前使用私有仓库是付费, 或者你可以申请学生认证获得私有仓库的使用权。但是现在2020年3月份的时候我收到github的邮件,邮件里边说现在已经开放私有仓库的使用了。
    • 说一下学生认证
      以前github的教育认证可以让学生和教育者免费使用私有仓库,并且还有许多其他的优惠政策。比如github的一些付费功能,教育认证之后会有巨大的折扣。戳我查看如何进行学生认证╰(●’◡’●)╮

    4.3 建立连接

    孩子在家里,你能用意念让他直接飞到托儿所吗,显然不可能,那你总得把他送过去,或者用校车之类的吧。
    那现在就得想办法建立远程仓库和本地仓库的连接。
    4.3.1 配置SSH,给孩子联系好校车。
    ヽ(・ω・。)ノ点击进入《SSH Key配置教程》
    4.3.2 配置完SSH,你就可以使用SSH连接了。
    注意,你是仓库的主人你才能使用SSH连接,如果你不是仓库主人,只是某个项目的成员,那你只能使用HTTPS连接。
    不管使用哪一种连接方式,都是一样操作,现在我就用SSH链接了。复制红框框里的代码。
    在这里插入图片描述
    4.3.3 在你的本地仓库打开gitbash。
    $ git remote add + 名字 + 连接地址
    连接地址就是你刚才复制的那块。
    我下边写的就是添加一个叫origin的远程仓库。
    在这里插入图片描述

    • 名字origin:你在往远程仓库推送的时候,你会说我要推给谁,总得给它起个名字。(你把孩子送去托儿所,你总得告诉司机是哪个托儿所吧)并且你以后可能会一个本地仓库连接多个远程仓库(这是后话),所以必须起名字加以区分。
    • 补充一下:你的本地仓库可以链接多个原厂仓库,github毕竟是国外的,有时候访问起来会很慢,因此你可以连接到国内的仓库上,比如gitee之类的。详细可以等你学会了这个文章之后,戳一下看这一篇→git bash 连接多个远程仓库

    4.3.4 添加之后没有任何提示,如果你想确定是否成功了,你可以再输一遍,这时候他会提示你刚才已经设置过了。
    在这里插入图片描述
    上边的方法能用但是比较笨(…•˘_˘•…),所以你得学个高端一点的。
    $ git remote -v
    测试一下,看到没。显示我已经添加了叫origin的仓库。一个push一个fetch,就是一个把代码推到远程仓库,一个把代码从远程仓库取回来。这两个一定是成对存在的。
    在这里插入图片描述
    补充一点:如果你以后不想连接这个远程仓库了,只需要输入git remote remove + 名字即可。比如我刚才添加的远程仓库代称是origin,那我就要写:git remote remove origin

    4.4 文件上传

    4.4.1 git add修改的文件添加暂存区,也就是将要提交的文件的信息添加到索引库中。(看不懂没关系,现在来说这个不重要)。
    什么是修改的文件,你新建、更改、删除文件都是修改。
    git add有好多种。下边我介绍一下,看看就行,对现在来说记住最后一条就可以了

    • $ git add +文件名.文件类型 ,将某个文件加到缓存区
    • $ git add +文件名.文件类型 ... 文件名.文件类型 ,将n个文件添加到缓存区
    • $ git add xx文件夹/*.html,将xx文件夹下的所有的html文件添加到缓存区。
    • $ git add *hhh ,将以hhh结尾的文件的所有修改添加到暂存区
    • $ git add Hello* ,将所有以Hello开头的文件的修改添加到暂存区
    • git add -u ,提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
    • git add .,提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
    • git add -A,提交所有变化git add前几条都可以记不住,这个必须记住!!!

    在这里插入图片描述
    我现在在本地仓库新建一个文件叫readme.md,现在我将它添加到缓存区。(没错虽然图里是read,但是我就是要创建叫readme的文件,往后看就明白了)
    在这里插入图片描述

    4.4.2 git commit命令将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中。(看不懂没关系,现在来说这个不重要)。你现在可以简单的理解为给你刚才add的东西加一个备注,你上传到远程仓库之后,修改的文件后边会显示这个备注
    $ git commit -m "修改注释"
    在这里插入图片描述
    一定要加-m,否则会进入vim编辑器。对于不熟悉的人来说会很麻烦。所以还是加上-m
    4.4.3 git push激动的搓搓小手,终于要把文件推到远程仓库了。
    向一个空的新仓库中推文件:$ git push -u 仓库名称 分支

    • 仓库名称:刚才我添加连接的时候,给仓库起名叫origin
    • 分支:你现在只有主分支,所以分支直接写master。以后合作项目的时候,成员之间建了不同的分支,你就可以往你自己的分支上推。

    在这里插入图片描述
    我们第一次推送master分支时,加上 –u参数才会把本地的master分支和远程的master分支关联起来,就是告诉远程仓库的master分支,我的本地仓库和是对着你的哦,不是对着别的分支的哦。
    只有第一次推的时候需要加上-u,以后的推送只输入:
    $ git push 名称 分支
    还有一个$ git push origin master -f 强制推送,如果你某次推送失败,git bash报错,你懒得处理错误,你就可以用这个。但是有风险,因为报错90%是因为你本地仓库和远程仓库数据发生冲突,使用这个会直接用本地数据覆盖掉远程数据,可能损失数据哦。

    现在你去网页版刷新一下,就可以看到你本地仓库的东西都在那里了。并且文件后边写着你在commit步骤中添加的注释。
    在这里插入图片描述
    4.4.4 其他
    (눈_눈)我缓缓打出一个问号,我的commit怎么多写了一个e?我文件名字叫readme我怎么就写了read
    先来看看怎么查看自己的提交记录?虽然写错了查看提交记录也没用。我就是单纯想让你们多学一条命令:
    $ git log
    在这里插入图片描述
    提交记录里也显示我就是多写了一个e。

    • 怎么抢救一下commit的注释?
      $ git commit --amend -m "修改的内容"
    • 那怎么抢救一下文件名?
      直接修改文件名重新提交就可以啦。
      git add -A —> git commit -m “修改文件名” —> git push origin master
      在这里插入图片描述
      ?push时候报错?
      这是因为github觉得我的本地仓库和远程仓库冲突了:
      因为我刚才在本地修改了上一次的commit信息。(后边详细解释
      $ git push origin master -f 这个-f就是force,强制推送。

    推完之后看看你的远程仓库,文件名改了,文件名后边的注释也是我第二次commit的注释。上边有个commit选项,
    在这里插入图片描述
    在这里插入图片描述

    • 补充解释
      • $ git commit --amend的作用:
        github不管你做错了啥,他都会给你保存的,就是即使你改了,你的错误记录永远存在!但是使用git commit --amend,你可以神不知鬼不觉悄咪咪修改你的错误commit注释,╭(●`∀´●)╯只有天知地知你知。

      • push时候报错:
        github你可以理解为差额备份,就是你本地提交上去之后,它备份起来。你本地修改了,它会对你修改的部分继续备份。也就是说在你这次修改之前,本地仓库应该和远程仓库一模一样。
        但是我刚才强行修改了上次的commit注释信息。现在本地仓库里;

        • 上次的commit是“新建了readme”,
          使用git log看一下,本地仓库上次的提交注释确实是改变了。在这里插入图片描述
        • 但是远程仓库上次的commit是“readmee”。

        我修改的是上次的commit,所以我这次推的时候github就认为这次修改之前的本地仓库和远程仓库不一样,因此就会报错说我数据冲突。

    4.5 文件下拉

    上边push报错,我自己知道数据差在哪里,所以使用了强制推送。但是在团队合作中,push报错,那铁定是你队友修改了远程仓库,如果你再强制上传,那你就是毁了你队友的代码。所以如何保证在你修改之前,自己的文件跟远程仓库一致呢。
    方法1: $ git pull 仓库名称

    尝试一下
    比如我现在跑到我的远程仓库修改了readme:

    • 点要修改的文件,进去之后点击编辑。
      在这里插入图片描述
    • 写内容
      在这里插入图片描述
    • 写完内容提交
      在这里插入图片描述
    • 这时候我已经修改成功了
      在这里插入图片描述
    • git pull完成之后打开本地的readme,发现hello world已经进来了嗷。
      在这里插入图片描述
    • git log看一下,commit的记录也显示了。
      在这里插入图片描述

    方法2:
    $ git fetch + $ git merge

    尝试一下,

    • 这次我又在远程仓库加一行字
      在这里插入图片描述
    • git fetch,看起来数据也是拉下来了,要 git merge干嘛。然鹅! 事情是这样的,git fetch之后,我打开本地文件,发现内容没变
      在这里插入图片描述
    • 那继续git merge,这之后本地文件内容才改变!
      在这里插入图片描述

    我在提示一下,我在fetch之后,不止没有修改本地文件,就连git log也没显示我下拉文件了,但是merge之后就都显示了。我们可以认为 pull = fetch+merge。git fetch 并没更改本地仓库的代码,只是拉取了远程数据,git merge才执行合并数据。

    回想一下你刚才是怎么push到远程的

    • git add添加到上传缓存区
    • git commit给缓存区的内容添加备注,此时本地的commit修改啦,但是远程的commit和文件都没修改。
    • git push 修改远程文件和commit信息

    而你下拉文件过程

    • git fetch 将数据拉下来,但是没修改本地的commit和文件
    • git merge 改变本地数据

    4.5 文件克隆

    下拉仓库学会了,那克隆呢?
    克隆就是你本地上没有,你直接把远程仓库的东西搞下来。
    我现在有一个完整仓库,点击右边的绿色按钮。
    在这里插入图片描述
    在这里插入图片描述

    • 如果你只想看看源码,那你可以直接选download zip,下载源码压缩包。
    • 如果你使用的是git desktop,那你就选open in desktop
    • 如果你想学克隆你就继续看,很简单的就一句。

    仓库是你自己的,你就使用SSH连接,不是你自己的,你没权限你就切换到HTTPS,再复制地址。
    它克隆下来是一个文件夹,你想把文件夹放哪里就在哪打开gitbash
    $ git clone 加上你刚才的地址
    在这里插入图片描述
    我在E:\code\vue里执行了克隆。
    (。◕ˇ∀ˇ◕)。下载完成后,打开这个文件夹,就发现里边有个文件夹了。文件夹名字就是远程仓库的名字。
    在这里插入图片描述
    还记得git remote -v吗?用它看一下你下下来的本地仓库连接上那个远程仓库没。
    在这里插入图片描述
    已经连接了嗷。放心使用吧。


    我是萝莉Ann, 梦想是当个程序媛。(●´∀`)♪永不服输!

    展开全文
  • 0x00 前言 文章中的文字可能存在语法错误以及...1.前几次还好用的命令,这次再输入就出现-bash: ***: command not found的情况; 2.第一次使用就出现 -bash: ** : command not found的情况。 导致这种问题的原...

    0x00 前言

    文章中的文字可能存在语法错误以及标点错误,请谅解;

    如果在文章中发现代码错误或其它问题请告知,感谢!

    0x01 解决方法

    我们在使用linux开发编译的时候可能会遇到:
    1.前几次还好用的命令,这次再输入就出现-bash: ***: command not found的情况;
    2.第一次使用就出现 -bash: ** : command not found的情况。
    导致这种问题的原因有很多(就像导致肚子疼痛的原因各种各样),有可能是环境变量配置问题,也可能某一个bin文件夹下的内容全部删除导致等,所以现在将主要导致bash:command not found的原因写在下面,希望对大家的开发过程有帮助。

    1.检查该命令工具是否安装
    出现这个问题时,首先用whereis命令确定该指令工具是否安装,例如确定gcc是否安装
    whereis gcc,如果此时显示gcc:/usr/bin/gcc 则说明已经安装好,可以接着用下面的方法继续找原因,如果只是显示 gcc:,则说明gcc没有下载,此时进行下载就可以。

    Centos(Rehat系列)系统下载gcc命令:yum install gcc
    Ubuntu系统下载gcc命令:apt-get inatall gcc

    2.检查各个bin文件夹的内容是否非空
    在使用其它相对更复杂的手段“还原”到之前好用的状态之前,应该先检查的bin文件夹里的命令是否都在,这个方法最简单也最直观。如果自己需要用到的命令所在的bin文件夹为空,那么就会理所应当的出现-bash: ***: command not found情况。

    要检查的bin文件夹有以下几个:
    /bin, /usr/bin, /sbin, /usr/sbin

    查看这四个里面的是否为空,若出现为空的情况,那么解决办法就是找一个同样系统版本的linux把对应文件夹的内容复制到本地空的bin文件夹中。例如我的linux版本是CentOS release 6.8,我输入gcc命令编译的时候出现bash: gcc: command not found ,通过查看四个目录发现其中 /usr/bin内容为空,然后自己通过将同样的CentOS release 6.8系统下的 /usr/bin内容全部复制到本地的/usr/bin中,然后再次gcc编译,通过。
    注意,这种排查方法适用在输入类似ls、tty这种常见指令以前可用但最近出现not found的情况。

    3.检查是否是$PATH设置是否正确
    $PATH决定了shell到哪些目录下去寻找命令或工具,PATH的值是一系列目录,当程序运行时,Linux系统会到这些目录下进行搜索,所以当出现 -bash: ** : command not found可能因为是PATH没有设置。

    PATH设置格式:

    PATH = $PATH:<PATH1>:<PATH2>:<PATH3>:...:<PATH N>
    

    可以将自己指定的路径加到PATH中(见上,若有多个变量路径则在中间用冒号":"隔开),例如:export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH,设置成功之后,使用echo查看是否配置成功:

    [root@localhost u-boot-sh4]# echo $PATH
    /opt/STM/STLinux-2.3/devkit/sh4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    

    上述方法添加PATH 在终端关闭后会消失。建议通过 vi /etc/profile 修改PATH,也可修改主用户目录下的 .bashrc,这样可以永久生效。若使用前一种方法,则输入指令vi /etc/profile,然后在该文件最后添加:

     export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
    

    保存后,退出,再执行:

     [root@localhost etc]# source /etc/profile
    

    不报错就成功。

    当然,可能还有其它原因导致bash:command not found,这时候就需要在网上仔细找,把导致该问题的前因后果都说清楚(配置了什么,删掉了什么),相信问题最后一定能解决。

    以上。
    参考文档:
    1.https://blog.csdn.net/awenluck/article/details/25233883
    2.https://blog.csdn.net/panjiao119/article/details/79790324
    3.https://blog.csdn.net/zq199692288/article/details/78871046
    4.https://blog.csdn.net/FightForProgrammer/article/details/41960707

    展开全文
  • 作为一名运维工程师,BashShell脚本编写必不可少。然而,大家会发现专门用来编写BashShell脚本的IDE少之又少。但是,即使这样也阻止不了我们自己通过vim来打造一款属于自己的BashShell脚本开发环境。通过以下命令及...

    作为一名运维工程师,BashShell脚本编写必不可少。然而,大家会发现专门用来编写BashShell脚本的IDE少之又少。但是,即使这样也阻止不了我们自己通过vim来打造一款属于自己的BashShell脚本开发环境。通过以下命令及设置,我们可以很方便的完成BashShell脚本开发环境的搭建,难免疏漏,望指正。

    [BashShell@Geeklp-BashShell ~]$ mkdir .vim #如果没有该目录则创建
    [BashShell@Geeklp-BashShell ~]$ cd .vim
    [BashShell@Geeklp-BashShell .vim]$ curl -C - -o bash-support.zip https://vim.sourceforge.io/scripts/download_script.php?src_id=24452
    [BashShell@Geeklp-BashShell .vim]$ sudo yum -y install vim
    [BashShell@Geeklp-BashShell .vim]$ sudo yum -y install unzip
    [BashShell@Geeklp-BashShell .vim]$ unzip bash-support.zip 
    [BashShell@Geeklp-BashShell .vim]$ rm -rf bash-support.zip
    [BashShell@Geeklp-BashShell .vim]$ cd ~
    [BashShell@Geeklp-BashShell ~]$ echo -e "filetype plugin on\nset nu">>.vimrc #此处很多文章介绍写的都是filetype plug-in on,经本人验证,这样写在当前版本中不支持

    通过以上步骤,我们初步实现了bash-support的安装与设置。接下来我们来开始自定义设置,尽情享受便捷工具带来的乐趣吧!

    第一步:将vi的别名设置为vim,这样每次我们输入vi时进入的就是vim了。

     [BashShell@Geeklp-BashShell ~]$ alias vi='vim'

    第二步:个性化配置。
    (1)新建任意一个.sh文件,使用vi编辑。
    [BashShell@Geeklp-BashShell ~]$ vi test.sh
    退出插入模式:
    这里写图片描述
    输入\ntw(依次输入这四个字符):
    这里写图片描述
    选择3,连续按下2次回车键,填入自定义个人信息,保存退出。
    这里写图片描述
    (2)使用示例。
    - 插入注释。在普通模式下输入:\cfr,输入完毕之后按回车键。
    这里写图片描述
    - 插入语句(n – 普通模式, i – 插入模式,v - 可视模式)。
    \sc – case in … esac (n, i)
    \sei – elif then (n, i)
    \sf – for in do done (n, i, v)
    \sfo – for ((…)) do done (n, i, v)
    \si – if then fi (n, i, v)
    \sie – if then else fi (n, i, v)
    \ss – select in do done (n, i, v)
    \su – until do done (n, i, v)
    \sw – while do done (n, i, v)
    \sfu – function (n, i, v)
    \se – echo -e “…” (n, i, v)
    \sp – printf “…” (n, i, v)
    \sa – array element, ${.[.]} (n, i, v) 更多数组特征。
    这里写图片描述
    更多按键映射详见下图:
    这里写图片描述
    (3)在 Vi 编辑器中使用运行操作。
    下面是一些运行操作键映射的列表:
    \rr – 更新文件,运行脚本(n, i)
    \ra – 设置脚本命令行参数 (n, i)
    \rc – 更新文件,检查语法 (n, i)
    \rco – 语法检查选项 (n, i)
    \rd – 启动调试器(n, i)
    \re – 使脚本可/不可执行(*) (n, i)
    执行时无需提前在文件上新增执行权限。如果需要给文件新增执行权限请输入\re,按一次回车键,输入O或者不输入直接回车键。
    这里写图片描述
    (4)在脚本中使用预定义代码片段。预定义代码片段是为了特定目的包含了已写好代码的文件。为了添加代码段,输入 \nr 和 \nw 读/写预定义代码段。输入下面的命令列出默认的代码段:

    [BashShell@Geeklp-BashShell ~]$ ll .vim/bash-support/codesnippets/
    总用量 68
    -rw-r--r--. 1 BashShell BashShell  132 116 2013 basename+pathname
    -rw-r--r--. 1 BashShell BashShell   88 116 2013 check-for-signed-integer
    -rw-r--r--. 1 BashShell BashShell   74 116 2013 check-for-unsigned-integer
    -rw-r--r--. 1 BashShell BashShell  257 116 2013 check-number-of-command-line-arguments
    -rw-r--r--. 1 BashShell BashShell   75 116 2013 create-tempfile
    -rw-r--r--. 1 BashShell BashShell  886 1212 2013 create-tempfile-in-secure-manner
    -rw-r--r--. 1 BashShell BashShell  505 116 2013 create-tempfile-with-trap
    drwxr-xr-x. 2 BashShell BashShell  140 12月 12 2013 debugging
    -rw-r--r--. 1 BashShell BashShell  448 116 2013 free-software-comment
    -rw-r--r--. 1 BashShell BashShell   85 116 2013 timestamp
    -rw-r--r--. 1 BashShell BashShell  834 116 2013 _trap_DEBUG
    -rw-r--r--. 1 BashShell BashShell  676 116 2013 _trap_ERR
    -rw-r--r--. 1 BashShell BashShell  593 116 2013 _trap_EXIT
    -rw-r--r--. 1 BashShell BashShell  736 116 2013 _trap_RETURN
    -rw-r--r--. 1 BashShell BashShell  947 116 2013 usage-and-command-line-arguments.noindent
    -rw-r--r--. 1 BashShell BashShell  302 116 2013 use-file-descriptor-read
    -rw-r--r--. 1 BashShell BashShell  278 116 2013 use-file-descriptor-write
    -rw-r--r--. 1 BashShell BashShell 1193 116 2013 well-behaved-script

    为了使用代码段,例如 create-tempfile,输入 \nr 并使用自动补全功能选择它的名称,然后输入回车键:
    这里写图片描述
    我们也可以在~/.vim/bash-support/codesnippets/目录下编写你自己的代码段。另外,还可以从你正常的脚本代码中创建你自己的代码段:选择想作为代码段的部分代码,然后输入 \nw 并给它一个相近的文件名。
    这里写图片描述
    参考资料:
    https://wolfgangmehner.github.io/vim-plugins/bashsupport.html
    https://www.tecmint.com/use-vim-as-bash-ide-using-bash-support-in-linux/

    展开全文
  • 解决mac安装homebrew后报错-bash: brew: command not found

    万次阅读 多人点赞 2016-09-18 10:32:36
    参照官网上很简单的一句安装命令, /usr/bin/ruby -e "...安装完毕后,发现使用brew命令,却总是提示:-bash: brew: command not found 于是怀疑安装过程出现问题,打算重装,重装却报: ...
  • win10 bash切换目录/代替gitbash

    千次阅读 2017-11-20 19:15:17
    在用gitbash时突然想到是否可以用win10bash直接代替,尝试了很久无法切换目录,后来用ls -n测试了出来 默认的路径: 利用cd ../退回上级目录,并用ls -n查看目录 如上图,退到/mnt时,就可以切换磁盘进入别的...
  • 我已经清楚su 和 su - 的区别,我现在想使用su - gpadmin 切换用户,可是出现 -bash: /root/.bash_logout: 权限不够,但是直接使用su 切换没有错误提示,我已经尝试以下的方法解决,但是仍未解决: 1. chmod 777 ...
  • PowerShell VS Bash

    千次阅读 2016-09-01 18:00:26
    PowerShell VS Bash
  • CentOS解决-bash: vim: command not found

    万次阅读 2019-04-16 13:52:31
    那么如何安裝 vim 呢? 输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: root@server1 [~]# rpm -qa|grep vim vim-enhanced-7.0.109-7.el5 vim-minimal-7.0.109-7.el5 ...
  • Bash漏洞解析

    千次阅读 2014-09-26 21:10:17
    Bash UNIX-like系统上的shell,可以让用户在UNIX-like系统输入并执行命令的一个解释器,一般通过ssh或telent实现连接,另外,在WEB服务器上也可以作为CGI脚本的解释器。UNIX-like系统上有多个shell,但它是默认的...
  • 学习Bash

    千次阅读 2012-12-12 04:31:53
    网上有好多学习Bash的教程,其中质量参差不齐,这里有个对几个著名网站的教程内容质量评述的网站,供大家学习时参考: List of Bash online-tutorials 对于Mac而言,Apple有一套教程,比如:Shell Scripting...
  • bash脚本功能是用一个软件(已安装)循环处理一个路径下的数据,第一行是 #! /bin/bash。 写好之后, chmod -x try.sh ./try.sh 返回说Permission denied 但是直接用bash try.sh就可以运行(top后看到服务上有) ...
  • 解决:bash: make: command not found

    万次阅读 2017-06-19 15:44:17
    一般出现这个-bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接yum安装下即可。 yum -y install gcc automake autoconf libtool make
  • 目前是需要bash可以正常运行。[1] 但是定时的at和crontab都失败了。 其中,我发现at命令有提示说,命令是以/bin/sh运行的。 那么请问是否有办法强制改为bash呢? 我脚本开头是有#!/bin/bash的 [1]中间有...
  • -bash: wget: command not found解决方法

    万次阅读 2019-05-14 13:56:46
    -bash: wget: command not found 很显然,问题出现的原因是由于没有安装wget命令,可以通过以下两种方法来安装: 1、rpm安装 wget的RPM包下载地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=wget...
  • CMD打开Git Bash

    千次阅读 2019-05-07 10:58:56
    打开git-bash start "Open Git Bash" "%SYSTEMDRIVE%\Program Files\Git\git-bash.exe" 带参数 start "Git Bash Open tail" "%ProgramFiles%\Git\git-bash.exe" -c "tail -f /c/Windows/win.ini" start "" "%...
  • 新搞了台iMAC,原来没有.bash_profile,我自己建了一个,导致bash命令无法使用 ixiaopengdeiMac:~ bixiaopeng$ ls -bash: ls: command not found bixiaopengdeiMac:~ bixiaopeng$ ls -al -bash: ls: command not ...
  • zsh切换bash bash切换zsh

    万次阅读 2015-10-05 20:00:50
    zsh切换bash bash切换zsh 切换bash chsh -s /bin/bash 切换zsh chsh -s /bin/zsh
  • bash: history: //.bash_history: 无法创建: 权限不够 mkdir: 无法创建目录"//.cache": 权限不够 但有个问题,出现两个权限不够问题,而我在root用户下运行相关命令却无效,貌似必须在当前用户下 source 相关...
  • 请问为什么会出现两个进程 :/bin/bash 和 /bin/sh -c 呢? 不是应该是只出现 ``` root 20677 20676 0 20:24 ? 00:00:00 /bin/bash /test.sh ``` 这一个进程吗?那这个/bin/bash 和/bin/sh -c都是什么区别呢...
  • Bash函数

    千次阅读 2018-07-27 17:35:25
    一、认识函数 (一)什么是函数? (二)为什么要使用函数? (三)函数与Shell脚本的关系 (四)关于函数理解的误区 二、定义函数 (一)函数的组成结构 1、函数名 2、函数体 ...(三)在脚本中定义及...
  • bash参数

    千次阅读 2017-09-11 15:42:54
    /bin/bash echo "file name:$0" echo "first parameter:$1" echo "second parameter:$2" echo "quoted values:$@" echo "quoted values:$*" echo "total number of parameters:$#" ###############
  • Bash升级

    千次阅读 2007-07-18 13:51:00
    好多系统自带的bash版本比较旧,最新版本为3.2.0(1)-release,可能需要升级。 查看版本echo $BASH_VERSION 下载最新bash从 http://ftp.gnu.org/gnu/bash/ 解压缩 tar -xzvf bash-xxx.tar.gz cd bash-xxx./...
  • bash编译

    千次阅读 2013-12-18 16:28:13
    1 下载最新版bash    http://www.gnu.org/software/bash/bash.html 2 解压  #tar zxvf bash-4.2.tar.gz   静态编译bash 3 配置 使用: $ ./configure --prefix=/tmp/bash --enable-static-link --...
  • Bash漏洞

    千次阅读 2014-09-29 08:10:57
    Bash漏洞为远程解析命令执行漏洞(CVE-2014-6271),可以直接在Bash支持的Web CGI环境下远程执行任何命令。这也就使得一些路由器、堡垒机、VPN等网络设备将会成为重灾区,另外各大Linux发行版和Mac OS X系统都受影响...
  • 进入bash

    千次阅读 2011-11-24 11:07:42
    有的同学可能会发现进入linux服务器后,删除键是乱码以及命令不认...这需要我们进入bash   按照以下步骤: 1.输入 chsh , 回车 2 输入密码 3 输入/bin/bash 4 退出服务器重新登录,以后再登录就都是bash里。
  • Bash启动

    2012-02-27 14:25:49
    Bash启动时会加载配置文件。 login shell: 启动加载文件有: /etc/profile ~/.bash_profile ~/.bash_login ~/.profile 程序将依次执行这些文件,如果你加上选项"--noprofile"启动程序,bash将不会解析...

空空如也

1 2 3 4 5 ... 20
收藏数 167,238
精华内容 66,895
关键字:

bash