10.3.2 【Linux】历史命令:history

简介: 10.3.2 【Linux】历史命令:history
[dmtsai@study ~]$ alias h='history'

 

在正常的情况下,历史命令的读取与记录是这样的:

当我们以 bash 登陆 Linux 主机之后,系统会主动的由主文件夹的 ~/.bash_history 读取以前曾经下过的指令,那么 ~/.bash_history 会记录几笔数据呢?这就与你 bash 的HISTFILESIZE 这个变量设置值有关了!


假设我这次登陆主机后,共下达过 100 次指令,“等我登出时, 系统就会将 101~1100 这总共 1000 笔历史命令更新到 ~/.bash_history 当中。” 也就是说,历史命令在我登出时,会将最近的 HISTFILESIZE 笔记录到我的纪录档当中。


当然,也可以用 history -w 强制立刻写入的!那为何用“更新”两个字呢? 因为~/.bash_history 记录的笔数永远都是 HISTFILESIZE 那么多,旧的讯息会被主动的拿掉! 仅保留最新的!


10.4 Bash Shell的操作环境:

10.4.1 路径与指令搜寻顺序


指令运行的顺序可以这样看:


1. 以相对/绝对路径执行指令,例如“ /bin/ls ”或“ ./ls ”;


2. 由 alias 找到该指令来执行;


3. 由 bash 内置的 (builtin) 指令来执行;


4. 通过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。


举例来说,你可以下达 /bin/ls 及单纯的 ls 看看,会发现使用 ls 有颜色但是 /bin/ls 则没有颜色。 因为 /bin/ls 是直接取用该指令来下达,而 ls 会因为“ alias ls='ls --color=auto' ”这个命令别名而先使用! 如果想要了解指令搜寻的顺序,其实通过 type -a ls 也可以查询的到。


例题:设置 echo 的命令别名成为 echo -n ,然后再观察 echo 执行的顺序答:

先 alias 再 builtin 再由 $PATH 找到 /bin/echo。


10.4.2 bash 的进站与欢迎讯息: /etc/issue, /etc/motd

以CentOS 7.1 作为范例,里面默认有三行,较有趣的地方在于 \r 与\m。 就如同 $PS1 这变量一样,issue 这个文件的内容也是可以使用反斜线作为变量取用喔!你可以 man issue 配合 man agetty 得到下面的结果:

例题:如果你在 tty3 的进站画面看到如下显示,该如何设置才能得到如下画面?


> CentOS Linux 7 (Core) (terminal: tty3) > Date: 2015-07-08 17:29:19 > Kernel 3.10.0-229.el7.x86_64 on an x86_64 > Welcome!


注意,tty3 在不同的 tty 有不同显示,日期则是再按下 [enter] 后就会所有不同。答:很简单,用 root 的身份,并参考上述的反斜线功能去修改 /etc/issue 成为如下模样即可(共五行):

10.4.3 bash的环境配置文件


login 与 non-login shell


login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,你要由tty1 ~ tty6 登陆,需要输入使用者的帐号与密码,此时取得的 bash 就称为“ login shell。


non-login shell:取得 bash 接口的方法不需要重复登陆的举动,举例来说,(1)你以 Xwindow 登陆 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入帐号与密码,那个 bash 的环境就称为 non-login shell了。(2)你在原本的 bash 环境下再次下达 bash 这个指令,同样的也没有输入帐号密码, 那第二个 bash(子程序) 也是 non-login shell 。


为什么要介绍 login, non-login shell 呢?这是因为这两个取得 bash 的情况中,读取的配置文件数据并不一样所致。 由于我们需要登陆系统,所以先谈谈 login shell 会读取哪些配置文件?一般来说,login shell 其实只会读取这两个配置文件:


1. /etc/profile:这是系统整体的设置,你最好不要修改这个文件;


2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设置,你要改自己的数据,就写入这里!


/etc/profile (login shell 才会读)


你可以使用 vim 去阅读一下这个文件的内容。这个配置文件可以利用使用者的识别码(UID) 来决定很多重要的变量数据, 这也是每个使用者登陆取得 bash 时一定会读取的配置文件! 所以如果你想要帮所有使用者设置整体环境,那就是改这里。不过,没事还是不要随便改这个文件,这个文件设置的变量主要有:


PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;


MAIL:依据帐号设置好使用者的 mailbox 到 /var/spool/mail/帐号名;


USER:根据使用者的帐号设置此一变量内容;


HOSTNAME:依据主机的 hostname 指令决定此一变量内容;


HISTSIZE:历史命令记录笔数。CentOS 7.x 设置为 1000 ;


