BASH

shell是与kernel沟通的桥梁

检查系统可用shell
/etc/shells

centos默认使用bash
bash的优点
       历史命令记录功能,记录文件为  ~/.bash_history
       命令与文件补全功能
               [Tab] 接在一串指令的第一个字的后面,则为命令补全;
               [Tab] 接在一串指令的第二个字以后时,则为"文件补齐"!
               若安装 bash-completion 软件,同时在/etc/bash_completion.d/文件夹下面有对应补全文件,则在某些指令后面使用 [Tab] 按键时,可以进行"选项/参数的补齐"功能!
命令别名设置(alias)
       
工作控制、前后台控制(job control、foreground、background)
       
程序化脚本(shell script)
       
通配符(wildcard)

查询是否为bash shell的内置命令:type
       type [-tpa] command
               -t,显示命令种类:file为外部命令,alias为别名命令,builtin为内置命令
               -p,当command为外部命令时,显示命令的完整文件名(完整路径)
               -a,在PATH路径中寻找包含command字符在内的所有命令,包括alias
               不加参数默认识别命令为内置或者外部命令


通过反斜杠\可以将长命令换行显示
ctrl+u/k,从光标处向前/后删除指令
ctrl+a/e,将光标移动到指令最前面/后面

 

shell变量

shell变量功能
       变量的读取和设置
               echo $variable
       
       变量设置规则
               变量由字母和数字组成,数字不能作为开头
               变量和内容用=连接
               =左右两边不能有空格
               变量内容如果包含空格,则必须用单引号''或者双引号""标识。单引号会使得$的引用变量功能失效,双引号则保持该功能
               变量内容可以包含转义字符
               可以通过$(command)来引用命令执行结果
               可以通过$进行环境变量的迭代
               通常大写代表系统变量,小写代表自定义变量
               变量可以通过export来变成环境变量,供子程序调用
               取消变量:unset


环境变量
       env
       set,包含环境变量和用户自定义变量
       $,本shell的PID
       ?,执行命令的回传值
       export [variable],将自定义变量转换成环境变量


语系变量locale
       locale -a,显示所有支持语系
       /etc/locale.conf,语系配置文件


变量的有效范围
       环境变量  -->全局变量
       自定义变量-->局部变量
       export可以将局部变量转换成全局变量

变量的键盘读取、数组和声明
       read [-pt] varibale
               -p,后面可以接提示字符
               -t,后面接等待的秒数

       declare [-aixr] variable
               -a,定义variable为数组类型
               -i,定义variable为整数类型
               -x,将variable转换成环境变量
               -r,将variable定义为只读read only,变量不可被更改,也不能被取消unset
       variable[n]
               n为数字,定义为数组类型,数组索引从1开始而不是0

与文件系统与程序的限制关系ulimit
       ulimit [-HSacfdltu] [配额]
               -H,hard limit,严格设置,不能超过这个限制
               -S,soft limit,警告设置,超过限制就会收到警告信息
               -a,显示用户配额信息
               -c,core file,核心文件大小限制。核心文件:在程序发生错误时,系统有可能将程序在内存中的信息写入文件。
               -f,由shell创建的单一文件大小限制(单位Bytes),数值只能减小不能增大
               -d,程序可以使用的最大断裂内存(segment)容量
               -l,可锁定的最大内存量
               -t,可使用的最大内存占用时间(单位:秒)
               -u,单一使用者可以使用的最大程序数量
       退出登录才能解除限制,管理使用者的ulimit,需要使用PAM功能

变量内容能够的删除、取代和替换
        

