Linux

在 GameShell 上玩仙剑奇侠传

Update (2019-10-08): 之前一个版本的命令完全不能用, 因为写文章的时候我已经基本把游戏都设置好了, 那些命令其实是我想出来觉得应该可以用的. 但我今天不小心把 GameShell 的文件系统弄坏了, 不得不重新刷系统 image, 才发现真的错的很离谱. 现在是更新后的版本, 在 v0.4 image 上亲测可用.

最近入手了一件新玩具 GameShell - 一款外形像 GameBoy, 系统基于 Linux 定制的高可玩性掌机.

GameShell 开箱时和高达模型一样, 零件需要自己用模型剪钳从板件上剪下来, 然后自己动手组装起来才能玩. 组装过程并不复杂, YouTube 上可以找到很多组装视频教程. 需要注意的是好多零件的水口又宽又厚, 不太好处理. 不过就算是我这种模型新手, 拼出来的成品看着质量也还过得去.

言归正传, GameShell 自带的系统 image 里已经装了 GBA, SFC 和 PS 的模拟器. 这些模拟器核心都是通过 RetroArch 加载的. RetroArch 是一个支持多种模拟器核心的前端框架, 功能十分强大. RetroArch 里自带的核心加载器可以直接从网上下载安装各种后端, 而这其中就包括 DOSBox. 当我看到这里, 脑海中闪过的第一个念头就是 – “那不是可以用来玩仙剑奇侠传了?!”

在开始之前, 请一定把 clockworkOS 更新到 v0.3 v0.4! 新版的系统支持 Lima 显卡驱动, 能显著提高系统性能, 降低 CPU 使用率和耗电. 刷机可以用 balenaEtcher, 过程十分傻瓜. 要先刷机再设置的原因是, 刷机之后, 整个 tf 卡的文件系统都会被覆盖, 之前所有的设置都得重新来过.

首先, 要在 RetroArch 里下载 DOSBox 的核心. 把 GameShell 连上 Wi-Fi 后, 从菜单里打开 RetroArch. 在菜单里先选择 Online Updater => Update Core Info Files 更新模拟器核心的索引文件. 然后回到 RetroArch 的主菜单, 选择 Load Core => Download Core…, 找到 DOS(DOSBox), 选择下载. DOSBox 核心就下载好了.

然后, 要去准备一份仙剑奇侠传 DOS 版的文件. 这里请大家自行 Google. 这里假设游戏在本地的路径是 ./Pal95.

最后, 要把仙剑奇侠传复制到 GameShell 里, 并创建启动游戏的菜单项. 回到 GameShell 的目录里, 打开 TinyCloud. 这里可以看到 GameShell 在本地局域网里的 IP 地址(后面的命令里假设这里的 IP 地址是 192.168.1.123), 和GameShell 默认用户的用户名和密码 (都是 cpi).

先把仙剑奇侠传 DOS 版复制到 GameShell 的系统里:

ssh cpi@192.168.1.123 'mkdir -p ~/games/DOSBOX/Pal95/' && scp -r ./Pal95 cpi@192.168.1.123:'~/games/DOSBOX/'

再创建一个启动游戏的菜单项, 并复制到对应的目录下:

mkdir -p ~/apps/Menu/21_Indie\\ Games/20_Pal && echo \'#!/bin/bash\nretroarch --verbose -L ~/.config/retroarch/cores/dosbox_libretro.so ~/games/DOSBOX/Pal95/PAL!.EXE\' > ~/apps/Menu/21_Indie\\ Games/20_Pal/Pal.sh'

回到 GameShell 主菜单, 选择”重载菜单”, 在主菜单重新加载之后, 就可以从 Indie Game 里找到 “Pal” 并进入仙剑奇侠传了. 进入游戏前, 记得去 GameShell 的系统设置里, 选择 Lima 作为 GPU 驱动.

至此, 应该已经可以在 GameShell 里加载仙剑奇侠传了. 但我发现在默认的设置下, 动画的部分会有卡顿的感觉, 模拟器也会时不时死机. 解决的办法是在主机上按 Shift + MENU 键进入 RetroArch 的菜单, 进入 Options => CPU cycle multipler, 把默认的 100 改成 1000, 再把 CPU cycles 改成 3. 然后在同一级菜单里选择 Save Game-options file 把设置保存下来.

