文档章节

Bash Shell特性

jit-hakase
 jit-hakase
发布于 2017/09/05 21:44
字数 1198
阅读 0
收藏 0
点赞 0
评论 0

Bash Shell特性

shell变量

  • 常用环境变量和bash变量
    • $_ 上一条命令的最后一个参数
    • $TERM 终端环境类型
    • $SHELL shell类型
    • $HISTSIZE 命令历史条目数
    • $USER 用户名
    • $MAIL 邮箱路径
    • $PATH 命令搜索路径
    • $PWD 当前目录
    • $LANG 语言和编码
    • $HOME 家目录
    • $HOSTNAME 主机名
    • $HOSTTYPE 硬件架构
    • $HISTFILE 命令历史记录文件
    • $$ bash的PID
    • $? 上一个命令的状态码
    • $PS1 命令提示符
    • $PS2 多行命令提示符
    • $RANDOM 随机生成一个0-32767的整数

特性和历史

  • 命令输入快捷键
    • [TAB] 命令/文件 补全
    • [TAB][TAB] 列出所有 命令/文件 路径补全
    • Ctrl+c 终止当前命令
    • Ctrl+d 输入EOF(某些命令的退出符)
    • Ctrl+z 将当前命令暂停并调入后台
    • Ctrl+a 跳到命令行首
    • Ctrl+e 跳到命令行尾
    • Ctrl+u 删除光标至命令行首的内容
    • Ctrl+k 删除光标至命令行尾的内容
    • Ctrl+l 清屏(clear命令)
    • Ctrl+s 暂停屏幕输出
    • Ctrl+q 恢复屏幕输出
  • 命令历史操作
    • !string 执行命令历史中最近一个以指定字符串开头的命令
    • !$(Esc+.) 上一条命令的最后一个参数
    • !n 执行命令历史中的第n条命令
    • !-n 执行命令历史中的倒数第n条命令
    • !! 执行上一条命令

