[命令技巧]alias

2023-11-17

转自:http://www.dutor.net/index.php/2011/03/commands-alias/


alias, 假名,别名,bash的一个内建命令,用来给常用的较长的命令定义个简短的名称。
  alias命令的基本格式为alias [word[='command']], []内为可选项。定义word为command的别名。若=’command’部分省略,则输出word之前的定义,未定义则报错。单独的alias列出当前环境中所有可用的别名。通常来讲,关于alias,知道这么多就行了。但在使用alias的过程中还有一些问题需要注意。
  如果bash的expand_aliases选项没有被设置,那么在非交互式shell中alias不会被执行展开。也就是说,在shell脚本中,使用alias会导致”command not found”的错误。使用shopt命令来设置expand_aliases选项:

1
shopt -s expand_aliases

设置这个选项,可以在bashrc中,也可以在需要使用alias的脚本中。

  再就是,如果在脚本中的同一行内,先定义alias,接着马上使用该alias是会产生错误的。原因就是bash在解释执行脚本过程中,每次读取至少一行命令,alias展开就是在读取时进行的,读取之后(alias展开也完成了)才开始执行命令(当然,还会有参数扩展等其他操作)。由于进行alias展开时该行的alias命令尚未执行,所以其中的alias就不会被展开。举个例子吧,

1
2
shopt -s expand_aliases
alias ll='ls -lh'; alias e='exit'; ll; e

执行该脚本,会发现ls 和exit命令均未被执行,错误提示ll和e命令未找到。所以,脚本中,alias命令最好单独成行。
  同样的问题也出现在组合命令中,比如while, for循环等结构,

1
2
3
4
5
6
7
8
9
10
11
12
shopt -s expand_aliases
for i in `seq 1 10`
do
    alias ll='ls -lh'
    ll # command ll not found.
done
 
for i in `seq 1 10`
do
    alias ll='ls -lh'
    ll # now ok
done

  类似地,在shell函数中alias也会出现同样的问题。事实上,shell中的函数只不过是一种特殊的、有名字和参数的、使用{}的组合命令,所以单行函数中’}’之前是必须要有分号的,就像普通的{}组合命令一样。之所以非单行函数不需要分号,是因为换行可以代替分号。
  最后,bash中alias不可以使用位置参数(据说csh)是可以的,也就是说,不可以使用alias mkcd=’mkdir $1 && cd $1’这样的命令(这种命令允许你在alias中按照自己的意愿安排参数的位置,例如对于alias ll=’ls $1 -lh’,ll file被展开为ls file -lh,而不是简单的展开为ls -lh file)。如果在bash中确实需要这样做,就应该使用函数来完成,比如,function mkcd() { ‘mkdir $1 && cd $1; }.

Tags:  命令.
Filed under: Unix/Linux By  dutor @  March 10th, 2011803 views  Comments (5)
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[命令技巧]alias 的相关文章

  • ReferenceError:MongoDB shell 中未定义 require

    我尝试通过 Windows 命令 Windows 8 1 从 Mongo 客户端连接 MongoDB 当我使用require 在 javascript 中 我遇到如下错误 有人有同样的问题吗 我有错过任何一个吗require有关的npm安装
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • 从 shell 命令调用 SOAP 请求

    我使用curl 向Web 服务发送SOAP 请求 并使用shell 脚本获取响应 请在下面找到我正在使用的命令 curl H Content Type text xml charset utf 8 H SOAPAction d sample
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 在 shell 脚本中将一个子字符串替换为另一个字符串

    我有 我爱苏子并结婚 我想将 苏子 更改为 萨拉 firstString I love Suzi and Marry secondString Sara 期望的结果 firstString I love Sara and Marry 要更换
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 无法使用 Java ProcessBuilder 启动带参数的 shell 脚本

    我正在尝试使用 ProcessBuilder 执行带有命令行参数的 shell 脚本 该 shell 脚本又调用使用此参数的其他两个 shell 脚本 第一个 shell 脚本运行良好 但当第二个 shell 脚本启动时 它返回退出代码 1
  • 如何在Shell脚本中解析字符串

    我想在 shell 脚本中解析以下字符串 VERSION 2 6 32 54 0 11 def 这里我想得到两个值 first 263254 second 11 我使用以下方法来获取第一个值 first expr substr VERSIO
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20

