2008年9月10日星期三

谢绝第三方邮件转发

目前,正常邮件转发已经不再必要,相反,无限制转发常常被发送垃圾邮件的人利用,隐藏真实的邮件来源,让别人以为是从另外的ISP 发出的信件;同时,也把大量的处理工作转移到别人机器上。
由 于前面提到的历史的原因,最初的绝大多数邮件服务器都允许OPEN RELAY的。今天,大部分邮件服务器升级版本已经在缺省设置中关闭了OPEN RELAY, 如Sendmail 从8.9.3版本开始,Exchange Server从5.5版本开始关闭了open relay,。有的服务器虽然没有相应的升级版本,也都提供了关闭open relay 的方法,如在NOTES SERVER的配置文件notes.ini 中加入一行:SMTPMTA_REJECT_RELAYS=1。但由于很多服务器管理员的疏忽而没能及时的修补这些安全漏洞,被利用来转发垃圾邮件。

如何确认邮件服务器是否OPEN RELAY对于UNIX操作系统,假设要测试的邮件服务器是mail.ABC.com,则可以使用以下的命令进行测试:telnet mail.ABC.com 25

如果在最后显示“Relaying denied”,则表明该服务器已经安全设置,不会再relay无关邮件了。如果在最后显示“Message accepted for delivery”,则表明服务器可以转发任何人的邮件。
其他系统可以通过观察计费器的动态记录或者邮件队列中的信息来判断。

除了用上面的命令行的方法测试外,还可以利用网上提供的一个测试工具来进行测试。首先链接到http://www.abuse.net/relay.html,找到Address to test:(as host name or dotted quad)栏,在其中输入你要测试的服务器IP地址或域名,它将会返回一些信息,根据返回的信息可以判断测试的服务器是否已经限制了第三方转发。

如果在测试结果页中出现如下的提示:
Relay test result
All tests performed, no relays accepted.
表明这台服务器已经限制了第三方转发。
如果某台服务器没有限制第三方转发,则测试显示信息如下:
Relay test result
Hmmn, at first glance, host appeared to accept a message for relay.
THIS MAY OR MAY NOT MEAN THAT IT'S AN OPEN RELAY.
通过测试,可以判断出你的服务器是否限制了RELAY功能,从而采取相应的措施进行处理。

常用邮件服务器关闭RELAY的方法
一般现在使用得最广的邮件服务器软件主要有以下几种:
Unix 操作系统:Netscape Messaging Server 和Sendmail
Windows 操作系统:Exchange Server 和Imail
下面分别具体说明如何对这四种邮件服务器软件进行设置,以关闭RELAY功能。
Netscape Messaging Server
Netscape Messaging Server 从3.5版本开始加入了relay的控制功能。如果使用的是3.5以前的版本,需要更新到3.5或更新的版本。当前最新版本(2002-01)是4.15p7,可以在这里下载:http://www.iplanet.com/downloads/download/5098.html
Netscape Messaging Server 有两种方法可以用来控制open relay。一种是使用Anti-relay Filter,另一种是 Anti-relay Plug-In。后者的功能更强大些,但只支持4.x 版本;如果使用的是3.5版本,则需要使用前一种方法。
使用Anti-relay Filter:
找到filter.cfg 文件(4.0以上版本名字是UBEfilter.cfg),进行如下编辑。如果该服务器只负责xyzcorp.com域收邮件:
Channel-To ".*@xyzcorp\.com" EXIT
$ANY ".*" REJECT "We accept mail for XYZ Corporation only"
如果该服务器还负责转发来自123.45.67.* 邮件,那末就应该加入:
Host-From "123.45.67.*" EXIT
Channel-To ".*@xyzcorp\.com" EXIT $ANY ".*" REJECT "We accept mail for XYZ Corporation only"
更详细的资料可以参考http://www.tsc.com/~bobp/nms-no-relay.html,该文详细讲述了怎样设置filter.cfg文件,甚至可以直接拷贝后,对其中的IP和域名稍作改动即可。
Sendmail
Sendmail 从8.9.3版本开始缺省设置禁止转发垃圾邮件,在此之前的版本在这方面都存在着严重的安全缺陷。因此,有必要把您的Sendmail 升级到 8.9.3 以上版本。考虑到其它方面的安全漏洞,我们建议您升级到当前最新版本,您可以在Sendmail的主页上 http://www.sendmail.org 查到最新的版本。
新 安装的Sendmail 不会转发任何邮件,如果你的邮件服务器需要为某些用户提供转发服务,你需要对Sendmail的配置文件进行设置。设置方法有多种,比较简单的方法是在 /etc/mail/下生成一个名字为relay-domains 的文件,在该文件中列出需要relay的IP或域名。

