Bash基础特性 -- 卷一
admin
2023-03-18 01:21:09
0

                                                    Linux Bash的基础特性

一、history(命令历史记录)

    1、语法与常用参数

        history

            列出当前shell的所有history

        history [-c]

            将当前shell的所有 history 清除

        history [n]

            n为数字,列出最近的n条记录

        history [-raw] histfiles

            -a [HISTFILES] :手动追加当前会话缓冲区的命令历史至文件中,如果histfiles事先不存在,则创建, 如果不指定histfiles文件,则默认写入~/.bash_history中

            -r HISTFILES : 将histfiles中的内容读取到当前shell的history中

            -w HISTFILES : 将当前shell 的history写入之histfiles文件中

    

    2、环境变量

        HISTSIZE:命令历史记录的条数,默认为1000条

        HISTFILE~/.bash_history

           HISTFILESIZE:命令历史文件记录历史的条数

[root@Nginx ~]# echo $HISTFILE
/root/.bash_history
[root@Nginx ~]# echo $HISTSIZE
1000
[root@Nginx ~]# echo $HISTFILESIZE
1000


    

    3、history的调用

        !#:重复执行第#条命令

        !!:执行上一条命令

        !string:执行最近一条包含指定字符串的命令

        !$:调用上一条命令的最后一个参数

[root@Nginx ~]# history 10
 1019  history -a 11.txt
 1020  cat 11.txt 
 1021  echo $HISTSIZE
 1022  ls
 1023  echo $HISTFILESIZE
 1024  history
 1025  ping baidu.com
 1026  alias
 1027  ls
 1028  history 10
#####!#
[root@Nginx ~]# !1026
alias
alias cdnet='cd /etc/sysconfig/network-scripts'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#####!!
[root@Nginx ~]# !!
alias
alias cdnet='cd /etc/sysconfig/network-scripts'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#####!string
[root@Nginx ~]# !ping
ping baidu.com
PING baidu.com (111.13.101.208) 56(84) bytes of data.
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=66.8 ms
64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=66.9 ms
64 bytes from 111.13.101.208: icmp_seq=3 ttl=128 time=66.9 ms
64 bytes from 111.13.101.208: icmp_seq=4 ttl=128 time=67.4 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7408ms
rtt min/avg/max/mdev = 66.844/67.046/67.480/0.253 ms
#####!$
[root@Nginx ~]# ping -c 1 !$
ping -c 1 baidu.com
PING baidu.com (111.13.101.208) 56(84) bytes of data.
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=67.4 ms

--- baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 4071ms
rtt min/avg/max/mdev = 67.433/67.433/67.433/0.000 ms

    4、控制命令历史的记录方式

        环境变量:HISTCONTROL

            ignoredups:忽略重复的命令,连续且相同的命令

            ignorespace:忽略所有以空白开头的命令

            ignoreboth: 以上两条均生效

        修改环境变量:

[root@Nginx ~]# export HISTCONTROL=ignoreboth
[root@Nginx ~]# echo $HISTCONTROL
ignoreboth


    

二、命令与路径补全

    1、命令补全

        bash执行命令,在用户给定的字符串只有唯一对应的命令时,直接Tab补全;如果不唯一,则再次Tab会给出匹配到的命令列表。bash根据PATH变量中定义的路径自左向右寻找唯一匹配字符串的命令,第一次找到的即为要执行的命令

    2、路径补全

        把用户给出的字符串当作路径开头,并在其指定的上级目录下搜索以指定的字符串开头的文件名,如果唯一,直接补全;否则再次Tab,给出列表


三、命令行展开

        ~:展开为用户的主目录

        ~USERNAME:展开为指定用户的主目录

        {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

[root@Nginx ~]# mkdir -pv /tmp/{1{1.1,1.2},2}/{a,b}
mkdir: 已创建目录 "/tmp/11.1"
mkdir: 已创建目录 "/tmp/11.1/a"
mkdir: 已创建目录 "/tmp/11.1/b"
mkdir: 已创建目录 "/tmp/11.2"
mkdir: 已创建目录 "/tmp/11.2/a"
mkdir: 已创建目录 "/tmp/11.2/b"
mkdir: 已创建目录 "/tmp/2"
mkdir: 已创建目录 "/tmp/2/a"
mkdir: 已创建目录 "/tmp/2/b"


四、命令的执行状态结果

    程序执行有两类结果;一类是返回值,一类是执行状态结果

    bash的特色标量$?,保存最近一条命令的执行状态结果

        0:成功

        1-255:失败

[root@Nginx ~]# date
2017年 07月 09日 星期日 17:39:35 CST
[root@Nginx ~]# echo $?
0
[root@Nginx ~]# data
-bash: data: command not found
[root@Nginx ~]# echo $?
127

五、alias(命令别名)

    1、语法与常用参数

alias[-p] [name[=value] ... ]
    -p:打印已设置的命令别名

        alias:显示当前shell进程所有可用的命令别名

        alias NAME='VALUE':定义别名NAME,相当于执行VALUE。

            注意:VALUE中有空格等要带引号


    2、alias配置

        (1)在命令行中定义的别名,仅对当前shell有用

        (2)定义在~/.bashrc中对当前用户有效

        (3)定义在/etc/bashrc中对所有用户有效

        (4)配置完成后,重读配置文件可立即生效

                source /etc/bashrc

    3、unalias(撤销别名)      

unalias[-a] name [name ...]
    -a:撤销所有别名
注意:如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND":



相关内容

热门资讯

美国解密UFO的79年历程 澎湃新闻记者 彭玉洁
特朗普连打几个电话训斥,FDA... 【文/观察者网 阮佳琪】当地时间5月8日,《华尔街日报》《纽约时报》等美媒均援引知情人士消息称,美国...
浏阳烟花厂爆炸事故是如何发生的... 2026年5月4日下午,湖南长沙浏阳市华盛烟花制造燃放有限公司车间发生爆炸,造成重大人员伤亡,湖南省...
新质生产力企业组团入琼 加速布... 海口5月9日电 (记者 符宇群)“我们希望将公司海洋具身智能技术,与海南得天独厚的海域资源进行深度场...
碳讨|AI涌入电力系统:谁在积... 当新能源装机不断逼近火电,“人工智能+电力”正从概念走向现实。 五大发电集团年报显示,清洁能源装机仍...
继德国后,特朗普瞄准意大利 新华社罗马5月9日电(记者王奕涵 刁泽) 据意大利媒体9日报道,美国总统特朗普接受意《晚邮报》电话采...
看人下菜碟,中国绝不当冤大头 2026年世界杯开赛在即,国际足联(FIFA)却向中国“狮子大开口”,要求支付巨额转播费用。国际足联...
特朗普还有一场硬仗 新华社北京5月9日电 美国民主、共和两党当前正推动有利本党的国会选区重划,并为此大打官司。弗吉尼亚州...
美国佛州发生疑似船只爆炸事故,... 当地时间5月9日,总台记者获悉,美国佛罗里达州迈阿密海滩附近一处热门水上聚会区域发生疑似船只爆炸事故...
【快看】涉及手机、电脑、电视等... 工业和信息化部、商务部、市场监管总局等部门近日联合启动实施《人工智能终端智能化分级》系列国家标准。 ...