随机推荐

  • 无人机通信网络资源分配与优化matlab源码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 近年来 无人机已广泛应用到许多的研究领域 不久的将来大量的无人机会如同雨后春笋般涌现
  • 静态代理模式

    package com kuang Demo04 静态代理总结 真实对象和代理对象都要实现同一个接口 代理对象要代理真实对象 好处 代理对象可以做很多真实对象做不了的事情 真实对象可以专注做自己的事情 public class Static
  • Node.js教程,Node.js服务器项目《听歌识曲》

    Node js是前端学习必学的 今天就给大家分享的就是Node js做的一个服务器项目教程 课程简介 基于Node js开发的Express框架快速搭建web服务器 配合Mongodb数据库 让前端开发者也能将静态页面功能化 主讲内容 1
  • Docker: getsockopt: connection refused 问题解决

    操作系统 centos7 问题描述 部署好的harbor无法从其他服务器登陆 问题原因 docker1 3 2版本开始默认docker registry使用的是https 而我们设置Harbor默认http方式 所以当执行用docker l
  • Qt中获取路径

    使用QDir QDir sourceDir QDir currentPath 此路径是项目编译生成的路径即可执行文件所在目录 QCoreApplication applicationDirPath 此路径是项目bulid生成的路径 是资源路
  • input标签是什么?input标签属性有哪些

    input标签属于什么标签 input标签属性有哪些 相信刚接触的表单的小白应该很陌生 那么接下来我们就来讲一下input标签属性有哪些 首先小编在这里谢谢大家一直的支持 每天都会更新十个web前端基础内容 需要的可以关注我 另外也可以进我
  • maven将本地jar打包到war中

    directory为本地jar的目录 targetPath为war包的的jar路径
  • CentOS7与CentOS8的区别

    8版本的 Python 3 PHP 7 2 Ruby 2 5 Node js 10 java OpenJDK 11 OpenJDK 8 IcedTea Web和各种Java工具 如Ant Maven或Scala 7支持以下编辑语言 Pyth
  • CSS特效(二):利用html和css制作毛玻璃特效和按钮动画效果

    最终的效果图片 毛玻璃效果 在style标签中 在form表单的before中利用filter的blur属性以及box shadow的值设置 就可以做出form表单后面的毛玻璃效果背景 还要记得设置form表单的display为flex布局
  • 快手抖音怎么引流?抖音和快手哪个引流效果好?

    短视频作为一种立体信息的承载方式 内容丰富多样 能够直观的展现出产品及服务的细节 被广大用户所青睐 再加上 随着互联网5G时代的普及 抖音和快手两大短视频的出现 到目前为止已更是拥有超过亿万用户的群体平台 短视频也被推上了风口浪尖处 掀起了
  • PieCloudDB Database 云上商业智能的最佳实践

    商业智能 Business Intelligence BI 这个概念最早是 Gartner 在上个世纪九十年代提出的 它认为从功能上来说 商业智能是一种解决方案 其关键是处理企业来自多个来源的各种数据 提取有用的数据并清理 然后经过抽取 E
  • HashSet(使用方法详解)

    HashSet 使用方法详解 1 HashSet 基于 HashMap 来实现的 是一个不允许有重复元素的集合 2 HashSet 允许有 null 值 3 HashSet 是无序的 即不会记录插入的顺序 4 HashSet 不是线程安全的
  • 在同一个Tomcat下部署多个同名系统

    有多个同名war要部署在同一台服务器上 除了部署多个Tomcat 还可以在同一个Tomcat下设置多个Service 流程 打开Tomcat conf server xml 选中已有的整个
  • [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • 【开发环境搭建】3.Anaconda安装包和channels管理

    文章目录 1 conda 管理包 2 conda channel管理 2 1 指定安装包的channel 2 2 default中找不到合适包时的包安装方法 2 3 environment yml中指定pip安装的包 本文内容对linux系
  • 项目实战04_构建企业级maven私服

    注意 在一个互联网企业中 都是采用分模块的开发模式 每个团队维护自己的模块 是无法看到另外项目团队的模块代码的 需要实现业务的通讯就会使用到rpc远程调用技术 Maven私服作用 1 构建一个企业级Maven私服 缓存微服务团队中jar包
  • 乐高wedo搭建图纸_乐高课程 wedo2.0编程

    乐高wedo2 0编程套装 编号45300 乐高教育 WeDo 2 0 通过乐高模型和简单的程序编写 鼓励和激发 2 到 6 年级小学生对科学 工程以及相关课程的学习兴趣 WeDo 2 0强调孩子通过动手体验来树立信心 敢于发现 提出和思考
  • Java使用POI导出Word文档

    POI是Apache组织的一套关于文档操作的api 可以实现word文档和excel文档的读取和写出的功能 所需jar包点击下载 生成word文档 public class WordStudy Test public void test1
  • 已解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart. Verify that you have su

    成功解决 MongoDB安装报错 Service MongoDB Server MongoDB MongoDB failed tostart Verify that you have sufficient privileges to sta
  • [命令技巧]alias

    转自 http www dutor net index php 2011 03 commands alias alias 假名 别名 bash的一个内建命令 用来给常用的较长的命令定义个简短的名称 alias命令的基本格式为alias wo