Sendmail 8.9.3安装过程
译时需要gcc, groff, gmake, gm4编译、安装sendmail服务器

1) 设置环境:(保证您所用的是 groff, gmake.假设这些您都安装在 /usr/local/ 下) 。
%setenv PATH /usr/local/bin:$PATH
%setenv GROFF_TMAC_PATH /usr/local/share/groff/tmac
%setenv GROFF_FONT_PATH /usr/local/share/groff/font

2) 备份/usr/lib/sendmail 和 /etc/mail/sendmail.hf
#cp /usr/lib/sendmail /usr/lib/sendmail.old
#cp /etc/mail/sendmail.hf /etc/mail/sendmail.hf.old

3)安装 sendmail
download sendmail-8.9.3.tar.Z
%zcat sendmail-8.9.3.tar.gz |tar xvf -
%cd sendmail-8.9.3
%make
安装需要超级用户权限. #make install

4)生成 sendmail.cf
生成自己系统的mc文件:
%cd sendmail-8.9.3/cf/cf
%cp generic-solaris2.mc my-system.mc
按照您的需要改动my-system.mc, 加入您所需要的FEATURE. 例:
FEATURE(access_db, dbm -o /etc/mail/access)
生成并安装sendmail.cf文件,在sendmain-8.9.3/cf/cf目录下执行: (需要 gm4)
% m4 ../m4/cf.m4 my-system.mc>sendmail.cf
将sendmail.cf拷贝到/etc下或/etc/mail 下。

5)产生其他配置文件和启动:
(1)在/etc/mail下生成sendmail.cw文件记录该服务器的所有别名;
(2)在/etc/mail下生成relay-domains文件记录该服务器允许relay的域, 例:
ccert.edu.cn
202.116.34.1
202.112.33.
(3)%chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueque
(4)%chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
(5)初始化别名数据库%sendmail -v -bi.
如果没有Error,则启动sendmail进程:
#/usr/lib/sendmail -bd -q1h

注意:
如果升级后Sendmail仍然使用旧的配置文件,可能会继续relay任何人的邮件,此时需要摒弃旧的配置文件,根据需要重新进行配置。配置文件修改后,必须重新启动Sendmail 后才能生效。
Exchange Server
exchange 5.5在SP2补丁以前的版本是不具备关闭open relay功能的。要关闭,则要先打SP2以上的补丁。
下面具体介绍使用方法:
(1)安装补丁SP3补丁
双击光盘目录中的EXCHSRVR55_SP3\
Eng\Server\Setup\I386\ Update.exe,安装补丁。
(2) 启动Microsoft Exchange Administrator,查看Configuration下的Connections下是否有Internet Mail Service项(以下简称IMS),如果没有,可以通过选择File-New Other-IMS进行安装;
(3)双击Connections 下的IMS,弹出IMS Properties对话框,点Routing选项卡,此页中使用缺省值即可(其中Sent to: 下为自己的域名,Route to:下为),(如果没有安装SP2以上补丁,则此页中不会出现Routing Restrictions按钮)。接着点Routing Restrictions按钮,弹出Routing Restrictions对话框,选择“Hosts and Clients that successfully authenticate”和“Hosts and clients with these IP addresses”,点旁边的Add按钮,增加本所的IP地址和掩码,设定一个网段,点OK即可。
4)关闭IMS,再启动IMS,所做的修改即会产生作用。(双击控制面板中的服务,选择Microsoft Exchange IMS,点停止,即可关闭它,再点开始,又可以启动它。)
Imail

(1)下载
IMail可运行于NT/2K环境下,为共享软件。最新的Imail程序可以从以下地址:ftp://ftp7.ipswitch.com/ipswitch/product_downloads/ imtm_x86.exe(8.2M)下载。
(2)关闭OPEN Reply的设置
点开始-程序-IMail-Imail Administrator-localhost,选择SMTP Security中左侧的最后一项:Relay for local users only。
有关垃圾邮件处理的更详细的情况,请查阅中国教育和科研网垃圾邮件处理小组网页:http://www.ccert.edu.cn/spam/spam_home.htm

邮件客户端设置

这样设置了以后,可能你的局域网的用户就只能收邮件,不能发送邮件了。发送邮件时提示如下信息:The server say: 550 Relaying is prohibited. 邮件发送不出去。这时候就要在邮件客户端设置SMTP身份验证,具体方法如下:

