Bash/Zsh 下调用 Emacs/Vim 编辑当前命令

Bash 环境

多数时候我们用的是 Bash, 比如个人的 Linux 不愿去定制,远程服务器的由不得你去定制,所以就从 Bash 说起。

默认键绑定 emacs, 操作是 ctrl-x, ctrl-e

在默认的 Bash  环境下,只要在命令行中按下 ctrl-x, ctrl-e 就会把当前命令的内容调入到环境变量  $EDITOR 指示的编辑器(默认为 emacs)去编辑,编辑后保存退出就会立即执行。

如果未安装 Emacs 编辑器,在按下 ctrl-x, ctrl-e 会得到如下提示

[vagrant@localhost ~]$
-bash: emacs: command not found

如果希望使用 vi 来编辑当前命令,就需要设置 EDITOR 环境变量,比如在 .bashrc 中加入

export EDITOR=vi

那么在命令行中按下 ctrl-x, ctrl-e 使用打开  vi 来编辑当前命令。

注:Emacs 要用 ctrl-x, ctrl-c, 再回答 y, 命令保存到临时文中; 而 vi 的相应操作是 :wq, 至少这个操作上 vi 要简洁些。 阅读全文 >>

Linux 输入输出重定向, &>file, 2>&1, 1>&2 等

我们无论是在写批处理还是 Linux 的 Shell 都常用到 >, >> 或 <,这是输入输出重定向。特别是 Linux 的 Shell 常见到  2>&1 这样的写法,这是在干什么呢?这里就来了解下 Linux 下的输入输出重定向的一些来龙去脉。

在 Linux 下几乎一切都号称是文件,标准输入、输出也不例外,它们是叫做 fd (File Descriptor) 文件描述符。这里我们关注三个东西

名称 代码 操作符 Java中表示 Linux 下文件描述符(Debian 为例)
标准输入(stdin) 0 < 或 << System.in /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout) 1 >, >>, 1> 或 1>> System.out /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr) 2 2> 或 2>> System.err /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

从以上表格我们可以理解 0, 1 和 2 分别是什么东西了,它们的输入源或输出目的地默认都是屏幕。

下面不作系统解释输入, 输出重定向的完整使用,只说明一些常见的例子: 阅读全文 >>

Bash 的常用语法,控制结构

最近玩弄 Jenkins 较多,构建服务器基本是 Mac OS 和 Linux,虽说有许多现成插件可用,但不敢不说 Execute Shell 这个东西都是即开即用,方便而灵活的。因此不断的要和 Shell 打交道,真正通用的的 Shell 自然是 Bash,在 Mac OS 下可发现自带了 zsh, ksh 和 tcsh,考虑到 Linux 还是 Bash 吧。

本人工作时用的是 Fish Shell,目前相当的脚本语言都可用来写 Shell 脚本,如 PHP, Ruby, Python, Perl,NodeJs 等,只是 Bash 的地位总难被替代,借句话说 Bash 的是拿来 “用” 的,而像 Ruby, Python 等做 Shell 是拿来 “编” 的,再就是 Bash 与 Linux 命令的亲缘性更强。

我也只会在实在用 Bash 太难于表达的时候才用其他脚本语言,如处理日期的运算,因 Mac OS 的 date 和 Linux 的 date 命令差异较大,不得已会选择有较强类型的 Ruby 等。

既然 Bash 要作为一个日常语言,那不妨作个备忘录,记录下那些常用的语法,控制结构。

1. if 条件语句 阅读全文 >>

Debian 6 上安装 Nginx+PHP+MySQL

正在使用亚马逊的 VPS,一年的小心翼翼的免费期,选择的是 Debian 6 32 位的系统,因搭建 WordPress 试图在上面安装 Nginx+PHP 的环境。看着在 Nginx 环境下多是使用 php-fpm,而不是 php-cgi,前者与后者的区别是在孤立的 php-cgi 之上又多了一个调度层。

一开始打算一步步纯手工打造,但在执行 apt-get install php-fpm 时总有不可逾越的依赖症,所以转而寻求更傻瓜的一键包安装方式。试过 LNMP,包太大,东西太过于齐全,把人太当傻瓜,虽然如此,我在用它安装时也有些慢,因为它也是采取的编译安装方式,针对本机应该有很好的优化。没装完我就中断了,下次有时间可以再试下。

正好在这期间看到了 Dvid Pennington 制作的 lowendscript lnmp 一键安装脚本,很省事,连安装  WordPress 也考虑到了,这里有介绍,比较详细 lowendscript:最省资源lnmp一键包。我只记录下我自己的安装过程,以备忘。 阅读全文 >>

