美文网首页
Shell:基础入门

Shell:基础入门

作者: 春暖花已开 | 来源:发表于2019-08-18 13:00 被阅读0次
说明 时间
首次发布 2019年08月18日
最近更新 2020年07月01日

写在最前:此为笔者系统学习shell的笔记,初衷是方便自己查阅和复习。囿于笔者属于入门级别,难免有理解不对的地方,望留言指正。

一、升级bash

由于macOS自带bash版本为3.x,不支持 关联数组(bash V4.0+)等,那么需要先升级bash。

    1. 查看当前版本
    bash --version
    
    1. Homebrew安装最新bash
    brew install bash
    
    1. 打开 /etc/shells 文档,将 /usr/local/bin/bash 添加进去。
    # List of acceptable shells for chpass(1).
    # Ftpd will not allow users to connect who are not using
    # one of these shells.
    
    /bin/bash
    /bin/csh
    /bin/dash
    /bin/ksh
    /bin/sh
    /bin/tcsh
    /bin/zsh
    #新添加的
    /usr/local/bin/bash
    
    1. 设置默认Shell
    chsh -s /usr/local/bin/bash
    
    如果想修改root用户,执行以下操作:
    sudo chsh -s /usr/local/bin/bash
    
    注意:以上操作完之后,需要重启终端才能生效。
    1. 使用新版本Bash时,需要在shebang中明确指定新版本/usr/local/bin/bash
    #!/usr/local/bin/bash
    echo $BASH_VERSION
    
二、shell特点
  • 1、快捷键
组合键 功能
Ctrl+A 光标移动到命令最前面
Ctrl+E 光标移动到命令最后面
Ctrl+L 清屏
Ctrl+K 清除光标之后的内容
Ctrl+U 清除本次输入的所有内容
  • 2、前后台作业控制
项目 功能
Ctrl+C 结束进程
Ctrl+Z 将当前进程切换到后台
jobs 查看所有的进程
  • 3、输入输出重定向
项目 功能
0 文件描述符,表示标准输入(stdin)
1 文件描述符,表示标准输出(stdout)
2 文件描述符,表示标准错误(stderr)
> 默认为标准输出重定向,与 1> 相同
>> 追加输出
&>file 把 标准输出 和 标准错误输出 都重定向到文件file中
1>&2 正确返回值传递给2输出通道,&2表示2输出通道
2>&1 错误返回值传递给1输出通道,同样&1表示1输出通道
cat < /etc/hosts 将hosts的内容输入到cat
cat < /etc/hosts > HOST.txt 将hosts的内容输入到cat,之后定向到HOST.txt,而不输出到屏幕
cat > file.txt <<-EOF 多行输入
cat > file.txt <<-EOF 多行输入,并把文本保存到file.txt
  • 4、运算符

    • a. | 管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。
      格式:

      command 1 | command 2
      

      他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2。
      如:

      ls -s | sort -n
      
    • b. && 运算符:
      格式

      command1  && command2
      

      &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。

    • c.|| 运算符:
      格式

      command1 || command2
      

      ||则与&&相反。如果||左边的命令(command1)未执行成功,那么就执行||右边的命令(command2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。

    • d.() 运算符:
      如果希望把几个命令合在一起执行,shell提供了两种方法。既可以在当前shell也可以在子shell中执行一组命令。
      格式:

      (command1;command2;command3....)               多个命令之间用;分隔
      

      说明:

        1. 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。
        1. () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
        1. 命令组合常和命令执行控制结合起来使用。
  • 5、通配符
    *(匹配任意多个字符)、?(匹配任意一个字符)、[](匹配中括号里的任意一个字符)、\(用作转义)和正则表达式的含义一致。
    ()表示在子shell中执行;
    {}表示集合,如touch file{1..9}

  • 6、检查和调试
    查看脚本语法是否有错误:

    bash -n scriptName.sh
    

    跟踪执行:

    sh -vx scriptName.sh
    

二、常用命令
  • 1、tee
    [-a] 追加;[-i ] 忽略SIGINT信号。
    tee1>比较相似,最大不同 > 重定向只会将内容重定向到文件,而不会在终端输出;而 tee 命令会将内容重定向到文件的同时,在终端输出。

  • 2、grep

  • 3、sed
  • 4、awk

相关文章

  • shell入门学习(1)——语法基础

    本文为转载,原文:shell入门学习(1)——语法基础 介绍 Shell Script,Shell脚本与Windo...

  • day 28

    shell编程基础 shell编程一小时光速入门web集群架构会用到shell编程基础 1、为什么要学shell编...

  • shell脚本基础(一)

    这片文章是基于Shell脚本编程30分钟入门的入门基础,简要介绍shell的一些常用需要注意的语法基础。请务必熟悉...

  • day28-Shell脚本基础

    SHELL编程基础 三小时光速入门因为集群架构会用到shell编程基础,提前讲一丢丢。 shell编程 1. 为什...

  • Shell:基础入门

    说明时间首次发布2019年08月18日最近更新2020年07月01日 写在最前:此为笔者系统学习shell的笔记,...

  • Shell编程极简入门

    Shell编程不花里胡哨,一篇就够~ 一、基础入门 1.1 shell脚本的第一行代码 Linux环境下的任何脚本...

  • Shell Bash基础入门

    1、认识Linux shell  Shell是一个命令解释器,是介于操作系统内核与用户之间的一个纽带。准确地说,它...

  • Shell脚本基础入门

    一、shell脚本介绍 1.1 开头(环境使用shebang机制) #!/bin/bash 必须写在文件首行 符号...

  • Shell基础入门(一)

    Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh...

  • Shell基础入门(二)

    基本运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 注意:条件表达式要放在方括号...

网友评论

      本文标题:Shell:基础入门

      本文链接:https://www.haomeiwen.com/subject/nasrsctx.html