(1)对于使用outlook express的用户
启动outlook express,点“工具”-“帐号”,点“邮件”选项卡,选择某个邮件帐号,点“属性”,点“服务器”选项卡,选中 “我的服务器要求身份验证”,点“确定”,点“关闭”。
(2)对于使用foxmail3.11的用户
启动foxmail,选择某个帐户,点“帐户”-“属性”,点“邮件服务器”,选择“SMTP服务器需要身份验证”,点设置,选择“使用与POP3服务器相同的信息”,点“确定”。

来自:http://www.5dmail.net/html/2004-6-8/20046801859.htm

2008年9月9日星期二

postfix: main.cf参数中文解释

8月3日
postfix: main.cf参数中文解释
#more /etc/postfix/main.cf
外发域配置参数:myorigin 说明:myorigin参数用于指定该服务器使用哪个域名来外发邮件。 缺省的情况下myorigin采用本机主机名称(与参数myhostname相同)。建议:在很小的网络中,采用缺省配置。而在Internet中,我们建议你保持myorigin与mydomain参数相同。也就是说采用该服务器所在的域名称。例如:myorigin = $myhostname (缺省) myorigin = $mydomain (推荐) 接收域配置参数:mydestination说明:用于指定该服务器的使用哪个域名来接收邮件。我们建议,系统安装好后,尽量不要改动这个参数。例如:缺省设置: mydestination = $myhostname localhost.$mydomain 广泛设置: mydestination = $myhostname localhost.$mydomain $mydomain 多DNS设置:mydestination = $myhostname localhost.$mydomain www.$mydomain ftp.$mydomain 转发限定参数:mynetworksrelay_domains mydestination说明:转发限定在邮件系统中非常重要。C-Link为客户缺省配置了最安全的转发限定参数。与转发限定的参数有很多:主要请参看mynetworks、relay_domains、mydestination。
系统故障报告配置参数:notify_classes 说明:该参数用于告知系统,在哪种情况下用哪种方式通知用户。可以选择的参数类型有:bounce 邮件原封不动弹回;2bounce 将双份弹回邮件发送给Postmaster;delay 将拖延的邮件的头部信息通知Postmaster;policy 将被系统过滤掉的信息通知Postmaster;protocol 将协议错误信息通知Postmaster;resource 将因系统资源短缺而投递失败的信息通知Postmaster;software 将因软错误而投递失败的信息通知Postmaster.例如:缺省: notify_classes = resource, software 主机名配置参数:myhostname说明:myhostname参数用于描述运行C-Link系统的服务器所符合规则的域名全称。在许多UNIX系统中,C-Link会自动检测出正确的名称。但在某些操作系统中需要手工配置,如TurboLinux。例如: myhostname = host.local.domain (local hostname is not FQDN) myhostname = host.virtual.domain (virtual interface) myhostname = virtual.domain (virtual interface) 原始域配置参数:mydomain说明:系统自己检测。暂不开放。系统内部网络子网配置参数:mynetworks_stype mynetworks说明:mynetworks_stype用于设定邮件系统内部子网的限制情况。通常情况下设定为subnet。在单机情况下设置为host.设定的子网内部,邮件可以开放式转发。这对于配置邮件集群很有作用。但要小心使用,防止将邮件系统设置为OPEN RELAY。例如:mynetworks_style = subnet mynetworks_style = hostmynetworks = 168.100.189.0/28, 127.0.0.0/8 统内部网络地址配置参数:inet_interfaces说明:inet_interfaces用于指定特定的网络地址。系统保留,暂不开放。例如:inet_interfaces = all inet_interfaces = virtual.host.name (virtual domain) inet_interfaces = $myhostname localhost.$mydomain (non-virtual mailer) 进程限制参数:default_process_limit 说明:用于限定SMTP服务的最大同时连接数量。缺省为50。根据服务器配置及操作系统的不同,可以做非常宽限的配置。例如:default_process_limit = 1024本地同时同址分发限制参数:local_destination_concurrency_limit说明:系统保留,暂不开放。例如:local_destination_concurrency_limit = 2 缺省同时同址分发限制参数:default_destination_concurrency_limit说明:系统保留,暂不开放。例如:default_destination_concurrency_limit = 10队列重发周期参数:queue_run_delay 说明:用于设定队列处理程序对拖延邮件的扫描周期。缺省为1000秒。例如:queue_run_delay = 1000
最长队列生命期参数:maximal_queue_lifetime说明:用于设定队列处理程序对滞留邮件的最长保存期。缺省为5天。例如:maximal_queue_lifetime = 5
最小投递失败周期参数:minimal_backoff_time说明:用于设定队列处理程序对无法投递的邮件的最短巡回时间。缺省为1000秒。例如:minimal_backoff_time= 1000最长投递失败周期参数:maximal_backoff_time说明:用于设定队列处理程序对无法投递的邮件的最长巡回时间。缺省为4000秒。例如:maximal_backoff_time= 4000错误命令缓冲时间参数:smtpd_error_sleep_time说明:当SMTP服务端口接收到非法的命令时,系统将缓冲处理的时间间隔。这个参数对于防止恶意攻击非常有效。例如:smtpd_error_sleep_time = 5smtpd_error_sleep_time =0软错误容忍次数参数:smtpd_soft_error_limit 说明:SMTP服务所允许的软错误次数。这个参数对于防止恶意攻击非常有效。缺省10次。例如:smtp_soft_error_limit = 5硬误容忍次数参数:smtpd_hard_error_limit 说明:SMTP服务所允许的硬错误次数。这个参数对于防止恶意攻击非常有效。缺省100次。例如:smtp_hard_error_limit = 100邮件头部过滤 参数:header_checks说明:用于过滤邮件的头部信息。例如:header_checks = regexp:/wdpost/filter/header_checks文件header_checks内容遵循完全的regexp强大的字符串语法匹配规则。如,/^to: *friend@public\.com$/ REJECT SMTP连接控制过滤参数:smtpd_client_restrictions 说明:smtpd_client_restrictions 参数的功能非常强大。它可以对连接到C-Link邮件服务器的各种客户端以及其他服务器进行限制。该参数有以下的选项可以灵活配置设定。reject_unknown_client 拒绝不能IP反向解析的地址;permit_mynetworks 允许子网中的连接;check_client_access maptype:mapname 检测在mapname文件中设定的规则;reject_maps_rbl拒绝符合rbl行为条件的连接。reject_unauth_pipelining 拒绝为认证的管道连接。缺省状态下,该参数不做设定。例如:smtpd_client_restrictions = HELO
握手要求控制过滤参数:smtpd_helo_required说明:设定C-Link邮件系统是否在SMTP连接时必须进行HELO或EHLO握手。缺省为不需要。例如:smtpd_helo_required = no
HELO握手主机控制过滤参数:smtpd_helo_restrictions说明:当HELO握手必须时。该参数用于验证握手信息是否符合要求。可以选择的参数有:reject_invalid_hostname 拒绝错误的hostname。permit_naked_ip_address 拒绝裸IP地址。reject_unknown_hostname 拒绝为被DNS A或MX纪录指定的域名。reject_non_fqdn_hostname 拒绝不符合域名规则的域名。check_helo_access maptype:mapname 根据mapname中设定的信息限制。RFC821类型信封地址控制过滤 参数:strict_rfc821_envelopes说明:设定C-Link系统是否必须只接受符合RFC821所定义的负荷规则的邮件地址。缺省为no.例如:strict_rfc821_envelopes = yes发信人地址限定过滤参数:smtpd_sender_restrictions =说明:设定发信人地址必须符合的规则。确实为任意。可以设定为以下参数:reject_unknown_sender_domain 拒绝为没有DNS A或MX纪录的发信人域名。check_sender_access maptype:mapname 根据mapname文件中的规则设定。reject_non_fqdn_sender 拒绝不符合规则的发信人地址。收信人地址限定过滤参数:smtpd_recipient_restrictions说明:设定特殊的发信人地址参数限制。可以选择的参数有:check_relay_domains 检测转发域。permit_auth_destination 允许经过认证的目的地。reject_unauth_destination 拒绝为经过认证的目的地。permit_mx_backup 允许反查询MX主机名称。check_recipient_access maptype:mapname 根据mapname文件中设定的规则限制。reject_unknown_recipient_domain 拒绝转发到没有DNS A或MX纪录的域名。reject_non_fqdn_recipient 拒绝不符合规则的转发目标。reject_unknown_sender_domain 拒绝没有IP反解析纪录的发件人域名。ETRN命令限定过滤系统保留,不开放。反垃圾邮件组织过滤 参数:maps_rbl_domains 说明:这是一个非常有特色的反垃圾邮件功能。这个参数通常设定为maps_rbl_domains = blackholes.mail-abuse.org 如果RBL lookup打开,系统回自动与全球著名的反垃圾邮件组织mail-abuse进行同步。组织来自mail-abuse所列举的不安全的电子邮件服务器。在缺省状态下这个功能是关闭的。SMTP对话行长度限定过滤参数:line_length_limit说明:设定SMTP所接受的最长字符行的长度。缺省为2048字节。邮件头部长度限定过滤参数:header_size_limit说明:设定SMTP所接受的最长邮件头部信息的长度。缺省为102400字节收件人数量限定过滤参数:extract_recipient_limit 说明:限制扩展的收件人数量限制。这通常用于防止采用"sendmail -t"的方式来进行的攻击行为。邮件长度限定过滤参数:message_size_limit 说明:这个参数很重要。用于限定系统所接受的最大的单封邮件长度。缺省为10240000 字节。例如:message_size_limit = 20480000
弹回邮件长度过滤参数:bounce_size_limit说明:这个参数非常重要,用于设定弹回的最大邮件尺寸。缺省为50000 字节