最后, 在 RetroArch 的菜单里选择 Controls, 可以调整 GameShell 按键如何映射到游戏里的按键. 要调整的是先把 User 1 Device Type 设置成 Keyboard + Mouse, 把方向键映射到对应的键盘方向键, A 键映射到 Space, B 键映射到 Escape, 就可以实现方向键走路, A 键确定, B 键返回的基本设定了. 同样记得在设置完成后选择 Save Game Remap File 把设置文件保存下来. 下面是我设置好之后的 remap file 内容, 你也可以选择把它传到 GameShell 上去, 在 RetroArch 里直接加载.

input_libretro_device_p1 = "3"
input_player1_key_a = "32"
input_player1_key_b = "27"
input_player1_key_down = "274"
input_player1_key_left = "276"
input_player1_key_right = "275"
input_player1_key_up = "273"

好久没写过 blog 了, 如果整个过程中有什么问题, 欢迎留言提问.

apt-log: 找回误删的软件包

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

今天想在 Linux 里装上 PPLive 看 WDC 的比赛, 装了几个依赖的 lib 还是不能用. 嫌麻烦不折腾了, 就顺手把刚装的几个 lib 包删掉. 正删着发现不对劲了, 怎么把 gnome-do, workrave, emacs, AUCTeX 都删了?! 想也没想, 就把终端关了. 这时候才想起来关了终端也没用, apt-get 是 root 的进程. 找到 pid, 果断 kill.

但删除已经进行到一半被退出, 也不知道到底删了多少去了. 用 sudo dpkg --configure -a 恢复更新的进程. 果然满目疮痍, 连 nautilus 都没了.. 只有找 apt 的日志来恢复了.

TeX Live 2008 安装 & 配置中文支持 (下)

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

居然拖了两个多月都没把这篇文章写完, 但十月份之前总算交出了它的下半篇.

上次说到把 XeLaTeX 安装好了. 但默认的设置对中英文混排支持还不够好, 不能对中文和英文分别设置字体, 也不能很好地处理中文和英文之间的空白距离. 我们可以安装孙文昌老师开发的 xeCJK 宏包来解决这个问题.

xeCJK 的宏包可以在这里下载到. 这个不是最新版的 xeCJK, 因为最新版的 xeCJK 需要 xetex 0.9995.0 之后的版本(TeX Live 2009 或 MiKTeX 2.8). 而且新版的 xeCJK 已经被收入 ctex-kit 项目, 将随 TeX Live 2009 一起分发. 就是说, 等到 TeX Live 2009 Release 的时候, 它对中文的支持会比现在好很多.

把刚刚下载到的压缩包解压到 ~/.texlive2008/texmf/tex/xelatex/, 然后用mktexlsr 更新. (这里我不是很了解, 只是照葫芦画瓢, 没自己看过文档, 有什么问题还请诸位老师指正)

unzip xecjk-2_2_15.zip -d ~/.texlive2008/texmf/tex/xelatex/
cd ~/.texlive2008/texmf
mktexlsr .

在刚才下载的压缩包里的 doc 文件夹里有 xeCJK 的完整文档, 我这里给出一个我使用的 preamble 模板.

%# -*- coding: utf-8 -*-
\documentclass[a4paper]{article}

\usepackage[slantfont, boldfont, CJKtextspaces,
CJKmathspaces]{xeCJK} % 允许斜体和粗体
\setCJKmainfont[BoldFont={Adobe Heiti Std}, ItalicFont={Adobe Kaiti
  Std}]{Adobe Song Std} % 设置缺省中文字体
\setCJKmonofont{Adobe Fangsong Std} % 设置等宽字体

\setmainfont[Mapping=tex-text]{Liberation
  Serif} % 英文衬线字体
\setsansfont{Liberation Sans} % 英文无衬线字体
\setmonofont{Bitstream Vera Sans Mono} % 英文等宽字体
\punctstyle{kaiming} % 开明式标点格式
  
\usepackage{indentfirst} % 首段缩进
\begin{document}
  
{默认字体}   {\bfseries 粗体效果}   {\itshape 斜体效果}

这是Ai.Freedom的Blog的第101篇日志。

居然拖了两个多月都没把这篇文章写完,但十月份之前总算交出了它的下半篇。

