如何设计一个网站页面,建站用哪个模板好,ui设计简介,网站设计报价怎么做【BASH】回顾与知识点梳理 三 三. 命令别名与历史命令3.1 命令别名设定#xff1a; alias, unalias3.2 历史命令#xff1a;history同一账号同时多次登入的 history 写入问题无法记录时间 三. 命令别名与历史命令
我们知道在早期的 DOS 年代#xff0c;清除屏幕上的信息可以… 【BASH】回顾与知识点梳理 三 三. 命令别名与历史命令3.1 命令别名设定 alias, unalias3.2 历史命令history同一账号同时多次登入的 history 写入问题无法记录时间 三. 命令别名与历史命令
我们知道在早期的 DOS 年代清除屏幕上的信息可以使用 cls 来清除但是在 Linux 里面 我们则是使用 clear 来清除画面的。那么可否让 cls 等于 clear 呢可以啊用啥方法 link file 还是什么的别急底下我们介绍不用 link file 的命令别名来达成。那么什么又是历史命令 曾经做过的举动我们可以将他记录下来喔那就是历史命令啰底下分别来谈一谈这两个玩意儿。
3.1 命令别名设定 alias, unalias
命令别名是一个很有趣的东西特别是你的惯用指令特别长的时候还有 增设默认的选项在一些惯用的指令上面可以预防一些不小心误杀文件的情况发生的时候 举个例子来说如果你要查询隐藏档并且需要长的列出与一页一页翻看那么需要下达『 ls -al | more 』这个指令鸟哥是觉得很烦啦 要输入好几个单字那可不可以使用 lm 来简化呢当然可以你可以在命令行下面下达
[rootnode-135 etc]# alias lmls -al|more立刻多出了一个可以执行的指令喔这个指令名称为 lm 且其实他是执行ls -al | more啊真是方便。不过 要注意的是『alias 的定义规则与变量定义规则几乎相同』 所以你只要在 alias 后面加上你的 {『别名』指令 选项... } 以后你只要输入 lm 就相当于输入了 ls -al|more 这一串指令很方便吧
另外命令别名的设定还可以取代既有的指令喔举例来说我们知道 root 可以移除 (rm) 任何数据所以当你以 root 的身份在进行工作时需要特别小心 但是总有失手的时候那么 rm 提供了一个选项来让我们确认是否要移除该文件那就是 -i 这个选项所以你可以这样做
[rootnode-135 home]# rmrm -i那么以后使用 rm 的时候就不用太担心会有错误删除的情况了这也是命令别名的优点啰 那么如何知道目前有哪些的命令别名呢就使用 alias 呀
[rootnode-135 home]# alias
alias cpcp -i
alias egrepegrep --colorauto
alias fgrepfgrep --colorauto
alias grepgrep --colorauto
alias l.ls -d .* --colorauto
alias llls -l --colorauto
alias lmls -al --colorauto|more
alias lsls --colorauto
alias mvmv -i
alias rmrm -i
alias vivim
alias whichalias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde由上面的资料当中你也会发现一件事情啊 vi 与 vim 是不太一样的vim 可以多作一些额外的语法检验与颜色显示。一般用户会有 vivim 的命令别名但是 root 则是单纯使用 vi 而已。 如果你想要使用 vi 就直接以 vim 来开启文件的话使用『 alias vivim 』这个设定即可。 至于如果要取消命令别名的话那么就使用 unalias 吧例如要将刚刚的lm 命令别名拿掉就使用
[rootnode-135 home]# unalias lm
[rootnode-135 home]# lm
-bash: lm: command not foundDOS 年代列出目录与文件就是 dir 而清除屏幕就是 cls 那么如果我想要在 linux 里面也使用相同的指令呢 很简单透过 clear 与 ls 来进行命令别名的建置
alias clsclear
alias dirls -l3.2 历史命令history
前面我们提过 bash 有提供指令历史的服务那么如何查询我们曾经下达过的指令呢就使用history 啰当然如果觉得 histsory 要输入的字符太多太麻烦可以使用命令别名来设定呢 alias hhistory如此则输入 h 等于输入 history 啰好了我们来谈一谈 history 的用法吧
history [n]
history [-rawc] histfiles
#选项与参数
n 数字意思是『要列出最近的 n 笔命令行表』的意思
-c 将目前的 shell 中的所有 history 内容全部消除
-a 将目前新增的 history 指令新增入 histfiles 中若没有加 histfiles 则预设写入 ~/.bash_history
-r 将 histfiles 的内容读到目前这个 shell 的 history 记忆中
-w 将目前的 history 记忆内容写入 histfiles 中在正常的情况下历史命令的读取与记录是这样的
当我们以 bash 登入 Linux 主机之后系统会主动的由家目录的 ~/.bash_history 读取以前曾经下过的指令那么 ~/.bash_history 会记录几笔数据呢这就与你 bash 的 HISTFILESIZE 这个变量设定值有关了假设我这次登入主机后共下达过 100 次指令『等我注销时 系统就会将 101~1100 这总共 1000 笔历史命令更新到 ~/.bash_history 当中。』 也就是说历史命令在我注销时会将最近的 HISTFILESIZE 笔记录到我的纪录文件当中啦当然也可以用history -w强制立刻写入的那为何用『更新』两个字呢 因为 ~/.bash_history 记录的笔数永远都是 HISTFILESIZE 那么多旧的讯息会被主动的拿掉 仅保留最新的
#范例一列出目前内存内的所有 history 记忆
[dmtsaistudy ~]$ history
# 前面省略
1017 man bash
1018 ll
1019 history
1020 history
# 列出的信息当中共分两栏第一栏为该指令在这个 shell 当中的代码
# 另一个则是指令本身的内容喔至于会秀出几笔指令记录则与 HISTSIZE 有关
#范例二列出目前最近的 3 笔资料
[dmtsaistudy ~]$ history 3
1019 history
1020 history
1021 history 3
#范例三立刻将目前的资料写入 histfile 当中
[dmtsaistudy ~]$ history -w
# 在默认的情况下会将历史纪录写入 ~/.bash_history 当中
[dmtsaistudy ~]$ echo ${HISTSIZE}
1000那么 history 这个历史命令只可以让我查询命令而已吗呵呵当然不止啊 我们可以利用相关的功能来帮我们执行命令呢举例来说啰
[dmtsaistudy ~]$ !number
[dmtsaistudy ~]$ !command
[dmtsaistudy ~]$ !!
#选项与参数
number 执行第几笔指令的意思
command 由最近的指令向前搜寻『指令串开头为 command』的那个指令并执行
!! 就是执行上一个指令(相当于按↑按键后按 Enter)
[dmtsaistudy ~]$ history66 man rm67 alias68 man history69 history
[dmtsaistudy ~]$ !66 执行第 66 笔指令
[dmtsaistudy ~]$ !! 执行上一个指令本例中亦即 !66
[dmtsaistudy ~]$ !al 执行最近以 al 为开头的指令(上头列出的第 67 个)基本上 history 的用途很大的但是需要小心安全的问题尤其是 root 的历史纪录文件这是 Cracker 的最爱因为不小心的 root 会将很多的重要数据在执行的过程中会被纪录在 ~/.bash_history 当中如果这个文件被解析的话后果不堪吶无论如何使用 history 配合『 ! 』曾经使用过的指令下达是很有效率的一个指令下达方法
同一账号同时多次登入的 history 写入问题
有些朋友在练习 linux 的时候喜欢同时开好几个 bash 接口这些 bash 的身份都是 root 。 这样会有 ~/.bash_history 的写入问题吗想一想因为这些 bash 在同时以 root 的身份登入 因此所有的 bash 都有自己的 1000 笔记录在内存中。因为等到注销时才会更新记录文件所以啰 最后注销的那个 bash 才会是最后写入的数据。唔如此一来其他 bash 的指令操作就不会被记录下来了 (其实有被记录只是被后来的最后一个 bash 所覆盖更新了) 。
由于多重登入有这样的问题所以很多朋友都习惯单一 bash 登入再用工作控制 (job control) 来切换不同工作 这样才能够将所有曾经下达过的指令记录下来也才方便未来系统管理员进行指令的 debug 啊
[Ctrl] [Alt] [F2] ~ [F6] 文字接口登入 tty2 ~ tty6 终端机
[Ctrl] [Alt] [F1] 图形接口桌面。无法记录时间
历史命令还有一个问题那就是无法记录指令下达的时间。由于这 1000 笔历史命令是依序记录的但是并没有记录时间所以在查询方面会有一些不方便。
history 增加时间戳
vim /etc/profile
#在最底端增加下面一行代码export HISTTIMEFORMAT%F %T
#保存完毕后使用下面的方式使之快速生效source /etc/profile
history
...556 2023-08-01 11:26:18 vim /etc/profile557 2023-08-01 11:26:26 source /etc/profile558 2023-08-01 11:26:29 history鸟哥经常需要设计在线题目给学生考试用所以需要登入系统去设计环境设计完毕后再将该硬盘分派给学生来考试使用。 只是经常很担心同学不小心输入 history 就会得知鸟哥要考试的重点文件与指令因此就得要使用 history -c; history -w 来强迫更新纪录文件了 提供给您参考