LINUX学习—bash编程

本文详细介绍了Bash编程的各种特性,包括命令历史、命令补全、重定向、别名设置、命令行编辑、环境变量、条件判断、文件名通配以及流程控制结构。还讲解了Bash中的变量类型、命令替换、脚本编写,以及如何进行条件测试和算术运算。此外,还讨论了如何检查命令语法错误和使用循环结构。
摘要由CSDN通过智能技术生成
Bash特性

进程:在每个进程看来,当前主机上只存在内核和当前进程;
进程是程序的副本,进程是程序执行的实例

bash特性:
1、命令历史,命令补全;
2、支持管道、重定向;
3、支持命令别名alias;
4、支持命令行编辑;
5、支持命令行展开;
6、支持文件名通配;
7、支持使用变量;
8、支持编程;
。。。

命令行编辑:
光标跳转:
ctrl+A:跳到行首;
Ctrl+E:跳至行尾;
Ctrl+k:删除光标至命令行尾的内容;
Ctrl+u:删除光标至行首的内容
Ctrl+l:清屏;

命令历史:
history:查看命令历史

    -c:清空命令整个历史
    -d OFFSET [n]:删除指定位置的命令 history -d 2010 10(表示删除2010后位置10个历史命令)
    -w:保存命令历史至历史文件中

命令历史相应保存在家目录的.bash_history或.zsh_history隐藏文件中
环境变量
PATH:命令搜索路径
HISTSIZE:命令历史缓存区大小

命令历史的使用技巧

    !n:执行命令历史中的第n条命令  
    !-n:执行命令历史中倒数第n条命令  
    !!:执行上一条命令;  
    !string:执行命令历史中最近一个以指定字符串开头的命令  
    !$:引用前一个命令的最后一个参数;  
    ESC, .(按ESC后松开再按.号):引用前一个命令的最后一个参数;  
    ALT+.:引用前一个命令的最后一个参数;  
    TAB:命令补全/路径补全  

路径补全:tab键

命令别名:
alias CMD=’COMMAND [OPTION] [ARGUMENT]’ (有空格需要用单引号括起来)
在shell中定义的别名仅在shell的生命周期中有效:别名有效范围为当前shell进程;要做到永久有效时需要写到配置文件中;
unalias CMD:撤销命令别名

命令替换:
把命令中某个子命令替换为其执行结果的过程;
$(COMMAND) 或COMMAND (注意是反引号): 对命令进行替换
touch ./ $(date +%F-%H-%M-%S).txt

bash支持的引号:
“(反引号):命令替换
“ “(双引号):弱引用,可以实现变量替换
‘ ’(单引号):强引用,不完成变量替换

文件名通配, globbing(其实是命令展开,相当于文件名展开)

    *:可以用于实现任意长度任意字符 
    ?:匹配任意单个字符 ls ?e 
    [ ]:匹配指定范围内的任意单个字符 [abc], [a-m]表示a-m中任何一个, [a-zA-Z]  
    [^]:取反,非范围内  
    ls [a-zA-Z]*[0-9]:以字符开头,以数字结尾的任意文件  
    [:space:]:所以的空格(使用时还需在外面在加一个中括号) 
    [:punct:]:标点符号  
    [:lower:]:小写字母  
    [:upper:]:大写字母  
    [:alpha:]:大小写字母  
    [:digit:]:数字   
    [:alnum:]:数字和大小写字母  
    加个^表示取反,如[^[:alpha:]]表示非字母  
    ls [[:alpha:]]*[[:digit:]]  

通配符有些问题并不能精确描述,导致不能匹配,此时需要用正则表达式;

man 7 glob 可查看以上文件名通配的说明;

基础知识

bash变量的类型:
本地变量(局部变量)
环境变量(当前shell进程及其子进程)
位置变量:$1,$2,....
shift:轮换,轮替,前一个位置变量shift后可重复适用,shift(shift1)命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。同理,shift n后,前n位参数都会被销毁。
特殊变量 :
退

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值