上次说到把 XeLaTeX 安装好了。但默认的设置对中英文混排支持还不够好,不能
对中文和英文分别设置字体,也不能很好地处理中文和英文之间的空白距离。我
们可以安装孙文昌老师开发的 xeCJK 宏包来解决这个问题。

\end{document}

但这里给出的代码你很可能还无法编译, 因为你没有安装 Adobe 的字体. 这里用到的四个字体可以在这里下载到. 其中 Adobe Song Std 和 Adobe Heiti Std 是随 Adobe Reader 一起分发的, 根据 Lisence 可以免费使用, 关于另外两个字体的版权我还不是很清楚.

把它们下载回来了之后解压到 ~/.fonts 目录中. 然后执行

sudo fc-cache -fv

更新字体缓存. 好了, 把刚才的代码保存到 test.tex 后用

xelatex test.tex

编译就可以得到 test.pdf 了.

在下载的 xeCJK 的压缩包里, source 目录下有一个脚本用来为特定的字体生成标点符号. 按照 README 里的提示, 将 xecjksetpunct-main.tex 里用于 Windows 平台的部分注释掉, 把 Linux 里用到的语句的注释去掉, 然后把下面的字体设置成自己用的字体, 保存. 我们这里用的是 TeX Live, 所以执行

xelatex --shell-escape xecjksetpunct-main

然后把生成的 xeCJKpunct.spa 文件移动到 .texlive2008/texmf-var/tex/xelatex/xecjk/tex/xelatex/xecjk 目录下, 覆盖默认的 xeCJKpunct.spa 文件. 最后执行

texhash .

好了, 我们的配置总算是告一段落了. 关于 xeCJK 的更多详细的设置选项, 请查询它的文档. 学习 LaTeX 文档的排版, 有这样一本 “The not so Short Introduction to LaTeX“, 这个链接是中文版的, 还有 CTeX 论坛的版主 milksea 推荐的这个列表. 学习 LaTeX 的资料真的很多, 只要你愿意动手.

Linux Tricks (1)

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

之前写过一段时间的 Linux 日记, 后来没有继续更新了. 但我发现把在使用 Linux 的过程中解决某些问题的过程用文字记录下来是很有用的! 比如前些天我的同学问我 Mplayer 的 RMVB 解码器是哪个包, 我却记不起来了. 但我记得我写过一篇日志记录了我解决这个问题的过程, 于是他的问题也顺利解决了.

我一直认为学习的过程就是”不断遇到问题, 并寻求解决问题的方法”的过程. 把这个过程记录下来, 就为自己再次重温这个过程留下了线索. 这也就是笔记的重要性. 我在上课时很少做笔记, 但阅读有价值的书是一定要做笔记的. 计划等我有一大段空闲时间了就去整理我的笔记, 把他们都整理成 TeX 文件或者 Muse 文件.

现在这个 “Linux Tricks” 系列, 每一篇都不会太长, 内容比较杂乱, 但涉及的方面会很多. 很多的 Trick 都是从论坛或者 Blog 上看来的, 把它们集中在一起, 既方便了我日后查看, 又传播了 Linux 的文化.

今天的两个Tricks分别从徐宥TualatriX 处学到, 感谢他们的分享.

1. 史上最强 PS1

这里说的 PS1 不是 Sony 的 Play Station I, 是 Bash Shell 的提示字符串(Prompt String). 就是下图中 “$” 字符前的那些信息.

Snapshot of the shell with the PS1 above

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi

if [ $color_prompt=yes ]; then
    PS1='`a=$?;if [ $a -ne 0 ]; then echo -n -e "\[\e[01;32;41m\]{$a}"; fi`\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\W`[[ -d .git ]] && echo -n -e "\[\e[33;40m\](branch:$(git branch | sed -e "/^ /d" -e "s/* \(.*\)/\1/"))\[\033[01;32m\]\[\e[00m\]"`\[\033[01;34m\] $ \[\e[00m\]'
    # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='`a=$?;if [ $a -ne 0 ]; then echo -n -e "{$a}"; fi`\u@\h \W`[[ -d .git ]] && echo -n -e "(branch:$(git branch | sed -e "/^ /d" -e "s/* \(.*\)/\1/"))"` $ '
    # PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

