bash的基础特性(1):
(1) 命令历史
history命令:
环境变量:
HISTSIZE: 命令历史记录的条数;
HISTFILE: ~/.bash_histroy;
HISTFILESIZE: 命令历史文件记录历史的条数;
history -d OFFSET
-C
history #:显示历史中最近的#条命令
-a:手动追加当前会话缓冲区的命令历史至历史文件中;
调用历史中的命令:
!#:重复执行#条指令;
!!:
!strong :
调用上一条命令的最后一个参数;
!$:
ESC,.
Alt+.
控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups: 忽略重复的命令,连续且相同方为“重复”;
ignorespace: 忽略所有以空白开头的命令;
ignoreboth; ignoredups ignorespace:
修改环境变量值得方式: export 变量名"值"
变量赋值: 把赋值符合后面的数据存储于变量名指向内存空间;
(2)命令补全
bash执行命令:
内部命令:
外部命令: bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即为要执行的命令:
直接补全: Tab; 用户给定的字符串只有一条唯一对应的命令;
用户给定的字符串为开头对应的命令不唯一,则再次Tab会给出列表;
(3)路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名;
如果唯一: 则直接补全
如果不唯一: 再次Tab,给出列表;
(4)命令行展开
~:展开为用户的主目录
~USERNAME: 展开为指定用户的主目录
{}: 可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp{a,b} = /tmp/a, /tmp/b
/tmp/{Tom,Jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
(5) 命令的执行结果状态
成功
失败
bash使用特殊变量$?保存最近一条命令的执行状态的结果;
0: 成功
1-255: 失败
程序执行有两类结果:
程序的返回值:
程序的执行状态结果:
目录管理类命令:
cd, pwd, ls
mkdir, rmdir
mkdir [options] /path/to/somewhere
-p: 存在于不报错,且可自动创建所需的各目录;
-v: 显示详细信息
-m MODE: 创建命令时直接指定权限;
tree:
-d: 只显示目录
-l level: 指定显示的层数数目
-p pattern: 只显示由指定pattern 匹配到的路由;
rmdir
rmdir [option]...DIRECTORY...
-v: 显示过程
文本文件查看类命令:
cat,tac
more, less, tail, head
,more
more [option...] file...
-d: 显示翻页及退出提示
less
less [option...] file...
head
head [option...] file...
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#
tail
tail [option...] file...
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#
-f: 追踪显示文件新追加的内容;
文件的时间戳管理工具:
touch
文件: metadata,data
查看文件状态: stat
三个时间戳:
access time: 访问时间
modify time: 修改时间,内容改变
change time: 改变时间,元数据改变
touch命令:
touch [option...] file...
-a: only atime
-m: only mtime
-t STAMP:
[[CC]YY]MMDDhhmm[.ss]
-c: 如果文件不存在,则不予创建
bash的基础特性(2):
1、命令别名(alias)
alias命令
(1)alias
显示当前shell进程所有可用的命令别名;
(2)alias NAME'VALLE'
定义别名NAME,其相当于执行命令valle;
注意:在命令行中定义的别名,仅对当前shell进程有效,如果想永久有效,要定义在配置文件中;
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
Note: 编辑配置给出的新配置不会立即生效;
bash进程重新读取配置文件:
source /PATH/TO/CONFIG_FILE
. /PATH/TO/CONFIG_FILE
撤销别名:unalisa
Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"~\COMMAND";
2、glob (globing)
bash中用于实现文件名“通配”
通配符: *,?,[]
(1) *
任意长度的任意字符
(2) ?
任意单个字符
(3) []
匹配指定范围内的任意三个字符
[0-9]
[a-z]: 不区分大小写
[A-Z]: 大写字母
(4) [^]
匹配指定范围外的任意单个字符
[:digit:]: 任意数字,相当于[0-9]
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]: 任意数字或字母
[:space:]: 空格字符
[:punct:]: 标点符号
练习:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位数字的文件或命令
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
3、显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或命令
4、复制/etc目录下,所以医m开头,以非数字结尾的文件或目录至/tmp/charlie下