Debian Linux VPS 为 WordPress 的系统准备

本人博客几经周折,最初 BPS,到独立的域名、空间,每一次也是为向更自由的管理迈进一步。现在终于搞了个 VPS,不过是在美国的,慢是慢了点,不过自己想怎么弄就怎么弄,现也无需经常性的找客服了。

VPS 是 768M RAM, 1536 的交换空间,40G硬盘空间,2500G带宽,两固定 IP,其实我只要一个就行了。服务器是在我所在的城市,所以管理起来应该要快些,至少感觉会有点。

基于系统资源和稳定性的考虑,我选择了 Debian 系统,Ubuntu 就是基于它的。在一个干净的系统上要搭建 WordPress 需要预先准备好 Apache2+PHP5+MySQL5 这样的环境,Apache2 是以 worker 模式运行,PHP 是 FastCGI 方式,Wordpress 连接 MySQL 可以本地 Socket 方式。下面是步骤:

一. 系统设置

配置时区,方便查看日志能对应上你当地的时间

#dpkg-reconfigure tzdata

选择相应的城市,这步会修改 /etc/timezone 和 /etc/localtime 文件 阅读全文 >>

Ubuntu 11.04 Unity最常用的31个快捷键

首先奉上的是键盘快捷键:

1、超级键(Win键) – 打开dash。

2、长按超级键 – 启动Launcher。

3、按住超级键,再按1,2,3等数字键 – 从Launcher打开一个应用程序,当你按住超级键时,每个应用程序图标上都会显示一个数字,按下对应的数字就会打开盖应用程序。

4、Alt+F1 – 将键盘焦点移到Launcher上,使用箭头键进行移动,按回车即可启动一个应用程序,按下右箭头键显示Quicklist。

5、Alt+F2 – 以特殊模式打开dash,以便运行任何命令。

6、超级键+A – 从Launcher打开应用程序窗口。 阅读全文 >>

Ubuntu 下为 Firefox 设置中文字体

默认风格下 Ubuntu 的 Firefox 浏览中文网页十分难看,字黑黑的不清楚,所以需要设定一下 Firefox 中的字体,幸好选择了中文语言包中系统中有文泉字体可用。网上找到了一篇 Firefox 中文字体的参考,如下:
1.编辑CSS文件,参考:

http://wiki.ubuntu.org.cn/Firefox_%E5%AD%97%E4%BD%93
(声明:本链接内容更适用于,在Firefox首选项中无法设定中文字体的情况!)

2.运行Firefox3.6.13

3.依次选择 Edit \ Preferences \ Content \ Advanced

我的选择:

Fonts for : User Defined

Proportional: Sans Serif      Size:18

Serif: WenQuanYi Bitmap Song 阅读全文 >>

Ubuntu Linux 中 Firefox 升级到 4.0 版

Ubuntu 11.04 系统已经是自带 Firefox 4.0 了,在之前的版本,像 10.10 及更早的 Ubuntu 中如果要升级到 4.0 的 Firefox 该如何做呢?利用 Firefox 的自动升级功能只会帮你下载到  firefox-4.0.1.tar.bz2 文件,剩下的事情还是要自己解压并找到 Firefox 的安装目录覆盖过去,这样看起来不怎么完美。

最好还是用下面的 apt-get 的方法,步骤如下:

sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa

sudo apt-get update

sudo apt-get install firefox-4.0

三步搞定,我试过,行的。再次打开你的 Firefox 看看现在的版本是不是最新的了。 阅读全文 >>

让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)

把 Windows 下的应用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中间表,一启动看到报错:

Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't retrieve trigger: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist]

用 MySQL 客户端连接到那个数据库,看到 qrtz_triggers 表确确实实是存在的,MySQL 也是安装在 Linux 下的。在大小写敏感的操作系统中,估摸着会不会是表名大小的因素呢? 于是把 qrtz_triggers 改为大写的 QRTZ_TRIGGERS,再次启动应用服务器,这时候出现的是: 阅读全文 >>

Linux VPS一键安装包集合再次更新

无名博客再次收集更新了一些Linux VPS下的一键安装包,一键安装包可以大大简化人工成本,节约时间,不仅方便了使用Linux VPS的小白,对于Linux老手来讲编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。这些一键安装包使用非常简单,傻瓜化的安装方 式,采用Shell编写,容易修改。这次添加了cnBeta网友留言里的一键安装包。 Web套装一键安装包
LNMP一键安装包
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、MySQL、PHP、phpMyAdmin)生产环境的Shell程序。
适用系统:CentOS/Debian/Ubuntu
安装方法:猛击这里 阅读全文 >>