这个 PS1 有两个功能: 一是高亮显示所有非0返回值, 如图所示; 二是在 Git 管理的目录下显示当前的 Git branch. 最近因为在做C语言课程设计, 用了 Git 来管理我的代码. 所以这个显示分支功能我太喜欢了. (虽然这个项目没有分支的必要..)

将上面的代码加入你的 ~/.bashrc 文件.

如果你使用 Emacs 的 Shell-mode, 那么你需要把 ANSI 彩色字符支持打开.

将下面的代码加入你的.emacs文件.

(ansi-color-for-comint-mode-on)

2. 一行语句的HTTP文件服务器

python -m SimpleHTTPServer

可以将当前目录设为一个在8000端口开放的http服务器的根目录. 在互联网中临时共享文件的时候是多么地方便阿!

徐宥说很多哥们还不知道 “wget -c” 能断点续传, 是这样么?

TeX Live 2008 安装 & 配置中文支持 (上)

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

Knuth 爷爷的 TeX 系统堪称完美! 但他在发明它的时候没有考虑到对英文之外的语言的支持, 因此用 LaTeX 给中文排版一直有些麻烦.

一年前, 我写过一篇日志介绍 TeX Live 2007 的中文支持配置. 但那个还是用 CJK 实现对中文的支持, 字体的配置比较麻烦. 而现在我要推荐的是 XeTeX, 它对中文的支持比 LaTeX + CJK 包要好很多. 这个解决方案是基于 XeLaTeX + xeCJK 实现对中文的支持. 其实 XeLaTeX 支持中文排版, 但它对中英文混排的支持不是很好. 它不能为中文英文分别设置字体, 也不能很好地控制中英文混排时的间距. 这些都是靠 xeCJK 这个宏包完成的. 去年的时候 LeafDuo 就跟我说 XeTeX 的中文支持很好, 但当时因为懒惰, 一直没有配置起来. 直到不久前写C语言实验报告, 才有了动力把 XeTeX 配置起来.

这篇日志主要记录的是我在 Ubuntu 中安装 TeX Live 2008 及配置中文支持的过程, 在 Windows 中安装与配置的过程与本文有些区别.

这一篇讲的是下载安装 TeX Live 2008, 下一篇讲的是将是 Linux 字体安装和 xeCJK 的配置.

Ubuntu 的源里就有 XeTeX 了, 而这里不使用源里的那个 XeTeX 是因为它的版本比较旧, 之后安装中文排版支持宏包会遇到一些麻烦.

TeX Live 可以直接在线安装, 也可以把光盘镜像下载回本地安装. 考虑到网速等问题, 我是下载镜像到本地之后安装的.

TeX Live 的镜像可以在 TeX Live 的主页下载到. 在中国, 使用 CTeX 的镜像下载会比较快.

1. 如果要使用图形界面安装, 需要先安装 perl-tk; 解压 lzma 格式的压缩包需要安装 lzma.

在 Ubuntu 的源里有这两个包, 可以使用 apt-get 安装.

sudo apt-get install perl-tk p7zip

2. 进入存下载的镜像的目录, 将压缩包解开.

注意, 这一步需要有 4-5G 的空余磁盘空间. 解压后的光盘镜像似乎有 2-3G.

lzma -d texlive2008.iso.lzma

3. 挂载刚刚解压出的 iso 镜像.

sudo mount -o loop texlive2008-20080822.iso /mnt

4. 执行安装程序

sudo /mnt/install-tl --gui

这时会弹出安装程序的窗口.

将最后一项 “Create symlinks in system directories” 勾上, 让它自动创建符号链接.

我几乎把所有的包都装上了, 如果你的硬盘空间足够, 也就不需要做什么改动了. 但可以在第四项 “Language Collections” 中去掉不需要的语言包, 节省几百兆的空间.

配置完后点击 “Install TeX Live“, 等上几分钟就装好了.

现在 XeLaTeX 就已经可以处理中文了, 不信你试试编译这个 tex 文档.

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Adobe Song Std}
\begin{document}
  Ai.Freedom的Blog\\
  aifreedom.com
\end{document}

这里用的 “Adobe Song Std” 字体需要你从 Adobe 下载后安装. 在 Linux 中安装字体的方法会在下一篇中介绍.

编译的命令用 xelatex. 这个文档是可以正常编译的, 但用宋体显示英文字体太丑了, 所以就需要 xeCJK 告诉 XeLaTeX 哪些字符该用哪些字体. xeCJK 的配置和简单的使用也会在下一篇中介绍.

