LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 6452|回复: 16

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

[复制链接]
发表于 2007-3-4 04:27:40 | 显示全部楼层 |阅读模式
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 root@192.168.0.1

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:)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-3-4 16:36:52 | 显示全部楼层
不错呀!呵呵,我用Gentoo。不过上述技巧是通用的。
回复 支持 反对

使用道具 举报

发表于 2007-3-4 17:42:01 | 显示全部楼层
set -/+x 这招未玩过,又学一招,呵呵。。。
回复 支持 反对

使用道具 举报

发表于 2007-3-4 21:42:39 | 显示全部楼层
第一招不错  
回复 支持 反对

使用道具 举报

发表于 2007-3-4 21:51:08 | 显示全部楼层
1,2 两招都不错
回复 支持 反对

使用道具 举报

发表于 2007-3-4 23:43:09 | 显示全部楼层
嗯,长知识了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-5 04:43:39 | 显示全部楼层
谢谢大家捧场哦,嘿嘿。。

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

使用道具 举报

发表于 2007-3-5 09:21:47 | 显示全部楼层
第一个把"$?"加在PS1里我从来没有想到过, 加了以后就省得每回运行完再输入echo $?了. 好办法.

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

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

使用道具 举报

 楼主| 发表于 2007-3-5 09:27:17 | 显示全部楼层
Linux 就是靠的想象力。

只有想不到的事,没有做不到的事。牟老大的名言。。。
回复 支持 反对

使用道具 举报

发表于 2007-3-5 19:11:18 | 显示全部楼层
嗯,受教了.
多想想.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表