Linux命令笔记[五]

cd – 进入上次的目录
命令行中,Ctrl+U删除整行
VIM开多窗口命令::sp [filename],翻页:[Ctrl] + [f] [Ctrl] + [b],[Ctrl]+r 重做上一个动作。ZZ 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!:r [filename] 在编辑的数据中,读入另一个档案的数据。:w [filename] 将编辑的数据储存成另一个档案。:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。

vim 非贪婪,将 .* 换成 .\{-}

Ubuntu下访问和挂载Windows共享文件夹
确认安装了smb,smbclient,和smbfs
执行
sudo mount -t smbfs -o username=winusername //192.168.1.102/sharefolder/media/localfolder

ssh自动登陆并执行远程命令:
sshpass -p uxwwma ssh developer@192.168.2.15 ‘uname -a’

grep -o只打印匹配的部分,grep -o -E “[0-9]+”.jpg

cut -d : -f 1,5 /etc/passwd
#-d后面的冒号表示字段之间的分隔符,-f表示取分割后的哪些字段
#这里取出的是第一个和第五个字段。
cut -d: -f 3- /etc/passwd
#从第三个字段开始显示,直到最后一个字段。
cut -c 1-4 /etc/passwd
#取每行的前1-4个字符。
cut -c-4 /etc/passwd
#取每行的前4个字符。
cut -c1-4,5 /etc/passwd
#取每行的1-4和第5个字符。

head -n 5 /etc/passwd
#显示输入文件的前五行。
tail -n 5 /etc/passwd
#显示输入文件的最后五行。
如果使用者想查看不间断增长的日志(如服务程序输出的),可以使用tail的-f选项,这样可以让tail命令不会自动退出,必
须通过CTRL+C命令强制退出,因此该选项不适合用于Shell脚本中,见如下用例:
tail -f -n 5 my_server_log

grep退出状态:
0: 表示成功;
1: 表示在所提供的文件无法找到匹配的pattern;
2: 表示参数中提供的文件不存在。

VIM正则表达式,将重复的多行替换成一行:
匹配重复行:^\(.*\)\(\n\1\)\+$
替换就是::%s/^\(.*\)\(\n\1\)\+$/\1/

检测BOM的脚本 :
grep -R $’^\xEF\xBB\xBF’ file/

diff递归比较目录:
diff -u -r -x .svn /cygdrive/d/www/iguess/system//cygdrive/d/www/iguess
-u unified,显示上下文(默认3行)
-r 递归比较(recursive)
-x 忽略指定模式(pattern)匹配的文件

mysql忘记root密码,干掉mysql服务,然后mysqld –skip-grant-tables,再mysql -uroot -p修改密码

