Linux shell 允许你将命令彼此链接在一起,一次触发执行复杂的操作,并且可以对此创建别名作为快捷方式。

-- Paul Brown(作者)

让我们将继续我们的别名系列。到目前为止,你可能已经阅读了我们的 关于别名的第一篇文章 ,并且应该非常清楚它们是如何为你省去很多麻烦的最简单方法。例如,你已经看到它们帮助我们减少了输入,让我们看看别名派上用场的其他几个案例。

别名即快捷方式

Linux shell 最美妙的事情之一是可以使用数以万计的选项和把命令连接在一起执行真正复杂的操作。好吧,也许这种美丽是在旁观者的眼中的,但是我们觉得这个功能很实用。

不利的一面是,你经常需要记得难以记忆或难以打字出来的命令组合。比如说硬盘上的空间非常宝贵,而你想要做一些清洁工作。你的第一步可能是寻找隐藏在你的家目录里的东西。你可以用来判断的一个标准是查找不再使用的内容。ls 可以帮助你:

ls -lct

上面的命令显示了每个文件和目录的详细信息(-l),并显示了每一项上次访问的时间(-c),然后它按从最近访问到最少访问的顺序排序这个列表(-t)。

这难以记住吗?你可能不会每天都使用 -c 和 -t 选项,所以也许是吧。无论如何,定义一个别名,如:

alias lt='ls -lct'

会更容易一些。

然后,你也可能希望列表首先显示最旧的文件:

alias lo='lt -F | tac'

图 1:使用 lt 和 lo 别名。

这里有一些有趣的事情。首先,我们使用别名(lt)来创建另一个别名 —— 这是完全可以的。其次,我们将一个新参数传递给 lt(后者又通过 lt 别名的定义传递给了 ls)。

-F 选项会将特殊符号附加到项目的名称后,以便更好地区分常规文件(没有符号)和可执行文件(附加了 *)、目录文件(以 / 结尾),以及所有链接文件、符号链接文件(以 @ 符号结尾)等等。-F 选项是当你回归到单色终端的日子里,没有其他方法可以轻松看到列表项之间的差异时用的。在这里使用它是因为当你将输出从 lt 传递到 tac 时,你会丢失 ls 的颜色。

第三件我们需要注意的事情是我们使用了管道。管道用于你将一个命令的输出传递给另外一个命令时。第二个命令可以使用这些输出作为它的输入。在包括 Bash 在内的许多 shell 里,你可以使用管道符(|) 来做传递。

在这里,你将来自 lt -F 的输出导给 tac。tac 这个命令有点玩笑的意思,你或许听说过 cat 命令,它名义上用于将文件彼此连接(concat),而在实践中,它被用于将一个文件的内容打印到终端。tac 做的事情一样,但是它是以逆序将接收到的内容输出出来。明白了吗?cat 和 tac,技术人有时候也挺有趣的。

cat 和 tac 都能输出通过管道传递过来的内容,在这里,也就是一个按时间顺序排序的文件列表。

那么,在有些离题之后,最终我们得到的就是这个列表将当前目录中的文件和目录以新鲜度的逆序列出(即老的在前)。

最后你需要注意的是,当在当前目录或任何目录运行 lt 时:

# 这可以工作:lt# 这也可以:lt /some/other/directory

……而 lo 只能在当前目录奏效:

# 这可工作:lo# 而这不行:lo /some/other/directory

这是因为 Bash 会展开别名的组分。当你键入:

lt /some/other/directory

Bash 实际上运行的是:

ls -lct /some/other/directory

这是一个有效的 Bash 命令。

而当你键入:

lo /some/other/directory

Bash 试图运行:

ls -lct -F | tac /some/other/directory

这不是一个有效的命令,主要是因为 /some/other/directory 是个目录,而 cat 和 tac 不能用于目录。

更多的别名快捷方式

  • alias lll='ls -R' 会打印出目录的内容,并深入到子目录里面打印子目录的内容,以及子目录的子目录,等等。这是一个查看一个目录下所有内容的方式。
  • mkdir='mkdir -pv' 可以让你一次性创建目录下的目录。按照 mkdir 的基本形式,要创建一个包含子目录的目录,你必须这样:
mkdir newdirmkdir newdir/subdir

或这样:

mkdir -p newdir/subdir

而用这个别名你将只需要这样就行:

mkdir newdir/subdir

你的新 mkdir 也会告诉你创建子目录时都做了什么。

别名也是一种保护

别名的另一个好处是它可以作为防止你意外地删除或覆写已有的文件的保护措施。你可能听说过这个 Linux 新用户的传言,当他们以 root 身份运行:

rm -rf /

整个系统就爆了。而决定输入如下命令的用户:

rm -rf /some/directory/ *

就很好地干掉了他们的家目录的全部内容。这里不小心键入的目录和 * 之间的那个空格有时候很容易就会被忽视掉。

这两种情况我们都可以通过 alias rm='rm -i' 别名来避免。-i 选项会使 rm 询问用户是否真的要做这个操作,在你对你的文件系统做出不可弥补的损失之前给你第二次机会。

对于 cp 也是一样,它能够覆盖一个文件而不会给你任何提示。创建一个类似 alias cp='cp -i' 来保持安全吧。

