+ -
当前位置:首页 → 问答吧 → 帮助你LFS的几点小技巧。当前有 5 个小技巧。

帮助你LFS的几点小技巧。当前有 5 个小技巧。

时间:2007-03-04

来源:互联网

1. 判断命令是否正常结束?
 设置 PS1 的时候,用这个代替:
  export PS1="\$? [\u@\h \w]\$ "

 范例:
  0 [william@fantasy ~]$ true  
  0 [william@fantasy ~]$ false  #0 是 成功
  1 [william@fantasy ~]$ 1    #1 是 失败
  bash: 1: command not found
  127 [william@fantasy ~]$    #127 是 失败
 一般来说,非 0 就是有问题。除非有特殊说明。

2. 让你看到命令都是如何运行的。
  每次开启一个新的shell的时候,运行 set -x。
  在为 lfs 用户设置 .bashrc 文件的时候,加入同样的命令 set -x。
  想关闭效果,执行 set +x 即可。
 效果:
  $ export CLFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
  +++ echo i686-pc-linux-gnu
  +++ cut -d- -f2
  ++ echo i686-pc-linux-gnu
  ++ sed s/pc/cross/
  + export CLFS_HOST=i686-cross-linux-gnu
  + CLFS_HOST=i686-cross-linux-gnu
  $
 可以清楚的看到所有的运行内容,就不用瞎猜到底运行的是什么命令了。

3. LiveCD 中 sshd 的使用。
 设置网络
  ip addr add 192.168.0.1/24 dev eth0
 设置 root 密码
  passwd root
 启动 ssh 服务
  /etc/rc.d/init.d/sshd start
 在别的机器登录就可以了
  ssh [email protected]

4. 智能打补丁脚本 spatch (Smart Patch)。见附件。
 (这个其实不算技巧,如果才学习Linux的最好不要用,因为你不理解什么意思,反而对学习没帮助。)
 以前上传过,但是一下子找不到。
下载解压,然后 chmod +x spatch,再 mv spatch /usr/bin就可以了。

 用法例子:

 例1.
 $ spatch ../../src/binutils-2.17-posix-1.patch #第一次打
 + spatch ../../src/binutils-2.17-posix-1.patch
 patching file gas/Makefile.am
 Hunk #1 succeeded at 771 (offset 9 lines).
 patching file gas/Makefile.in
 Hunk #1 succeeded at 3108 (offset -56 lines).
 patching file ld/testsuite/ld-bootstrap/bootstrap.exp
 patching file ltcf-c.sh
 patching file ltcf-gcj.sh
 patching file src-release
 Hunk #1 succeeded at 72 (offset 3 lines).
 =============== SUMMARY ==============
 ../../src/binutils-2.17-posix-1.patch OK (+p1)

 例2.
 $ spatch ../../src/binutils-2.17-posix-1.patch #(再打一次,重复了)
 + spatch ../../src/binutils-2.17-posix-1.patch
 =============== SUMMARY ==============
 ../../src/binutils-2.17-posix-1.patch APPLIED (+p1)

 例3.
 $ spatch ../../src/binutils-2.17-{b,p}*
 + spatch  ../../src/binutils-2.17-branch_update-2.patch  ../../src/binutils-2.17-posix-1.patch
 patching file bfd/bfd-in2.h
 patching file bfd/bfd-in.h
 patching file bfd/ChangeLog
 patching file bfd/coffcode.h
 patching file bfd/cpu-m68k.c
 patching file bfd/elflink.c
 patching file bfd/version.h
 patching file binutils/ChangeLog
 patching file binutils/wrstabs.c
 patching file configure.in
 patching file gas/ChangeLog
 patching file gas/symbols.c
 patching file ld/ChangeLog
 patching file ld/ldcref.c
 patching file ld/ld.h
 patching file ld/ldlang.c
 patching file ld/ldmain.c
 patching file ld/testsuite/ChangeLog
 patching file ld/testsuite/ld-m68k/m68k.exp
 patching file ld/testsuite/ld-m68k/merge-ok-1c.d
 patching file ld/testsuite/ld-scripts/empty-orphan.d
 patching file ld/testsuite/ld-scripts/empty-orphan.t
 patching file gas/Makefile.am
 Hunk #1 succeeded at 771 (offset 9 lines).
 patching file gas/Makefile.in
 Hunk #1 succeeded at 3108 (offset -56 lines).
 patching file ld/testsuite/ld-bootstrap/bootstrap.exp
 patching file ltcf-c.sh
 patching file ltcf-gcj.sh
 patching file src-release
 Hunk #1 succeeded at 72 (offset 3 lines).
 =============== SUMMARY ==============
 ../../src/binutils-2.17-branch_update-2.patch OK (+p1)
 ../../src/binutils-2.17-posix-1.patch OK (+p1)

 好处是可以带多个文件,也不用去考虑 -p1/-p2 等参数,已经打过的补丁会自动识别。欢迎大家提出改进建议。


