- 使用 HISTTIMEFORMAT 显示时间戳当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:# export HISTTIMEFORMAT='%F %T '
# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release
注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。[感谢 NightOwl 读者补充] - 使用 Ctrl+R 搜索历史Ctrl+R 是我经常使用的一个快捷键。此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行该命令。如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt]
(reverse-i-search)`red‘: cat /etc/redhat-release
[Note: Press enter when you see your command, which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur) - 快速重复执行上一条命令有 4 种方法可以重复执行上一条命令:
- 使用上方向键,并回车执行。
- 按 !! 并回车执行。
- 输入 !-1 并回车执行。
- 按 Ctrl+P 并回车执行。
- 从命令历史中执行一个指定的命令在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:
# history | more
1 service network restart
2 exit
3 id
4 cat /etc/redhat-release
# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur) - 通过指定关键字来执行以前的命令在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:
# !ps
ps aux | grep yp
root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp - 使用 HISTSIZE 控制历史命令记录的总行数将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:
# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450 - 使用 HISTFILE 更改历史文件名称默认情况下,命令历史存储在 ~/.bash_history 文件中。添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:
# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior - 使用 HISTCONTROL 从命令历史中剔除连续重复的条目在下面的例子中,pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目。要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:
# pwd
# pwd
# pwd
# history | tail -4
44 pwd
45 pwd
46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above]
47 history | tail -4
# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56 export HISTCONTROL=ignoredups
57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above]
58 history | tail -4 - 使用 HISTCONTROL 清除整个命令历史中的重复条目上例中的 ignoredups 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:
# export HISTCONTROL=erasedups
# pwd
# service httpd stop
# history | tail -3
38 pwd
39 service httpd stop
40 history | tail -3
# ls -ltr
# service httpd stop
# history | tail -6
35 export HISTCONTROL=erasedups
36 pwd
37 history | tail -3
38 ls -ltr
39 service httpd stop
[Note that the codevious service httpd stop after pwd got erased]
40 history | tail -6 - 使用 HISTCONTROL 强制 history 不记住特定的命令将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格:
# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
# service httpd stop [Note that there is a space at the beginning of service, to ignore this command from history]
# history | tail -3
67 ls -ltr
68 pwd
69 history | tail -3 - 使用 -c 选项清除所有的命令历史如果你想清除所有的命令历史,可以执行:
# history -c - 命令替换在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:
# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg
补充:使用 !$ 可以达到同样的效果,而且更简单。[感谢 wanzigunzi 读者补充]
下例中,!^ 从上一条命令获得第一项参数:
# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi -5 !^
vi anaconda-ks.cfg - 为特定的命令替换指定的参数在下面的例子,!cp:2 从命令历史中搜索以 cp 开头的命令,并获取它的第二项参数:
# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt
下例里,!cp:$ 获取 cp 命令的最后一项参数:
# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt - 使用 HISTSIZE 禁用 history如果你想禁用 history,可以将 HISTSIZE 设置为 0:
# export HISTSIZE=0
# history
# [Note that history did not display anything] - 使用 HISTIGNORE 忽略历史中的特定命令下面的例子,将忽略 pwd、ls、ls -ltr 等命令:
# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd
# ls
# ls -ltr
# service httpd stop
# history | tail -3
79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]
Monday, September 8, 2008
History(历史)命令用法 15 例
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的 15 个用法。
I use google docs!
office 2.0 大会刚刚闭幕, 关于WEB office 的应用VC的信心很高, 虽然不久前才经历了 google 云系统的宕机事件, 但是这视乎一点都不影响 web office 的应用. 当然我们不得不承认web office离大型企业依然很远.
现在 google docs 可以使用很多的模板了, 制作得很有专业水准, 写文档用 google docs 吧, 至少你会发现他很简单, 很实在, 很方便, 很有乐趣.
现在 google docs 可以使用很多的模板了, 制作得很有专业水准, 写文档用 google docs 吧, 至少你会发现他很简单, 很实在, 很方便, 很有乐趣.
Sunday, August 31, 2008
Css样式兼容IE6,IE7,FIREFOX的写法
根据FF和IE对一些符号识别的差异,我们可以单独对FF以及IE定义样式,例子:
区别IE6与FF:
区别IE6与IE7:
区别IE7与FF:
区别FF,IE7,IE6:
注:IE都能识别*;标准浏览器(如FF)不能识别*;
所以标准的写法FF,IE7,IE6:
firefox:白色,IE7:黑色,IE6:橙色
另外再补充一个,下划线”_”,
IE6支持下划线,IE7和firefox均不支持下划线。
于是大家还可以这样来区分IE6,IE7,firefox:
注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。
区别IE6与FF:
background:orange;*background:blue; 区别IE6与IE7:
background:green !important;background:blue; 区别IE7与FF:
background:orange; *background:green;区别FF,IE7,IE6:
background:orange;*background:green !important;*background:blue;注:IE都能识别*;标准浏览器(如FF)不能识别*;
- IE6能识别*,但不能识别 !important,
- IE7能识别*,也能识别!important;
- FF不能识别*,但能识别!important;
所以标准的写法FF,IE7,IE6:
color:#fff; *color:#000 !important; *color:#ff6600;firefox:白色,IE7:黑色,IE6:橙色
另外再补充一个,下划线”_”,
IE6支持下划线,IE7和firefox均不支持下划线。
于是大家还可以这样来区分IE6,IE7,firefox:
background:orange;*background:green;_background:blue;注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。
Friday, August 29, 2008
Google Get Error
[caption id="attachment_887" align="alignnone" width="300" caption="Google Get Error Page"]
[/caption]
Thursday, August 28, 2008
Another Xorg.conf
在笔记本上使用usb的鼠标真的是不好受,可能是由于我的这个usb鼠标的原因。再发一次配置。
#
# zhuzhu@cpan.org
#
Section "Module"
Load "dbe" # Double buffer extension
SubSection "extmod"
Option "omit xfree86-dga" # don't initialise the DGA extension
EndSubSection
Load "type1"
Load "freetype"
Load "speedo"
Load "glx"
#Load "synaptics"
EndSection
Section "Files"
RgbPath "/usr/share/X11/rgb"
FontPath "/usr/share/fonts/local/"
FontPath "/usr/share/fonts/misc/"
FontPath "/usr/share/fonts/OTF/"
FontPath "/usr/share/fonts/TTF/"
FontPath "/usr/share/fonts/Type1/"
FontPath "/usr/share/fonts/CID/"
FontPath "/usr/share/fonts/Speedo/"
FontPath "/usr/share/fonts/75dpi/:unscaled"
FontPath "/usr/share/fonts/100dpi/:unscaled"
FontPath "/usr/share/fonts/75dpi/"
FontPath "/usr/share/fonts/100dpi/"
FontPath "/usr/share/fonts/cyrillic/"
FontPath "/usr/share/fonts/vista/"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse2"
Driver "mouse"
Option "Protocol" "IMPS/2"
# Option "SendCoreEvents" "true"
# Option "CorePointer"
Option "Name" "Logitech USB optical mouse"
Option "Device" "/dev/input/mice"
# Option "Device" "/dev/mouse"
# Option "Device" "/dev/psaux"
# Option "BaudRate" "9600"
# Option "SampleRate" "150"
# Option "AlwaysCore" "true"
Option "ZAxisMapping" "4 5"
# Option "Buttons" "5"
option "Emulate3Buttons" "true"
# Option "Resolution" "800"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "Emulate3Buttons" "true"
EndSection
Section "Monitor"
Identifier "My Monitor"
HorizSync 31.5 - 50.0
VertRefresh 40-90
EndSection
Section "Device"
Identifier "VESA Framebuffer"
Driver "vesa"
#VideoRam 4096
EndSection
Section "Screen"
Identifier "Screen 1"
Device "VESA Framebuffer"
Monitor "My Monitor"
DefaultDepth 24
Subsection "Display"
Depth 8
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 16
Modes "1280x800" "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 24
Modes "1280x800" "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth 32
Modes "1280x800" "1024x768" "800x600" "640x480"
EndSubsection
EndSection
#Section "InputDevice"
# Identifier "Synaptics"
# Driver "synaptics"
# Option "SendCoreEvents" "true"
# Option "Device" "/dev/psaux"
# Option "Protocol" "auto-dev"
# Option "SHMConfig" "true"
# #带#的为可选项,用来设置边界大小及速度及滚动等。具体见程序synclient.
# Option "LeftEdge" "1700"
# Option "RightEdge" "5300"
# Option "TopEdge" "1700"
# Option "BottomEdge" "4200"
# Option "FingerLow" "25"
# Option "Fingertop" "30"
# Option "MaxTapTime" "180"
# Option "MAxTapMove" "220"
# Option "VertScrollDelta" "100"
# Option "MinSpeed" "0.06"
# Option "MaxSpeed" "0.12"
# Option "AceelFactor" "0.0010"
# Option "SHMConfig" "on"
# Option "RTCornerButton" "2"
#EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Screen 1"
# Each InputDevice line specifies an InputDevice section name and
# optionally some options to specify the way the device is to be
# used. Those options include "CorePointer", "CoreKeyboard" and
# "SendCoreEvents".
# InputDevice "Synaptics" "AlwaysCore"
# InputDevice "Synaptics"
# InputDevice "Mouse1" "CorePointer"
# InputDevice "Mouse2" "AlwaysPointer"
# InputDevice "Configured Mouse" "CorePointer"
# InputDevice "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
EndSection
#Section "ServerLayout"
# Identifier "Default Layout"
# Screen "Default Screen"
#在类似的地方再加入下面这一行:
# InputDevice "Synaptics" "CorePointer"
# InputDevice "Keyboard1" "CoreKeyboard"
# InputDevice "Mouse" "SendCoreEvents"
#EndSection
Wednesday, August 27, 2008
Testing On Work Laptop is a Bad Idea
为了测试 kde4.1 (slackware-current)里面的包,我安装了,不过testing的版本的确非常不好,还是换回来了,看到又要折腾一个下午了…… 再也不在工作用的电脑上安装testing的包了,特别是这样大型的桌面环境。
Tuesday, August 26, 2008
Subscribe to:
Posts (Atom)