Linux学习之Shell基础——Bash的基本功能——历史命令与补全

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxllynu/article/details/85036864

1、历史命令history

[root@localhost ~]# history 【选项】[历史命令保存文件]

选项:

   -c   :清空历史命令

   -w  :强制把缓存中的历史命令写入历史命令保存文件  ~/.bash_history     (因为缓存中的内容不是实时写入该文件中的,需要该用户登录退出时,才会写入。所以如果有特别需求,可以通过该选项强制将缓存中的历史命令即时写入历史命令保存文件)   

[root@localhost ~]# history
    1  ifconfig eth0 192.168.1.132
    2  ifconfig
    3  setup
    4  service network start
    5  ifconfig
    6  ll /etc/passwd
    7  clean
    8  clear
    9  vi /etc/passwd
   10  man 5 /etc/passwd
   11  man 5 passwd
   12  vim /etc/passwd
   13  vim /etc/shadow
省略其他,该命令显示出了该用户之前所执行过的命令

查看下历史命令保存文件,如下

[root@localhost ~]# cat .bash_history 
ifconfig eth0 192.168.1.132
ifconfig
setup
service network start
ifconfig
ll /etc/passwd
clean
clear
vi /etc/passwd
man 5 /etc/passwd
man 5 passwd

如果想要清空历史命令保存文件,可以通过加history -c  历史命令保存文件来清空该文件中的内容

2)历史命令保存文件放在哪儿?

答:正常情况下,放在用户的家目录下,以bash_history 命令,每个用户有一个。

如果用户特别更改了该文件的存放位置,则以上不符。

3)建议正常情况下不清空该文件。

4)历史命令默认会保存1000条,保存的条数可以在环境变量配置文件/etc/profile中进行修改

注意:/etc/profile 是Linux中重要的环境变量配置文件,

历史命令保存文件默认保存多少条的配置选项在该文件中的

HISTORYSIZE=1000  处,如果要修改该值,需要该用户退出重新登录才能生效

[root@localhost ~]# vim /etc/profile

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

unset i
unset -f pathmunge
                                                 

5)历史命令的调用:

》使用上、下箭头调用以前的历史命令;

》使用“!n” 重复执行第n条历史命令;  注:n 表示该命令为第几条,使用history 命令即可查看各条命令的编号

》使用“!!”  重复执行上一条命令;      注:n 表示该命令为第几条,使用history 命令即可查看各条命令

》使用“!字串”重复执行最后一条以该字串开头的命令;   注:字串表示命令的开头开始的字符,系统自动匹配最近的命令开头和该字串相匹配的命令

2、命令与文件补全:

》在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件是,按“Tab”键就会自动进行补全

可以多次按Tab键进行补全提示

建议使用Tab补全命令代替自己手动补全,防止自己输错。

猜你喜欢

转载自blog.csdn.net/zxllynu/article/details/85036864
今日推荐