shell 命令记录

来自百合仙子's Wiki
跳转到导航 跳转到搜索

文档处理

纯文本

求差集

求差集 A-B:

sort B B A | uniq -u

来源:简单的 LINUX Shell 下求集合交集差集的办法

版本控制

git 的提交信息作为 svn 的提交:

svn ci -m `git log --format='%s' -1`

加密

dc 表达式

加密

python -c 'print reduce(lambda a, b: a*256+ord(b), raw_input("string: "), 0)'

解密

dc -e xxxP

链接

统计

最常用的十条命令

查看自己最常用的十条命令(zsh 中,bash 中不需要 history 的参数)

history 1 | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

Vim 脚本行数

自己写了多少行Vim脚本?(zsh下才可用,因为bash** 不搜索多级子目录,并且可能不支持()语法。)

grep -l "Author.*`whoami`" ~/.vim/**/*[^~](.^@)|while read i; do cat $i; done|cat - ~/.vimrc|sed '/^\s*$/d'|sed '/^\s*"/d'|wc -l

:可能不准确。

系统

释放 cache 内存

sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

修正某些发行版中gVim中文菜单不显示的问题

cd /usr/share/vim/vim73/lang # 或者其它路径
for i in *utf-8*; do sudo ln -s $i `echo $i|tr -d '-'`; done

从 PostgreSQL 锁表数据库进程查询对应的使用者进程

通过 PostgreSQL 查询到锁表进程的 other_pid 后,可使用如下命令查询得到导致锁表的用户进程:

pid=12345; pid $(sudo netstat -ntp | awk -vport=$(pid $pid | grep -oP '(?<=\()\d+') '{if($4 ~ ":"port){ print $7; }}' | cut -d/ -f1)

其中, pid 用于将 PID 转为命令行:

pid () {
  s=0
  for i in $@; do
    echo -n "$i: "
    r=`cat /proc/$i/cmdline|tr '\0' ' ' 2>/dev/null`
    if [[ $? -ne 0 ]]; then
      echo not found
      s=1
    else
      echo $r
    fi
  done
  return $s
}

终端

使用 Perl 显示终端支持的256色:

perl -e 'print map sprintf("\x1b[38;5;%um%4u", $_, $_), 0 .. 255'

参见 ANSI 转义序列

硬件

另参见dmidecode,DMI table decoder。

CPU

CPU 支持64位吗?[1]

sudo dmidecode --type=processor | grep -i -A 1 charac

当前使用的是多少位?

getconf LONG_BIT

定制

将个人配置放到 ~/lily 以和使用相同帐号的人分隔开。

启动 zsh 命令:

ZDOTDIR=$HOME/lily exec zsh -l

# for mosh
mosh root@build -- sh -c 'SHELL=/bin/zsh ZDOTDIR=$HOME/lily exec zsh -l'
# for ssh
ssh -t root@build 'SHELL=/bin/zsh ZDOTDIR=$HOME/lily exec zsh -l'

tmux 一起启动:

SHELL=/bin/zsh ZDOTDIR=$HOME/lily tmux -f ~/lily/.tmux.conf -S ~/lily/.tmux.sock

~/lily/.zsh/zshrc.local 内容:

path=(~/lily/bin $path)
export SHELL=/bin/zsh
export MYVIMRC=$HOME/lily/.vim/vimrc
export VIMINIT="let &rtp='$HOME/lily/.vim,' . &rtp
so $MYVIMRC"
export VIMTMP=$HOME/lily/tmpfs

alias tmux="tmux -f ~/lily/.tmux.conf -S ~/lily/.tmux.sock"

注意也要更新 Vim'packpath' 选项。

参见

参考资料