--EOF--
December 2012 Archives
zz from
http://mintelong.iteye.com/blog/480132
http://lnote.blogbus.com/logs/106238865.html
dpkg命令解析
dpkg是Debian的中级软件包管理器,类似RPM.
dpkg是Debian软件包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包.也是Debian系统中众多软件包管理工具的后端.有关dpkg的更多介绍参阅:http://www.dpkg.org
系统中所有packages的信息都在/var/lib/dpkg/目录下,其中子目录"/var/lib/dpkg/info"用于保存各个软件包的配置文件列表.
.conffiles 记录了软件包的配置文件列表
.list 保存软件包中的文件列表,用户可以从.list的信息中找到软件包中文件的具体安装位置.
.md5sums 记录了软件包的md5信息,这个信息是用来进行包验证的.
.prerm 脚本在Debian报解包之前运行,主要作用是停止作用于即将升级的软件包的服务,直到软件包安装或升级完成.
.postinst脚本是完成Debian包解开之后的配置工作,通常用于执行所安装软件包相关命令和服务重新启动.
/var/lib/dpkg/available文件的内容是软件包的描述信息,该软件包括当前系统所使用的Debian安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
dpkg
查询以安装的信息
查询当前系统所有已安装的deb包
dpkg -l 命令用于查询当前系统所有以安装的deb包的信息.,通过less和grep可以执行更复杂的查询工作.
例如查找跟vim有关的软件包,dpkg -l |grep -ivim
(如发现iU 表示软件包未安装成功,ii表示安装成功)
查看已安装软件包的详细情况
dpkg -s 命令查看软件包的详细情况,包括版本,依赖之类的
查询系统中所安装软件包所安装的文件
dpkg -L 命令用于查询系统中所安装软件包的安装的文件安装到系统的位置和安装了那些.
小提示: 如何可以看软件包装到哪个地方?
用apt-get install *
如何可以看软件包装到哪个地方?
dpkg -L package-name|more
查询系统中某个文件属于那个软件包
dpkg -S 命令用于了解当前的软件属于那个软件包
查询未安装的信息
查询未安装软件包详细信息
dpkg -I 命令用于查看未安装软件包的详细信息,以便了解该软件包是否需要安装.
查询deb包文件中所包含的文件
dpkg -c 显示未安装deb软件包所包含的文件列表,以及安装位置
安装软件包
安装deb软件包
dpkg -i 手工安装deb包到系统中,不过有时会存在Dpends关系,建议使用apt-get 来安装.
如果通过dpkg -i安装软件后由于Dpends关系没有安装成功,可通 过apt-get -f install解决
解决dpkg -i 安装deb包出现Dpends问题
Java代码
apt-get -f install 解决Dpends问题.
例如:dpkg -i lftp_3.1.3-1_i386.deb
Selecting previously deselected package lftp.
(Reading database ... 20654 files and directories currently installed.)
unpacking lftp (from lftp_3.1.3-1_i386.deb)...
dpkg:dependency problems prevent configuration of lftp:
ftp depends on libexpat1 (<=1.95.8);however
dpkg : error processing lftp (--install)
dependency problems -leaving unconfigured
Errors were encountered while processing:
lftp
//lftp软件包安装失败
dpkg -l |grep lftp
iU lftp 3.1.3-1 Sophisticated
command-line FTP/HTTP client p
//"dpkg -l" 查询信息表示lftp软件包未安装成功
(iU表示未安装成功,ii表示安装成功)
使用apt-get -f install解决
卸载deb软件包
卸载deb包
dpkg -r用于卸载指定的软件包,该命令只卸载软件包安装到系统中的文件,而不去删除软件包的配置文件,因此不是完全意义上的卸载.但是软件包保存在系统中,可以提供给以后在安装软件包时使用.
例如:dpkg -r prozilla 移除后再用dpkg -l |grep prozilla 查看
会看到rc proc 1.3.6-3woody3 multi-thraded download accelerator
表示软件包已经被卸载,但配置文件仍在"rc"带表配置文件仍在.
卸载软件包并清除配置文件
dpkg -P 用于卸载软件包同时也删除配置文件,dpkg -P 不能解决Dpends问题,建议卸载时使用apt-get操作
重新配置软件包
对于Debian系统中的众多软件包(尤其是系统和服务器软件包)来说,在第一次安装该软件包时候会显示对话框窗口,提示用户输入必要的配置信息.当用户需要再次对软件包配置的时候,可以使用dpkg-reconfigure来对指定的软件包进行配置.
比如dpkg-reconfigure locales
用于配置语言
alien包转换工具
如果我们有很喜欢的RPM包,而又没有deb版本
怎么办~?
可以同过alien来转换或者直接安装,这个小家伙可是个很方便的东西!
基本命令如下:
首先通过apt-get install alien来安装.
然后alien -i name-of-the-pakage.rpm /*用来直接安装rpm包
alien -d , --to-deb /*Make debian packages,This is the default
例:alien -d package.rpm
alien -r , --to-rpm /*Make rpm packages
例:alien -r package.deb
alien -p , --to-pkg /*Make Solaris pkg packages
alien --to-slp /*Make slp packages
alien -t , --to-tgz /*Make tgz packages
alien -T 检测
alien --patch=patch 设置patch
Java代码
sudo dpkg --configure -a
一、APT的使用(Ubuntu Linux软件包管理工具一)
apt-cache search # ------(package 搜索包)
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)
sudo apt-get install # ------(package 安装包)
sudo apt-get install # -----(package - - reinstall 重新安装包)
sudo apt-get -f install # -----(强制安装?#"-f = --fix-missing"当是修复安
装吧...)
sudo apt-get remove #-----(package 删除包)
sudo apt-get remove - - purge # ------(package 删除包,包括删除配置文件
等)
sudo apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
sudo apt-get update #------更新源
sudo apt-get upgrade #------更新已安装的包
sudo apt-get dist-upgrade # ---------升级系统
sudo apt-get dselect-upgrade #------使用 dselect 升级
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...)
sudo apt-get build-dep # ------(package 安装相关的编译环境)
apt-get source #------(package 下载该包的源代码)
sudo apt-get clean && sudo apt-get autoclean # --------清理下载文件的存
档 && 只清理过时的包
sudo apt-get check #-------检查是否有损坏的依赖
apt-get install 的用法
apt-get install <package>
下载 <package> 以及所有倚赖的包裹,同时进行包裹的安装或升级.如果某个包裹被设置了 hold (停止标志,就会被搁在一边(即不会被升级).更多 hold 细节请看下面.
apt-get remove [--purge] <package>
移除 <package> 以及任何倚赖这个包裹的其它包裹.--purge 指明这个包裹应该被完全清除 (purged) ,更多信息请看 dpkg -P .
apt-get update
升级来自 Debian 镜像的包裹列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了
/etc/apt/sources.list 后,必须执行.
apt-get upgrade [-u]
升级所以已经安装的包裹为最新可用版本.不会安装新的或移除老的包裹.如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold .apt-get update 不会升级被标志为 hold 的包裹 (这个也就是 hold 的意思).请看下文如何手动设置包裹为 hold .我建议同时使用 '-u' 选项,因为这样你就能看到哪些包裹将会被升级.
apt-get dist-upgrade [-u]
和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包裹来满足倚赖关系.因此具有一定的危险性.
apt-cache search <pattern>
搜索满足 <pattern> 的包裹和描述.
apt-cache show <package>
显示 <package> 的完整的描述.
apt-cache showpkg <package>
显示 <package> 许多细节,以及和其它包裹的关系.
dselect, console-apt, aptitude, gnome-apt,是APT 的几个图形前端(其中一些在使用前得先安装).这里 dselect 无疑是最强大的,也是最古老,最难驾驭.
-------------------------------------
二、 DPKG的 用法(Ubuntu Linux软件包管理工具二)
dpkg -i <package.deb>
安装一个 Debian 包裹文件;如你手动下载的文件.
dpkg -c <package.deb>
列出 <package.deb> 的内容.
dpkg -I <package.deb>
从 <package.deb> 中提取包裹信息.
dpkg -r <package>
移除一个已安装的包裹.
dpkg -P <package>
完全清除一个已安装的包裹.和 remove 不同的是, remove 只是删掉数据和可执行
文件, purge 另外还删除所有的配制文件.
dpkg -L <package>
列出 <package> 安装的所有文件清单.同时请看 dpkg -c 来检查一个 .deb 文件
的内容.
dpkg -s <package>
显示已安装包裹的信息.同时请看 apt-cache 显示 Debian 存档中的包裹信息,以
及 dpkg -I 来显示从一个
.deb 文件中提取的包裹信息.
dpkg-reconfigure <package>
重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提
供了一个统一的配制界面).你能够重新配制 debconf 它本身,如你想改变它的前端
或提问的优先权.例如,重新配制 debconf ,使用一个 dialog 前端,简单运行:
dpkg-reconfigure --frontend=dialog debconf (如果你安装时选错了,这里可以
改回来哟
echo "<package> hold" | dpkg --set-selections
设置 <package> 的状态为 hlod (命令行方式)
dpkg --get-selections "<package>"
取的 <package> 的当前状态 (命令行方式)
支持通配符,如:
Debian:~# dpkg --get-selections *wine*
备注:
-------------------------------------例如:
大家现在用的都是 gaim-0.58 + QQ-plugin,为了防止 gaim 被升级,我们可以采用
如下方法:
方法一:
Debian:~# echo "gaim hold" | dpkg --set-selections
然后用下面命令检查一下:
Debian:~# dpkg --get-selections "gaim"
gaim hold
现在的状态标志是 hold,就不能被升级了.
如果想恢复怎么办呢?
Debian:~# echo "gaim install" | dpkg --set-selections
Debian:~# dpkg --get-selections "gaim"
gaim install
这时状态标志又被重置为 install,可以继续升级了.
同志们会问,哪个这些状态标志都写在哪个文件中呢?
在 /var/lib/dpkg/status 里,你也可以通过修改这个文件实现 hold.
有时你会发现有的软件状态标志是 purge,不要奇怪.
如:事先已经安装了 amsn, 然后把它卸了.
apt-get remove --purge amsn
那么状态标志就从 install 变成 purge.
方法二:
在/etc/apt 下手动建一个 preferences 文件
内容:
Package: gaim
Pin: version 0.58*
保存
更详细内容请看:
http://linuxsir.com/bbs/showthread....&threadid=22601
dpkg -S <file>
在包裹数据库中查找 <file>,并告诉你哪个包裹包含了这个文件.(注:查找的是事
先已经安装的包裹)
从源码建立deb packages
apt-get source [-b] <package>
下载一个源码的包并解开。
你必须在你的/etc/apt/sources.list文件里写入一条 deb-src 的记录才能完成这
项工作。
如果你输入了一个-b参数,并且是以root的身份,deb包会被自动的创建。
apt-get build-dep <package>
自动下载并安装通过源码创建 <package> 时需要的包。
只有apt 0.5以上版本才支持这个功能。
现在woody和以上版本包含了这个功能。
如果你使有一个旧版本的apt,查找依赖性最简单的方法是查看源码包中
debian/control 这个文件,
注意这个路径是相对的,是包内的路径。
普通的用法,结合 apt-get source -b,例子 (as root):
apt-get build-dep <package>
apt-get source -b <package>
会下载源码包,建立依赖性,然后尝试编译源码。
dpkg-source -x <package.dsc>
如果你手工下载了一个程序的源码包,其中包含了几个类
似 .orig.tar.gz , .dsc ,
以及 .diff.gz 之类的文件,
那么你就可以对 .dsc 文件使用这个命令来 unpack 源码包。
dpkg-buildpackage
从 Debian 源码树建立一个deb包。你必须在source tree的主目录才能生效。例
如:
dpkg-buildpackage -rfakeroot -uc -b
这里 '-rfakeroot' 指定命令使用 fakeroot 程序来模仿 root 权限 (来实现所有
者(ownership)目的),
'-uc' 表示 "Don't cryptographically sign the changelog", '-b' 代表只建立
二进制包.
debuild
一个快速打包脚本类似 dpkg-buildpackage ,能自动的识别是否使用 fakeroot,
同时为你运行 lintian 和 gpg
修正倚赖关系
dpkg --configure --pending
如果dpkg在apt-get install upgrade dist-uptradeing 的时候出错退出,
尝试使用此命令来配置已经unpack的包。
然后再用 apt-get install ,upgrade, or dist-upgrade -f ,
然后再用 apt-get install, upgrade, or dist-upgrade.
可能会重复多次,这样通常可以解决大多数的依赖性问题。
(同时,如果提示由于某种原因需要某个特定的包裹,你可以常识安装或卸载这个包)
apt-get install -f
apt-get upgrade -f
apt-get dist-upgrade -f
尝试修正上述过程中出现依赖性关系
注意 apt-get install -f 不需要 <package> 作为参数。
-------------------------------------
用apt-cdrom -d /media/cdrom0 add 加载光驱,
/dev/hdc /cdrom iso9660 user,noauto 0 0
用编辑器修改一下存盘,重启,应该可以了。
然后,apt-cdrom -d /cdrom add
apt-get install (你要装的软件名:《例如gcc》)
gcc相关的软件会自动装入。
昨天,刚试过,很爽。
注意:apt不会认你手动挂载的光驱,如果fstab中设置不对apt不会正常工作。
用apt-cdrom -d /media/cdrom0 add 加载光驱,
需要使用#mkdir /media/cdrom0 否则会错误提示说"无法读取文件系统挂载
点/media/cdrom的状态 -stat(2 没有那个文件或目录)"
1.tsinghua.edu.cn的apt package不完整(安装VIM失败),而且从速度来看,也没优势,用回了原来的库:
$ cat sources.list
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
2.系统中自带的VIM功能严重不足?从工作开发机拿来的配置基本没法用,所以重新更新安装了VIM
sudo apt-get install vim
3.下载上传不方便,安装了lrzsz
sudo apt-get install lrzsz
4.没有telnet开户端,测试网络端口不方便,需要安装:
sudo apt-get install telnet
5.安装go:
http://dave.cheney.net/2012/09/25/installing-go-on-the-raspberry-pi
Installing the prerequisites
Raspbian comes with almost all the tools you need to compile Go already installed, but to be sure you should install the following packages, described on the golang.org website.
% sudo apt-get install -y mercurial gcc libc6-dev
Cloning the source
% hg clone -u default https://code.google.com/p/go $HOME/go
warning: code.google.com certificate with fingerprint 9f:af:b9:ce:b5:10:97:c0:5d:16:90:11:63:78:fa:2f:37:f4:96:79 not verified (check hostfingerprints or web.cacerts config setting)
destination directory: go
requesting all changes
adding changesets
adding manifests
adding file changes
added 14430 changesets with 52478 changes to 7406 files (+5 heads)
updating to branch default
3520 files updated, 0 files merged, 0 files removed, 0 files unresolved
Building Go
% cd $HOME/go/src
% ./all.bash
If all goes well, after about 90 minutes you should see
ALL TESTS PASSED
---
Installed Go for linux/arm in /home/dfc/go
Installed commands in /home/dfc/go/bin
If there was an error relating to out of memory, or you couldn't configure an appropriate swap device, you can skip the test suite by executing
% cd $HOME/go
% ./make.bash
as an alternative to ./all.bash.
Adding the go command to your path
The go command should be added to your $PATH
% export PATH=$PATH:$HOME/go/bin
% go version
go version devel +cfbcf8176d26 Tue Sep 25 17:06:39 2012 +1000
Now, Go and make something awesome.
但直接更新出问题,该死的墙!需要走代理才行。
strace 进去发现网络死掉,接下载源代码,编译安装失败,看来必须翻了。
6.安装代理软件,最终我使用的是tsocks
sudo apt-get install tsocks
编辑/etc/tsosks.conf即可。
另外的privoxy安装了但没使用。
参考:
http://blog.creke.net/770.html
http://blog.ihipop.info/2011/01/1988.html
在终端下间接使用Socks5代理的几种方法(privoxy,tsocks,proxychains)
http://www.privoxy.org/
http://tsocks.sourceforge.net/faq.php
http://renyongjie668.blog.163.com/blog/static/16005312011824112410588/
http://www.51testing.com/?uid-225738-action-viewspace-itemid-246084
使用tsocks:
tsocks [application [applications arguments]]
tsocks [on|off]
举几个实例吧:
tsocks firefox #之后再firefox上浏览网页就会默认使用tsocks配置的代理
tsocks git clone git://github.com/avikivity/kvm.git #使用proxy来git,这就是我用的原因
source tsocks on #设置当前shell的tsocks,该命令可能遇到一个小bug在下面有讲到
tsocks show #查看当前Shell的tsocks设置,tsocks: This shell is socksified.
do_something #这里就能默认使用tsocks的代理去do something了,前面已经设置了
source tsocks off #关闭当前shell的tsocks代理设置
tsocks show #再次查看,tsocks: This shell is NOT socksified.
遇到的问题及解决方案:
13:01:17 libtsocks(2432): SOCKS server proxy-shz.intel.com (10.239.120.36) is not on a local subnet!
设置的代理没有与/etc/tsocks.conf文件中的local设置的网络在同一个子网中。
13:03:26 libtsocks(2451): The SOCKS server (proxy.ABCD.com) listed in the configuration file which needs to be used for this connection is invalid
配置文件的问题,我也忘了是啥时出现的错误了,但我碰到过的。
13:02:50 libtsocks(2441): Error 110 attempting to connect to SOCKS server (Connection timed out)
这个很明显了,就是你设置的proxy连接不上(可能是本来就连不上,或者没在同一个局域网内),请检查和确认配置。
ERROR: ld.so: object '/lib64/libtsocks.so' from LD_PRELOAD cannot be preloaded: ignored.
郁闷坏了,是因为有一次我在rhel5u5上安装了一个rhel6的tsock rpm包,解决办法是到http://pkgs.org/找到一个tsocks for rhel5的rpm包,安装即可。
[root@kvm-build ~]# source /usr/bin/tsocks on
basename: invalid option -- 'b'
Try `basename --help' for more information.
看到这样的错误,有可能是你的tsocks有点小bug,不过不影响使用的,接着你用tsocks show来看,一样可以看到提示说socks设置成功的,tsocks: This shell is socksified.
我的rhel5和rhel6中的tsocks都遇到这样的错误信息,你可以简单地修改一下/usr/bin/tsocks文件,将其中的basename的一行修改一下即可:
修改前:PRG="$(basename $0)"
修改为:PRG="$(basename -- $0)"
这是由于这个tsocks写后,coreutils工具做了些改动,其中basename工具需要用"--"来表示options的结束(为了保持新老版本的兼容)。这个问题在Bug-coreutils mailing list中讨论过了的,见:http://www.mail-archive.com/bug-coreutils@gnu.org/msg09912.html
替代工具机参考文档:
一个与tsocks有类似功能的工具: socat (我暂时没怎么用)
见:http://freshmeat.net/projects/socat/
tsocks.conf配置文件:http://linux.die.net/man/5/tsocks.conf
tsocks的使用:http://www.21andy.com/blog/20100212/1678.html
另外的人遇到的tsocks问题:http://notes.benv.junerules.com/socks-opera-and-brute-force/
--EOF--
之前已经发现有PS1的异常问题:http://www.guduo.net/2012/02/000392.html
PS1="\n\e[1;37m[\e[m\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m \e[4m\`pwd\`\e[m\e[1;37m]\e[m\n\\$ "
参考:http://www.dbanotes.net/techmemo/unix_rm_-f.html 我有留言
这个PS1的设置在fastdomain的机器上允许没问题,但在当时的CentOS上实际是有异常的,今天在Raspberry Pi上也有光标的问题,重新修改了一下,目前正常了:
PS1="\n\[\e[1;37m\][\[\e[m\e[1;32m\]\u\[\e[m\e[1;33m\]@\[\e[m\e[1;35m\]\h\[\e[m \e[4m\]\`pwd\`\[\e[m\e[1;37m]\e[m\e[1;36m\]\n\[\e[m\]\\$ "
export PS1
参考信息:http://www.4ucode.com/Study/Topic/1611190
PS1="\u@\h:\w\$ "
但是这样设置之后显示的提示符是没有颜色的,如果希望加入颜色设置,可以这样:
PS1="\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m:\w\$ "
此时,在终端中的显示应该是彩色的提示符了,其中的\e[1;xxm和\e[m就是改变终端字体颜色的部分,前者是修改颜色,后者是恢复到正常显示。但是 这时还会有问题,在提示符中输入第一行时,回车换行不正常,导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间 ,这样就使自动换行能够继续正常工作。最终版本如下(可解决带颜色提示符的不换行问题):
PS1="\[ \e[1;32m\] \u\[ \e[m\] \[ \e[1;33m\] @\[ \e[m\]\[ \e[1;35m\] \h\[ \e[m\] :\w\$ "
另外一些信息小结:
\e 和 \033类似
\e[m 和\e0m 类似
http://51nosql.com/?p=134
Linux终端输出颜色控制
文本终端的颜色可以使用"ANSI非常规字符序列"来生成:
cho -e "\033[背景;前景;光标mME \033[0m"
例: echo -e "\033[44;37;5m ME \033[0m COOL"
上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"。"e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器。"\033"引导非常规字符序列。"m"意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 "44;37;5" 和"0"。修改"44;37;5"可以生成不同颜色的组合,数值和编码的前后顺序没有关系。
可以选择的编码如下所示:
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
代码 意义
-------------------------
0 OFF
1 高亮显示
4 下划线
5 闪烁
7 反白显示
8 不可见
其他有趣的代码还有:
\033[2J 清除屏幕
\033[0q 关闭所有的键盘指示灯
\033[1q 设置"滚动锁定"指示灯 (Scroll Lock)
\033[2q 设置"数值锁定"指示灯 (Num Lock)
\033[3q 设置"大写锁定"指示灯 (Caps Lock)
\033[15:40H 把光标移动到第15行,40列
\007 发蜂鸣生beep
RedHat的字体和背景颜色的改变方法:
命令:
PS1="[\e[32;1m\u@\h \W]\\$"
或
export PS1="[\e[32;1m\u@\h \W]\\$" 两者的区别请查看环境变量的相关资料
解释:
\e[32;1m:这就是控制字体和背景颜色的转义字符,30~37是字体颜色、40~47是背景颜色
例子中的32;1m数字的位置是可以对调的如\e[1;32m,如果是在X环境下可以更换一下1的范围0~10,可能有的没用处:0或者不写(\e [0;32m或\e[;32m)显示浅颜色,1:显示高亮 4:加下划线.....如果改后的效果不好,但是又还原不了,那就不写m前面的数字,如\e[32;m,或者直接注销再登陆
\u \h \W:这是一些转义字符,下面详细解释:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
\n :新建一行
字体并不局限于一个颜色,可以有多个颜色:
PS1="[\e[32;1m\u@\e[35;1m\h \e[31;1m\W]\\$"
以上两个命令在注销后再登陆就失效了,用下面方法使其永久生效:
vi /etc/profile
在"export PATH ....."下面添加一行:export PS1="[\e[32;1m\u@\h \W]\\$"
注销再登陆,就成功了,如果没生效,使用source /etc/profile 命令试试,或者直接重启机器。
颜色代码:
字背景颜色范围: 40-49 字颜色: 30-39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
ANSI控制码:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\03[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\03[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\33[?25h 显示光标
http://www.cnblogs.com/RigorosLee/archive/2011/03/23/1992263.html
第二个部分是:
\[\e[1;32m\]\u@\h:\[\e[0m\e[1;34m\]\W\[\e[1;34m\]\$ \[\e[0m\]
我们先来研究第二部份,这个部分看起来比较简短。其中我们可以看到一个 PS1 里面非常基本的结构:\u@\h:\W\$ ,这个结构在我的电脑里就显示为 upsuper@upsuper-laptop:~$ 大家大概可以猜到里面是什么意思了吧。
这个基本骨架理出来,剩下的是看过去最蛋疼的那堆莫名其妙的符号了~我们看到很多 \e[ 这样的东西,事实上这个叫做 ANSI 控制码,在 Linux 和 Windows 的命令行里面都是通用的,\e 是 Escape 键的键码,\e[ 是一切 ANSI 控制码的开头。首先来到 \e[1;32m 这个控制码,这表示设置这个符号之后的字符为亮绿色,而 \e[0m 则是清除所有格式,这样看有没有一点清晰了呢?更多用法可以参考维基百科条目ANSI escape code。
之后还有两个东西不清楚,就是 \[ 和 \],这两个并不是 ANSI 控制码,而是 Bash 提供的转义符。他们的解释说实话我没看太懂,不过我的理解大概就是,夹在 \[ 和 \] 之间的部分 Bash 假定他们的宽度为0,不正确地标注这两个符号会导致 Bash 的换行错误。总之在所有控制符两侧都加上这两个就对了~
文本终端的颜色可以使用"ANSI非常规字符序列"来生成:
echo -e "\033[背景;前景;光标mME \033[0m"
举例: echo -e "\033[44;37;5m ME \033[0m COOL"
以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"。"e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器。"\033"引导非常规字符序列。"m"意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 "44;37;5" 和"0"。修改"44;37;5"可以生成不同颜色的组合,数值和编码的前后顺序没有关系。
变为:
PS1="\e[32;40m\w> "
到现在为止,提示行尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "\e[0m" 序列将颜色重新设置为正常值。
PS1="\e[32;40m\w> \e[0m"
这个定义将显示一个漂亮的绿色提示行,但仍需要做一些扫尾工作。有时我们不需要包括 "40" 这个背景颜色设置,因为它将背景设置为黑色,而黑色是默认颜色。此外,绿色还很暗;我们通过添加一个 "1" 颜色代码来修正这个问题,这将启用更亮的加粗文字。除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。没有这两个转义序列,尽管我们有了一个非常漂亮的提示行,但是如果键入的命令恰好到达终端的最右端,就会造成显示混乱。下面是最终的提示行:
PS1="\[\e[32;1m\]\w> \[\e[0m\]"
我们也不用担心在同一个提示行中使用几种颜色,就像下面这样(我的颜色配置):
PS1=\[\e[36;1m\]\u@suse:\[\e[32;1m\]\w\[\e[36;1m\]> \[\e[0m\]
但是,当我们把这个配置写入.bashrc文件后,会发现一个问题,那就是terminal的标题栏变成了一个永恒不变的"Termianl"了,这可能并不是我们希望的,默认的显示用户名、主机名和当前工作路径(我比较喜欢这个默认的哈),我们可能希望把他配回来。其实配置标题栏和上面说过的配置提示符内容差不多,只是要加上:
\e]2;...\a
中间省略号就可以加我们想让标题栏显示的内容了。
例如我们把 "\e]2;This is my terminal:>\a" 加进PS1变量中(当然也需要用"\["和"\]"转义序列括起来),标题栏中就会显示 This is my terminal:>
个提示行将全部信息显示在标题栏上,而不是显示在终端上,终端对一行可以显示多少字符有限制。顺便提一句,确保用 "\[" 和 "\]" 将您的标题栏序列括起来(因为就终端而言,这个序列是非打印序列)。将大量信息放在标题栏中的问题是,如果您使用非图形终端(如系统控制台),则看不到这些信息。为了解决这个问题,可以在您的 .bashrc 中添加以下几行:
if [ "$TERM" = "linux" ]
then
#we're on the system console or maybe telnetting in
export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]"
else
#we're not on the console, assume an xterm
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
fi
这个 bash 条件语句将根据当前的终端设置动态设置提示行。为了获得一致性,您一定希望配置您的 ~/.bash_profile,以便它在启动时搜索 (source) 您的 ~/.bashrc。确保您的 ~/.bash_profile 文件中有以下这样一行:
source ~/.bashrc
这样,无论您开启一个登录 shell 还是一个非登录 shell,都会获得同样的提示行。
好了,您已掌握了提示行魔术。现在尽情享受一下,制作一个漂亮的彩色提示行吧
http://www.tuicool.com/articles/qeENNz
http://blog.csdn.net/signjing/article/details/8205785
linux ansi控制码
简介
ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。
ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。
ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),linux命令echo用-e启用转义,\033来输入ESC,\033[31m即为ESC[31m。
格式
echo:-e 用来开启echo中的转义,\e 或 \033 来输出Esc符号
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
注意m后面紧跟字符串。
例如:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的颜色
那些ascii code 是对颜色调用的始末
\033[ ; m ......\033[0m
http://blog.chinaunix.net/uid-14358420-id-3408534.html
这样解析下bash版本的字串 "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u" 。
\e[s :保存光标位置
\e[0;$((COLUMNS-27))H 在终端第一行的倒数27个字符的位置开始打印字符
$(date) 打印date命令的输出
[u 恢复光标位置
http://www.4ucode.com/Study/Topic/1611190
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
CentOS中关于这些:
\a an ASCII bell character (07)
\d the date in "Weekday Month Date" format (e.g., "Tue May
26")
\D{format} the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
\e an ASCII escape character (033)
\h the hostname up to the first '.'
\H the hostname
\j the number of jobs currently managed by the shell
\l the basename of the shell's terminal device name
\n newline
\r carriage return
\s the name of the shell, the basename of $0 (the portion
following the final slash)
\t the current time in 24-hour HH:MM:SS format
\T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format
\A the current time in 24-hour HH:MM format
\u the username of the current user
\v the version of bash (e.g., 2.00)
\V the release of bash, version + patch level (e.g., 2.00.0)
\w the current working directory, with $HOME abbreviated with a tilde
\W the basename of the current working directory, with $HOME abbreviated with a tilde
\! the history number of this command
\# the command number of this command
\$ if the effective UID is 0, a #, otherwise a $
\nnn the character corresponding to the octal number nnn
\\ a backslash
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
\] end a sequence of non-printing characters
于是可以根据这些指定自己喜欢的命令提示符格式:
PS1="\u@\h:\w\$ "
但是这样设置之后显示的提示符是没有颜色的,如果希望加入颜色设置,可以这样:
PS1="\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m:\w\$ "
此时,在终端中的显示应该是彩色的提示符了,其中的\e[1;xxm和\e[m就是改变终端字体颜色的部分,前者是修改颜色,后者是恢复到正常显示。但是 这时还会有问题,在提示符中输入第一行时,回车换行不正常,导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间 ,这样就使自动换行能够继续正常工作。最终版本如下(可解决带颜色提示符的不换行问题):
PS1="\[ \e[1;32m\] \u\[ \e[m\] \[ \e[1;33m\] @\[ \e[m\]\[ \e[1;35m\] \h\[ \e[m\] :\w\$ "
--EOF--
因为一直都使用ssh来进行必要时的访问,所以最近几年都没怎么折腾翻墙的事情。今天在同学的群里听说goagent还不错,恰好下午很早回家,也就折腾了一下,感觉非常好!
参考信息:
https://code.google.com/p/goagent/ 这里的内容多看看基本够了。
在笔记本上也都装了,后续确实可以很方便的直接使用了,而且速度也非常不错。
接下来就是还想让手机也能用上,参考:
https://code.google.com/p/goagent/wiki/GoAgent_IOS,可惜没一次搞定,再找:
http://ifan.178.com/thread-1387056-1-1.html
http://www.i7086.com/goagentwufafangwendejiejue/comment-page-2
多看看,要点:
1)Cydia开发者模式
2)安装Python,goagent-toggle(sbsettings开关), goagent-local
3)安装证书,使用Safari安装,iFile怎么安装我没学会
4)如果访问异常,注意修改proxy.ini中的cn->hk https等信息
5)pac文件注意:打开设置- WiFi(国行叫无线局域网)-点击您热点右侧的箭头-拖到最下方"http代理" 选择自动然后输入"
file://localhost/var/mobile/goagent-local/8087.pac"或"file://localhost/var/stash/Applications/MobileSafari.app/8087.pac"(需要将8087.pac从var/mobile/goagent-local/ 移到Applications/MobileSafari.app/ 下 )(利用pac翻比全局好),用后面的这个路径。
--EOF--
1.安装openssh,mobile terminal
2.笔记本也可以ssh上去root/mobile 默认密码都是alpine,记得passwd修改哦
3.其它信息,折腾暂未成功,参考的资料信息:
http://qiong.info/archives/6130
iphone使用ssh来匿名代理上网
http://todaym.com/2010/05/iphone-over-the-wall-via-ssh-pac.html
http://todaym.com/2010/05/iphone-ipod-touch-mac-ssh-connection-automatic-login.html
http://wangheng.org/configure-gcc-on-ipad2.html
为ipad2安装和配置gcc编译环境
另外,今天发现的便宜的VPS:
http://www.123systems.net/index.html
--EOF--
几年前的春节值班,无聊之下在now.cn注册了guduo.net,而后好久才又到FastDomain成功注册和购买主机空间,再后来就是把guduo.net迁移到FastDomain。
一直以来,Primary Domain都是yimutian.net,guduo.net是作为Addon Domain来管理。但几年下来,都是使用的guduo.net的域名,yimutian.net的域名没有使用,暂时也没有继续使用的计划,所以也就想把guduo.net作为Primary Domain进行管理了。
通过查询FastDomain的帮助文档,很方便的找到了相关信息:
How to change the Primary Domain
https://my.fastdomain.com/cgi/help/345
What to do before renaming your account
- The rename Process normally takes from 20 minutes to 5 hours, depending on the size of the account.
- The domain you are changing to must be associated with the account first.
- The current main domain can never become the main domain again.
- The current account's username, password, files, databases and e-mails will remain unchanged.
- The new primary domain will point to the public_html directory itself, the same way the main domain does currently.
- The website files may need to be moved into the public_html directory and out of the public_html directory, to correspond with the new primary domain and assignment of the old primary domain to a subfolder.
Please note that this will be your responsibility to do, and may cause some site files, scripts or other applications to break, requiring modification to work with the new site location. - Custom DNS entries will be deleted for both domains involved in this change and will need to be recreated after the rename is complete.
- If you have an SSL certificate, please note it will only work for the main domain; if the SSL was purchased through our cPanel, it will automatically be revoked for the original domain, and re-assigned to the new primary domain.
Note: This most often will only take a few minutes, but could take up to a few hours. - Although renaming an account should not move or delete any files on the account, we do recommend creating/downloading a backup of all files and databases prior to requesting the rename. Please Click Here for information about creating and downloading backups.
- The new primary domain must be registered to you. If needed, you may register new domains for $13.99 each, per year, via the Domain Manager in the cPanel.
修改之后呢,之前用子目录管理的guduo.net没法访问了,再找资料:
How to host the Primary Domain from a subfolder (.htaccess)
https://my.fastdomain.com/cgi/help/347
You will want to insert the following code block and make modifications as noted in the (#) comments. You will need to change the two instances of example.com to your domain, and the three instances of subdirectory to the folder where you want your site.
# FastDomain.com
# .htaccess main domain to subdirectory redirect
# Copy and paste the following code into the .htaccess file
# in the public_html folder of your hosting account
# make the changes to the file according to the instructions.
# Do not change this line.
RewriteEngine on
# Change example.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/subdirectory/
# Don't change these line.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /subdirectory/$1
# Change example.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/index.html [L]
Visitors to your Web site will not be able to tell that your main domain is using a subdirectory, they will still see the Web site address as http://www.example.com/page.html.
Note: This will not work with some website software. You will also need to modify the $base_url, $live_site or other configuration settings in those to finish the process.
原来是通过.htaccess来做Rewrite
后面的事情,那就是重新好好维护这个域名和空间了。
最近一直有弄一个VPS的冲动,忍住!
http://www.ramhost.us/?page=virtual-dedicated-server
--EOF--
今天抽空看了一下挂机2年多的R1的PT种子,有24个已损毁的,仔细查看,发现除14个"torrent not registered with this tracker"之外,另外的10个HD的种子居然是因为我的transmission版本2.0.3已经不被支持:
Transmission: Linux+Mac 1.92, 1.93, 2.13, 2.21, 2.22, 2.42, 2.52, 2.61, 2.71, 2,72, 2.73, 2.74, 2.75
升级吧,2年多没折腾,都忘记怎么玩了,兴趣已过,也不想节外生枝,弄残了就又要搭进去好多时间。
找到之前玩弄时候的论坛,发现2个升降级的帖子:
http://www.hdpfans.com/thread-80-1-1.html
http://www.hdpfans.com/thread-158776-1-1.html
本来还想去看看是否支持最新版的,但到机器上一看:
/opt/bin # ls transmission* -l
-rwxrwxrwx 1 root root 556828 Sep 18 2010 transmission-daemon
-rwxr-xr-x 1 root root 616276 Sep 18 2010 transmission-daemon.1.92
-rwxrwxrwx 1 root root 587016 Sep 18 2010 transmission-remote
-rwxr-xr-x 1 root root 646464 Sep 18 2010 transmission-remote.1.92
-rwxrwxrwx 1 root root 557240 Sep 18 2010 transmissioncli
-rwxr-xr-x 1 root root 618884 Sep 18 2010 transmissioncli.1.92
-rwxr-xr-x 1 root root 1745 Sep 12 2010 transmissionguard.sh
竟然发现之前的机器我备份过transmission-daemon.1.92这个版本,而且也是被支持的,这就省心了,直接修改
/opt/etc/init.d/S50transmission的启动程序:
#/opt/bin/transmission-daemon --paused -t -u root -v toor -g $CONFIGDIR -w $DOWNDIR
/opt/bin/transmission-daemon.1.92 --paused -t -u root -v toor -g $CONFIGDIR -w $DOWNDIR
重启程序,种子正常了~
--EOF--
9月份LP公司因为公司业务调整裁员,LP在被调整之列,但居然被无耻的没有任何赔偿的解约了。
大致如下:
公司流程上离职人员需要签署离职工作交接表,辞职申请表,解除劳动关系合同(一式两份)。
LP很简单的一个人,被人力约谈几次后,被口头承诺会给予赔偿,但因为人力要挟转正流程未完成,被忽悠签署了辞职申请表,拒绝签署解除劳动关系合同,然后就回家等赔偿了。
当然,没有等到,然后申请劳动仲裁,公司最初还主动来电要求和解,赔偿半个月工资,后来突然态度大转弯,拒绝和解,原来是他们发现了LP填写签名的辞职申请表。尽管后来仲裁庭上LP出具了多份邮件以及与公司人力主管离职前协商赔偿的录音,但对方直接不承认录音的真实性,并否认有协商过离职赔偿的事情,仲裁庭因此决定不予支持赔偿。
目前,正准备民事诉讼,准备上诉到深圳南山人民法院。
总结来看,LP太简单,竟然认为人力要求签辞职申请表对自己索要赔偿没影响,只以为解除劳动关系合同才有用。
希望法院能对录音证据予以采信,做出合理的裁决。
--EOF--
由于手中的江苏移动20包月cmwap无限流量卡经常被限速,搞的近期上网很窝火。后来统计了一下每月使用的3G流量,居然没超过1G,那还不如直接使用我自己的主号了:300M GPRS+500M免费TD,800M,基本够用了。
怎么使用呢?以前的号已经是破解了的,所以重新找出小狗卡,葛优卡各一,进行写卡,顺便把之前的16In1的卡全部拿出来重新写号(4个号码)。
写卡时,搬出了T43,几个写卡工具也是重新又摸了一次,还用上次新买的读卡器试了一把,也可以正常的读(写未测试)SIM卡。
最后成功实现U880移动电话待机,ET536 3G上网,但发现上网很不稳定,所以后来索性烦了,直接U880做热点,ET536闲置起来,毕竟开关机太慢,不如U880的屏幕点2下搞定。
折腾完毕,继续找出香港Peoples的手机卡进行解卡,可惜一天一夜居然没解出来,放弃!
至此,手中的3个无限流量卡都闲置了,近期限速也是闹的风风火火,要限就限吧,无所谓了,毕竟当初高价买来也是为了玩玩,也曾经一个月下载超过15G,体验了那份乐趣。
--EOF--
B版,512M,Made In China,300RMB
恰好手头有之前入的16G东芝SD Class10黑卡,可惜读写速度和白卡差别太大,用在PI上不会觉得浪费。
300块的东西,玩玩不错了。到手后第一天在家里才发现居然没USB键盘,于是第二天带到公司才搞定系统,然后回家再远程管理。
远程图形操作管理,参考:http://www.douban.com/group/topic/31460736/
工具:putty 和 Xming
功能:实现图形界面的远程访问
前期准备:安装SSH server并启动。这个功能Raspbian系统自带,就不用说了。
操作步骤:
1. 下载并安装Xming, 地址http://sourceforge.net/projects/xming/
2. 下载并安装putty,地址http://www.putty.org/
3. 启动Xming,默认设置就可以,如果喜欢折腾自己看Manual
4. 启动putty,并登陆Pi,很重要的一条:在Connection项里选择SSH -> X11,勾选Enable X11 forwarding.
5. 在putty命令行下输入:startlxde,稍等就会出现R-pi的界面,好了,兴奋吧!!
视频播放,参考:http://www.leiphone.com/raspberry-pi-hands-on.html
视频播放
标准Raspbian版本中支持树莓派的GPU的播放器好像只有omxplayer,是个命令行程序,没有界面的,也不能拖动。它有很多参数,最常用的是-o,选项有local和hdmi,表示声音输出到audio out还是hdmi,omxplayer后面跟着要播放的文件名称,不支持wmv,不支持外置字幕。打开终端窗口,出现提示符后输入:
omxplayer -o hdmi 文件名
也可以先用cd命令,将当前路径改变到文件所在的目录,文件名就不需要绝对路径了。其实大家会觉得命令行输入非常麻烦,但只要用Tab键进行命令补齐,用ls列出当前目录的文件,再配合鼠标选择文字,然后按中键(就是按下滚轮)进行连动的复制粘贴,即使没有资源管理器也会发现目录操作可以很快速的。
由于一般媒体文件都是放置在外置的硬盘中,所以这时需要将硬盘接入到USB口上,系统默认会在/media目录下创建和硬盘卷标一样的目录,并将USB硬盘挂接上去,之后就可以访问了。
测试的结果大部分用X.264编码的1080p视频都可以正常流畅播放。唯一一部无法播放的是:[魔术师和兔子].Pixar.Short.Presto.1080p.BluRay.x264.mkv。
--EOF--