在: http://hi.baidu.com/doyoueat/blog/item/2593153a88604b3371cf6c65.html
看到有兄弟肜: readelf -s libcal.so ,于是查了一下这个命令,摘录如下:

阅读全文
    在搬家时,留意到工人最先安置大的物品,再中等物体,然后是小物体,这生动说明了这是人们理所当然,说明小东西能以无数方法组合在一起去完成一项任务,
,但是如果你只拥有小物件,你也会因此获得最大的灵活性,可也得付出代价。你拥有小物件越多,操控它们就越难。管理这些小物件便成了一个严重的问题。我们的程序软也遇到类似的问题,
解决方法只有一个,有人强制用户于模块之间的桥梁,以弥补日益扩大的差距,但实际上并没有将杂乱的代码和底层模块联系在一起,而是采用小程序块或者层来应对这个差距。---来自:第6章节《Linux/Unix设计思想》
对于一个系统管理员来说root密码控制着相当多的安全数据。如果忘记了root密码就需要及时的找回。下文中就为大家介绍CentOS–root密码忘记的解决办法。希望这对记性的系统管理员来说有所帮助。阅读全文
Unison是一款跨平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议进行同步。更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。

Unison与一般的Linux软件一样,都是有一个核心的命令行组成。那些命令可能会令上手比较困难。不过幸运的是,Unison有基于GTK+的图形版本:

安装方法如下:
[root@localhost packages]# wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

–2012-04-25 17:31:03– http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
正在解析主机 apt.sw.be… 193.1.193.67
正在连接 apt.sw.be|193.1.193.67|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:12700 (12K) [application/x-redhat-package-manager]
正在保存至: “rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm”
100%[===========================================================>] 12,700 22.0K/s in 0.6s
2012-04-25 17:31:06 (22.0 KB/s) – 已保存 “rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm” [12700/12700])

[root@localhost packages]# rpm -Uvh rpmforge-release*rpm

warning: rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Preparing… ########################################### [100%]
1:rpmforge-release ########################################### [100%]
[root@localhost packages]# yum install unison
Loaded plugins: aliases, changelog, downloadonly, fastestmirror, kabi, presto, security, tmprepo,
: verify, versionlock
Loading support for CentOS kernel ABI
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* rpmforge: fr2.rpmfind.net
* updates: mirrors.163.com
rpmforge | 1.1 kB 00:00
rpmforge/primary | 1.5 MB 00:05
rpmforge 4304/4304
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package unison.x86_64 0:2.40.63-1.el6.rf will be installed
–> Finished Dependency Resolution
Dependencies Resolved
=====================================================================================================
Package Arch Version Repository Size
=====================================================================================================
Installing:
unison x86_64 2.40.63-1.el6.rf rpmforge 585 k

Transaction Summary
=====================================================================================================
Install 1 Package(s)
Total download size: 585 k
Installed size: 2.1 M
Is this ok [y/N]: n^H
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 585 k
unison-2.40.63-1.el6.rf.x86_64.rpm | 585 kB 00:02
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : unison-2.40.63-1.el6.rf.x86_64 1/1
Installed:
unison.x86_64 0:2.40.63-1.el6.rf
Complete!

[root@localhost packages]# unison

Usage: unison [options]
or unison root1 root2 [options]
or unison profilename [options]

For a list of options, type “unison -help”.
For a tutorial on basic usage, type “unison -doc tutorial”.
For other documentation, type “unison -doc topics”.

[root@localhost packages]#

具体配置参考:
http://zhumeng8337797.blog.163.com/blog/static/10076891420119173441499/
法一:

1.安装expect

yum install expect
2.命令行使用

mkpasswd -l 32 -d 5 -C 5
以上命令生成一个32位的密码,至少包含5个数字和5个大写字母,这么强悍的密码,慢慢破解吧:)

3.编写脚本,批量生成30个密码

vi pass.sh
#!/bin/bash

i=1
echo "########Power by gaojinbo.com##########" >/tmp/passwd.txt
while [ $i -le 30 ];do
/usr/bin/mkpasswd -l 32 -d 5 -C 5 >>/tmp/passwd.txt
let i+=1
done
exit;
以上脚本将生成的密码放在/tmp/passwd.txt文件中

完成!
转自:http://gaojinbo.com

法二:



1) 工具说明

Linux下的密码生成工具.


2) 下载安装

下载: http://sourceforge.net/projects/pwgen/
安装:
# mkdir -p /orahome/wangnc/pwgen
# cd /orahome/wangnc/pwgen
# rz (上传安装包pwgen-2.06.tar.gz)
# tar zxvf pwgen-2.06.tar.gz && cd pwgen-2.06
# ./configure && make && make install
...
mkdir -p /usr/local/bin /usr/local/man/man1
/usr/bin/install -c pwgen /usr/local/bin/pwgen
/usr/bin/install -c -m 644 ./pwgen.1 /usr/local/man/man1/pwgen.1
以上来自:http://www.net527.cn/a/caozuoxitong/Linux/9545.html
Linux密码生成器:参考一下,http://www.examw.com/linux/all/120674/index.html
实践OK:
————————————————
1)history -c  //是把Linux下的/root/.bash_history  全给清了,实现不保存,作为黑客是不地道的。
再从其他终端倒腾回去:
history |awk -F" "  '{if(NR>0){$1="";print $0}}'|grep -v "multepollserver" > /root/.bash_history

2)不留痕迹的办法,把指向给修改到/dev/null下:
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
[root@localhost ~]# HISTFILE=/dev/null
[root@localhost ~]# echo $HISTFILE    
/dev/null

[root@test ~]# vi /root/.bash_history
对前面的:history |awk -F"  " '{print $3}' > /root/.bash_history 删除,退出即可。



请教一个关于linux下不保存命令历史记录的问题,不需要在任何文件中设置:
ssh 登陆之后,在命令行下运行
set HISTIGNORE=*
或者
export HISTIGNORE=*
以后的命令就不会被保存了。

