命令别名设置: alias, unalias
别名命令:alias
命令别名是一个很有趣的东西,特别是你的惯用指令特别长的时候!还有, 增设默认的选项
在一些惯用的指令上面,可以预防一些不小心误杀文件的情况发生的时候! 举个例子来说,
如果你要查询隐藏文件,并且需要长的列出与一页一页翻看,那么需要下达“ ls -al | more ”这
个指令,鸟哥是觉得很烦啦! 要输入好几个单字!那可不可以使用 lm 来简化呢?当然可以,
你可以在命令列下面下达:
[dmtsai@study ~]$ alias lm='ls -al | more'
立刻多出了一个可以执行的指令喔!这个指令名称为 lm ,且其实他是执行 ls -al | more 啊!
真是方便。不过, 要注意的是:“alias 的定义规则与变量定义规则几乎相同”, 所以你只要在
alias 后面加上你的 {“别名”='指令 选项...' }, 以后你只要输入 lm 就相当于输入了 ls -al|more
这一串指令!很方便吧!
另外,命令别名的设置还可以取代既有的指令喔!举例来说,我们知道 root 可以移除 (rm)
任何数据!所以当你以 root 的身份在进行工作时,需要特别小心, 但是总有失手的时候,那
么 rm 提供了一个选项来让我们确认是否要移除该文件,那就是 -i 这个选项!所以,你可以这
样做:
[dmtsai@study ~]$ alias rm='rm -i'
那么以后使用 rm 的时候,就不用太担心会有错误删除的情况了!这也是命令别名的优点啰!
那么如何知道目前有哪些的命令别名呢?就使用 alias
[dmtsai@study ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias lm='ls -al | more'
alias ls='ls --color=auto'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
由上面的数据当中,你也会发现一件事情啊,我们在第九章的 vim 程序编辑器里面提到 vi 与
vim 是不太一样的,vim 可以多作一些额外的语法检验与颜色显示。一般用户会有 vi=vim 的
命令别名,但是 root 则是单纯使用 vi 而已。 如果你想要使用 vi 就直接以 vim 来打开文件的
话,使用“ alias vi='vim' ”这个设置即可。 至于如果要取消命令别名的话,那么就使用 unalias
吧!例如要将刚刚的 lm 命令别名拿掉,就使用:
[dmtsai@study ~]$ unalias lm那么命令别名与变量有什么不同呢?命令别名是“新创一个新的指令, 你可以直接下达该指令”的,至于变量则需要使用类似“ echo ”指令才能够调用出变量的内容! 这两者当然不一
样!
历史命令:history
bash 有提供指令历史的服务!那么如何查询我们曾经下达过的指令呢?就使用history
[dmtsai@study ~]$ history [n]
[dmtsai@study ~]$ history [-c]
[dmtsai@study ~]$ history [-raw] histfiles
选项与参数:
n :数字,意思是“要列出最近的 n 笔命令列表”的意思!
-c :将目前的 shell 中的所有 history 内容全部消除
-a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles ,
则默认写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w :将目前的 history 记忆内容写入 histfiles 中!
范例一:列出目前内存内的所有 history 记忆
[dmtsai@study ~]$ history
# 前面省略
1017 man bash
1018 ll
1019 history
1020 history
# 列出的信息当中,共分两栏,第一栏为该指令在这个 shell 当中的代码,
# 另一个则是指令本身的内容喔!至于会秀出几笔指令记录,则与 HISTSIZE 有关!
范例二:列出目前最近的 3 笔数据
[dmtsai@study ~]$ history 3
1019 history
1020 history
1021 history 3
范例三:立刻将目前的数据写入 histfile 当中
[dmtsai@study ~]$ history -w
# 在默认的情况下,会将历史纪录写入 ~/.bash_history 当中!
[dmtsai@study ~]$ echo ${HISTSIZE}
1000
在正常的情况下,历史命令的读取与记录是这样的:
当我们以 bash 登陆 Linux 主机之后,系统会主动的由主文件夹的 ~/.bash_history 读取以前曾经下过的指令,那么 ~/.bash_history 会记录几笔数据呢?这就与你 bash 的HISTFILESIZE 这个变量设置值有关了!
假设我这次登陆主机后,共下达过 100 次指令,“等我登出时, 系统就会将 101~1100 这总共 1000 笔历史命令更新到 ~/.bash_history 当中。” 也就是说,历史命令在我登出时,会将最近的 HISTFILESIZE 笔记录到我的纪录档当中啦!
当然,也可以用 history -w 强制立刻写入的!那为何用“更新”两个字呢? 因为~/.bash_history 记录的笔数永远都是 HISTFILESIZE 那么多,旧的讯息会被主动的拿掉! 仅保留最新的!
那么 history 这个历史命令只可以让我查询命令而已吗?呵呵!当然不止啊! 我们可以利用相
关的功能来帮我们执行命令呢!举例来说啰:
[dmtsai@study ~]$ !number
[dmtsai@study ~]$ !command
[dmtsai@study ~]$ !!
选项与参数:
number :执行第几笔指令的意思;
command :由最近的指令向前搜寻“指令串开头为 command”的那个指令,并执行;
!! :就是执行上一个指令(相当于按↑按键后,按 Enter)
[dmtsai@study ~]$ history
66 man rm
67 alias
68 man history
69 history
[dmtsai@study ~]$ !66 <==执行第 66 笔指令
[dmtsai@study ~]$ !! <==执行上一个指令,本例中亦即 !66
[dmtsai@study ~]$ !al <==执行最近以 al 为开头的指令(上头列出的第 67 个)
经过上面的介绍,瞭乎?历史命令用法可多了!如果我想要执行上一个指令, 除了使用上下
键之外,我可以直接以“ !! ” 来下达上个指令的内容,此外, 我也可以直接选择下达第 n 个指
令,“ !n ”来执行,也可以使用指令标头,例如 “ !vi ”来执行最近指令开头是 vi 的命令行!相当
的方便而好用!
基本上 history 的用途很大的!但是需要小心安全的问题!尤其是 root 的历史纪录文件,这是
Cracker 的最爱!因为不小心的 root 会将很多的重要数据在执行的过程中会被纪录在
~/.bash_history 当中,如果这个文件被解析的话,后果不堪呐!无论如何,使用 history 配合“
! ”曾经使用过的指令下达是很有效率的一个指令下达方法!
同一帐号同时多次登陆的 history 写入问题
有些朋友在练习 linux 的时候喜欢同时开好几个 bash 接口,这些 bash 的身份都是 root 。 这
样会有 ~/.bash_history 的写入问题吗?想一想,因为这些 bash 在同时以 root 的身份登陆,
因此所有的 bash 都有自己的 1000 笔记录在内存中。因为等到登出时才会更新记录文件,所
以啰, 最后登出的那个 bash 才会是最后写入的数据。唔!如此一来其他 bash 的指令操作就
不会被记录下来了 (其实有被记录,只是被后来的最后一个 bash 所覆盖更新了) 。
Linux查看History记录加时间戳小技巧
熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如
[root@servyou_web ~]# history | more
./test.sh
vim test.sh
./test.sh
但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间。 通过设置环境变量 export HISTTIMEFORMAT="%F %T `whoami` " 给history加上时间戳 [root@servyou_web ~]# export HISTTIMEFORMAT="%F %T `whoami` "
[root@servyou_web ~]# history | tail
-- :: root -- :: root ./test.sh
-- :: root -- :: root vim test.sh
-- :: root -- :: root ./test.sh
-- :: root -- :: root vim test.sh
-- :: root -- :: root ./test.sh
-- :: root -- :: root vim test.sh
-- :: root -- :: root ./test.sh
-- :: root -- :: root vim test.sh
-- :: root -- :: root vim test.sh
-- :: root history | tail 可以看到,历史命令的时间戳已经加上了,但是.bash_history里并没有加上这个时间戳。其实这个时间记录是保存在当前shell进程内存里的,如果你logout并且重新登录的话会发现你上次登录时执行的那些命令的时间戳都为同一个值,即当时logout时的时间。 尽管如此,对于加上screen的bash来说,这个时间戳仍然可以长时间有效的,毕竟只要你的server不重启,screen就不会退出,因而这些时间就能长时间保留。你也可以使用echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile 然后source一下就OK
来自:鸟哥私房菜
https://www.cnblogs.com/gaohong/p/4664214.html
命令别名设置: alias, unalias的更多相关文章
- [CentOS] 指定命令别名:Alias & 软链接生成命令 ln -s
参考:CentOS里alias命令详解 每天一个linux命令(35):ln 命令 1. Alias命令 功能描述:我们在进行系统的管理工作一定会有一些我们经常固定使用,但又很长的命令.那我们可以给这 ...
- linux----设置、添加别名(alias,unalias)
以下的说明针对centOS. 查看当前的别名 在命令行下,直接输入alias来查看. 添加临时的别名 方法为:alias[别名]=[指令名称] 该方法只是临时的,仅对当前终端有效,因此重启系统或在其他 ...
- alias指令:设置命令别名
alias: usage: alias [-p] [name[=value] ... ] 1. 语法 alias [参数][命令别名]=[原命令名称] 2. 功能介绍 该指令主要用于为原命令 ...
- Linux alias别名设置
alias命令用来设置指令的别名.我们可以使用该命令可以将一些较长的命令进行简化.使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误. 语法 alias(选项)(参数) ...
- alias,unalias命令
alias unalias 命令 =================================================[root@sambo ~]# aliasalias cp='cp ...
- linux命令别名的使用
语 法:alias[别名]=[指令名称] 1,查看该用户下的别名: alias 2,有的系统里没有ll这个命令,原因就是没有定义ll='ls -l --color=tty'这个别名 如果想永久生效,就 ...
- Linux/Unix 常用的 15 类别名(alias)
背景 最近在整理 Linux 运维基线,整理记录下常用的 alias 设置. alias alias 命令用于设置指令的别名.用于简化较长的命令. 语法 alias [别名]=[指令名称] 示例:al ...
- Mac添加命令别名
1. 切换到用户主目录 $ cd 2. 编辑或新建.bash_profile文件 3. 添加别名 命令别名设置语法: alias [别名]='[指令名称]' 注意:等号两边均无空格,指令名称中如有空格 ...
- Linux文件管理类命令及命令别名
文件查看类命令: cat: tac: 从文件尾部开始显示 分屏显示: more [option] 文件名: 查看至文件尾部会退出 空格为翻页 less [option] 文件名: 查看至文件尾部不退出 ...
随机推荐
- session源码剖析
session机制采用的是一种在客户端与服务端之间保持状态的解决方案,由于采用服务器端保持状态的方案在客户端也要保存标识,session机制也要借助于cookie机制达到目的.session保存了客户 ...
- DOM-节点概念-属性
1.节点的概念 页面中的所有内容,包括标签,属性,文本(文字,空格,回车,换行等),也就是说页面的所有内容都可以叫做节点. 2.节点相关的属性 2.1.节点分类 **标签节点:**比如 div 标签, ...
- Redis配置参数详解
Redis配置参数详解 /********************************* GENERAL *********************************/ // 是否作为守护进 ...
- hive的join
第一:在map端产生join mapJoin的主要意思就是,当链接的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的table直接放到内存中去,然后再对比较大的表格进行m ...
- 在ASP.NET Core中使用brotli压缩
Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比.据谷歌研究,Brotli压缩速度同zlib的Deflate实现大致相同,而在Canterbury语料库上的压缩密度比LZ ...
- 原生JS实现下拉刷新
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- 一次 HTTP 请求响应过程的完整解析
因特网无疑是人类有史以来最伟大的设计,它互联了全球数亿台计算机.通讯设备,即便位于地球两端的用户也可在顷刻间完成通讯. 可以说『协议』是支撑这么一个庞大而复杂的系统有条不紊运作的核心,而所谓『协议』就 ...
- Hash及HashMap简介
Hash简介: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射 ...
- [Swift]LeetCode294. 翻转游戏之 II $ Flip Game II
You are playing the following Flip Game with your friend: Given a string that contains only these tw ...
- Java接口实现传参
package com.gezhi.interfaces;/** * 新建一个dog类实现接口livingable(狗吃和上厕所都是与生俱来的不应该写成接口) * @author square 凉 * ...