来源:http://edison8787.spaces.live.com/blog/cns!82CB956C471EC8CD!120.entry

2008年9月7日星期日

apt-proxy:apt 代理, 缓存

假如有多台机器需要从 debian(or ubuntu)的库里面下载软件来安装,如果每个机器都去网上下载一遍,肯定不划算。用 apt-proxy 可以解决这个问题。会把你现在的软件缓存起来。以后的机器安装这个软件就是从本地下载了。

另外有一个通用的解决方法是本地安装 squid,不过要做一些调整,因为 squid 默认缓存小于 4M 的文件。

参考

http://apt-proxy.sourceforge.net

版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.
本文网址: http://linuxtoy.org/archives/apt-proxy.html

Ubuntu LiveUSB - 制作 Ubuntu Live USB

Ubuntu LiveUSB 是一个用于创建 Ubuntu Live USB 的图形化工具。它支持从正在运行的 Ubuntu Live CD 环境中制作 Live USB,且制作的 Live USB 包含系统引导功能。

ubuntu-liveusb.png

抱歉的是,因为我没有 USB 存储设备,所以就没法测试验证了。感兴趣的朋友可自行尝试。

Ubuntu LiveUSB

更新

timesshare 读者对此有详细的使用报告,可作参考。

版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.
本文网址: http://linuxtoy.org/archives/ubuntu-liveusb.html