用 history -c 清空历史命令.
在.bashrc的最后行追加
unset HISTFILE
这样做终端历史记录还是保存到了.bash_history文件中,只是新打开的终端不能直接用上键调用而已,用"cat .bash_history"仍能查看历史记录
cat .bash_history 看到的历史记录是 unset HISTFILE 之前保留的命令.
unset HISTFILE 之后的命令并没有保留.
用 history -c 清空历史命令.

阅读全文
Global Options =>Terminal NSI Color
护眼绿色:
把“色调”的参数设置为85,
把“饱和度”参数设置为90,
把“亮度”参数设置为205
[vim]移动一行或一段代码 ,Crl+j向下,Ctrl+k向上:


把上面代码放到vim的配置文件_vimrc: vi /root/.vimrc.

下面这段代码实现的效果是(secureCRT确实有问题):
在普通模式 或可视模式下选择一段代码,同时按[Alt]+[j] 或[Alt]+[k] 可控制代码向上、向下移。

注,下面这段代码是来自网络。。。,没实践。
有兄弟留言说Alt键有问题,用secureCRT确实有问题,后修改为Control+j,Control+k了:



在文件中快速查找光标处一样的单词:
把光标挪动到要在打开的文本里查找的单词上,后按:shift + 3,也就是#号即可。



—————————————vim一下知道所在行的函数名设置方法—————————————————————
在 .vimrc里添加:


按一下 f 键就能显示函数名字。

来自:http://blog.csdn.net/caspiansea/article/details/42570311


——————————————————————————————————————————————————————
键表 |key-notation|
<k0> - <k9> 小键盘 0 到 9 *keypad-0* *keypad-9*
<S-...> Shift+键 *shift* *<S-*
<C-...> Control+键 *control* *ctrl* *<C-*
<M-...> Alt+键 或 meta+键 *meta* *alt* *<M-*
<A-...> 同 <m-...> *<A-*
<t_xx> termcap 里的 "xx" 入口键


参考:
http://blog.csdn.net/riag/article/details/3469464
http://hi.baidu.com/drmingdrmer/item/5b9f5e354efbcbb8633aff0c

[实践OK]Vi注释多行的方法,附带整个代码缩进:
http://jackxiang.com/post/4298/
————————————————————————————————————————————————————————
有兄弟回复说没有用alt,在SecureCRT下这个alt好像确实是不能用的跑到文件(F)去了,不光是这个alt,还有ctrl:
http://blog.csdn.net/maojudong/article/details/6324757
SecureCRT突然假死的问题(Ctrl+S)
SecureCRT作为著名的SSH客户端,经常用于登陆远程服务器。在上面编辑文本,特别是用vi打开两个文本,并且需要切换时,很容易出现卡死的现象,不能接受任何的键盘输入。很是郁闷。以前每次遇到这个问题,我只有关掉那个session重新打开一个。这次又遇上,是在不能忍,试着解决一下。

仔细观察会发现,在vi下切换文本“ctrl+w+w”时,很容易输入成”ctrl+s”。随便拿一个session试试就发现,果然是ctrl+s在作怪。只要输入这个,就会卡死。搜索了一下,发现果然是有原因的:
CTRL-S and CTRL-Q are called flow-control characters. They represent an antiquated way of stopping and restarting the flow of output from one device to another (e.g., from the computer to your terminal) that was useful when the speed of such output was low. They are rather obsolete in these days of high-speed networks. In fact, under the latter conditions, CTRL-S and CTRL-Q are basically a nuisance. The only thing you really need to know about them is that if your screen output becomes “stuck,” then you may have hit CTRL-S by accident. Type CTRL-Q to restart the output; any keys you may have hit in between will then take effect.

CTRL-S and CTRL-Q are called flow-control characters. They represent an antiquated way of stopping and restarting the flow of output from one device to another (e.g., from the computer to your terminal) that was useful when the speed of such output was low. They are rather obsolete in these days of high-speed networks. In fact, under the latter conditions, CTRL-S and CTRL-Q are basically a nuisance. The only thing you really need to know about them is that if your screen output becomes “stuck,” then you may have hit CTRL-S by accident. Type CTRL-Q to restart the output; any keys you may have hit in between will then take effect.ctrl+s是一个古老的shell控制键,在输入ctrl+q就可以恢复了

【转自 http://xok.la/2009/09/securecrt_ctrl_s.html】

被这个问题困扰好几次了,CTRL+S,CTRL+Q,很好,以后就不需要重新开一个了。
————————————————————————————————————————————————————————
<转载>vim map nmap:
http://www.cnblogs.com/lq0729/archive/2011/12/24/2300189.html



1)回到最近修改的位置:
还有 %(跳转到与之匹配的括号处),`.(跳转到最近修改过的位置并定位编辑点),'.(跳转到最近修改过的位置但不定位编辑点)这三个命令也非常重要,在 Vi/Vim 中灵活使用会极大提高效率。% 除用于光标移动之后,还可用于检测源码中各种括号的匹配情况。
实践:tab键上面那个`加一个点,的确能跳转到最近修改的位置~ 再就是双引号这个键的单引号按一下,' 再点按点这个键盘,一样的效果感觉,但的确是相当好使,因为你在编码时还会在修改的同时会看其它部分的代码,但怎么快速回到最后修改的位置呢?该命令就很好使用。
摘自:http://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/

2)回到倒数第二次修改的位置:
Esc下面这个按键,连续按两次,就回到倒数第二次修改的位置。
————————————————————————————————————————————————————————
应用场景:  
在每次退出一份文件后再重新打开该文件时,希望光标停留在当时退出的地方;也就是说当我程序写到hello.c的第100列时突然有事必须关电脑了,那在我下次打开电脑以vim打开hello.c, 希望光标还是停留在第100列,怎么办?


解决方案就是在.vimrc里面加上这一行即可:
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif  

链接:http://blog.longwin.com.tw/2012/09/vim-last-read-line-2012/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+tsungblog+(Tsung%27s+Blog)



