在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. STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率

    前言 直接储存器访问(Direct Memory Access,DMA),允许一些设备独立地访问数据,而不需要经过 CPU 介入处理.因此在访问大量数据时,使用 DMA 可以节约可观的 CPU 处理时 ...

  2. 常用环境变量配置(vim /etc/profile)

    安装,参考:https://www.cnblogs.com/uncleyong/category/1457906.html # jdk export JAVA_HOME=/usr/local/jdk1 ...

  3. idea常用快捷键及配置

    目录 常用快捷键 常用配置 配置修改项 版本2019.1.3,配置.破解插件见网盘 2020.3.4 链接:https://pan.baidu.com/s/1WHsS8-yvHGf1iRopLbKIu ...

  4. 洛谷P1450.硬币购物

    传送门 题目大意:4种面值c[i]的硬币,每种硬币持有d[i]个,问有多少种方法支付出正好N块钱. 可以先预处理出持有硬币无限的情况dp[n],即一个完全背包问题. 之后根据容斥原理,相当于求但是拥有 ...

  5. 『无为则无心』Python日志 — 69、补充:logging.basicConfig()函数说明

    目录 1.basicConfig()函数说明 2.应用 1.basicConfig()函数说明 此函数,通过创建一个带有默认Formatter(格式器)的StreamHandler(处理器),并将其添 ...

  6. 路径修改后cmd命令行窗口仍然没有变化的原因

    修改环境变量后,要重启cmd再输入才有用

  7. Liunxa安装Nignx,Git

    Linux安装Nignx 1.安装依赖 执行语句 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel open ...

  8. 详细了解 synchronized 锁升级过程

    前言 首先,synchronized 是什么?我们需要明确的给个定义--同步锁,没错,它就是把锁. 可以用来干嘛?锁,当然当然是用于线程间的同步,以及保护临界区内的资源.我们知道,锁是个非常笼统的概念 ...

  9. LeetCode-012-整数转罗马数字

    整数转罗马数字 题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

  10. MM32F0140 GPIO驱动LED灯(MM32F0140 GPIO)

    目录: 1.MM32F0140简介 2.MM32F0140系统时钟配置 3.MM32F0140的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0140 GPIO驱 ...