计算两张图片相似度:
convert img1.jpg img2.jpg -compose Difference -composite -colorspace gray -verbose info: | sed -n ‘/statistics:/,/^ [^ ]/ p’ | grep mean | cut -d ‘:’ -f 2 | cut -d ‘(‘ -f 1
或者:
convert 0.jpg 1.jpg -compose Difference -composite -colorspace gray -format ‘%[fx:mean*100]’ info:
http://www.imagemagick.org/Usage/compare/#compare

利用imagemagick和tesseract-ocr识别验证码:
sudo apt-get install tesseract-ocr
sudo apt-get install imagemagick

安装hiphop,curl时:
https://github.com/bagder/curl/commit/26b487a5d6ed9da5bc8e4a134a88d3125884b852
编译时:
https://github.com/facebook/hiphop-php/issues/470
使用前:
export CMAKE_PREFIX_PATH=放hiphop的目录
export HPHP_HOME=hiphop目录
export HPHP_LIB=hiphop目录下面的bin目录

用crontab执行sh脚本时,调试脚本:
01 * * * * (sh -x /data/htdocs/1.sh > /root/debug.txt)
#1.sh中存放自己的脚本
crontab要执行的脚本中,注意要用绝对路径,然后导入环境变量。有脚本前加入:
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
freebsd中,shell为sh,没装bash一般

shell 普通时间转UNIX时间:
date +%s -d”2012-7-2 11:00:00″
date -d @Unix timestamp

mysql 导入sql脚本后,设计表出现“cannot load from mysql.proc”错误,解决办法:mysql_upgrade -uroot -p123456

vim完美配置:https://github.com/spf13/spf13-vim
gnome的终端颜色个数也需要配置下,插件csapprox-terminal只支持88/256两种颜色.
CSApprox skipped; terminal only has 8 colors, not 88/256
Try checking :help csapprox-terminal for workarounds
增加以下内容至~/.vimrc.local
if &term =~ ‘^\(xterm\|screen\)$’ && $COLORTERM == ‘gnome-terminal’
set t_Co=256
else
set t_Co=88
endif
Bundle ‘TabBar’
填加完再重新使用运行下命令安装新增加的TabBar插件:
vim +BundleInstall! +BundleClean +q
ack插件要先安装ack: sudo apt-get install ack-grep,然后:sudo ln -s /usr/bin/ack-grep/usr/local/bin/ack 再重新安装Bundle
两个主题 zenburn oceandeap(88色)
<c-e> 打开文件导航
<c-p>查找最新文件
<leader>c<space>添加或取消注释,leader键在vim配置文件里面设置
,pd对PHP函数生成注释 PHP DocK查看PHP函数的文档手册
<Leader>tt 打开函数导航
Ctrl-] 跳转到函数定义 使用前先生成tags:ctags -R * ,Ctrl-O 返回到跳转前的位置,Ctrl-T 沿着经过的标签列表向回跳转
zc 折叠
解决sudo vim导致的问题:
You can add always_set_home in following way
#sudo visudo
and change line
Defaults env_reset
to line
Defaults env_reset,always_set_home
save and exit

安装PHP 的imagick扩展,从源码安装imagemagick,然后再从源码安装PHP的imagick扩展,都要安装最新的,不然不支持PNG

linux下文件比较工具 diffuse和meld ,收费有一个跨平台的BCompare,

vimdiff FILE_LEFT FILE_RIGHT
把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令
dp (diff “put”)
如果希望把另一个文件的内容复制到当前行中,可以使用命令
do (diff “get”,之所以不用dg,是因为dg已经被另一个命令占用了)
同时退出:
:qa (quit all)
如果希望保存全部文件:
:wa (write all)
或者是两者的合并命令,保存全部文件,然后退出:
:wqa (write, then quit all)
如果在退出的时候不希望保存任何操作的结果:
:qa! (force to quit all)

吸取教训,mysql 数据库InnoDB转NDB引擎后,NDB不支持外键,查询也不会自动帮你排好序,所以有的SQL语句,要加上ORDER BY ,不然查出来的顺利会乱掉,从而导致程序出现非常奇怪的问题。

imagemagick出现错误:
convert: error while loading shared libraries: libMagickCore.so.2: cannot open shared object file: No such file or directory
解决办法:sudo ldconfig

surround插件:
“Hello world!” —> ‘Hello world!’ : cs”‘
<q>Hello world!</q> : cs'<q>
“Hello world!” : cst”
Hello world! : ds”
[Hello] world! : ysiw]
{ Hello } world! : cs]{
({ Hello } world!) : yss)
Hello world! : ds{ds)
<em>Hello</em> world! : ysiw<em>
先用V选择区域,然后再跟 S<p>变成下面:
<p>
<em>Hello</em> world!
</p>