5. 巧用 screen
 初学者对screen也许很陌生,简单介绍一下,就是一个窗口中可以控制和切换到多个终端。
 建议在~/.screenrc里边加入如下内容:
引用:
hardstatus string '%{= wK}%-Lw%{= KW}%50>%n%f* %t%{= wK}%+Lw%< %{= KW}%-=%D %d %M '
hardstatus alwayslastline
# change key to C-o 用C-o 而不是 C-a,C=Ctrl
#defescape ^Oo
#escape ^Oo
termcapinfo xterm*|rxvt*|kterm*|Eterm*|putty*|dtterm* ti@:te@:G0
#use terminals scrollback
autodetach on
startup_message off
# auto change tab name
shelltitle $|bash
vbell off
deflogin off
 启动命令就是 screen。
 常用操作有:新开一个终端 C-a c,和上一个终端切换 C-a a,切换到前/后一个终端 C-a p/n,退出当前终端就是exit了。
 如果是不小心关了图形终端(如konsole),那么你可以再打开一个konsole,然后 screen -RR 就可以恢复了。
 screen是一个C/S架构,有关更深入的学习请去google:)。
上传的附件
spatch.bz2 (723 字节, 41 次查看)

作者: 晨想   发布时间: 2007-03-04

不错呀!呵呵,我用Gentoo。不过上述技巧是通用的。

作者: 食古不化   发布时间: 2007-03-04

set -/+x 这招未玩过,又学一招,呵呵。。。

作者: d00m3d   发布时间: 2007-03-04

第一招不错

作者: yyccrasher   发布时间: 2007-03-05

1,2 两招都不错

作者: csfrank   发布时间: 2007-03-05

嗯,长知识了!

作者: youbest   发布时间: 2007-03-05

谢谢大家捧场哦,嘿嘿。。

今天又看了一次 youbest 老大的大作 CLFS 2原理,感觉又学到不少东西。佩服死偶了!

作者: 晨想   发布时间: 2007-03-05

第一个把"$?"加在PS1里我从来没有想到过, 加了以后就省得每回运行完再输入echo $?了. 好办法.

第二个在abs里看到过, 好像是用在调试shell脚本时候用的.

第三个是iproute2包里的命令了. 高级流量控制里有关于这个包里命令的更多描述.

作者: future_god   发布时间: 2007-03-05

Linux 就是靠的想象力。

只有想不到的事,没有做不到的事。牟老大的名言。。。

作者: 晨想   发布时间: 2007-03-05

嗯,受教了.
多想想.

作者: future_god   发布时间: 2007-03-06

呵呵呵,帮了大忙了,谢谢!!
唉,我怎么想不到呢。。。。。

作者: icank   发布时间: 2007-05-04

更新了 spatch 脚本。:)。欢迎试用。

作者: 晨想   发布时间: 2007-05-24

首先多谢斑竹的第一,第二条好技巧
但还觉得自己用了第三条和第四条就有背于我做LFS的目的了

作者: augustusqing   发布时间: 2007-05-24

。。无语。。。。。
不知道 LFS 的目的是?:)。

作者: 晨想   发布时间: 2007-05-24

哈哈,得意下下----第三个技巧我是自己发现的,设置SSH后通过putty ssh可以直接copy/paste LFS的命令,快得很~~~

作者: xkdcc   发布时间: 2009-08-24

谢谢!!!!!!!!!!!!!!

作者: superyongzhe   发布时间: 2010-05-31

谢谢!!!!!!!!!!!!!!!

作者: superyongzhe   发布时间: 2010-05-31