zoukankan      html  css  js  c++  java
  • day1

    分号和&的区别

    • 分号可用来分隔同一行里多条命令。shell会依次执行这些命令
    • &可用来分隔同一行里多条命令。但是shell不会等待之前的命令执行完

    变量

    • 变量赋值方式:变量名称=字符

      • 等号前后不能有空格
      • 字符值如果有空格,则需要使用双引号将变量包围
    • 获取变量值方式:$变量名

    echo

    • 语法
    echo [string...]
    
    • 用途
      • 产生shell脚本产生
    • 行为模式
      • echo将各个参数打印到标准输出,参数之间以一个空格隔开,并以换行符结束。它会解释每个字符串里的转义序列。
    echo "Enter your name: c"
    echo "yangshimiao"
    echo "Enter your name:"
    echo "Enter your name:	"
    echo "Enter your name:f"
    echo "f"
    echo test
    # c、	、f都是转义字符。如果想要显示,需要两个反斜杠
    
    • 不足
      • unix版本间互不相同的行为模式是的echo的可移植性变得很困难

    重定向与管道

    重定向符号:

    • <:改变标准输入

    program < file 可将program的标准输入修改为file。相当与函数中的参数

    • >:改变标准输出

    program > file 可将program的标准输出修改为file。如果file不存在,会创建一个,然而如果已存在,它会被覆盖掉,原本的数据都会丢失。相当与函数中的返回值

    • >>:附加到文件

    program >> file 可将program的标准输出附加到file的结尾处。如同>,如果目的文件不存在,>>重定向符便会新建一个。然而,如果目的文件已存在,它不会直接覆盖掉,而是将程序所产生的数据附加到文件结尾处

    例子

    tr -d '
    ' < dos-file.txt > unix-file.txt
    # 这条命令先以tr将dos-file.txt里的回车('
    ')删除,再降转化完成的数据输出到unix-file.txt文件中。
    
    tr -d '
    ' < dos-file.txt >> unix-file.txt
    # 这条命令先以tr将dos-file.txt里的回车('
    ')删除,再降转化完成的数据追加输出到unix-file.txt文件中。
    

    管道

    建立管道符号:|

    Program1 | program2 可将program1中的标准输出修改为program2的标准输入

    有点

    管道可以使得执行速度比使用临时文件的程序快上十倍

    例子

    # 这条管道会先删除输入文件内的回车字符,在完整数据的排序之后,将内容输入到unix-file.txt文件中
    tr -d '
    ' < dos-file.txt | sort > unix-file.txt
    

    特殊文件:/dev/null与/dev/tty

    /dev/null

    位桶,传送到此文件的数据都会被系统丢掉。也就是说当程序将数据写入到此文件时,会认为它已成功完成写入操作,但实际上什么都没有做。但是有一个非常重要的作用:如果只需要命令退出的状态而非它的输出,此功能会特别有用

    if grep pattern myfile > /dev/null
    then 
    	...
    else
    	...
    fi
    

    /dev/tty

    当程序打开此文件时,Unix会自动将它重定向到一个终端,也可能是一个通过网络窗口的登录伪终端

    $PATH

    $path是一个以冒号分隔的目录列表。它存着系统所有的命令,比如ls。因此当我们在终端输入命令的时候,会到这个目录列表查看是否有该命令

    查看:

    echo $PATH
    #/Library/Frameworks/Python.framework/Versions/3.6/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
    

    重点介绍两个文件:

    /usr/bin与/bin:是存放系统的基本命令,即默认路径

    /usr/local/bin:是本地系统管理人员【安装程序】,并且是存放程序可执行文件的地址

    Shell脚本访问终端命令参数

    $0等于命令名,$1等于命令行中第一个参数,$2等于命令行中第二个参数

    注:如果参数格式大于10,需要使用花括号括起来。比如第10个参数:${10}

    例子:

    # 终端
    # 创建一个shell脚本文件
    vim finduser.sh
    ###
    who | grep $1
    ###
    # 赋予finduser.sh文件可执行权限
    chmod +x finduser.sh
    
    # 执行该命令
    ./finduser.sh ysm
    # 由于$1=ysm,而输出:yangshimiao console  Sep 24 11:20 
    

    简单的执行跟踪

    使用set -x和set +x命令。set -x表示开始跟踪,set +x表示关闭跟踪。如果打开跟踪则显示每个被执行到的命令,并且在前面加+和空格

    例子

    # 创建可执行文件
    cat > trace.sh
    #! /bin/sh
    set -x
    echo 1st echo
    set +x
    echo 2nd echo
    ^D
    # 修改权限
    chmod +x trace.sh
    # 执行权限
    ./trace.sh
    # 输出
    # + echo 1st echo
    # 1st echo
    # + set +x
    # 2nd echo
    

    awk命令

    作用

    做一些简易文本处理,例如取出字段并重新编排。字段是指在文件内容中以空格分隔的字符串。获取字段值的方式为$字段所属下标。即如果文件中的内容是:a b c d e。想要获取c,则可以使用$3获取。为何为3,因为以空格分隔,c是属于第三个值,则为3。

    模式与操作方式

    awk '{[pattern]action}' filename 或者管道模式:|awk '{[patter]action}'

    常用案例

    awk '{print $1}' filename # 打印filename中每行的第一个字符串
    awk '{print $1,$5}' filename # 打印filename中每行的第一个和第五个字符串
    awk '{print $0}' filename # 打印每一行
    awk '{print ;}' filename # 打印每一行
    awk '$7>1{print ;}' filename # 打印行中第七个字段大于1的所有内容
    
  • 相关阅读:
    Ubuntu安装Cassandra
    Ubuntu安装中文输入法
    CoreOS, Kubernetes, etcd
    CountDownLatch, CyclicBarrier and Semaphore
    Java Primitives and Bits
    vue 和 webstorm(01) 之 基本入门 _fei
    ubuntu 命令窗口背景颜色 #300a24 _fei
    2345 看图王ad介绍----关闭广告 _fei
    PHP 使用 pdo 操作oracle数据库 报错 _fei
    PHP 使用 pdo 操作oracle数据库 报错 _fei
  • 原文地址:https://www.cnblogs.com/MyUniverse/p/15335922.html
Copyright © 2011-2022 走看看