Nov
6
改 vimrc 没什么卵用,搜了一下,说是因为终端的兼容问题,只要在 ~/.bashrc 里面加上 "export TERM=linux" 就好。
refer: https://stackoverflow.com/questions/31783160/why-vim-is-changing-first-letter-to-g-after-opening-a-file
refer: https://stackoverflow.com/questions/31783160/why-vim-is-changing-first-letter-to-g-after-opening-a-file
Feb
1
不知道为什么这些年写脚本一直没有解决这个小需求:把命令行参数传递给脚本中的某个命令继续执行
例如我想写一个 colored-echo 命令:
然后这么调用
但参数的数量是可变的,另一种实现是
但个实现也很奇怪,如果某个参数里面出现了引号或者空格,会因为bash奇葩的转义逻辑导致跟预期不一致。
可能因为痛感不强烈,所以拖了几年也没真正花心思去解决它,今天搜了一会,总算找到靠谱的解决方案了,而且超级简单:
例如我想写一个 colored-echo 命令:
引用
#!/bin/bash
color=$1
shift
echo -ne "\x1b[$color"
echo -n $1 $2 $3 $4 $5
echo -e "\x1b[0m"
color=$1
shift
echo -ne "\x1b[$color"
echo -n $1 $2 $3 $4 $5
echo -e "\x1b[0m"
然后这么调用
引用
colored-echo 41m hello world
但参数的数量是可变的,另一种实现是
引用
cmd=echo
for ((i=1; i<=$#; i++))
do
cmd="cmd ${@:i:1}"
done
$cmd
for ((i=1; i<=$#; i++))
do
cmd="cmd ${@:i:1}"
done
$cmd
但个实现也很奇怪,如果某个参数里面出现了引号或者空格,会因为bash奇葩的转义逻辑导致跟预期不一致。
可能因为痛感不强烈,所以拖了几年也没真正花心思去解决它,今天搜了一会,总算找到靠谱的解决方案了,而且超级简单:
引用
echo "$@"