漫画 – 0xBABAF000L

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com, 所有引用图片版权由作者Laurent Grégoire保留

上次在介绍Emacs时, 我展示过一幅关于Emacs的四格漫画. 它出自一个与Unix Geek文化相关的系列漫画. 这个系列一共有20幅, 名字叫做0xBABAF000L, 作者是法国人, 叫做Laurent Grégoire. Link: http://tnerual.eriogerg.free.fr/0xBABAF000L/index.html

我很喜欢这种主题的笑话和漫画, 所以在这里也把它们介绍给你.

出场人物有六个, 分别是Debby, GNUT, Drake, The Dukes, Foxxy和The Bills. 它们有着不同的身份和各自的象征.

Debby

她是我们的女主角, 虽然她并不适合这个角色. 但我们需要一个主角,而她不幸地抽到了这个签. 她整天做着有趣却没用的, 貌似很有希望却只是不幸的事.

GNUT

他什么都知道, 却什么也不说. 是的, GNUT沉默寡言. 对他来说, 说话完全是浪费, 而浪费资源的事是绝不能做的. 当他有话要说时, 他总是讲得很隐晦. 还有, 他是Debby最好的朋友.

Drake

他什么都不知道, 但总说个不停. 他曾是法国贵族, 也是个蹩脚的魔术师. 人很死板, 而且做事常常心不在焉. 幸亏他还有所剩无几魔力, 才能给出些合理的建议, 但那也只是在他成功地想起咒语的时候.

The Dukes

它们数量众多, 也很讨人厌. 嗯, 它们大多数是这样的. 而且, 你必须时刻留意它们, 否则它们会把这里弄得一团糟. 它们也相当擅长浪费时间. 但撇开这一切, 它们还是很可爱的, 而且很乐于助人(前提是你准确地告诉它们, 你想要它们做什么).

Foxxy

它是只小狐狸! 每个人都认识它! 它能以惊人的速度取回你想要的一切. 有时, 如果你不管它, 它会在你意想不到的地方四处晃悠.

The Bills

他们的数量数不清, 每个都完全一样(虽然有时你能通过他们的衬衫的颜色分辨他们). 他们虽然很呆板, 但很恭敬, 也乐于助人. 他们的默认设置让人不爽, 总是把问题重复问你至少两遍, 却从不理会你的回答.

好了, 再来看几幅有趣的漫画吧, 点击图片放大.

Unsigned Minus One

Universe Word Size

这两幅是我最喜欢的, 很有趣的trick, 很Geek. 但后一幅的第一格里有个小Bug.

Windows Security

讽刺Windows的安全措施..

p2p

p2p = peer 2 peer? no, poor 2 pathetic, 穷人和值得同情的人的网络.

X Server

这幅漫画和系列中前面的几幅是连续的. 之前Drake开了一个ssh tunnel, Debby把一个RPM包扔进去的时候自己也掉进去了, 结果Drake和Foxxy好不容易找到Debby了, 却.. 怪只能怪Drake技艺不精, 开ssh的时候没加-X参数.

想看更多的漫画, 还是到作者的网站上看吧. 作者只允许我选一些我最喜欢的放上来, 可我每张都喜欢怎么办?

Update: 第13幅中, $$\exists f\in\mathbb{P}^{[\mathbb{R}]}_{\infty},f(\sqrt{\pi})=0$$说的是什么? 为什么表示”化圆为方”的问题的?

用最简单的方法让TeX Live支持中文

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

让TeX支持中文不是一件容易的事, 但我终于找到了一个简单的办法(应该说是傻瓜办法).

安装TeX Live和CJK. 在源里选择texlive, latex-cjk-chinese(如果需要日文和韩文支持, 那么选择latex-cjk-all)安装.

然后下载”YueWang-zhfonts-final_1.01.tar.bz2″, 这是YueWang制作的TeX Live 2007使用的字体包, 有207M. 教育网里可以在这里下载, 教育网外可以在这里下载. 顺便分享一个很好用的FTP搜索引擎, http://run.hit.edu.cn/.