下一次

我们越来越深入到了脚本领域,下一次,我们将沿着这个方向,看看如何在命令行组合命令以给你真正的乐趣,并可靠地解决系统管理员每天面临的问题。


linux 临时去掉cp别名_命令别名:保护和服务相关推荐

  1. linux 临时去掉cp别名_Linux 命令别名

    命令别名的作用 简化命令 拦截危险命令 临时设置命令别名alias 别名='命令详情' e.g.alias ls='ls --color=auto' 永久设置命令别名 写进相应的配置文件中即可, 修改 ...

  2. linux mv 递归拷贝,奇技淫巧 - 给Linux中的cp和mv命令中添加进度条的高级拷贝

    GNU cp和GNU mv命令用于在GNU/Linux操作系统中复制和移动文件和目录.这两个命令缺少的一个特性是它们不显示任何进度条.如果复制一个大文件或目录,您就不知道完成复制过程需要多长时间,也不 ...

  3. 给Linux中的cp和mv命令中添加进度条的高级拷贝

    GNU cp和GNU mv命令用于在GNU/Linux操作系统中复制和移动文件和目录.这两个命令缺少的一个特性是它们不显示任何进度条.如果复制一个大文件或目录,您就不知道完成复制过程需要多长时间,也不 ...

  4. Linux临时目录/tmp(mktemp命令、mktemp指令)(mktemp -d)临时目录清理服务systemd-tmpfiles-clean.service

    文章目录 mktemp -d linux为什么要设置这个临时目录`/tmp` 临时目录`/tmp`的定时清理 示例:查看ubuntu20.04系统下的临时目录定时清理服务 mktemp -d mkte ...

  5. java 包别名_包别名(Package Aliasing)

    包别名(Package Aliasing) 包别名用于创建XML中类的完全限定名称的别名为新的限定名称. 让我们再次修改我们的示例并更改以下代码.xstream.alias("student ...

  6. Linux常见错误 “cp: omitting directory/ cp: :Permission denied”解决办法

    1.问题描述:cp: omitting directory 在Linux系统使用cp(复制命令)复制目录时,常出现错误"cp:omitting directory "dir&quo ...

  7. linux cp alias,linux基础之命令别名alias

    命令别名:alias alias显示当前shell中定义的所有别名 [root@zabbix_agentd zabbix]# alias alias cp='cp -i' alias egrep='e ...

  8. Linux怎么给命令创建别名,linux设置命令别名

    腾讯云活动汇聚了最新的促销打折.优惠折扣等信息,你在这里可以找到云服务器.域名.数据库.小程序等等多种不同产品的促销活动,还有各种产品的免费试用哦. 我们可以使用 alias 命令定义或显示 bash ...

  9. linux alias命令参数及用法详解--linux定义命令别名alias

    命          令:   alias 功能说明:设置指令的别名. 语 法:alias[别名]=[指令名称] 补充说明:用户可利用alias,自定指令的别名.若仅输入alias,则可列出目前所有的 ...

  10. linux cp源码_为Linux的cp和mv命令添加进度条

    cp和mv可能是大家日常中使用最多的Linux命令之一.但是有一个突出的问题是这两个命令都不会有任何提示信息,这在操作大文件时候只能干等.可能大家对此已经习以为常,但是其实上也有解决解决方法,本文我们 ...

最新文章

  1. freebsd 域名服务器
  2. 【转】MFC下用ADO连接SQL SERVER,保存图片,BLOB
  3. UINavigationController使用的一些技巧
  4. php mysql explain_Mysql分析-explain的详细介绍
  5. Linux多个端口组合,iptables使用multiport 添加多个不连续端口
  6. inux读取ISO文件或是光驱的方法--挂载
  7. 美的摇头风扇FW40-8A摇头拉线断了修复方案
  8. 如何使用SAP UI5 SDK网站查询指定控件的属性如何使用
  9. C语言试题八十一之利用递归函数调用方式,将所输入的5个字符,相反顺序打印
  10. python 表达式求值数据结构_python 数据结构与算法
  11. 信息学奥赛一本通 1017:浮点型数据类型存储空间大小 | OpenJudge NOI 1.2 02
  12. sqlserver 递归查询
  13. lvm(逻辑卷--可扩展存储设备)
  14. 我花了一年时间研究不确定性估算,写下了这份最全指南
  15. r语言min-max归一化_如何在R中使用min()和max()
  16. 定制版商业计划书PPT模板
  17. bug10下的工具(以防重新装机)
  18. 计算机学院优秀主讲教师评选细则,重庆师范大学计算机学院教学优秀奖评选办法.doc...
  19. 被历史遗忘的第一骑兵名将 —— 陈庆之
  20. 【Android -- 面试】简历模板

热门文章

  1. C++ 从零单排(2)-基础知识二
  2. Redhat linux 5 Server相关介绍
  3. response.sendRedirect()和request.getRequestDispatcher().forward(request,reponse)的区别
  4. 导入了jar包但是无法import方法
  5. jquery中如何获得时间
  6. handler机制和异步更新UI页面
  7. 三星i9158刷机教程
  8. linux系统时间分区的设置方法分享
  9. MSN Messenger去广告和其他修改方法
  10. hisi mmz模块驱动讲解