在Linux系统中默认的Shell就是Bourne-AgainShell(简称Bash),所以我们今天来掌握Bash的一些基本用法。

1、history历史命令

(1)历史命令的查看

在终端执行history命令,就会显示出在系统当中已经执行过的命令。

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

选项:

  • -c:清空历史命令。
  • -w:把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文件,则放入默认的历史命令保存文件~/.bash_history中。

(2)history用法说明

1)直接执行history命令,查看历史命令。

2)-w选项的用法。

我们使用history命令查看的历史命令,和~/.bash_history文件中保存的历史命令是不同的。那是因为当前登陆的系统中,所操作的命令并没有直接写入~/.bash_history文件,而是保存在缓存当中的。需要等当前用户注销之后,缓存中的命令才会写入~/.bash_history文件。如果我们需要把内存中的命令直接写入~/.bash_history文件,而不等用户注销时再写入,就需要使用-w选项了。

命令如下:把缓存中的历史命令直接写入~/.bash_history文件。

[root@localhost ~] # history -w

这时再去查询~/.bash_history文件,历史命令文件中的内容,就和history命令查询的一致了。

注意:历史命令最终是要写入到文件中的,所以说历史命令是永久生效的,重启也不会消失的。

3)~/.bash_history文件是在用户的家目录下,说明~/.bash_history文件只保存当前用户执行过的命令。也就是root用户的命令历史,保存在root目录下的.bash_history文件中,user1用户的命令历史,保存在user1目录下的.bash_history文件中。

2、设置命令历史记录的条数

我们Linux系统中,默认记录的历史命令条数是1000条。

这个属性的配置内容,是在/etc/profile文件中。

执行:

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

文件中的HISTSIZE属性,如下图:

说明:

  • 我们之前说过/etc/profile文件的,在说umask值的时候。
  • /etc/profile文件里存放的是系统的环境变量,对所有用户都有效果,要对其更改的话,必须要在root用户权限下才能进行。
  • 我们可以使用env命令来查看系统当前所有的环境变量,set命令可以查看所有本地定义的Shell变量。
  • 我们在/etc/profile里面修改的话,是对所有用户起作用,所以一般所有用户都要使用的环境变量,就应该放在该文件里面,这样系统运行之后该文件里面的环境变量都会生效。

这个历史命令记录条数一般建议多设置些。因为这个历史记录是存在硬盘上的,不会被加载到内存中,多些历史命令的记录,有很多时候可以方便我们操作。

3、清空历史命令

如果需要清空历史命令,只需要执行:

[root@localhost ~] # history -c

执行上边命令,会把当前系统中内存缓冲区中的历史命令,和当前用户的~/.bash_history文件中的历史命令,一起删除。

一般我们不建议使用该命令,因为使用历史命令是我们在使用Linux系统时常用的操作,方便操作的同时,还可以判断你之前对系统做过什么操作。只有在极特殊的情况下,才执行清空历史命令的操作,如给MySQL设置完密码之后,建议清空历史命令。因为MySQL设置密码的命令,是明文显示的。

4、历史命令的调用

如果想要使用原先的历史命令有以下几种方法:

  • 使用上、下箭头调用 以前的历史命令。
  • 使用!n重复执行第n条历史命令。



    前边的数字就是n
  • 使用!!重复执行上一条命令。

    (还不如用上箭头直观一点。)
  • 使用!字串重复执行最后一条,以该字串开头的命令。

    (数字越大,越靠后。)
  • 使用!$重复上一条命令的最后一个参数。

    只能打印参数,一般不能够独立执行,Shell脚本中会用到。

5、命令与文件的补全

Tab键可以对命令和文件名进行补全。

这里就是告诉你,Tab键补全是Shell的功能。