Fedora LiveUSB Creator:创建 Fedora Live USB

Fedora LiveUSB Creator 是一个支持 Linux 和 Windows 的跨平台工具,利用它你可以创建基于 Fedora 操作系统的 Live USB。该工具的特色包括:无需对 USB 存储设备作分区或格式化处理,支持 Fedora 9 在内的各种版本,能够自动检测可移动设备等。感兴趣的朋友不妨自行尝试。

Fedora LiveUSB Creator

参考

  1. Fedora LiveUSB Creator
  2. Ubuntu LiveUSB - 制作 Ubuntu Live USB

版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.
本文网址: http://linuxtoy.org/archives/fedora-live-usb-creator.html

History(历史)命令用法 15 例

如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的 15 个用法。

  1. 使用 HISTTIMEFORMAT 显示时间戳

    当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:

    # 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

  2. 使用 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)

  3. 快速重复执行上一条命令

    有 4 种方法可以重复执行上一条命令:

    1. 使用上方向键,并回车执行。
    2. 按 !! 并回车执行。
    3. 输入 !-1 并回车执行。
    4. 按 Ctrl+P 并回车执行。
  4. 从命令历史中执行一个指定的命令

    在下面的例子中,如果你想重复执行第 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)

  5. 通过指定关键字来执行以前的命令

    在下面的例子,输入 !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

  6. 使用 HISTSIZE 控制历史命令记录的总行数

    将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:

    # vi ~/.bash_profile
    HISTSIZE=450
    HISTFILESIZE=450

  7. 使用 HISTFILE 更改历史文件名称

    默认情况下,命令历史存储在 ~/.bash_history 文件中。添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:

    # vi ~/.bash_profile
    HISTFILE=/root/.commandline_warrior

  8. 使用 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

  9. 使用 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 previous service httpd stop after pwd got erased]
    40 history | tail -6

  10. 使用 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
  11. 使用 -c 选项清除所有的命令历史

    如果你想清除所有的命令历史,可以执行:

    # history -c

  12. 命令替换

    在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:

    # ls anaconda-ks.cfg
    anaconda-ks.cfg
    # vi !!:$
    vi anaconda-ks.cfg

    下例中,!^ 从上一条命令获得第一项参数:

    # cp anaconda-ks.cfg anaconda-ks.cfg.bak
    anaconda-ks.cfg
    # vi -5 !^
    vi anaconda-ks.cfg

  13. 为特定的命令替换指定的参数

    在下面的例子,!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

  14. 使用 HISTSIZE 禁用 history

    如果你想禁用 history,可以将 HISTSIZE 设置为 0:

    # export HISTSIZE=0
    # history
    # [Note that history did not display anything]

  15. 使用 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]

[via The Geek Stuff]

版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.
本文网址: http://linuxtoy.org/archives/history-command-usage-examples.html