vim移动:
{ (左大括号) 跳到上一段的开头
} (右大括号) 跳到下一段的的开头.
( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头
[[ 跳往上一个函式
]] 跳往下一个函式
和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
`.:到你上次编辑文件的地方
# 将所有当前单词置为高亮

在VIM中打开其它程序,比如shell窗口的一个插件:conque
安装:在.vimrc.local中添加 Bundle ‘rosenfeld/conque-term’ 然后在VIM中执行命令 :BundleInstall!
Type :ConqueTerm <command> to run your command in vim, for example:
:ConqueTerm bash
:ConqueTermSplit mysql -h localhost -u joe -p sock_collection
:ConqueTermTab Powershell.exe
:ConqueTermVSplit C:\Python27\python.exe

编辑在缓存中的两个文件快速切换命令
比如在同一个窗口中先后打开了 file1.txt 和 file2.txt ,这时候使用 Ctrl+^ 可以在同一窗口中来回切换这两个文件。

php性能瓶颈(bottleneck)检测工具,XDebug+ KCacheGrind
xdebug设置几个参数
xdebug.profiler_output_dir=/home/chenming/
xdebug.profiler_enable_trigger 和 xdebug.profiler_enable 具体看文档,在IDE中调试后,会生成报告文件到profiler_output_dir目录中,然后用KCacheGrind打开报告文件。
注意输出目录的权限问题
xdebug.profiler_append=1
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_name=cachegrind.out.%s.%H
xdebug.profiler_output_dir=”/tmp/xdebug/”
xdebug.trace_output_dir=”/tmp/xdebug/”
然后chrome有一个插件 xdebug helper

不重启关闭SeLinux:执行命令:setenforce 0

vim格式化json,:%!python -m json.tool 。快捷键 <leader>jt<Esc>
vim中,J删除换行符,也就是把两行合成一行。

同步时间命令:ntpdate time.windows.com

vim以下命令可以对标点内的内容进行操作。
ci’、ci”、ci(、ci[、ci{、ci< – 分别更改这些配对标点符号中的文本内容
di’、di”、di(或dib、di[、di{或diB、di< – 分别删除这些配对标点符号中的文本内容
yi’、yi”、yi(、yi[、yi{、yi< – 分别复制这些配对标点符号中的文本内容
vi’、vi”、vi(、vi[、vi{、vi< – 分别选中这些配对标点符号中的文本内容
另外如果把上面的i改成a可以连配对标点一起操作。
举个例子:
比如要操作的文本如下:
111″222″333
将光标移到”222″的任何一个字符处输入命令 di” ,文本会变成: 111″”333
若输入命令 da” ,文本会变成: 111333

diff -w 比较的时候忽略空格与TAB

awk -F指定分隔符,如cat pics.url |awk -F/ ‘{print $NF}’ ,指定分隔符为/并且打印出最后一个字段。

tac命令,将文本内容颠倒,最后一行当第一行

php –ini 查看php.ini在哪里

为了实现将远程服务器中的文件同步备份到本机,使用下列命令(Rsync+ssh):
rsync -avlR –delete -e ssh user@xxx.xxx.xxx.xxx:/remotedir/localdir/
该指令中涉及到的选项作用如下:
-a:存档
-v:给出文件传输的相关信息
-l:保留原文件的符号链接
-R:保留相对路径
–delete:与远程服务器文件内容保持一致
-e:使用 ssh 连接

tac命令,将文本内容颠倒,最后一行当第一行

iptables -L 列出iptables规则
iptables -F 清除iptables内置规则
iptables -X 清除iptables自定义规则

php文档生成工具phpDocumentor
https://github.com/phpDocumentor/phpDocumentor2
Sphinx 文档生成工具

在vim中,有时需要将tab转换成space。使用ret命令(replace tab)。
[range]ret[ab]! [new-tabstop]
举例:将第一行到文件尾的tab转换成space,每个tab用4个space替代。
:set expandtab
:%ret! 4
如果没有给定4,则用当前的tab宽度设定替换为space。

vim对齐线插件:https://github.com/nathanaelkane/vim-indent-guides

strace -c -p 5140 对进程一id为5140的程序进行系统调用监控,当退出时打印报表