1、命令的别名——(自定义命令)
alias
alias - 定义或显示别名。
格式:alias [-p] [名称[=值] ... ]
注意:若是alias命令不带任何选项和参数,则表示显示全部已经定义并生效的别名设置;linux
unalias unalias - 从别名定义列表中删除每个"名字"。 格式:unalias [-a] 名称 [名称 ...] 注意: 不管使用alias命令仍是使用unalias命令,其功能都会当即生效;此二命令的生命期仅为当前shell的生命期;一旦注销登陆,至关于关闭了bash,则使用alias命令定义的别名或使用unalias命令删除的别名操做,会当即失效; 对于每一个用户来讲,都有一个私有的bash的配置文件,就在用户的家目录中的一个隐藏文件,文件名为".bashrc",其主要功能就是用来保存命令的别名的定义; 注意: 在对于此文件中的命令别名进行编辑并保存以后,在当前已经运行的bash中并不会当即生效,须要从新加载此文件才能使配置生效,如下两种操做皆可实现: 1.重启bash:注销以后再次登陆便可; 2.执行文件中定义的命令:使用source命令,或者.命令; source/. source - 在当前 shell 中执行一个文件中的命令。 . - 在当前 shell 中执行一个文件中的命令。 格式:source/. 文件名 [参数] 2、bash的快捷键: C:Ctrl键 M:Alt键 E:ESC键 DEL:Backspace键 C-l:清屏,至关于clear命令; C-a:将光标跳转至命令行编辑模式的行首; C-e:将光标跳转至命令行编辑模式的行尾; C-k:删除命令行编辑模式的光标所在位置至行尾的内容; C-u:删除命令行编辑模式的光标所在位置至行首的内容; C-c:结束前台进程; M-.:引用上一个命令中的最后一个参数;(在Xshell中不能用) E,.:功能同M-. 3、命令历史: Bash进程会保存其会话中的用户曾经执行过的命令,以方便用户重复执行某个命令操做; 命令历史包括两个方面: 1.用户曾经执行过的命令; 2.用户曾经执行过的命令的路径; 在Bash中有一个内置的变量——PATH,PATH变量的值为当前系统中全部的命令的文件所在的路径的集合; 命令如何被shell执行的? bash会将命令行的内容按照空白字符进行切片,分析第一个切片内容: 1.判断第一个切片的内容是内部命令仍是外部命令; 若是是内部命令,直接运行; 若是是外部命令,先找hash表中的路径缓存,若是有,则直接执行;不然经过查找PATH变量中包含路径中,是否有对应名称的文件; 使用hash命令查看被记住的命令文件的路径; -r:清空hash表; 使用history命令查看被记住的命令的命令行参数; history - 显示或操纵历史列表。 格式: history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...] 经常使用选项: -c:清空历史缓冲区中的命令历史记录; -d OFFSET:删除指定的历史命令条目; 重复执行历史缓冲区中的命令: !NUMBER:重复执行历史缓冲区中编号为"NUMBER"的命令; !STRING:重复执行历史缓冲区中以"STRING"开头的最后一次执行过的命令; !?STRING:重复执行历史缓冲区中包含了"STRING"的最后一次执行过的命令; !-NUMBER:重复执行历史缓冲区中倒数第"NUMBER"条命令; 使用上、下Arrow能够从历史缓冲区中调用命令,回车以后执行; C-r:在历史缓冲区中实施搜索,回车以后执行; !$:在历史缓冲区中调用最后一个命令的最后一个参数; !^:在历史缓冲区中调用最后一个命令的第一个位置的参数; !:NUMBER:在历史缓冲区中调用最后一个命令的第"NUMBER"位置参数 !SEQUENCE:NUMBER:历史缓冲区中调用第"SEQUENCE"条命令的第"NUMBER"位置参数 在bash中与命令历史相关的内置变量: HISTSIZE:历史缓冲区中可以保存的命令历史的最大条目数量,默认值为1000; HISTFILESIZE:~/.bash_history文件中可以保存的命令历史的最大条目数量,默认值为1000; HISTTIMEFORMAT:在命令历史缓冲区中记录历史命令时,同时记录命令的执行的时间戳标记;可使用date命令的FORMAT来表示时间的记录格式;默认值为空; HISTCONTROL:控制命令历史的记录方式: ignoredups:连续且相同的命令不会被记录到历史缓冲区;此为默认值; ignorespace:以空白字符开头的命令不会被记录到历史缓冲区; ignoreboth:上述两种状况都不会被记录到历史缓冲区; 4、命令补全——(TAB键的使用) 包括两个方面的内容: 1.构成命令字符串的补全; 参考PATH变量中的路径,对命令进行补全: 若是,给出的字符串在PATH变量对应的路径中是惟一的,则直接补全命令; 若是,给出的字符串在PATH变量对应的路径中不惟一,则bash给出提示; 2.命令中参数所对应的字符串补全; 根据给出的路径进行补全: 若是,给出的字符串在给出的路径中是惟一的,则直接补全参数; 若是,给出的字符串在给出的路径中不惟一,则bash给出提示; 5、命令行展开 (a+b+c)(d+e+f)=ad+ae+af+bd+be+bf+cd+ce+cf 1.~展开: ~:bash会自动将其展开为当前登陆用户的家目录; ~STRING:bash会自动将其展开为以"STRING"为用户名的用户的家目录; ~+:调用bash的内置变量"PWD"的值; ~-:调用bash的内置变量"OLDPWD"的值; 2.{}展开: 在"{}"中,能够填充一个以","分隔的路径列表,bash会将其展开为多个独立的路径; 示例: ~]# mkdir -pv /china/{hb,hn,jl,hlj,ln}/{link,linka,linkb}/class18 ~]# cp 1.txt{,.bak} 1.txt{,.bak} == 1.txt 1.txt.bak 6、命令的执行结果 在bash中,命令的执行结果有两种: 1.执行命令的输出结果: 根据用户的需求获取到的命令执行的正常输出结果; 命令引用或命令替换: `` 至关于 $() ``:反向单引号,反引号; 示例: 建立一个文件,文件名为test-系统时间; ~]# touch test-`date +%F-%H-%M-%S` 2.执行命令的状态返回值: 与此前的一个命令是否成功执行相关的返回内容; bash使用一个特殊的内置变量来保存其内容:$? $?实际上保存的是一个数值,其取值范围:0-255 其中: 0:表示命令执行成功; 1-255:表示命令执行失败; 1,2,127:bash中内置的命令执行失败的状态返回值; 1:表示小问题; 2:表示严重问题; 127:表示命令自己出现问题; 其他数字(3-126,128-255):用户能够自定义的失败状态返回值; 7、引用功能: '':强引用 凡是被单引号引用的内容,bash在处理时,一概视其为普通字符,即便其自己是bash定义的具备特殊功能和做用字符亦是如此,但单引号自己除外; "":弱引用 被双引号引用的内容中,有些特殊字符仍然会保留其特殊含义,如: $, \, ""; 8、转义功能: \:bash定义的转义字符;大多数的状况下,"\"只能将其后面一个字符转义; \COMMAND:取消定义过的命令别名,而使用命令自己的功能; 9、Globbing——文件名通配符,简称为glob; *:匹配任意长度的任意字符或字符串;(某些特殊位置的"."字符不能匹配;) ?:匹配任意单个字符;(某些特殊位置的"."字符不能匹配;) []:匹配指定范围内的任意单个字符,必须匹配且只能匹配一个字符; 指定范围的方法: 1.枚举法:列出全部有效字符; 2.范围指定: [0-9]:表示全部单个的十进制数字; [a-z]:a,A,b,B,c,C,...,x,X,y,Y,z [A-Z]:A,b,B,c,C,...,x,X,y,Y,z,Z 3.bash内建字符集: [:lower:]:全部的小写字母 [:upper:]:全部的大写字母 [:alpha:]:全部字母,包括大小写; [:digit:]:全部单个的十进制数字; [:alnum:]:全部的字母和十进制数字; [:punct:]:全部的符号; [:space:]:表示空白字符,包括空格和制表符; 4.反向匹配: ^ 示例: #ls a[^[:digit:]]?? //表示文件名的第二个字符不能是十进制数字; 注意:当中括号中有"^"表示字符集反向匹配时,注意"*"的使用;由于"*"通配范围可能会致使反向匹配失败;此类失败是由于bash的globbing是在贪婪模式下匹配的; 10、管道 | 管道一般是用来链接多个命令的;将管道符号前面的命令的执行的输出结果经过管道传递给管道符号后面的命令,让后面的命令将前面命令的输出结果当成参数使用; wc: wc - print newline, word, and byte counts for each file 格式:wc [OPTION]... [FILE]... 经常使用选项: -c, --bytes:仅显示文件中的字节数; -m, --chars:仅显示文件中的有效字符的数量; -l, --lines:仅显示文件的行数; -w, --words:仅显示文件中字的数量; 注意: 1.通常来说,凡是被管道链接的命令,都应该可以在执行成功以后完成命令结果的输出,不然管道无心义; 2.管道不是万能的,有些场合没办法使用管道的; 11、输入输出重定向 在使用计算机的时候,实现某个功能的主体是程序! 程序=指令 + 数据 数据相当重要! 文件,IO——Input/Output 在linux系统中,可以完成输入和输出功能的实体:文件; 能够用于输入的设备:文件 键盘设备、文件系统中的常规文件、网卡设备、声卡设备、磁盘设备等; 能够用于输出的设备:文件 显示器、文件系统中的常规文件、网卡设备、声卡设备、磁盘设备等; 在内存中使用文件的方式是定义文件描述符,一个文件描述符对应一个文件; 0:表示标准输入,stdin,从键盘实现的输入数据流; 1:表示标准输出,stdout,到显示器的输出数据流; 2:表示标准错误,stderr,到显示器的错误数据流; 输入输出重定向(IO重定向) 采用非标准设备文件实现的IO操做; 输入重定向: < 输出重定向: >:覆盖输出重定向; ~]# set -C //开启防止意外覆盖源文件开关,可使用">|"符号完成覆盖重定向输出的操做,而无需关心是否开启此开关; ~]# set +C //关闭防止意外覆盖源文件开关 >>:追加输出重定向; 错误重定向: 2>:覆盖错误重定向; 2>>:追加错误重定向; 合并标准输出和标准错误的重定向: 1.COMMAND {>|>>} /PATH/TO/SOMEFILE 2>&1 2.&>, &>> 特殊的设备文件: /dev/null:BlackHole,BitBucket(位桶) /dev/zero:泡泡机,吐零机; bash中的其余特殊符号: <<:here document,此处文档,结束标记; 12、bash变量 变量:一段有名称的连续的内存空间;这段内存空间的名称,称为变量名;在这段内存空间中存储的数据,则称为变量值; 程序 = 指令 + 数据 数据:文件,存在值; 向内存空间(变量)中存储数据的过程,称为赋值操做;赋值符号一般为"="; 变量的类型: 123 -- 整型:01111011 -- 字符型:ASCII:3字节 -- 字符型:UTF-8:9字节 变量: 强变量:使用以前必须事先予以声明;必须声明变量类型; 弱变量:在使用以前无需声明,无需指明变量类型;(bash变量) 变量的赋值方法: VARNAME=VALUE 其含义:将某数值(VALUE)经过赋值操做(=)存储于特定的内存空间中(VARNAME); bash中变量名称的命名规范: 1.变量名只能以"_"或"字母"为起始字符,后面的其余字符能够是任意字母,数字或下划线; 2.变量名中的字母是大小写敏感的; 3.命名的书写格式: 全大写:HISTSIZE 全小写:myvar 驼峰式:MyNewVariable 链接式:My_New_Var 4.变量名要能作到见名知意; 5.变量名不能与已知变量或bash的内置变量重复; bash中的变量的分类: 根据变量的做用范围来划分: 全局变量(环境变量):做用范围为整个shell进程,包括其子shell; 本地变量:做用范围为当前登陆时打开的shell进程,不包括其子shell; 局部变量:做用范围仅仅只是当前程序段,通常用于函数; 根据变量的声明方式来划分: bash内置变量: 普通的内置变量:HISTSIZE,... 位置参数变量:$0, $1, $2, ... 特殊变量:$?, $#, $*, $@, $$, ... $?:展开为最近一次执行的命令的状态返回值(退出状态码);用以表示最近一次执行的命令是否成功执行; $#:不包括$0在内的其他的位置参数的个数,以十进制数字表示; $*:从$1开始展开为位置参数。当使用双引号引用展开的结果时,它展开为特殊变量IFS的第一个字符分隔的值; $@:从$1开始展开为位置参数。当使用双引号引用展开的结果时,它展开为一个单独的字符串; $$:展开为当前shell的进程标识符; 自定义变量: 变量的使用: 1.变量的声明和赋值: 1) 声明全局变量(环境变量): export VARNAME export VARNAME=VALUE declare命令: declare - Set variable values and attributes. 格式:declare [-aAfFgilrtux] [-p] [name[=value] ...] 经常使用的选项: -a:声明索引数组(若是支持) -A:声明关联数组(若是支持) -i:声明整型变量 -l:声明变量并将变量值中的字母转换为小写字母; -u:声明变量并将变量值中的字母转换为大写字母; -r:声明只读变量;该变量仅能进行一次赋值操做; -x:声明变量并将其导出为全局变量; declare -x VARNAME[=VALUE] 2) 声明本地变量: VARNAME=VALUE 3) 声明局部变量: local VARNAME[=VALUE] 2.查看环境变量: set命令: 查看和改变shell属性的值及查看shell变量的变量名和变量值; export命令: 查看变量名称,也能够为变量赋值; env命令: 3.查看变量的值: echo ${VARNAME} 4.撤销变量的赋值及变量声明 unset VARNAME