替换和别名

  • 命令别名
    • alias CMDALIAS='CMD' 设定命令别名
    • ualias CMDALIAS 取消命令别名
  • 命令结果替换
    • "" 双引号 弱引用 可以实现变量替换
    • '' 单引号 强引用 不能实现变量替换
    • 替换为命令结果的两种方式
      • $(CMD)
      • `COMMAND`
  • {} 花括号同级展开
    • ./t/{a,b,c} <=> ./t/a ./t/b ./t/c +./t/{a,b}{c,d} <=> ./t/ac ./t/ad ./t/bc ./t/bd
  • 符号替换
    • - 上一个工作目录
    • ~ 当前用户家目录
    • ~USER USER家目录
    • ~+ $PWD
    • ~- 上一个$PWD
    • ${!VAR} VAR的变量名 支持globbing
  • 算术展开
    • $((EXPRESSION)) 例: $((C#N)) C进制的N
    • $[EXPRESSION] 例: $[N1+N2] N1+N2的和
    • {N1..N2} 例: {1..10} 展开1~10的序列
  • 字符串替换
    • ${#STR} 求STRING的长度
    • ${STR:POS} 求从POS开始的子串
    • ${STR:POS:LEN} 求从POS开始长度为LEN的子串
    • ${STR#SUBSTR} 从左往右, 删除最短匹配$SUBSTR.
    • ${STR##SUBSTR} 从左往右, 删除最长匹配$SUBSTR.
    • ${STR%SUBSTR} 从右往左, 删除最短匹配$SUBSTR.
    • ${STR%%SUBSTR} 从右往左, 删除最短匹配$SUBSTR.
    • ${STR/OLD/NEW} 从左往右, 替换第一个$OLD$NEW.
    • ${STR//OLD/NEW} 替换所有$OLD$NEW.
    • ${STR/#OLD/NEW} 如果以$OLD开头, 替换为$NEW.
    • ${STR/%OLD/NEW} 如果以$OLD结尾, 替换为$NEW.

文件名通配(globbing)

  • 文件名通配符号
    • * 任意长度的任意字符
    • ? 任意单个字符
    • [] 匹配指定范围内的任意单个字符
    • [^] 匹配指定范围外的任意单个字符
  • 匹配字符组 ([A1-A2]匹配范围, A1, A2为任意字母或数字.)
    • [a-z] 匹配a-z
    • [A-Z] 匹配A-Z
    • [0-9] 匹配0-9 [a-zA-Z0-9] 匹配字母和数字
  • 特殊符号匹配
    • [[:space:]] 空白字符
    • [[:punct:]] 标点符号
    • [[:lower:]] 小写字母
    • [[:upper:]] 大写字母
    • [[:alpha:]] 大小写字母
    • [[:digit:]] 数字
    • [[:alnum:]] 数字和大小写字母

多命令和重定向

  • 命令连用
    • \ 单行命令延续
    • ; 分步执行命令
    • && 同时执行命令
    • || 上一个命令执行失败时执行命令 && || 相当于if else控制流程结构
  • 重定向
    • < 重定向标准输入
    • << EOF 重定向大段标准输入(EOF结尾)
    • > 重定向标准输出[覆盖方式]
    • >> 重定向标准输出[追加方式]
    • 2> 重定向错误输出(覆盖方式)
    • 2>> 重定向错误输出(追加方式)
    • &> 重定向标准输出和错误输出(覆盖方式)
    • &>> 重定向标准输出和错误输出(追加方式) set -C 禁止对已经存在文件使用覆盖重定向 >|(强制覆盖) set +C 关闭上述功能
  • 管道 将前一个命令的输出作为后一个命令的输入 格式: CMD1 | CMD2 | CMD3 | ...

配置文件

  • 主要配置文件
    • /etc/profile 全局配置文件
    • /etc/profile.d/*.sh 全局配置执行脚本
    • ~/.bashrc 个人配置文件
    • ~/.bash_profile 个人配置文件(不常用)
    • ~/.bash_history 命令历史文件
    • ~/.bash_logout 注销时执行的文件
    • /etc/bashrc 设置一些属性(redhat系列才有)
  • 其他相关
    • /etc/sysconfig/i18n 语言和编码配置文件
    • /etc/man.config 设置man page的搜索路径的文件
    • /etc/issue 登陆显示信息的文件
    • /etc/motd 远程连接登陆显示信息的文件
    • /etc/inputrc 输入特性文件
  • 配置文件调用顺序
    • 登录式
      • /etc/profile
      • /etc/inputrc
      • /etc/profile.d/*.sh
      • /etc/sysconfig/i18n
      • ~/.bash_profile
      • ~/.bashrc
      • /etc/bashrc
    • 非登录式
      • ~/.bashrc
      • /etc/bashrc
      • /etc/profile.d/*.sh
      • /etc/sysconfig/i18n

© 著作权归作者所有

jit-hakase
粉丝 0
博文 26
码字总数 30408
作品 0
南京
程序员
bash特性小结&bash变量

时间就是金钱 效率就是生命 一、bash编程 |---------------| 二、bash特性总结 bash特性: 命令行展开:~,{} 命令别名:alias,unalias 命令历史:history 文件名通配:glob 快捷键:ctrl+...

技术小美 ⋅ 2017/11/08 ⋅ 0

bash配置文件介绍

很多在shell进程中定义的特性(如:别名)重启shell后就失效了,可以通过修改bash配置文件来解决重启配置丢失的问题。 bash配置文件分类: profile类:为交互式登录的shell进程提供配置 bash...

嘀充值成功 ⋅ 2017/10/11 ⋅ 0

bash脚本总结1:[[:not found 错误

运行shell脚本经常碰到这个坑,但是又不知道是怎么回事,总是怀疑bash版本是不是支持[[ 用法。 1.检查bash版本。 bash --vserion GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gn...

mapleZDW ⋅ 2017/04/06 ⋅ 0

Linux环境变量是什么

什么是环境变量 学习或使用Linux的时候,修改环境变量是经常遇到的,到底什么是环境变量?环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。允许在内存中存储数据,以便...

844365389 ⋅ 2016/11/14 ⋅ 0

2017-11-27Linux基础知识(14)bash特性之脚本编程初步

回顾一下我们讲述了用户管理、权限管理以及还介绍了两个命令,一个是install命令,另一个是mktemp,在这里我们并不多做介绍。 对于用户管理来说,是对权限的资源进行其隔离分配。 而对于权限...

刘祥宇 ⋅ 2017/11/29 ⋅ 0

一、Linux Shell基础

1.1、shell基础 Bash 是一个与Bourne Shell兼容的、执行从标准输入设备文件读取的命令的语言解释器。Bash是Bournae-Again Shell的缩写。Bash与原来的Unix sh Shell向后兼容,并且融合了一些有...

运维菜鸟丶 ⋅ 2017/06/25 ⋅ 0

bash的基本特性

shell能够提供给用户操作系统的一个接口,能够将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误的工作。shell中有很多中形式,比如bshell,CShell,KShell,TCSH等等,通过/etc/...

alfredliukai ⋅ 2015/08/09 ⋅ 0

Linux命令与shell

资料来自:《http://blog.chinaunix.net/uid-14880649-id-2954340.html》 所谓shell就是命令解释程序。它提供了程序设计接口,可以使用程序来编程。学习shell对于Linux初学者理解Linux系统是...

hiqj ⋅ 2015/09/07 ⋅ 0

Linux特性详解

bash及其特性: shell: 外壳 GUI:Gnome, KDE, Xfce CLI: sh, csh, ksh, bash, tcsh, zsh Linux允许同一个用户登录多次 root, student 程序:进程 进程:在每个进程看来,当前主机上只存在内...

yegulang ⋅ 2017/07/19 ⋅ 0

Lunix基础入门--bash的基础特性(五)

Bash的基础特性:history命令 命令历史:shell进程会其会话中保存此前用户提交执行过的命令; [root@centos7 ~]# history 定制history的功能,可通过环境变量实现: HISTSIZE:shell进程可保...

jcpokai521 ⋅ 2017/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部