tar -zcvf jackxiang.com.2015.11.02.tar.gz jackxiang.com --exclude=jackxiang.com/data/logs


tar zcvf fd.tar.gz * --exclude=file1 --exclude=dir1
注意:

1、--exclude=file1 而不是 --exclude file1

2、要排除一个目录是--exclude=dir1而不是--exclude=dir1/

也可以在父目录打包

tar zcvf fd.tar.gz pardir --exclude=pardir/file1 --exclude=pardir/dir1

http://www.cnblogs.com/ShepherdIsland/p/3715902.html


在对某个目录进行压缩的时候,有时候想排除掉某个目录,例如:

如果123目录下有3个子目录,aa、bb、cc。

我现在想只对aa和bb目录打包压缩,命令如下:
tar -zcvf 123.tar.gz --exclude=cc 123

多个文件 用多个 –exclude=

解压的时候直接用
tar zxvf 123.tar.gz
实践如下:
   最近的一个项目需要PHP与SVN交互,最先想到的解决方案是用PHP的SVN扩展,搜了已经有PHP的SVN扩展,这两天也去http:/pecl.php.net/package/svn 上面下载了SVN扩展的源码.【备注:比如我看到php的subversion扩展是有的, 不过手册里写的却是试用阶段. 应该不如python的成熟. 何况...我觉得这种事情确实应该让python干, 就像web的事情应该让php干一样.http:/blog.csdn.net/akara/article/details/5566524】

为PHP增加SVN扩展:
http:/www.swordair.com/blog/2010/01/85


Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/ successed
至此,终于通过编译,并在完成的最后提示在php.ini中增加一行:

版本比较差异,这样导出差异文件,后覆盖线上即可:
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di

svn diff -r 版本号1:版本号2  工作拷贝文件地址 >  保存差异文件
例:
svn diff -r PREV:COMMITTED  ./project/trunk/helloworld.c  > patch.c
写一个脚本测试一下,成功。
----------------------------------------------------------------------------------------------------
svn diff 比较两个目录:
svn diff --summarize http://rep_url/tags/proj1_090214 http://rep_url/trunk/proj1 >diff.txt
这个命令比较了 proj1_090214 和 proj1 的差异,并将差异信息输出到文件 diff.txt
summarize   选项的含义是只显示结果的概要,不显示文件的具体差异。
---------------------------------------------------------------------------------------------------
这样也成:
svn diff -r 3797:3788 --summarize https://tc-svn.XXXX.com/web/CCCC/web_aXc_proj/trunk  








下面是给svn设置用户名密码来访问,特别是ssl这块否则在终端是可以的,但是在apache加载后会报错:


通过svn list 导出该目录下所有的文件。
svn list -R  http:/192.168.1.11/svn/reponame/J2EE11 | wc -l

http:/192.168.1.11/svn 是 svn server 的root  /reponame 是库 /J2EE11 是路径

这样会包括 目录

过滤目录
svn list -R  svn_server_addr/svnrepo/folder  | grep -v \/$ | wc -l

请在 linux 下运行 win 平台可以装cygwin .
获取目录的函数实践:

查询版本下的注释:

Please not that using svn_log without giving revisions is much, much slower then with revisions. Examples:

$ time php -r "svn_log('http://localhost/svn/shopadsl');"

real    0m2.140s
user    0m0.140s
sys     0m0.000s

VS

$ time php -r "svn_log('http://localhost/svn/shopadsl', 0, 45);"

real    0m0.063s
user    0m0.024s
sys     0m0.016s

默认svn在linux下的密码位置参考:http:/jackxiang.com/post/4512/