然后将解压后文件夹内的两个文件夹移动到你的Home目录里, 并在目录名前分别加 ‘.'(点号). 好了, 大功告成. 但根据安装说明 “如果不行, 请把~/.texlive2007/texmf-var/fonts/map/dvips中的所有map給enable了.”, 我不是很了解这些, 等我进一步了解后再作解释吧.

编译一个tex文件来试试效果吧, 下面是tex文件的样例.

\documentclass{article}
\usepackage{<cjkpackage>}
\begin{document}
\begin{CJK}{<encoding>}{<fontname>}
你好!
\end{CJK}
\end{document}

其中<cjkpackage>可以是CJKutf8(源文件用UTF8编码)也可以是CJK(源文件用GBK编码), <encoding>是GBK或UTF8, 和上面的<cjkpackage>是对应的, 也就是是CJK那么必须是GBK. 而如果是CJKutf8,则就是UTF8. <fontname>就好说了,就是song, hei, fs,kai等等.

我的Linux日记[五]: bash的小技巧

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

  1. 我的Linux日记[一]: 让Ubuntu完全支持中文
  2. 我的Linux日记[二]: 重启后设备无法正常工作
  3. 我的Linux日记[三]: 系统为何无法启动
  4. 我的Linux日记[四]: 在Linux下播放多媒体文件
  5. 我的Linux日记[五]: bash的小技巧

bash是Ubuntu的默认终端, 也是大部分Linux发行版和Mac OS X的默认终端. 这篇日志记录了我在网上找到的和自己在使用中发现的一些使用技巧.

首先是一些快捷键
up & down 依次翻阅曾输入过的命令
ctrl + r 搜索曾输入过的命令, 但我不常用这个, 因为我有更方便的命令
ctrl + a 光标移动到行首
ctrl + e 光标移动到行尾, 这两个快捷键是Emacs风格的
ctrl + u 剪切光标之前的内容
ctrl + k 与上一个相反, 剪切光标之后的内容
ctrl + y 粘贴以上用以上两个快捷键剪切的内容
ctrl + w 删除光标左边的内容
ctrl + l 清屏, 和clear命令效果一样

我再来说说上面提到的更方便的搜索曾输入过的命令的方法. 在bash中输入过的命令都会保存在~/.bash_history里, 搜索这个文件就能搜索输入过的命令了. 在这里我们使用egrep这个支持正则表达式匹配的程序搜索.

cat ~/.bash_history | egrep REGEXP

这个命令可以显示匹配”REGEXP”的, 曾输入过的命令. 而如果使用ctrl + r搜索, 可能要按很多次ctrl + r才能找到需要的命令.

这个命令里包含了一个”|”符号, 这是在使用bash支持的”管道”功能. 管道, 就像是将程序输出的数据流装进了管子, 让它流向我们指定的地方(下一个程序). 比如这里, 我先将~/.bash_history的内容读取出来, 将它导入egrep, 让egrep用我输入的REGEXP来匹配这些数据. 再看一个用到管道功能的命令:

ls -l | more

“ls -l” 显示当前目录的文件和子文件夹的详细信息, “more” 可以让它分页显示. 是不是很方便?

bash里还有一个很有用的功能是”重定向”, 它可以重定向程序的标准输入输出和标准错误输出.

例如:

ls -l > ls.txt

和上一个命令差不多, 不过这次是把 “ls -l” 显示出的内容写入了 “ls.txt” 这个文件里. 如果把上面的 “>” 换成 “>>” , 就变成了把那些显示的内容添加到 “ls.txt” 的末尾, 而不是覆盖这个文件.

好了, 回到刚才说的那个搜索输入过的命令的命令(绕口令..). 我仍然嫌每次写这么长的命令太麻烦, 于是我编辑了一下”~/.bashrc”这个文件. 在它里面添加了

alias shis='cat ~/.bash_history | egrep'

这样一行. 之后我想使用上面的命令就只需要用”shis”这个命令加上我要搜索的正则表达式就好了.

上面提到的”~/.bashrc”文件帮了我很大的忙, 因为它是你打开bash时会被调用的一个文件. 在里面写上一些常用命令的缩写, 在调用的时候就方便很多. 我的”.bashrc”里有这些缩写, 一部分是系统自带了的, 一部分是我在网上看到的.

