7-linux基础-bash基础特性 本文共有60687个字,关键词: bash基础特性 ·我们执行的命令是依靠shell命令解释器执行的/bin/bash,bash是linux下的标准shell ·shell解释器中(命令行)的快捷操作: TAB键 命令和文件的补全 Ctrl+L 清屏(clear) Ctrl+U 从光标处删除到行首的内容(剪切) Ctrl+Y 粘贴最后一次次剪切的内容 Ctrl+A 移动光标至行首 Ctrl+E 移动光标至行尾 Ctrl+C 强制退出命令的执行 Ctrl+Z 将程序放入后台 命令历史:history ~]#history #查看命令历史 ~]#echo$HISTFILESIZE #查看命令历史的条数 ~]#!! #执行上一条命令 ~]#!$ #调用上一条命令的最后一个参数 ESC+'.' #调用上一条命令的最后一个参数在当前光标处,重复使用回调多个命令 Alt+'.' #调用上一条命令的最后一条参数到当前光标处,本地可以执行,远程不行 控制命令历史的记录方式: ~]#echo$HISTCONTROL #查看命令历史记录的方式 ignoredups忽略重复的命令 ignorespace忽略空格开头的命令 ignoreboth以上两种方式都生效 命令补全: 直接补全 敲一次tab键,命令会自动补全(输入部分) 列出相关的所有命令(当输入的部分不唯一时) 当输入不唯一时,连续敲两次tab键,显示所有与输入相关的命令 #bash根据PATH环境变量定义的路径自左向右在每个目录下搜索,第一次找到的即要执行的命令,找到以后以hash的形式存储起来,下一次执行命令先去hash表中寻找,需要注意的是,当命令路径缓存后,若是移动位置或者改名,则会报错,并且不会去PATH路径下查询。 路径补全: 将用户给出的字符串作为路径的开头,并在其指定路径的上一级目录下进行搜索,如果结果唯一则补全,如果结果不唯一则给出列表(按两次TAB键) 命令行展开: ~ 展开为家目录 ~USERNAME 展开为指定用户的家目录 {} 可承载以逗号分隔的列表,并将其展开为路径 /tmp/{a,b,c} = /tmp/a /tmp/b /tmp/c 命令的执行状态结果:$? ~]#echo $? #输最近一条命令的执行状态结果 程序的执行有两类结果: 程序的返回值:执行结果 程序的执行状态结果 别名:alias ~]#aliasname='value' #定义别名,必须使用单引号 #命令行中设置只对当前shell生效 ~/.bashrc #仅对当前用户生效 /etc/bashrc #对所有用户生效 Tips:写入配置文件不会立即生效,需要重新读取配置文件 ~]#sourceFILENAME #重新读取配置文件 ~]#.FILENAME #重新服务配置文件 撤销别名: ~]#unalias 别名 #撤销别名 -a撤销所有别名 不执行别名,使用命令原有含义的方式: ~]#\COMMAND #将别名转义 文件名通配:bash中用于实现文件名的通配机制 ~]#whatisglob #查看关于glob的帮助文档 ·通配符 *、?、[] *任意长度的任意字符 ? 任意的单个字符 [list]匹配指定范围内的任意单个字符 [0-9] 表示所有的数字,"-"为连接符 [A-Z] 大写字母 [a-z] 小写字母 [^] 匹配指定范围外的所有单个字符 ·专用字符集(不包括范围指定符号"[ ]") [:alnum:] 任意数字或字母 [:alpha:] 任意字母 [:space:] 空格 [:lower:] 小写字母 [:digit:] 任意数字相当于0-9 [:punct:] 标点符号 ~]#ls/L*[0-9]*[[:lower:]] #以L开头,中间有一个数字 ,以小写字母结尾的文件 bash的I/O重定向及管道 程序:指令+数据 读入数据:input 输出数据:output 标准输入:默认(缺省)从键盘读入,描述符(IO):0 计算机识别文件、用户、进程、都是依靠数字(ID)来实现的,我们用户看到的是文件名,但内核内部追踪文件时,对打开文件分配ID,这个ID称为文件描述符 打开的文件有一个fd(filedescriptor),程序运行结束时有数据输出,数据输出可以是文件,也可以是屏幕、打印机,所以它应当有一个默认位置。 标准输出:monitor,监视器 描述符 1 错误标准输出:monitor,监视器 描述符 2 I/O重定向:不从标准输入读取数据 不从标准输出输出数据 改变默认位置即为重定向 ·输出重定向 COMMOND> new.pos #覆盖重定向 COMMAND>> new.pos #追加重定向 ~]#set -C #禁止将内容覆盖输出至已有文件 ~]#set +C #允许将内容覆盖输出到已有文件 ·错误的输出是单独的数据流,使用2>进行重定向 ~]#cat/etc/fstab >| /tmp/fstab #强制覆盖">|" &> 合并数据流,覆盖重定向至一个文件 &>> 合并数据流,追加重定向至一个文件 ~]#COMMAND> /path/to/file.out 2&>1 #将2(错误输出)覆盖定向到1中 ~]#COMMAND> /path/to/file.out 2&>1 #将2(错误输出)追加重定向至1 ·输入重定向:< /path/to/somefile ~]#tr [option] SET1 SET2 #不支持跟文件,默认只从标准输入接收数据,将SET1中的字符按位替换成SET2中的字符 -d 如果只有一个字符集,则删除出现在字符集中的字符 ~]#tr abc ABC </etc/fstab #将/etc/fstab中内容小写的abc替换成ABC,不改变原文件内容 ·'<<' 此处生成文档 cat<<EFO #从标准输入接收数据,以EFO作为输入结束符,打印到屏幕 cat>>/tmp/test.out<<EFO #在此处生成文件 管道:'|' COMMADN1 |COMMAND2|COMMAND3 ~]#tee[option] file #一路输入两路输出 #tee是覆盖输出,可以再管道中截取数据 变量的类型: 变量的类型决定了数据存储格式,存储空间大小,参与运算种类 ·字符型 ·数值型 强类型编程语言:定义变量必须指定类型,参与运算的变量必须符合要求,调用未声明的变量将产生错误; 弱类型编程语言:可以不指定(shell)类型,默认均为字符型,参与计算时会自动进行隐式转换,变量无需实现定义,可直接引用。 bash中变量的种类(应用场景或作用域的划分) 根据变量生效范围的标准 ·本地变量 生效范围为当前shell进程的生命周期,对当前shell外的其他shell进程,包括当前子shell进程均无效。 ·环境变量 生效范围为当前shell进程及其子shell ~]#delare-x #声明环境变量 ·局部变量 生效范围为当前shell进程中模块代码片段,这些代码是指函数。 ·位置参数变量 使用$1/$2...来表示,在脚本中调用通过命令传递给它的参数,对应调用第1/2个参数 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 基础笔记综合整理 2018-10-03 评论 1738 次浏览