使用sed和awk命令创建arm-linux的符号链接

嫌长不看版本:

我们的目的是在linux中创建脚本来执行类似这样的操作:ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc。具体做法是在/usr/local/arm/arm-2009q3/bin文件夹中敲下面这行代码生成mk_alias.sh脚本,然后source执行即可。

ls | grep arm-none-linux-gnueabi | sed 's/arm-none-linux-gnueabi-//g' | awk '{printf "ln arm-none-linux-gnueabi-%s -s arm-linux-%s\n", $1, $1}' > mk_alias.sh

以下是正文:

当我们在linux中安装好arm-2009q3的交叉编译器后,进到/usr/local/arm/arm-2009q3/bin文件夹后,我们发现每个编译命令的名字都很长一串,使用起来并不方便,如下图中每个都带了arm-non-linux-gnueabi-前缀:

 

 我们想为他们创建看起来更简洁的符号链接,如arm-linux-,使用ln XXX -s XXX命令即可。

ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc

但是这里的文件太多了,不想一个一个写这些符号链接。所以这里偷懒写个脚本来做。

ls | grep arm-none-linux-gnueabi | sed 's/arm-none-linux-gnueabi-//g' | awk '{printf "ln arm-none-linux-gnueabi-%s -s arm-linux-%s\n", $1, $1}' > mk_alias.sh

这里虽然只有一行代码,但是其实经过了几个步骤,用到了linux下的sed和awk命令。一步一步解释下来就是这样:

1. 先进到/usr/local/arm/arm-2009q3/bin文件夹,执行ls,再把带arm-non-linux-gnueabi-前缀的文件都显示在屏幕上。

2. 使用sed ‘s/XXXX/YYYY/g’命令将具体的指令拿出来供后续的awk使用。比如sed 's/arm-none-linux-gnueabi-//g'的效果就是把arm-none-linux-gnueabi-gcc变成gcc。

3. 使用awk ‘{printf "%s", $1}’实现格式化输出之前拿到的指令(如刚才的gcc),这里指令在awk命令中被认为是$1变量。比如awk '{printf "ln arm-none-linux-gnueabi-%s -s arm-linux-%s\n", $1, $1}'的效果(这里假设$1是gcc)就是输出ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc\n。

4. 将格式化输出的结果保存到mk_alias.sh脚本文件,如下图所示。

 最后运行在当前文件夹source mk_alias.sh即可。检查一下结果,这些蓝色的就是刚创建的符号链接了。大功告成!

 总结一下吧。

1. sed ‘s/XXX/YYY/g’是将按行将输入内容中的XXX替换成YYY再输出。

2. awk '{printf "FORMAT", $1}'是按行将输入内容按需要的格式FORMAT输出。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值