0%

history命令 – 显示与操纵历史命令

history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。

如果你经常使用Linux命令,那么使用history命令可以有效地提升你的效率。

语法格式: history [参数] [目录]

常用参数:

-a 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
-c 清空当前历史命令列表
-d 删除历史命令列表中指定序号的命令
-n 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
-r 读取命令历史文件到当前的Shell历史命令内存缓冲区
-s 将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令
-w 把当前的shell历史命令内存缓冲区的内容写入命令历史文件

参考实例

显示最近的10条命令:

1
[root@linuxcool ~]# history 10  

将本次登录的命令写入历史文件中:

1
[root@linuxcool ~]# history -w

将命令历史文件中的内容读入到目前shell的history记忆中 :

1
[root@linuxcool ~]# history -r  

将当前Shell会话的历史命令追加到命令历史文件中:

1
[root@linuxcool ~]# history -a  

清空当前历史命令列表:

1
[root@linuxcool ~]# history -c 

使用HISTCONTROL来消除命令历史中的连续重复条目

在下面的例子中pwd被输入了三次,当你使用history的时候,你会看到这三条命令连续出现。设置HISTCONTROLignoredups,来消除重复命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# pwd

# pwd

# pwd

# history | tail -4

44 pwd

45 pwd

46 pwd

47 history | tail -4

[注: 上面pwd被执行了三次之后,历史中有三条pwd命令]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# export HISTCONTROL=ignoredups

# pwd

# pwd

# pwd

# history | tail -3

56 export HISTCONTROL=ignoredups

57 pwd

58 history | tail -4 [注:即使上面pwd被执行了三次,历史中也只有一条pwd命令]

用HISTIGNORE让history在存储时忽略某些指令

有时你不想在记录里看到诸如pwd,ls之类的基本指令,可以用HISTIGNORE忽略这些指令。

注意在HISTIGNORE中添加ls,只忽略“ls”不忽略ls –l。一定要准确的写出要忽略的的指令。

1
# export HISTIGNORE=”pwd:ls:ls –ltr:”

Linux halt 命令

参考 Linux reboot 命令。

:ref:Reboot <linux_reboot_beginner>

Linux poweroff 命令

参考 Linux reboot 命令。

Linux reboot/poweroff/halt 命令

.. _linux_reboot_beginner:

.. note::

世事漫随流水,算来一梦浮生。

  • 李煜《乌夜啼·昨夜风兼雨》

Linux halt, poweroff, reboot 用来挂起、关机或者重启机器,成功后返回0。

这不是一个命令,这是三个命令,只不过三个命令的参数都是一致的。

官方定义为:

halt, poweroff, reboot - Halt, power-off or reboot the machine

其实这三个命令都可以通过shutdown来执行,并且相对而言shutdown的参数还更多一些。

语法

使用方法如下:

1
2
3
4
5
$ halt [OPTIONS...]

$ poweroff [OPTIONS...]

$ reboot [OPTIONS...]

参数如下所示:

  • --halt 将机器挂起,三个命令均相同
  • -p, --poweroff 将机器关机,三个命令均相同
  • --reboot 将机器重启,三个命令均相同
  • -f, --force 立即执行挂起、关机和重启,一般对于force而言,除非万不得已,否则进来莫用
  • -n, --no-sync 在挂起、关机或重启前不对硬盘进行同步,这个很危险呀,进来不要用呀
  • --no-wall 在挂起、关机或重启前不发送警告信息,对于多用户不友好

立即关机

接下来的三个命令一致,都是将电脑关机,不过这个用法总归感觉怪怪的,所以还是分开各司其职比较好。比如关机还是poweroff,重启还是reboot吧。

1
2
3
4
5
$ halt --poweroff

$ poweroff --poweroff

$ reboot --poweroff

Linux shutdown 命令

.. note::

青山依旧在,几度夕阳红。

  • 杨慎《临江仙·滚滚长江东逝水》

Linux shutdown 命令可以用来挂起、关机或者重启设备,执行成功的话会返回0。

官方定义为:

shutdown - Halt, power-off or reboot the machine

语法

使用方法如下:

1
$ shutdown [OPTIONS...] [TIME] [WALL...]

第一个参数可能是一个时间字符串 (通常是 now),一般而言,后面可以跟上一个提示消息来通知登陆的用户系统马上进行的操作。

时间字符串的一般为hh:mm,表示经过多长时间进行关机,当然比较常用的为+m,也就是m分钟后执行操作。

参数如下所示:

  • -H, --halt 挂起机器
  • -P, --poweroff 关机(默认选项)
  • -r, --reboot 重启机器
  • -h 等效于–poweroff,出发专门指定 –halt选项
  • -k不进行挂起、关机或者重启,仅仅发送通知信息
  • --no-wall : 挂起、关机或者重启前,不发送信息
  • -c 取消当前正在进行的关机动作,前提是参数不是now

立即关机

1
$ shutdown -h now

十分钟后关机

1
2
3
4
$ shutdown -h 10

# 增加提示信息
$ shutdown -h 10 "The system will shutdown in 10 minutes, save your work immediately"

17:30关机

1
2
3
4
$ shutdown -h 17:30

# 增加提示信息
$ shutdown -h 10 "The system will shutdown in 17:30 , remember to save your work"

重新启动计算机

1
$ shutdown -r now

MacOSX 上 安装及使用homebrew

Homebrew的安装与使用

Mac OS X是基于Unix的操作系统,可以安装大部分为Unix/Linux开发的软件。然而,如果只是以使用为目的,对每个软件都进行手工编译不是很方便,也不利于管理已安装的软件,于是出现了类似于Linux中APT、Yum等类似的软件包管理系统,其中最著名的有MacPorts、Fink、Homebrew等。

我曾经是MacPorts的使用者,但了解Homebrew之后,立即“弃暗投明”了。其实MacPorts也是一个很不错的解决方案,除了一个实在让我头疼的特性。MacPorts有个原则,对于软件包之间的依赖,都在MacPorts内部解决(/opt/local),无论系统本身是否包含了需要的库,都不会加以利用。这使得MacPorts过分的庞大臃肿,导致系统出现大量软件包的冗余,占用不小的磁盘空间,同时稍大型一点的软件编译时间都会难以忍受。

而Homebrew的原则恰恰相反,它尽可能地利用系统自带的各种库,使得软件包的编译时间大为缩短;同时由于几乎不会造成冗余,软件包的管理也清晰、灵活了许多。Homebrew的另一个特点是使用Ruby定义软件包安装配置(叫做formula),定制非常简单。

至于Fink,由于并未安装使用过,不加讨论。(从互联网上的消息看,Fink由于维护人手的问题,软件包的更新不是很及时。)于我而言,Homebrew已经足够完善,除非发现重大的问题或者出现新的具有突破性的竞争对手,否则我没兴趣折腾别的软件包管理系统了。

下面说说Homebrew的安装与使用。

Homebrew的安装

首先确保你的系统满足如下要求:

  1.  基于Intel CPU
    
  2.  操作系统为Mac OS X 10.5 Leopard或更高版本
    
  3.  已安装版本管理工具Git(Mac OS X 10.7 Lion已经预安装)
    
  4.  已安装Xcode开发工具1
    
  5.  已安装Java Developer Update2
    

注1:Xcode 4.3中,命令行编译工具是可选安装,需要在Preferences > Downloads中激活。
注2:可选,Homebrew本身不依赖于Java,只有部分软件包的安装需要Java支持。

Homebrew的安装非常简单,在终端程序中输入以下命令即可。

1
$ ruby -e “$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)”

由于Homebrew的安装地址可能变化,请到官方网站查看最新的安装方法。
安装过程需要输入root口令。

Homebrew的使用