Bash语言: My .bashrc
# enable color support of ls and also add handy aliases
# 启用ls和grep等命令的自动高亮功能
if [ “$TERM” != “dumb” ] &amp;&amp; [ -x /usr/bin/dircolors ]; then
eval “` dircolors -b`”
  alias ls=‘ ls –color=auto’
  alias dir=‘ ls –color=auto –format=vertical’
  alias vdir=‘ ls –color=auto –format=long’

  alias grep=‘ grep –color=auto’
  alias fgrep=‘ fgrep –color=auto’
  alias egrep=‘ egrep –color=auto’
fi

# some more ls aliases
# 很方便的, 而且很容易理解吧
alias ll=‘ls -l’
alias la=‘ls -A’
alias l=‘ls -CF’

# my aliases
alias rm=‘rm -i’ # 删除前需要确认, 防止误删
alias ..=‘cd ..’
alias server_name=‘ssh -v -l username server’ # 对常用ssh的人很有用, username和server请自己替换
alias shis=‘cat ~/.bash_history | egrep’ # 刚刚说过的

这里的代码高亮用到了代码发芽网的功能, 比WP的<code>强大, 但代码长度也要长些.

好了, 再额外提一个我知道的命令.

find . -perm /u+x -type f -exec rm {} \;

删除当前目录里所有的可执行文件. 在我清理存放我做题的文件夹时很有用, 因为我会编译一堆没有扩展名的可执行文件, 但删除时却也可以用一条命令全删除, 很好吧?

我的Linux日记[四]: 在Linux下播放多媒体文件

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

  1. 我的Linux日记[一]: 让Ubuntu完全支持中文
  2. 我的Linux日记[二]: 重启后设备无法正常工作
  3. 我的Linux日记[三]: 系统为何无法启动
  4. 我的Linux日记[四]: 在Linux下播放多媒体文件
  5. 我的Linux日记[五]: bash的小技巧

在Linux里工作累了, 你可能会想听听歌, 看看电影. Linux对多媒体文件的支持怎么样呢?

我觉得已经不错了, 至少能满足我的需求了.

我没有钱去购买好的显卡, 大容量的硬盘, 租用高速的网线, 或者购置 BD 光驱. 因此我不看高清视频. 如果你需要在 Linux 下欣赏高清视频, 我无法给你提供任何帮助. 我只需要听听歌, 看看 DVD, 偶尔从互联网上下载一些 DVD-RIP.

媒体播放器, 我推荐使用 SMPlayer. 这是MPlayer的一个外壳, SMPlayer 可以设置界面的语言(中文语言包里有部分菜单未汉化), 界面风格. 当然, 作为一个前端程序, 这是它该有的功能. MPlayer 之所以强大, 是因为它拥有 w32codecs 这样一个强大的解码器. 它可以 WMV, RM, RMVB, DivX 等等很多编码格式. 至于播放mp3等格式的解码器, 因为我之前用 Totem 播放 mp3 的时候, 系统自动从源中更新了解码器, 但我不清楚MPlayer是不是也调用了这个解码器. 希望清楚的同学告诉我一下.

你可以从 apt 源中获取 SMPlayer, 可以在这里找到最新的 w32codecs 的下载地址, 如果你和我一样在使用 ubuntu, 请下载 deb 包后安装.

但此时, 你可能还无法播放网页里嵌入的音频和视频文件. 没关系, 只需要在 apt 的源里找到一个叫”mozilla-mplayer”的程序安装上.

sudo apt-get install smplayer mozilla-mplayer

如果你使用 Firefox, 你可能会需要一个叫做 “MediaWrap” 的扩展来让你的 Firefox 支持更多的嵌入式多媒体文件. 它能够将 ActiveX 控件方式的网页内嵌媒体转换成 Firefox 能够支持的 Plugin 方式, 从而使 Firefox 也能够象 IE 一样正常播放它们. 你可以在这里下载到这个 Firefox 扩展.

但我发现SMPlayer虽然能支持 ape 解码, 但不支持使用cue分轨. 于是我安装了 wine 1.0, wine 了 foobar 2000 来播放 ape 文件. 我发现听歌还是foobar用着比较顺手! 我会在这个系列的下一篇日志中介绍 wine 的安装与使用(剧透: 在我配置 wine 的过程中发生了让我莫名其妙的事..). 这个下一篇不会让你等太久的!

下面是一些截图.

1. SMPlayer 的界面

Snapshot of SMPlyer

2. wine 出来的 foobar

foobar in wine