Leon's blog

每天活的有趣一点

正在浏览标签为 Linux 的文章

有好几次碰到使用Linux的md5sum命令产出的散列值,跟PHP的md5函数,或者MySQL的md5函数产生的不一样的问题.
通常比较懒,就没细想,直接使用PHP产生的算了;没想过难道算法还会有不同.

其实没有不同的算法,md5在哪里的计算方法只有一个.原因不过是因为使用md5sum时,有时候不小心会把换行符也作为计算的内容,结果实际上是散列的对象不同,自然结果也就不同了.而在Linux命令行状态下,我通常注意不到换行的存在.

以字符串’123′为例,PHP的计算结果是:

$ php -r 'echo md5("123");'
202cb962ac59075b964b07152d234b70

比如下列语句实际上是对”123\n”进行求散列,而不是对’123′求散列.

$ echo '123' | md5sum
ba1f2511fc30423bdbb183fe33f3dd0f

正确的写法应该是通过echo的’-n’选项,让echo不要输出换行符,这样结果就一样了.

$ echo -n '123' | md5sum
202cb962ac59075b964b07152d234b70

缺省情况下Debian的时间是根据系统时间设置成UTC时间的,然后再根据用户的时区设置做相应的调整。这通常没有问题,但是当我通过VirtualBox来在虚拟机里运行Linux的时候,问题来了。

因为VirtualBox是根据它的宿主操作系统来设置虚拟机的系统时间的,而这并不是Debian想要的UTC时间,除非你正好在0时区。这时Debian再根据用户时区设置调整时区,时区相当于被被处理了两次。这是我就不知道被从东8区扔到什么地方去了。

修正办法是不让Debian再做用户时区调整,直接使用系统时间就可以了。这时候我们需要把/etc/default/rcS文件里的”UTC=yes”改成”UTC=no”。保存,重启,OK。不知道这样有没有别的什么副作用,先用着看吧。

我在使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里。在界面上输入什么都没有反应。甚至Ctrl+C、Ctrl+D也没有反应。

由于不是经常发生,也就没在意。每次很麻烦的关掉putty的窗口,重新再打开putty。今天发生了好几次,很是郁闷。就想看看究竟是怎么回事,结果发现每次按下Ctrl+S就会出现这个问题。

由于以前碰到过vim有些扩展有问题,这次就也怀疑是vim扩展的问题。结果删除了所有扩展和.vimrc文件,问题依旧。通过putty登录到别的系统,也是一样的问题。直接在ubuntu的命令行,按下Ctrl+S,问题也一样!

奥,原来是Linux的一个快捷键呀,干什么用的?

原来Ctrl+S在Linux里,是锁定屏幕的快捷键。如果要解锁,按下Ctrl+Q就可以了。

好吧,接受教训吧。以后碰到问题要勤快点,越早解决越少麻烦。
现在让我记牢点这两个组合键Ctrl+SCtrl+Q

如何在Linux下拷贝一个目录呢?这好像是再如意不过的问题了。
比如要把/home/usera拷贝到/mnt/temp,我首先想到的就是

cp -R /home/usera/* /mnt/temp

但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。

那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道。
其实没这么复杂,Google了之后,学了一招。原来只有用“.”当前目录代替“*”就好了。

cp -R /home/usera/. /mnt/temp

### update 2013/06/11
那如果`/mnt/temp`里面已经有文件了,你只想把`/home/usera/`下的新文件copy过来,却不想覆盖`/mnt/temp`里面已有的文件怎么办呢?有点像合并两个目录对吧。

对付这种情况`cp`有一个选项`-n, –no-clobber`,就是不覆盖已有文件。应该也是蛮有用的。

cheat & ztd

抢沙发

cheat sheets 是个不错的网站,在通过gem在命令行下能显示常见工具的cheat sheet。下面是ZTD的sheet的输出结果。


$cheat ztd
ztd:
  Zen Things Done (ZTD)
  aka "Minimal ZTD: The Simplest System Possible"
  For more info see
  http://zenhabits.net/2007/04/minimal-ztd-the-simplest-system-possible/
  
  The Four Habits
  ————-
  1. Collect
    * Write down any tasks, ideas, projects, or other information that pop into
    your head.
    * Get it out of your head and onto paper.
  
  2. Process
   * Make quick decisions on things in your inbox, do not put them off.
   * Do it!, Trash it, Delegate it, File it (someday/maybe), calendar for later
  
  3. Plan
    *  Each day, create a list of 1-3 Most Important Tasks (your Big Rocks for
    the day) and be sure to accomplish them.
    * Do your MITs early in the day to get them out of the way and enjoy the
    rest of the day.
  
  4. Do
    * One task at a time, without distractions.
    * This is one of the most important habits in ZTD: Select a task (preferably
    one of your MITs) and focus on it to the exclusion of all else.
  • install cheat in debiean/squeeze
    • apt-get install rubygems
    • ln -s /usr/bin/ruby1.8 /usr/bin/ruby
    • gem install cheat
    • ln -s /var/lib/gems/1.8/gems/cheat-1.2.1/bin/cheat /usr/bin/cheat