以前在Linux跳机上登录其他服务器(ssh IP),为了方便,把很多服务器的IP和业务名称touch到了用户主目录下,这样方便了好多,每次ls -l 出来下就可以了,然后复制,粘贴就方便了。如下图。

这样每次复制粘贴还是不是特别方便,所以行能不能输入业务名字,直接就登录了,仍然保持着touch的文件(方便记忆IP进行沟通),首先第一个还是想到的是alias命令。 因此开始着手写一个简单的脚本。把IP和别名对应起来。

第一步、ls 出来这些touch出来的文件 通过AWK 进行分析

第二步、 使用alias 把名字和ssh IP对应起来。

很快搞定shell脚本

#!/bin/sh
#ls -l IP* | awk '{print $9}' ls -l IP* | awk '{print $9}' >m.list
cat m.list| awk -F _ 'BEGIN {print("#!/bin/sh") ;print("shopt expand_aliases"); print("shopt -s expand_aliases ")} { cmd="alias "$3"=\"ssh "$2"\"";print(cmd) } END {print("# end")}' >alias_dat.sh
chmod +x alias_dat.sh
source /home/dongjunjie/alias_dat.sh

     其实调试这些脚本看着简单,但还是遇到不少坑。 主要有以下

第一、alias 在交互式模式下,shell的alias扩展功能是打开的,因此我们可以键入自己定义的alias别名来执行对应的命令。但是,在非交互式模式下alias扩展功能默认是关闭的,此时仍然可以定义alias别名,但是shell不会将alias别名扩展成对应的命令,而是将alias别名本身当作命令执行,如果shell内置命令和PATH中均没有与alias别名同名的命令,则shell会“抱怨”找不到指定的命令。 因此需要

shopt -s  expand_aliases  打开

第二、expand_aliases  打开之后,执行命令,还是发现没有找到命令。 最后在shell脚本里面执行,发现是OK的,说明alias只在shell中生效了,shell执行完毕之后,有实效了。
因此想办法,把脚本加入.bash_profile 测试OK。
以后终于就可以简单的通过跳机来调了。
-------------------------- 参考 打开alias shell模式。 http://www.cnblogs.com/qcly/p/3219780.html

在Shell中使用alias的更多相关文章

  1. Linux shell 脚本中使用 alias 定义的别名

    https://www.cnblogs.com/chenjo/p/11145021.html 核心知识点: 用 shopt 开启和关闭 alias 扩展 交互模式下alias 扩展默认是开启的,脚本模 ...

  2. 在shell脚本中使用alias

    Linux shell有交互式与非交互式两种工作模式.我们日常使用shell输入命令得到结果的方式是交互式的方式,而shell脚本使用的是非交互式方式.   shell提供了alias功能来简化我们的 ...

  3. shell中的内建命令, 函数和外部命令

    转自shell中的内建命令, 函数和外部命令 Shell识别三种基本命令:内建命令.Shell函数以及外部命令: (1)内建命令就是由Shell本身所执行的命令.    有些命令是由于其必要性才内建的 ...

  4. shell中命令的执行流程

    在shell中,一个命令有3中写法: 1 可以直接写(Normal Command) 2 可以放在双引号中("Command") 3 可以放在单引号中('Comand') 这3中写 ...

  5. shell中对于命令的搜寻顺序

    当你在shell命令行输入一条命令时,shell的搜寻顺序是如何的呢?当你的脚本名字和shell中的函数名字重名,shell是如何决定运行哪一个的? 在shell中,shell对于命令的搜寻优先级为: ...

  6. Shell中bash的特性小结

    Shell: 用户与操作系统之间完成交互式操作的一个接口程序,为用户提供简化了的操作:上世纪的70年代中期在贝尔实验室,Bourne位Unix开发了一个shell程序Bourne Shell,简称sh ...

  7. Linux中让alias设置永久生效的方法详解

    Linux中让alias设置永久生效的方法详解 一.问题描述 1.有很多时候我们想要将很多操作作为一个步骤,那么在不作为系统的服务的情况下,别名是我们最好的选择,但是发现别名只能在一次会话中生效,重启 ...

  8. 【转】shell中的内建命令, 函数和外部命令

    原文:http://www.cnblogs.com/xkfz007/archive/2011/10/13/2209571.html linux命令有内部命令和外部命令之分.内部命令实际上是shell程 ...

  9. 如何在Bash脚本中引入alias

    更多精彩内容,请关注微信公众号:后端技术小屋 alias的使用 在日常开发中,为了提高运维效率,我们会用alias(命令别名)来定义命令的简称.比如在~/.bash_profile中添加: alias ...

随机推荐

  1. 剥开比原看代码16:比原是如何通过/list-transactions显示交易信息的

    作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...

  2. 17秋 软件工程 团队第三次作业 预则立&他山之石

    题目:团队作业-预则立&&他山之石 团队: 我说嘻(xì)哈(hà)你说侠 17秋 软件工程 团队第三次作业 预则立&他山之石 1.确立团队选题,建立和初步熟悉团队git的协作 ...

  3. Leetcode_Easy_14

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". class Solution { public String longestCommonP ...

  4. 51nod 1624 取余最长路

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1624 题意: 思路:因为一共只有3行,所以只需要确定第一行和第二行的转折 ...

  5. Spring-JDBC依赖

    <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</a ...

  6. dataTables使用整理(一)

    初次使用dataTables,对一些用到的属性及遇到的问题做一个简要的记录 参考资料: http://blog.csdn.net/mickey_miki/article/details/8240477 ...

  7. 安装 Python-Client

    有多种安装Python-Client的方法: 第一种 Install from PyPi, as 'Appium-Python-Client'. >pip install Appium-Pyth ...

  8. Spring分布式事务实现概览

    分布式事务,一直是实现分布式系统过程中最大的挑战.在只有单个数据源的单服务系统当中,只要这个数据源支持事务,例如大部分关系型数据库,和一些MQ服务,如activeMQ等,我们就可以很容易的实现事务. ...

  9. nodejs实现文件的拷贝复制

    var fs = require( 'fs' ), stat = fs.stat; /* 05 * 复制目录中的所有文件包括子目录 06 * @param{ String } 需要复制的目录 07 * ...

  10. ASP.NET 4.x Web Api Odata v4 backend modify query 修改查询

    有时候我们会想给予权限添加 filter 到查询上. 比如 会员和管理员都使用了 /api/products 作为 product 查询 但是会员不应该可以看见还没有上架的货品 /api/produc ...