Category: record

shell记录

多行复制

1
2
3
4
9,14 copy 45 # copy
9,14 move 45 # move
9,14 m 45 # move

粘贴到行首

使用大写 P

在某个目录下查找包含某个字符串的文件

1
find . | xargs grep -ri "some string"

xargs命令

作用:将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

1
2
3
4
5
6
7
rm `find /path -type f`
# 如果path目录下文件过多就会因为“参数列表过长”而报错无法执行。但改用xargs以后,问题即获解决。
find /path -type f -print0 | xargs -0 rm
# xargs将find产生的长串文件列表拆散成多个子串,然后对每个子串调用rm。

查找指定时间范围的文件

1
find ./*.jpg -newermt "2013-10-28" ! -newermt "2013-10-29"

字符串参与条件判断或者计算时,必须加上双引号

1
2
3
4
5
if [ -n "$string" ];
string="test test2"
your_func $string # 错误:函数会接收到两个参数
your_func "$string" # 正常:函数正常接收到一个参数

注意: shell会把字符串按照IFS进行分割处理

多行字符串:IFS换行符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ifs=$IFS
IFS=$`\n` # 注意这里,不能使用: IFS="\n" or IFS='\n'
config=`cat <<EOF
output: .user.js
dese:
// ==UserScript==
// @name Userscript
// @namespace http://cyy0523xc.github.io/
// @version 0.1
// @description something
// @match http://*/*
// @copyright 2014, Alex(cyy0523xc@gmail.com)
// ==/UserScript==
input:
-
EOF`
echo $config
IFS=$ifs

批量重命名文件

1
rename 's/201[34]\-[01][0-9]\-[012][0-9]\-//' *.md

期待一元表达式

异常信息:

1
bash: [: h: 期待一元表达式]

对应语句:

1
2
3
4
5
if [ "h" = $1 ]
# 如果变量未定义的话,则报错,应改成:
if [ "h" = "$1" ]

vim插件

华丽的powerline

下载插件:

1
2
cd ~/.vim/bundle/
git clone https://github.com/Lokaltog/vim-powerline

修改vim的配置文件:vim ~/.vimrc,加入下面几行:

1
2
3
4
" powerline插件
set t_Co=256
let g:Powerline_symbols = 'unicode'
set encoding=utf8

效果如下:

vim-powerline

vimscript问题汇总

source时提示“E484: 无法打开文件”

1
source '/home/code/github/code/vim/cyy.vim'

应该去掉路径中的单引号,如下:

1
source /home/code/github/code/vim/cyy.vim