更多使用方法:http:/www.php.net/manual/en/function.svn-checkout.php
重启Apache
[plain] view plaincopy
/etc/init.d/apache2 reload  
或php-fpm 重启:
[plain] view plaincopy
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`  

发现在Apache启动后会报错,解决方法如下:
If you having trouble with certificate verification like this:

PHP Warning:  svn_log(): svn error(s) occured 175002 (RA  layer request failed) OPTIONS of 'https://example.com/your/repos/path': Server certificate verification failed: issuer is not trusted

Try this two steps:

1. Run

"svn log https://example.com/your/repos/path"

on the commandline and permanent accept the certificate by typing "p" when asked.

2. Use the following settings for svn_auth_set_parameter() before calling other svn functions:


当然,也可以直接用PHP的Popen:
popen()这个函数, 看来echo t | svn ci ...那些命令可以用另外的方式来解决了

附转:

popen()函数打开一个进程管道来执行给定的命令,返回一个文件句柄。既然返回的是一个文件句柄,那么就可以对它读和写了。在PHP3中,对这种句柄只能做单一的操作模式,要么写,要么读;从PHP4开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)打开的,否则必须调用pclose()函数来关闭它。


常用操作
1.查看最近3个版本日志
svn log [PATH] -v -l3

2.查看某两个版本,用来对比
svn log -r 14:15

3.日志放入文件
$ svn log -r 14 > mylog
$ svn log -r 19 >> mylog
$ svn log -r 27 >> mylog
$ cat mylog

或者
$ svn log –incremental -r 14 > mylog
$ svn log –incremental -r 19 >> mylog
$ svn log –incremental -r 27 >> mylog
$ cat mylog

参考:http:/www.php.net/manual/en/function.svn-checkout.php
你也可以参考:http:/blog.csdn.net/dragon8299/article/details/6689685
http:/www.swordair.com/blog/2010/01/85
http:/biancheng.dnbcw.info/win2003/377268.html


如果configure报下面的错
checking for svn includes... configure: error: failed to find svn_client.h
安装libsvn-dev包:CentOs应该也有对应的包
apt-get install libsvn-dev


解压缩后 切换到安装目录 执行/opt/lamp/php/bin/phpize
然后:./configure –with-php-config=/opt/lamp/php/bin/php-config
出现错误:checking for svn includes… configure: error: failed to find svn_client.h
解决办法:添加subversion服务端的目录 –with-svn=/usr/local/subversion
./configure –with-php-config=/opt/lamp/php/bin/php-config  –with-svn=/usr/local/subversion

make出错:
/usr/bin/ld: cannot find -lsvn_client-1

ok




===================================================================
在Tlinux的64位机器上折腾步骤记录,我艹,比Cenots折腾了更多时间来整这个玩意,真是步步惊心啊,如下:
第一步:编译,参数如下 ,这个参数都折腾了老半天啊。
./configure --with-php-config=/usr/local/qqwebsrv/php/bin/php-config  --with-svn=/opt/CollabNet_Subversion --with-svn-apr=/usr/local/apr
中间就会提示找不到什么.h啊:checking for svn includes... configure: error: failed to find svn_client.h,于是得找个这个h的包放在里面去才行。
root@10.12.21.108:~/software/svn-1.0.2# ls /usr/local/include/
subversion-1  subversion-1.tar.gz

第二步:/usr/local/apr-util/include/apr-1 这个Include进Makefile里。
修改Makefile: 39行左右
39 INCLUDES = -I/usr/local/qqwebsrv/php/include/php -I/usr/local/qqwebsrv/php/include/php/main -I/usr/local/qqwebsrv/php/includ        e/php/TSRM -I/usr/local/qqwebsrv/php/include/php/Zend -I/usr/local/qqwebsrv/php/include/php/ext -I/usr/local/qqwebsrv/php/in        clude/php/ext/date/lib -I/usr/local/include/subversion-1 -I/usr/local/apr/include/apr-1 -I/usr/local/apr-util/include/apr-1         -DLINUX=2 -D_REENTRANT -D_GNU_SOURC
加入:/usr/local/apr-util/include/apr-1
-I/usr/local/apr/include/apr-1 -I/usr/local/apr-util/include/apr-1

第三步:出现老是什么 cannot find -lsvn_client-1  ,做软链接后,出现下一个,太多了,于是否,如下:
全拷贝过去得了,注意:/opt/CollabNet_Subversion 这个是在网上找的整个包进行安装的SVN,是Rpm包。
cp -Rf /opt/CollabNet_Subversion/lib/*  /usr/lib/
make
make install
root@10.12.22.108:~/software/svn-1.0.2# make install
Installing shared extensions:     /usr/local/qqwebsrv/php/lib/extensions/


第四步:因发现在加入这个扩展后,出现:libsvn_client-1.so.0 cannot open shared object file no such file or directory
root@10.12.22.108:/# /sbin/ldconfig
/sbin/ldconfig: libraries libsasl2.so.2.0.21 and libsasl2.so.2.0.23 in directory /usr/lib have same soname but different type.
/sbin/ldconfig: libraries libgz.so.1 and libz.so.1.2.5 in directory /usr/lib have same soname but different type.
ldconfig: /usr/lib/libsvn_client-1.so.0 is not a symbolic link
根据上面的提示,于是删除掉这个文件:
rm -Rf  /usr/lib/libsvn_client-1.so.0
上面两个不管它,就这样就好了。

第五步(经实践是多余的):
查找网上文章:http://www.cnblogs.com/amboyna/archive/2008/02/06/1065322.html
vi /etc/ld.so.conf
加上:

再运行这个PHP的SVN扩展,好了。前面的libsasl2,libgz,删除高版本的,做个软链接就Ok了。

但是TLamp有问题了,Apache出现了:
[codes=html]
Apache2 has detected a syntax error in your configuration files:
apache2: Syntax error on line 142 of /etc/apache2/httpd.conf: Cannot load /usr/lib64/apache2/modules/mod_ssl.so into server: /usr/lib64/apache2/modules/mod_ssl.so: undefined symbol: SSL_CTX_set_client_cert_cb
[codes=html]
于是,自己重新下了一个Apache,PHP5.3.11等,重新编译后,这个问题也就没有了,直接访问SVN扩展输出Ok了,还以为需要用system或者popen去打开呢,看来用不着了。

为了安全把一些函数都给屏蔽了,在php.ini里可以看到:
[codes=html]
disable_functions = passthru,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,system,exec
[codes=html]
因只为了这个svn扩展,PHP5.3.11的编译也很简单,如下:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd-2.0.59/bin/apxs   --enable-sockets --enable-mbstring

原本想加入其它的,现在想来,没有必要加上什么Mysql,Pdo,Mbstring等等。
(./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd-2.0.59/bin/apxs  --with-pdo=shared --with-pdo-mysql=/usr/local/mysql --enable-sockets --enable-mbstring)

EOF
近来PHP的一个扩展爆出一个libpng的漏洞,我记录了一下: http://jackxiang.com/post/4975/ ,于是就去那个网站下载最新版本的libpng:
http://libpng.sourceforge.net/ 没有想到下载了一个7z结尾的文件,lpng159.7z
于是否就问了一下Google大神。Linux下的7Zip的解决方案是 p7zip ,于是对应的两用下载方法。
1.万能的Yum
[root@ hostname ~] #
[centos6.2好像不行,不知道还是yum源头的问题]

2.源代码下载编译
下载地址:http://p7zip.sourceforge.net/
Wget以下Url:
http://downloads.sourceforge.net/project/p7zip/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fp7zip%2F&ts=1330178243&use_mirror=nchc

当然,这里不会出现乌龙的7zip的源码包。这里出现的是tar.bz2 包。
1.解压
2.安装

在进行make install 命令的时候提示No such file or directory,则使用 sudo make install 命令。

3.使用,解压7Zip包
1 [root@ hostname ~] # 7za x lpng159.7z

.......
Everything is Ok

Folders: 21
Files: 200
Size:       3011760
Compressed: 497174
后面就是重新编译一次以替换掉这个旧的版本即可。
写给自己,So,

场景: 线上代码要升级,此次代码要上线时,但线上和线下的某几个文件不一样,不能直接覆盖,需要对比,升级文件通过svn导出(包含文件夹导出),而线上用sz(可sz不能帮助建立文件的目录,导出都在一个目录里),于是否想通过Beyond Compare做文件夹的比较。
问题: 如何把线上的导出的部分需要覆盖的文件在导出后再通过建立文件夹和线上结构一样?【要是sz能帮助在导出时就按文件夹存放好就好了,可好像没有看到有这个选项】
核心: 如何重建线上需要覆盖的文件,好让Beyond Compare比较两个文件夹。
步骤: 两个步骤
       (1)摘取线上的需要覆盖的文件名下载到线下一个文件夹中。
  把线下svn要覆盖的文件导出到目录后用find命令:find . -type f 找出所有的文件,该命令的结果已经包含了目录和文件。
  把这些文件名,前面加上sz及可导出到线下的一个文件夹中。


       (2)建立和线上一样的目录并拷贝对应文件到目录中
       建立和线上一样的目录结构:对线下svn导出的文件(注意是:export才包含文件夹,而save revision to这个的导出比较乱。参考:http://jackxiang.com/post/4847/)
       用find命令找出文件夹:
       find . -type d
       再在find结果的内容前面添加mkdir  ,后到线上导出的文件目录下运行这个mkdir 的命令:在线上代码的文件夹下生成目录。
  (3)构造cp a.php  abc/a.php 类似并运行。
  在线下svn包含目录的文件中,运行如相命令,生成文件a.txt:
  
  以上文件是一个文件名。下一步就是要一个 abc/a.php ,这个好办,直接:find . -type f 就能搞定,为b.txt,
  Linux提供了一个: paste  命令:
  
   结果如下:
   a.php  abc/a.php
  
   再vim或者awk在前面加一个正则替换实现:cp a.php  abc/a.php,即可,再到线上文件下载的目录下运行这个生成好的脚本,也就完成了把原来的文件放到对应的目录下。
我想最多的可能是当vmware在重新安后因系统重装,导致在共享上网时出现原来的Linux上的IP和现在共享分配的IP不一样,导致上不了网的问题,于是否,你可能需要修改Vmware里的配置才行,于是得查看这个Url: http://jackxiang.com/post/5743/

vmware下redhat linux 9使用NAT共享主机IP上网 收藏
VMware提供:桥接,Host Only和NAT三种连网方式. 我个人认为NAT方式较简单,用它来共享主机的IP,适合那种每台主机只允许一个IP的情况。具体设置如下:

1、VMware网络连接选择的是NAT方式。
2、VMware网络设置里的NAT项中查看VMnet8,NAT的网关设置为192.168.X.2。
3、在windows中,查看所有的网络连接,你应该发现除了原有的网卡之外,又多了Vmnet1和Vmnet8。vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。
4、在windows主机上用ipconfig查看VMnet8的IP地址,一般是192.168.X.1。此时VMnet8的设置应该是自动获取IP,现在改成静态IP,并把此IP直接填入VMnet8里,不设网关。
6、在linux下把网卡IP设置成和VMnet8一个网段的IP(192.168.X.Z/255.255.255.0)
7、在linux下网关设置成刚才查看的那个IP192.168.X.2即可。
8、在linux下DNS和windows主机的一样。
9、在linux下运行命令service network restart重新启动linux的网络服务。
10、在linux下ping 192.168.x.1,在windows下ping 192.168.x.z 成功后证明主机和虚拟机已经可以互相访问了,现在也可以实现虚拟机共享主机ip上网了。


现在我们做一下假定,宿主机上有三块网卡,rl0网卡(10.0.0.5)接入真实的网络10.0.0.0/24(取个名叫rnet0子网)、vmnet1网卡(10.0.1.1)接入vmnet1子网(host-only)(10.0.1.0/24)、vmnet8网卡(10.0.8.1)接入vmnet8子网(nat)(10.0.8.0/24)。

宿主机连入rnet0、vmnet1、vmnet8三个子网,所以它和三个子网都是通的。

rnet0和vmnet1分属两个不同网段的子网,在不做其它设置的情况下它们是不能互访的;宿主机属于vmnet1子网的一部分,它是可以访问vmnet1子网的。这就是vmnet1子网为什么被叫做host-only。

rnet0和vmnet8也分属两个不同网段的子网,但vmnet8子网默认被配置了一台nat服务器(ip为10.0.8.2),这时vmnet8子网中的其它虚拟机只要将自己的网关设为那台nat服务器的ip(10.0.8.2)就可以访问rnet0子网。我的疑问在于nat为什么被配置在10.0.8.2而不是10.0.8.1,vmnet8子网中的机器将自己的网关设为10.0.8.2而不是10.0.8.1,这样的情况下是怎么和rnet0子网连通的,我想知道这个拓扑是怎样的?这个nat又是如何配置的?
特别注意:
但是如果因优化软件把Vmware的后台启动服务给关闭了,也是不行的,服务名如下:
VMware Agent Service
VMware Authorization Service
VMware DHCP Service
VMware NAT Service
阅读全文
(0)windows换行变Linux换行:
    在项目上右键后选:新的文本文件行定界符选 第一个:Unix即可。

(1)昨天由zend studio 9.0.0升级到zend studio 9.0.1,发现提并到线上的代码通过Vim查看时都有了:^M,于是发现这是一个Windows的格式,得把换行格式设置 UNIX,设置方法:
本地使用window平台,服务器使用linux,有时候难免会出现在程序在本地window上运行正常,到linux上出现报错,而问题的原因,可能就是这个换行格式的不兼容引起的,window下的换行是'/r/n',而linux/unix下是'/n',下边说说设置方法:

Window->Preferences->General->Workspace [右下角区域]
New text file line delimiter: radio buttons for 'Default' or 'Other' with a dropdown including Unix (yay),选Other:Unix 即可。

同时,你也可以在它旁边设置默认的PHP编码:如修改为Utf8等。

(2)附zend studio 9.0.1 如何取消显示换行符和空格符,有这个换行符和空格符显示反而不美观:
Windows>Preferences>General>Editors>Text Editors 取消Show whitespace characters即可。


(3)自动换行实现:Zend studio9.0.1实践成功。
Zend Studio默认没有自动换行这一功能,我使用的是V9.0.1,在 http://ahtik.com/eclipse-update 有其组件实现自动换行。
实现:菜单"help" –> "Install New Software…",然后点击"Add"按钮,接着填写上Name(随便命名),Location(即http://ahtik.com/eclipse-update ),接下按着提示操作,即可安装成功。
最后重启Zend Studio,在编辑工作区,点上右键,选上“Virtual Word Wrap”便实现文字过长超过编辑区时自动换行了。

自动换行评论:
这个功能目前zend studio只能靠一款插件来完成,随着科学技术的不断进步,zend studio自动换行将越发的显得鸡肋,就我工作的电脑来说,1680×1050的分辨率,看代码似乎一行都是可以看完的(当然我只开了zend studio左侧的php explorer和outline),显示器还会越来越大的,而且我很早的在我的电脑分辨率还是1024的时候就已经养成习惯,太长的字符串或数组会分行来写,所以,也不知道zend公司那帮人用的显示器有多大,他们就是不考虑自动换行,说句心里话,我还真不明白自动换行会带来什么好处。

原因是由于使用swt中的Text组件在setText()中使用的"\n",再通过getText()获取后在win系统上被自动转为"\r\n”,而linux中对换行符的定义为"\n”,故发送失败.而且对于定长报文而言,也引起长度变化.
win:“\r\n”,0x0D0A;
linux:“\n”,0x0A;
mac:"\r",0x0D;
Putty也有这个代理的功能,但Putty有一个proxy选项可以选http的代理哟,还真可以的。也有几个不好也就是没有很好的支持SZ,RZ,还有Stfp等,尽管有一个哥们风雪之隅写了一篇文章可以支持sz,rz等,Le Putty – Putty with Zmodem:http://www.laruence.com/2010/04/21/1442.html,但配置起来还是较为麻烦,那个Putty也没有SecureCRT好用不是,呵呵,在网上找了一篇文章能解决这个问题,实践还真可以哩,以前就一直用Putty了,呵呵。

1.    在secureCRT中,options -> Global Options -> Firewall,点击 Add,填上name,选择适当的 Type,例如 Http
2.  Session Options -> SSH2,修改 Firewall 选项,用上一步设置好的 proxy。其实这一步是先试链接不上,再设置它的防火墙,选第一步里的防火墙配置的http代理等的设置。
3.    enjoy it

实践Ok来源:http://blog.csdn.net/yhcharles/article/details/6697405
它还可以用来做端口转发,俗称翻墙:http://www.jems.me/blog/web/29-%E4%BD%BF%E7%94%A8securecrt%E5%AE%9E%E7%8E%B0windows%E7%8E%AF%E5%A2%83ssh%E4%BB%A3%E7%90%86%E7%BF%BB%E5%A2%99.html          
阅读全文

查看设备上所有的活动的进程:
fuser -m /dev/hda5
杀死所有访问该设备的文件:
fuser -k /dev/hda5
访问某个文件是否打开,有哪些进程在使用:
fuser  -m /usr/local/apache2/conf/httpd.conf

实践如下:
fuser -m /usr/local  
/usr/local:           1272e  1274e  1275e  1278e  1968ce  2139m  2587e  2682e  2683  2723e  2797ce  3689e  3692ce  3720e  3735e  5664ce  6244ce  6247ce  6774e  6790e  6927e  7075e  7224e  7226e  7227e  7485ce  7495ce  7513ce  9269e  9903ce  9913ce 11553e 11791e 12025e 12029e 12057e 12061e 12198e 12448e 12534e 12584e 13053e 13133e 13635e 13672e 13814e 13829e 13831e 13832e 14099e 14159e 14682e 14813e 14840e 14907e 15621e 15810e 16200ce 16208ce 16331e 16960e 17938e 18505e 18507e 18694e 19704m

fuser  -m /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf:  1272e  1274e  1275e  1278e  1968ce  2139m  2587e  2682e  2683  2723e  2797ce  3689e  3692ce  3720e  3735e  5664ce  6244ce  6247ce  6774e  6790e  6927e  7075e  7224e  7226e  7227e  7485ce  7495ce  7513ce  9269e  9903ce  9913ce 11553e 11791e 12025e 12029e 12057e 12061e 12198e 12448e 12534e 12584e 13053e 13133e 13635e 13672e 13814e 13829e 13831e 13832e 14099e 14159e 14682e 14813e 14840e 14907e 15621e 15810e 16200ce 16208ce 16331e 16960e 17938e 19704m
登录用户名:
logname
root
显示行号:
nl /usr/local/apache2/conf/httpd.conf

script -a:输出附在末尾:script option file

报告所连接的设备和终端:
tty
/dev/pts/5

whereis fuser: 给出系统命令二进制文件及其在线手册的路径:
fuser: /bin/fuser /usr/share/man/man1/fuser.1.gz /usr/share/man/man1p/fuser.1p.gz
定时任务只能通过crontab -e 来编辑计划任务吗
我想通过shell来添增加或减少计划项,
可是直接添加或减少不行哟
如比
$echo " 0 6 * * * /usr/bin/start.sh" /usr/spool/cron/crontabs/root
添加倒是成功了,可是不会执行..必须通过手工 crontab -e才行
请问该如何做哟,谢谢!

请问如何用shell添加或减少crontab -e 项
1.copy or backup
#crontab -l > /tmp/root.crontab
2.edit
edit root.crontab by vi,emacs, ed ,etc etc .
3.activate
#crontab /tmp/root.crontab
点评:有这种需求一很有可能是搞运营开发的,哇哈。
导入原理:usage:  crontab [-u user] file
                          -l      (list user's crontab)
                         > 重定向
                         自动化脚本修改。

By:jack
来源:http://bbs.chinaunix.net/thread-542028-1-1.html
x:剪切当前字符到剪贴板。
dd     :剪切当前光标所在处的行
ndd   :剪切当前光标所在处及以下的n行

来自:
http://blog.itpub.net/25836975/viewspace-697911
http://hi.baidu.com/jqorwrlvdwbfqvq/item/7b717ef599abba1dfe3582cc

vim有复制并粘贴的命令,比如
:1, 10 co 20
但是这个命令执行完以后,1-10行仍然存在,我想实现将1-10剪切并粘贴到20行之后,有类似的命令么?一行代码能做到么?

:1,10 m 20
来自:
http://bbs.chinaunix.net/thread-3688477-1-1.html

——————————————————————————————————————
d:剪贴选中的内容到剪贴板。
y:拷贝选中的内容到剪贴板。
c:剪贴选中的内容到剪贴板并且进入插入模式。


      我们先做这样一个小小的尝试,请打开浏览器,从网页上随便复制一段文字,然后打开VIM,用VIM,用"p"粘贴一下,你会发现,什么都没有站贴过来,原因是这样的,不同于Windows,VIM具有多个剪贴板,并且和系统剪贴板是完全独立的,所以当你复制浏览器里的文字的时候,这段文字保存在了系统剪贴板,当你是用"p"来粘贴的时候,实际上,他读取的是VIM的剪切板。  
       那怎么方便的将系统剪贴板的内容复制过来呢?简单!用另外一个快捷方式"Shift+Insert"就可以了,如果你在使用Gvim的话,直接用鼠标中键也可起到相同的作用。是不是很简单? 
       OK!我们开始进阶!  
       我们前面说过,VIM具有多个剪切板,目的是为了用户在做较复杂的字符处理的时候,可以更方便的复制粘贴。请现在使用一下":reg"命令(先按 ESC键,退出编辑模式,然后按:进入命令模式,然后输入reg回车),看到了?屏幕上的输出结果!是不是特别眼熟,对了!就是您之前复制过的所有内容!也许这时候您还发现,VIM的剪切板原来有这么多个,按照数字还有符号一个一个的区分开的,这里举一个编号的例子--""5,看到了吗?是以"开头的。还有!有没有看到编号为"+的剪切板?里面的内容是不是刚才你在浏览器里复制的那段文字啊?呵呵……没错了!系统剪切板的编号就是"+。  
       好了,这时候您已经知道了如何查看之前的所有剪贴板内容,我们现在就试着把某一个特定剪切板的内容复制进我们正在编辑的文件中。我们知道,vi的粘贴指令是"p",但是如果要粘贴一个特定的剪贴板,只是用p就不行了,那怎么办?简单!把剪贴板的编号带上不就可以了?现在先按ESC,退出编辑模式,然后依次按"+p这三个字符(怎么按?不会吧!"和+怎么按?用Shift啊!),好了!你看看,之前在浏览器中复制的这段文本,是不是被粘贴进文档中了?  如何将系统剪切板里的内容复制进VIM当中,您已经清楚了。那如何将ViM中复制的字符粘贴到其他地方呢?很简单,我们只需要把要复制的文字,复制进 "+剪切板不就可以了?("+剪切板是系统剪切板,忘记了?)在VIM中,复制的指令是y(在非编辑模式下按y就可以了),那要将文本复制进指定的剪切板,只需要加上剪切板的编号就可以了。举个例子,我们希望把VIM中的一段文本复制下来,然后粘贴到浏览器的地址栏中:第一步,现把需要复制的文字选中(非编辑模式下),然后在键盘上依次按"+y这三个字符,OK!已经复制下来了,现在用:reg命令看看,是不是在"+剪切板中了?  好了,目前为止,您已经大致掌握了VIM剪切板的基本用法,当然,VIM剪切板的功能还很强大,本文也不能尽数道来,就请您继续发掘吧。
vi中多个文件相互之间的复制、粘贴功能简介!

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 25次 | 进入软件测试论坛讨论


昨天有人提出此类问题,我特地加以编辑一下,请大家共享,可能写的不好!

大家在vi编辑中,常常遇到想把文件A里面的一行或多行,复制到B文件里面去
(可能很多人不知道怎么办),该怎么做了?
下面是几中方法:
1.如果你有多台机器,而且是联网的,你可以.netterm虚拟终端,telnet登陆主机对A文件进行修改、复制,然后打开B文件粘贴过去!
2.如果是单机,当然要用unix自带的编辑功能呢
   先简单介绍一些vi编辑里的命令:
   (A).yw 将当前字存入无名缓冲区,前面可加"x,表示存入名字为x的有名
缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命
令取出
yy 将当前行存入无名缓冲区,用法参看yw

    (B).命令如下:a-Z 是缓冲区,也可移出数字1-9指定的删除缓冲区
利用命名缓冲区可很好地保存若干文本段,便于以后存取、移动或者重排。这些缓冲区用a到z字母命名!为了访问这些缓冲区中的一个,要使用双引号
例如:要把一行插入a缓冲区,可键入:
"ayy
为了把这个文本放回该文件中,键入"ap


   (c).m做标志命令:
   m 字母 用字母标记当前行,以后可用 '字母使光标移动到当前行,
(参看'命令)

列子:1。将a文件中的4行到b文件中

       命令如下:"ay4+
                   :ex b (转到b文件中)
                    然后"ap
         2. 将a中多行复制到b文件中
先在开始处做标志mk
然后在末尾用"ay'k (光标自动回到开始处,此时已经把你的内容放到缓冲区了)
其中a表示缓冲区a
然后用ex转义到你的文件B中,然后用"ap命令粘贴就行

3。如果你文件中有多次要复制粘贴的话,看下面:
a表示缓冲区a ,你还继续可以使用缓冲b吗
缓冲区有a-z和1-9这么多
缓冲区就好象windows下的煎切版一样,它有好多个,你可以把你想要的复制进去,然后粘贴,只不过你用"ay时候多换a就是了,如你要复制462行用"ay ,复制536行用"by
    
我编写的不好,恳请斑竹帮我修改和补充,谢谢
来自:http://hi.baidu.com/%B4%FA%CD%F2%BB%D4/blog/item/56d18ddf9eb3d4d58c102969.html
以前我也写过类似的博文,今天也重再抄一个吧:
   日常维护我们经常会遇到某个程序使用了哪些端口,某个端口被哪个程序占用,如何查看呢,下面介绍如下:
对windows系统:通过windows任务管理器找到应用程序,右击“转到进程”,查看进程pid号(如无此列,请在“查看”-“选择列”中添加该列),然后在 cmd命令行下面输入netstat -an -o 然后找到对应的PID号 就能找到端口了。同理,某个端口被哪个程序占用,反查便可。注:有时netstat -na -o查出内容太多,不易找到pid,可通过重定向到txt文件(>pid.txt)查找。
对linux系统:查看某程序使用端口,在控制台输入netstat -na -p |grep  pid/program name,便可;查看某端口被程序占用,在控制台输入lsof -i tcp:port或netstat -na -p |grep port便可。

当然,以上也可以通过cport或sv等端口查看工具查看。如:
Linux下运行一个PHP程序去执行一项艰巨的串口查询任务,读出串口值,但从来不推出,Ps进程时,发现进程出现两个状态,如下:

上面两行,出现了D,和S的进程状态,于是查询网络上的解释如下:
D Uninterruptible sleep (usually IO)
不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,此进程不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了

S Interruptible sleep (waiting for an event to complete)
可接收信号的睡眠状态,sleep函数可演示这种状态

主要是想对D进程做下研究,如下:
  S其实很正常,但是那个D,有一类垃圾却并非这么容易打扫,那就是我们常见的状态为 D (Uninterruptible sleep) ,这些垃圾进程要么是求而不得,像怨妇一般等待资源(D),这种垃圾进程偏偏是刀枪不入的,不管换哪种枪法都杀不掉它们。无奈,只好reboot,像剿灭禽流感那样不分青红皂白地一律扑杀!
怨妇 D,往往是由于 I/O 资源得不到满足,而引发等待,在内核源码 fs/proc/array.c 里,其文字定义为“ "D (disk sleep)", /* 2 */ ”(由此可知 D 原是Disk的打头字母),对应着 include/linux/sched.h 里的“ #define TASK_UNINTERRUPTIBLE 2 ”。举个例子,当 NFS 服务端关闭之时,若未事先 umount 相关目录,在 NFS 客户端执行 df 就会挂住整个登录会话,按 Ctrl+C 、Ctrl+Z 都无济于事。断开连接再登录,执行 ps axf 则看到刚才的 df 进程状态位已变成了 D ,kill -9 无法杀灭。正确的处理方式,是马上恢复 NFS 服务端,再度提供服务,刚才挂起的 df 进程发现了其苦苦等待的资源,便完成任务,自动消亡。若 NFS 服务端无法恢复服务,在 reboot 之前也应将 /etc/mtab 里的相关 NFS mount 项删除,以免 reboot 过程例行调用 netfs stop 时再次发生等待资源,导致系统重启过程挂起。

  ps 的手册里说D状态是uninterruptible sleep,Linux进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,比如发HUP信号给nginx的master进程可以让nginx重新加载配置文件而 不需要重新启动nginx进程;另外一种睡眠状态是uninterruptible sleep,处在这种状态的进程不接受外来的任何信号,这也是为什么之前我无法用kill杀掉这些处于D状态的进程,无论是”kill”, “kill -9″还是”kill -15″,因为它们压根儿就不受这些信号的支配。

  进程为什么会被置于uninterruptible sleep状态呢?处于uninterruptible sleep状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被 ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了。

  正是因为得不到IO的相应,进程才进入了uninterruptible sleep状态,所以要想使进程从uninterruptible sleep状态恢复,就得使进程等待的IO恢复,比如如果是因为从远程挂载的NFS卷不可访问导致进程进入uninterruptible sleep状态的,那么可以通过恢复该NFS卷的连接来使进程的IO请求得到满足,除此之外,要想干掉处在D状态进程就只能重启整个Linux系统了。

  看到有人说如果要想杀掉D状态的进程,通常可以去杀掉它的父进程(通常是shell,我理解的这种情况是在shell下直接运行的该进程,之后该进 程转入了D状态),于是我就照做了,之后就出现了上面的状态:他们的父进程被杀掉了,但是他们的父进程PID都变成了1,也就是init进程,这下可如何 是好?此时我这些D状态的进程已经影响到其他一些进程的运行,而已经无法访问的NFS卷又在段时间内无法恢复,那么,只好重新启动了,root不是玉皇大 帝,也有无奈的时候。

  跟czhang说起这个事,觉得Linux如果有这么一个专用的垃圾回收进程就好了:系统自动或者用户手动把僵尸进程,和比如之前我遇到的D状态进程的PPID设为这个垃圾回收进程,那么通过干掉这个垃圾回收进程来清理这些僵尸们,这样该有多美好…
总结:我估计是我的PHP代码正在等待串口的温度数据返回罢,一直没有等着吧,就等呀等,其实是那一瞬间给我用Ps命令监控到了,呵呵。EOF
来源:
http://www.blogjava.net/fhtdy2004/archive/2009/07/05/285515.html
http://hi.baidu.com/xuwanbest/blog/item/45f18f3dbce0aece9e3d6255.html
这样:

如下:


利用Ls查出来后再接上路径的方法:
WEB_39_74_sles10sp1:/home/jackxiang/public_html/adc_branches/tst # ls -lart  $PWD/order*.html
Nov 22 16:36 /home/jackxiang/public_html/adc_branches2/tst/order_detail.html
Nov 22 16:36 /home/jackxiang/public_html/adc_branches2/tst/order_result.html
Nov 23 09:19 /home/jackxiang/public_html/adc_branches2/tst/order_report.html

ls -lart ~+/order*.html 也行。

注:
~+和$PWD一样的功能,就是一样的不同表示罢了。

通过find配合~+输出文件路径:
分页: 21/23 第一页 上页 11 12 13 14 15 16 17 18 19 20 21 22 23 下页 最后页 [ 显示模式: 摘要 | 列表 ]