变量设置方式
说明
${变量#关键字}
${变量##关键字}
从头删除最短匹配
从头删除最长匹配
${变量%关键字}
${变量%%关键字}
从尾删除最短匹配
从尾删除最长匹配
${变量/旧字符串/新字符串}
${变量//旧字符串/新字符串}
替代匹配的第一个字符串
替代匹配的所有字符串

        
命令别名与历史命令

命令别名与历史命令
别名设置
alias:设置别名 alias 别名='指令'
unalias:取消别名 unalias 别名

历史命令:history
历史命令记录文件 ~/.bash_history,记录命令的数量由 HISTFILESSIZE 决定
       history [n|-c|-raw [file]]
       n显示最近的n条历史命令
       -c,清楚当前shell的所有历史命令
       -r,将file文件内容写入当前shell的历史记录中
       -a,将目前新增的命令写入到file文件里面,file缺省则写入~/.bash_history中
       -w,将当前shell的所有历史命令写入到file文件中
         
       !number,执行第n条历史命令
       !command,搜索最近一条指令开头为command的命令并执行
       !!,执行上一个指令
 

bash环境

路径与指令的搜寻顺序

bash环境配置文件
login与non-login shell
       login shell,取得bash需要完整的登陆流程,称为login shell。
       non-login shell,取得bash接口不需要重复登录。
login shell与non-login shell取得的环境配置文件不一样。
login shell只会读取两个配置文件:
       /etc/profile,系统的整体配置文件,一般不修改
       ~/.bash_profile或~/.bash_login或~/.profile,个人配置文件

 

数据流重定向
标准输出(stdout)和标准错误输出(stderr)都是默认输出到屏幕
标准输入(stdin),代码为0,使用<或者<<
标准输出(stdout),代码为1,使用>或者>>
标准错误输出(stderr),代码为2,使用2>或者2>>

单个<符号代表使用文件内容来代替键盘的输入
两个<<符号代表结束输入。例如<<eof,当后边所输入的字符串遇到eof的时候,就结束此次输入。
单个>符号代表将数据以覆盖的方式输出到指定文件或者设备上
两个>>符号代表将数据以追加的方式输出到指定文件或者设备上
将标准错误输出信息当做标准输出信息并且写入同一个文件, 2>&1 或者 &>
将标准输出信息当做标准错误输出信息并且写入同一个文件, 1>&2
/dev/null空设备,可以将信息定向到该设备从而忽略

tee,双向重定向
同时将标准输入信息在屏幕上显示(标准输出)和重定向到文件
-a,以追加的方式

命令执行的判断依据:;、&& 和 ||
cmd; cmd; cmd ...
;的作用是分隔命令,并依照命令顺序执行,命令之间没有想关性

$?(命令回传值)&&(与) ||(或)
$?=0代表命令执行结果正确,$?=1代表命令执行结果错误
cmd1&&cmd2表示cmd1执行结果正确,则执行cmd2,否则不执行cmd2
cmd1||cmd2表示cmd1执行结果正确,则不执行cmd2,否则执行cmd2、

管道命令

管道命令(pipe)(|)
管道命令仅能处理由前一个命令传来的正确信息
管道命令需要能够接受标准输出信息作为其标准输入

截取命令:cut和grep
cut,cut的主要用途处理行内数据
cut -d '分隔符' -f fields
cut -c 字符区间
以上两种操作是互斥的,

grep,grep的主要用途是处理整行的数据
grep [-acinv] [--color=auto] '目标字符串' file
-a,将二进制文件以文本方式搜索
-c,搜索的次数
-i,忽略大小写
-n,输出行号
-v,反向选择,显示除去目标字符串以外的行
--color=auto,将目标以其他颜色显示

排序命令:sort,wc,uniq
sort
sort [-fbMnrtuk] [file/stdin]
-f,忽略大小写并全部转换成大写
-b,忽略开头的空格
-M,按照月份排序
-n,按照字符串的数值编码排序
-r,反向排序
-t,定义分隔符号,默认'tab'
-u,不显示重复项
-k,排序区间

wc
-l,统计行数
-w,统计字数
-m,统计字符数

uniq,不显示重复项
-i,忽略大小写
-c,统计数量

字符转化命令:tr,col,join,paste,expand
tr,删除或替换目标字符,可以使用正则表达式
tr [-ds] target
-d,删除目标字符
-s,替换目标字符

col
-x,将tab键替换成对等的空格

join,用于处理两个文件之间的数据
join [-ti12] file1 file2
-t,定义分隔符,默认是空格,且使用第一个字段比较
-i,忽略大小写
-1 n,第一个文件选择第n个字段进行比较
-2 n,第二个文件选择第n个字段进行比较

paste,直接将两个文件的相同行进行连接,以tab键分隔
paste -d file1 file2
-d,定义分隔符,默认是tab键

expand,将tab转换成对应个数的空格键
expand [-t [n]] file
-t n,n代表数字,表示用n个空格代替tab键,默认8个

分割命令:split
将大文件分割成若干个小文件
split [-bl] file PREFIX
-b size,分割文件的大小,单位b/k/m
-l number,以行数进行分割
PREFIX,分割文件的命名前缀

参数代换:xargs
用来产生指令的参数,可以读取stdin数据,并以空格或者断行符作为区分
xargs [-0epn] command
-0,将特殊字符还原成一般字符
-e string,定义结束字符串为string,当遇到该字符串时则停止工作
-p,交互模式
-n n,控制接收参数的个数,设置为n个

减号-的用途,可以用来代替stdin或者stdout

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值