Homebrew的可执行命令是brew,其基本使用方法如下(以wget为例)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查找软件包
$ brew search wget
# 安装软件包
$ brew install wget
# 列出已安装的软件包
$ brew list
# 删除软件包
$ brew remove wget
# 查看软件包信息
$ brew info wget
# 列出软件包的依赖关系
$ brew deps wget
# 更新brew
$ brew update
# 列出过时的软件包(已安装但不是最新版本)
$ brew outdated
# 更新过时的软件包(全部或指定)
$ brew upgrade 或 brew upgrade wget
# 定制自己的软件包

如果自己需要的软件包并不能在Homebrew中找到,怎么办呢,毕竟Homebrew是一个新生项目,不可能满足所有人的需求。当然,我们可以自行编译安装,但手工安装的软件包游离于Homebrew之外,管理起来不是很方便。

前文说过,Homebrew使用Ruby实现的软件包配置非常方便,下面简单谈一谈软件包的定制(假定软件包名称是bar,来自foo站点)。

  1.  首先找到待安装软件的源码下载地址
    

http://foo.com/bar-1.0.tgz
2. 建立自己的formula
brew create http://foo.com/bar-1.0.tgz
3. 编辑formula,上一步建立成功后,Homebrew会自动打开新建的formula进行编辑,也可用如下命令打开formula进行编辑。
brew edit bar
Homebrew自动建立的formula已经包含了基本的configure和make install命令,对于大部分软件,不需要进行修改,退出编辑即可。
4. 输入以下命令安装自定义的软件包
brew install bar
关于Homebrew的其它功能,比如将自定义软件包提交到官方发布等,请参考Homebrew项目的主页及其Man Page。你将发现Homebrew不仅是“家酿”,更是“佳酿”。

refer from : http://linfan.info/blog/2012/02/25/homebrew-installation-and-usage/

Linux的 /usr/bin/ld cannot find -lxxx 的解决办法

在软件编译过程中,经常会碰到类似这样的编译错误:

1
$ /usr/bin/ld: cannot find -lxxx

这表示找不到库文件 libxxx.so,其中 xxx 是库文件的名字。

解决方法有:

安装此库文件和相关软件

一般库文件属于某个软件,google搜索该软件并安装,或者使用 yum 安装dev包,或者apt按照devel包即可解决。

将库文件所在路径添加到gcc的搜索路径

使用以下命令查询gcc能否搜寻到指定的库文件:

1
$ gcc -lxxx --verbose

查询库文件 libxxx.so 是否能在搜索路径中找到。

若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:

使用 /etc/ld.so.conf 配置文件

将库文件所在的路径加入到 /etc/ld.so.conf 尾部,并使之生效:

1
2
$ sudo echo '/the/path/of/xxx/lib/' >> /etc/ld.so.conf
$ sudo ldconfig

运行该命令,重新载入 /etc/ld.so.conf 中的路径,使修改生效。

修改环境变量

1
2
3
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/the/path/of/xxx/lib
# 配置之后最好运行一下:
$ ldconfig

修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。

1
2
$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/xxx-1.8.15-patch1/lib/' >> ~/.bashrc
$ source ~/.bashrc

将上述 export 命令加入到配置文件 ~/.bashrc,使之永久生效。

1
$ export LIBRARY_PATH=/opt/biosoft/xxx-1.8.15-patch1/lib/:$LIBRARY_PATH

若修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH 。

Python 编程概述

在程序的开始输入from future import division后,python一旦看到这个语句,运算符/就会严格执行True除法,运算符//则严格执行Floor除法。

字符串格式化

Python将字符串作为内建数据类型提供,这使得python程序可以执行非常强大的、基于文本的处理。

多行字符串输出,推荐使用三个引号’’’ string ‘’’或者””” string “””
抽象的对象

如果可以,用对象的概念,我们可以看到沙滩而不是沙子,看到森林而不是树木,看到房子而不是砖块。

过程式和OOP

在过程式语言中,基本编程单元是“函数”,而在面向对象语言中,基本编程单元是“类”,最终通过它实例化(即“创建”的一种更好听的说法)出对象。Python类包含了函数(用于实现类的行为)和数据(用于实现类的属性)。

BOOK 集锦

汇总并总结一下关于BOOK的命令集

C 集锦

汇总并总结一下关于C的命令集