umask:包括 root 默认为 022 而一般用户为 002 等!


/etc/profile 可不止会做这些事而已,他还会去调用外部的设置数据!在 CentOS 7.x 默认的情况下,下面这些数据会依序的被调用进来:


/etc/profile.d/*.sh


其实这是个目录内的众多文件!只要在 /etc/profile.d/ 这个目录内且扩展名为 .sh ,另外,使用者能够具有 r 的权限, 那么该文件就会被 /etc/profile 调用进来。在 CentOS 7.x 中,这个目录下面的文件规范了 bash 操作接口的颜色、 语系、ll 与 ls 指令的命令别名、vi 的命令别名、which 的命令别名等等。如果你需要帮所有使用者设置一些共享的命令别名时, 可以在这个目录下面自行创建扩展名为 .sh 的文件,并将所需要的数据写入即可。


/etc/locale.conf


这个文件是由 /etc/profile.d/lang.sh 调用进来的!这也是我们决定 bash 默认使用何种语系的重要配置文件! 文件里最重要的就是 LANG/LC_ALL 这些个变量的设置。


/usr/share/bash-completion/completions/*


目录下面的内容是由 /etc/profile.d/bash_completion.sh 这个文件载入的。


~/.bash_profile (login shell 才会读)


bash 在读完了整体环境设置的 /etc/profile 并借此调用其他配置文件后,接下来则是会读取使用者的个人配置文件。 在 login shell 的 bash 环境中,所读取的个人偏好配置文件其实主要有三个,依序分别是:


1. ~/.bash_profile


2. ~/.bash_login


3. ~/.profile


bash 的 login shell 设置只会读取上面三个文件的其中一个, 而读取的顺序则是依照上面的顺序。也就是说,如果 ~/.bash_profile 存在,那么其他两个文件不论有无存在,都不会被读取。 如果 ~/.bash_profile 不存在才会去读取 ~/.bash_login,而前两者都不存在才会读取~/.profile 的意思。 会有这么多的文件,其实是因应其他 shell 转换过来的使用者的习惯而已。 先让我们来看一下 dmtsai 的 /home/dmtsai/.bash_profile 的内容是怎样呢?

文件内有设置 PATH 这个变量。而且还使用了 export 将 PATH 变成环境变量。由于PATH 在 /etc/profile 当中已经设置过,所以在这里就以累加的方式增加使用者主文件夹下的~/bin/ 为额外的可执行文件放置目录。这也就是说,你可以将自己创建的可执行文件放置到你自己主文件夹下的 ~/bin/ 目录。那就可以直接执行该可执行文件而不需要使用绝对/相对路径来执行该文件。


其他相关配置文件


事实上还有一些配置文件可能会影响到你的 bash 操作的,下面就来谈一谈:


/etc/man_db.conf


如果你是以 tarball 的方式来安装你的数据,那么你的man page 可能会放置在 /usr/local/softpackage/man 里头,那个 softpackage 是你的套件名称, 这个时候你就得以手动的方式将该路径加到 /etc/man_db.conf 里头,否则使用 man 的时候就会找不到相关的说明文档。


~/.bash_history


默认历史命令就记录在这里。这个文件能够记录几笔数据,则与 HISTFILESIZE 这个变量有关,每次登陆 bash后,bash 会先读取这个文件,将所有的历史指令读入内存, 因此,当我们登陆 bash 后就可以查知上次使用过哪些指令。


~/.bash_logout


这个文件则记录了“当我登出 bash 后,系统再帮我做完什么动作后才离开”的意思。 你可以去读取一下这个文件的内容,默认的情况下,登出时, bash 只是帮我们清掉屏幕的讯息而已。不过,你也可以将一些备份或者是其他你认为重要的工作写在这个文件中 (例如清空暂存盘), 那么当你离开 Linux 的时候,就可以解决一些烦人的事情。

相关文章
|
1月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
300 1
二、Linux文本处理与文件操作核心命令
|
1月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
556 56
|
19天前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
163 2
|
29天前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
81 0
Linux内存问题排查命令详解
|
1月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
145 16
|
1月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
|
3月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
724 13
|
4月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
693 21
|
4月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
linux命令—tree
|
4月前
|
监控 Linux
Linux系统中使用df命令详解磁盘使用情况。
`df`命令是Linux系统管理员和用户监控和管理磁盘空间使用的重要工具。掌握它的基本使用方法和选项可以帮助在必要时分析和解决空间相关问题。简洁但功能丰富,`df`命令确保了用户可以快速有效地识别和管理文件系统的空间使用情况。
314 13

热门文章

最新文章