命令别名设置: 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] 文件名: 查看至文件尾部不退出 ...
随机推荐
- [AtCoder3856]Ice Rink Game - 模拟
Problem Statement An adult game master and N children are playing a game on an ice rink. The game co ...
- vue 学习
1.安装vue.js 学习链接: https://cn.vuejs.org/v2/guide/ vue官方文档 vscode 软件框架 https://doc.vux.li/zh-CN/ vux文档
- ASP.NET MVC 网页应用 action 传递的Model
视图界面 @using {引用模型} @model {具体模型} <html> @Model.{具体模型的属性} </html> 注意区分Model的大小写 引入时,使用@mo ...
- python错误和异常
一:语法错误syntax errors 熟悉语法! 二:异常 ①打印错误信息时,异常的类型作为异常的内置名显示,并以调用栈的形式显示具体信息 ②常见的异常: ...
- 使用AOP实现方法执行时间和自定义注解
环境:IDEA2018+JDK1.8+SpringBoot 第一步:在pom文件中引入依赖(度娘有很多(*^▽^*)): <!--引入AOP的依赖--><dependency> ...
- C# 窗体打开拖动到窗体的文件
private void Form3_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats ...
- 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存
项目中有些业务方法希望在有缓存的时候直接从缓存获取,不再执行方法,来提高吞吐率.而且这种情况有很多.如果为每一个方法都写一段if else的代码,导致耦合非常大,不方便后期的修改. 思来想去,决定使用 ...
- 在Windows、Mac和 Linux系统中安装Python与 PyCharm
“工欲善其事,必先利其器”,本文介绍 Python环境的安装和 Python的集成开发环境(IDE) PyCharn的安装. 一.Python安装( Windows.Mac和 Linux) 当前主 ...
- Oracle数据库备份及还原
Oracle数据库备份 1:找到Oracle安装路径我的就是默认C盘 C:\app\wdjqc\admin\orcl\adump 2:执行文件:back.bat 文件内容如下: @echo off ...
- [Swift]LeetCode696. 计数二进制子串 | Count Binary Substrings
Give a string s, count the number of non-empty (contiguous) substrings that have the same number of ...