『忘了再学』Shell基础 — 4、Bash基本功能(history命令)的更多相关文章

  1. 『忘了再学』Shell基础 — 31、字符处理相关命令

    目录 1.排序命令sort (1)sort命令介绍 (2)练习 2.取消重复行命令uniq 3.统计命令wc 1.排序命令sort (1)sort命令介绍 sort命令可针对文本文件的内容,以行为单位 ...

  2. 『忘了再学』Shell基础 — 26、cut列提取命令

    目录 1.cut命令说明 2.cut命令练习 (1)cut命令基本用法 (2)cut命令选取多列 (3)按字符来进行提取 (4)按指定分隔符进行截取数据 3.cut命令分隔符说明 1.cut命令说明 ...

  3. 『忘了再学』Shell基础 — 3、echo命令的介绍与使用

    目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...

  4. 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)

    提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...

  5. 『忘了再学』Shell基础 — 2、Shell的作用与分类

    目录 1.Shell的作用 2.Shell的分类 1.Shell的作用 Shell除了能解释用户输入的命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果. 在 ...

  6. 『忘了再学』Shell基础 — 8、管道符介绍

    我们之前已经有文章说过管道符了,今天这里再简单总结一下用法. 1.行提取命令grep grep命令的作用,是在指定的文件中,搜索符合条件的字符串. 命令格式: [root@localhost ~ ] ...

  7. 『忘了再学』Shell基础 — 24、Shell正则表达式的使用

    目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...

  8. 『忘了再学』Shell基础 — 25、扩展正则表达式

    目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...

  9. 『忘了再学』Shell基础 — 30、sed命令的使用

    目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...

随机推荐

  1. 深入MySQL(四):MySQL的SQL查询语句性能优化概述

    关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...

  2. 在线pdf请你谨慎打开

    本篇其实算之前安全整改话题的一点补充,对之前内容感兴趣的可以走以下快捷通道: 安全漏洞整改系列(二) 安全漏洞整改系列(一) 背景 前不久某家客户对我们提供的系统又进行了一轮安全测试,其中有一条我觉得 ...

  3. 答疑记录:jmeter从返回的html中提取指定内容

    返回的html(截取部分),要求从中提取:2022-02-22 13:46:15 <!-- 前面省略557行 --> <td>2022-02-22</td> < ...

  4. Meterpreter后渗透阶段之远程桌面开启

    实验目的 学习利用Meterpreter后渗透阶段模块来开启靶机远程桌面 实验原理 利用Meterpreter生成木马,利用木马控制靶机进行远程桌面的攻击 实验内容 利用Meterpreter后渗透阶 ...

  5. BI开创者Tableau“出走中国”,中国BI用户该何去何从?

    11月,Tableau在发给客户的邮件中透露将停止中国的直销业务,加入阿里的合作体系.消息来的如此突然,Tableau的同仁.合作伙伴.客户.用户.爱好者,甚至友商,无一不感到震惊和担忧. 在我们数据 ...

  6. 【CPU】进程管理之五状态模型

    本文为第三篇,进程管理之五状态模型,进程在操作系统里边是有多个状态的,本文就是了解进程在操作系统中的多个状态 1.进程的五个状态 创建状态 就绪状态 阻塞状态 执行状态 终止状态 2.进程处于这五种状 ...

  7. String类型转int类型方法

    System.out.println( "Integer.parseInt(\"5\") =" + Integer.parseInt("5" ...

  8. SQL Server Cross/Outer Apply

    SQL Server2005引入了APPLY运算符,它非常像连接子句,它允许两个表达式直接进行连接,即将左/外部表达式和右/内部表达式连接起来. CROSS APPLY(类比inner join)和O ...

  9. Linux网络命名空间

        命名空间(Linux namespace)是linux内核针对实现虚拟化引入的一个特性.创建的每个进程都有自己的命名空间,运行在其中的进程都像是在独立的操作系统中运行一样,命名空间保证了进程之 ...

  10. Typora笔记上传到博客

    Typora笔记上传到博客 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版.它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML.PDF 以及本 ...