zoukankan      html  css  js  c++  java
  • Linux学习总结(十七)-shell 基础知识

    一 先介绍几种常用字符:

    1 * 匹配任意个任意字符
    2 ?匹配一个任意字符
    3 # 注释符号,符号后的语句不被执行
    4 脱意字符,后面跟带含义字符时,照原字符输出
    5 []匹配包含在[]之中的任意一个字符:
    例如[bc]ook 匹配book 或cook
    [0-9] 匹配任意一个数字
    6 {1,2} 匹配任意一个字符,同[]效果相同,格式不同
    7 > 输出重定向 
    例如 cat 1.txt > 2.txt,把1.txt 的内容读出来替换2.txt的内容
    8 >>追加重定向
    cat 1.txt >> 2.txt 把1.txt的内容读出来追加到2.txt的尾部
    2>和2>> 错误信息输出, 如果某条命令执行不成功,则输出报错信息到指定文件。 例如 假设没没有a.txt 这个文件 cat a.txt 2> error.log 
    备注:这个2算一个真值判断,当命令执行失败时,判断为假,用2表示
    那么执行成功,结果为真,就是1,通常我们省略了这个1
    &>和&>>正确错误都输出,当然是输出到同一个文件了,如果要分开,则可以
    cat 1.txt a.txt > 2.txt 2> error.log
    < 输入重定向 ,用的不多, 例如 wc -l < 1.txt 统计出1.txt的行数
    9 | 管道符,我们一直在用,管道左边命令的输出作为其右边命令的输入
    例如, cat /etc/passwd |head -3
    把 cat 查出来的内容交给head 重新显示
    cat /etc/passwd |grep 'root'
    把cat 查看的内容交给grep过滤,得到目标结果

    二 作业控制

    1 ctrl z 暂停一个进程
    2 bg 把它丢到后台运行
    3 fg 恢复到前台并运行
    4 jobs 查看暂停或者在后台运行的任务
    命令后跟& 可以直接把任务丢到后台执行
    如果暂停了多个任务,jobs查看到每个任务对应的编号
    bg ,fg 后面跟任务编号单个控制某一个任务
    5 ctrl c 结束一个任务

    三 变量

    如果我们对编程稍微有点了解,变量这个概念并不陌生,我们通常都把变量理解为容器,用来存放数据。那么shell中的变量当然也是这个意思。之前我们了解了PATH。我们可以用env查看系统预设的全部系统变量,还可以用set命令查看我们自定义的变量。 
    linux 下的变量格式为:$变量名
    变量的命名规则:字母,数字,下划线,不以数字开头。
    下面重点看下变量的赋值,看下单引号和双引号的区别:
    我们简单举六个例子: 
    1 a='a$bc' echo $a 结果 a$bc
    2.a=1;b=2 echo $a$b 结果 12
    3.a='a$bc';b=2 echo $a$b 结果 a$bc2
    4.c="a$bc" echo $c 结果 a
    5.c="a$b"c echo $c 结果 a2c
    6.c='a$b'c echo $c 结果 a$bc
    其实要不了这么多例子就能说明问题,那么我们总结下,单引号会把里面的内容按照原来的字符原样输出,不识别有意义的符号。双引号会解读出里面的带含义字符以及命令。例子4中,解读为bc变量,因为该变量不存在,所以只输出了a
    我们直接 a=111这样定义一个变量,只会在当前shell中生效,如果我们进入一个子shell,就找不到,那么他是一个局部变量。local variable
    export a=111 这样就定义一个全局变量 global variable,子shell会继承父shell 的该变量

    四 环境变量的几个配置文件:

    1 系统层: 
    /etc/profile 
    该文件预设了几个重要的变量,例如PATH USER LOGNAME MAIL INPUTRC HOSTNAME HISTSIZE umask 等
    /etc/bashrc
    该文件主要预设umask 和ps1,ps1就是我们输入命令时前面的那串字符
    例如[root@lvlinux~] [用户@主机名 当前目录] ~指家目录
    2 用户层:
    .bash_profile 
    该文件定义了用户的个人化路径与环境变量的名称。每个用户都可以使用该文件输入专属自己的shell信息,当用户登录时,该文件仅执行一次
    .bashrc
    该文件包含专属自己的shell的bash信息,当每次打开心的shell时,该文件会被读取,可以将用户自定义的别名及变量写到这里
    .bash_history
    用于记录命令历史
    .bash_logout
    退出shell时,会执行该文件。可以将清理的工作放着这里

    五 几个特殊符号

    1.$ 我们应该对他有印象,当我们在终端下输入命令时会看到,root用户前面是一个#号,普通用户前面是一个$.再者我们前面提到,用作变量的标识符。
    在正则表达式中,作为行尾标记。!$ 表示刚执行过的命令中最后一个变量。
    例如 执行以下head /etc/passwd 再执行下tail !$ 就等价于 tail /etc/passwd
    2~ 表示用户的家目录,root用户的家目录是/root,普通用户的家目录是/home/用户名
    3.& 命令后面跟该符号,表示把该任务丢到后台执行
    4 分号;和&&和||
    两条命令的连接有三种方式:
    1分号连接 :表示依次执行,前后没有关联
    2 &&连接 : 符号前的命令执行成功后,才执行符号后的命令。否则不执行
    3 ||链接:符号前的命令执行成功后,不执行符号后的命令,否则执行。

  • 相关阅读:
    分布式唯一ID:雪花ID Snowflake .Net版
    jTopo HTML5 Canvas 画图组件
    运用四色建模法进行领域分析
    .netcore 分布式事务CAP2.6之控制台使用
    .netcore 分布式事务CAP2.6 快速入门
    .NetCore从零开始使用Skywalking分布式链路追踪系统
    Docker安装Skywalking APM分布式追踪系统
    ubuntu18.04安装docker
    github超级小白入门攻略
    记录AJAX充电点点滴滴
  • 原文地址:https://www.cnblogs.com/aksir/p/9069773.html
Copyright © 2011-2022 走看看