以前在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 脚本 alias,在shell脚本中使用alias别名

    本文最后更新于2015年7月12日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! 缘由: 经常用Linux进行操作的同学一般都会有各种各样的技巧来提升工作效率,而添加/改写shell ...

  2. linux shell alias,Linux shell脚本中使用alias定义的别名

    核心知识点 shopt 开启和关闭 alias 扩展 交付模式默认是开启的,脚本的默认是关闭的 alais 扩展的名称是 expand_aliases alias 定义 在当前session中,可以直 ...

  3. Shell中alias介绍

    Shell alias:给命令创建别名 alisa 用来给命令创建一个别名.若直接输入该命令且不带任何参数,则列出当前 Shell 进程中使用了哪些别名.现在你应该能理解类似ll这样的命令为什么与ls ...

  4. linux——shell 中的变量

    变量的定义 变量,即在程序运行过程中它的值是允许改变的量 变量是用一串固定的字符来标示不固定的值的一种方法 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更 ...

  5. 学习linux杂七杂八——关于shell中的变量

    var=value 变量定义并赋值,注意等号前后不能与空格相邻,如果需要有空格(其他特> 殊字符,如$,回车,",',\等)可用转义字符\进行转义. 变量命名规则同C语言. 变量值两端 ...

  6. 正则表达式在shell中使用的方法与案例

    目录 一.介绍: 二.表达式的书写符合对应的含义 2.1.基础元字符 2.2.Shell 中支持的扩展元字符. 三.示范案例 3.1."*"的使用 3.2."." ...

  7. macos终端美化_关于macOS终端美化的最轻松的指南Z Shell中的速成课程

    macos终端美化 Speeding it up more than the standard bash terminal that comes with your MacOS by using iT ...

  8. linux ftp显示进度条,Shell中复制大文件显示进度

    "世间最痛苦的事莫过于等待..." 在Shell下进行大文件的复制时,常常要耗很长世间,这是一个相当乏味的过程,在GUI程序中常常会显示进度条或者完成百分比,但在Shell中如何来 ...

  9. shell中模式匹配+函数+正则

    一.case语句 case语句为多选择语句.可以用case语句匹配一个值与一个模式,如果匹配成功,执行相 匹配的命令. case var in 定义变量:var代表是变量名 pattern 1) 模式 ...

最新文章

  1. 动态规划--连续子序列的最大和
  2. SharePoint工作流解决方案QuickFlow系列(2)--Task
  3. IntelliJ IDEA for Mac如何替换文件内容中指定的关键词
  4. 部署到gcp_剖析大数据公司为什么选择 GCP?
  5. linux系统能装什么显卡,Linux系统下安装显卡驱动
  6. 正向代理与反向代理的理解
  7. 25 款软件上榜,2020“最佳开源奖” 出炉!
  8. 如何从0开发一个Atom组件
  9. Oracle DML NOLOGGING
  10. 30行Python代码刷王者荣耀金币
  11. rpcbind服务说明及关闭
  12. MySQL复制之gtid_purged与gtid_executed
  13. 图的广度优先搜索和深度优先搜索
  14. python,ffprobe获取视频信息
  15. CND(内容分发网络)前端的使用
  16. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数014,tuple,元组
  17. c语言开发安装浏览器,用Visual C++开发简易浏览器
  18. CCM(Color Correction matrix)
  19. 安装 Unity 个人免费版
  20. 规则引擎 Drools:决策表

热门文章

  1. 驱动下通过进程PID获得进程名 (动态获取ImageFileName在EPROCESS结构体中的相对偏移)...
  2. IOS逆向【2】-cydia之开发者模式
  3. 开发外包注意事项——iOS APP的开发
  4. USACO 1.1 Friday the Thirteenth
  5. Mifare Ultra Light 非接触式IC卡发卡总结
  6. T-sql检测文件夹是否存在
  7. 49个让你成功的人生细节
  8. c++中用new和不用new创建对象的本质区别
  9. spring连接mysql出现问题_使用spring连接mysql数据库出错
  10. windows无法启动mysql服务(位于本地计算机上)_Windows 10开始菜单无反应,怎么办,看是否启用User Manager服务...