类似tree命令的脚本

http://blog.chinaunix.net/u2/81965/showart_1335087.html

#!/bin/sh
#
# tree.sh
# A tool that display the dictionary structure in dos’s
# tree command style.
# Tested on slackware, openbsd, netbsd, freebsd.
#
# Just for fun.
#
# The name of the ls program, please use
# the absolute path, otherwise, there
# may be get some strange errors.
#
LSPROG=”/bin/ls”
# COLOR DEFINE
# ============
#
DIR=”33[01;34m”
EXE=”33[01;32m”
DEV=”33[01;33m”
LNK=”33[01;36m”
ZIP=”33[01;31m”
SOCK=”33[01;35m”
NULL=”33[00m”
ROOT=${1:-.}
TRUE=0
FALSE=1
LAYERS=0
FILECOUNT=0
DIRCOUNT=0
# print_dash
# ==========
# Print the structure lines
#
print_dash()
{
local i=0
local num=$1
while [ $i -lt $num ]; do
echo -n “|”
for j in 1 2 3; do
echo -n ” ”
done
i=`expr $i + 1`
done
echo -n “|– ”
}
# ispkg
# =====
# Test if the file is a package like:
# .gz .tar .tgz .tar.gz .zip .rar .rpm
# and etc.
#
ispkg()
{
local f=$1
local i
# Package extension list, you can add your coustom
# extensions in it.
#
local pkg__ext=”.gz .tar .tgz .tar.gz .zip .rar .rpm”
# if the file’s suffix contain any package extension
# then cut it.
for i in $pkg__ext; do
f=${f%$i}
done
if [ “$f” != “$1″ ]; then
return $TRUE
else
return $FALSE
fi
}
# mktree
# ======
# The main function, that print the
# dictionary structure in dos’s tree
# command style. It’s runs in nesting.
#
mktree()
{
local f
for f in `$LSPROG -1 $1 2> /dev/null`; do
f=${f%/}
f=${f##*/}
# If dictionary then print it and enter
# the nesting block.
if [ -d $1/$f ]; then
print_dash $LAYERS
echo -e “${DIR}$f${NULL}”
DIRCOUNT=`expr $DIRCOUNT + 1`
LAYERS=`expr $LAYERS + 1`
mktree $1/$f
else
print_dash $LAYERS
# file is a symbol link
if [ -L $1/$f ]; then
echo -e “${LNK}$f${NULL}”
# file is executable
elif [ -x $1/$f ]; then
echo -e “${EXE}$f${NULL}”
# file is a device
elif [ -c $1/$f -o -b $1/$f ]; then
echo -e “${DEV}$f${NULL}”
# file is a socket
elif [ -S $1/$f ]; then
echo -e “${SOCK}$f${NULL}”
# file is a package
elif `ispkg $f`; then
echo -e “${ZIP}$f${NULL}”
else
echo -e “$f”
fi

FILECOUNT=`expr $FILECOUNT + 1`
fi
done
LAYERS=`expr $LAYERS - 1`
}
echo $ROOT
mktree $ROOT
echo “\`”
echo “$DIRCOUNT directories, $FILECOUNT files”

阅读(29 次)

ls -R 和 ls -F

ls -R 可以看当前目录的全部目录结构

ls -F 可以在目录后面加/  可执行文件后面加*

阅读(17 次)

双击.reg文件导入注册表出现”您在注册表编辑器中只能导入二进位注册文件”错误的解决办法

Windows Registry Editor Version 5.00

加在自己编写的注册表文件的第一行开始

记住一定要第一行一开始,前面有空格也不行。
上面几个词和空格一个都不能错
5.00后面必须是windows换行符也不能多空格

阅读(35 次)

如何通过使用注册项 (.reg) 文件添加、修改或删除注册表子项和值

http://support.microsoft.com/kb/310516/zh-cn

如何通过使用注册项 (.reg) 文件添加、修改或删除注册表子项和值
察看本文应用于的产品
文章编号 : 310516
最后修改 : 2007年12月3日
修订 : 4.3
本文的发布号曾为 CHS310516
本页
概要
.Reg 文件的语法
添加注册表子项或添加和更改注册表值
删除注册表项和值
重命名注册表项和值
分发注册表更改
概要
警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
本文分步介绍了如何使用注册项 (.reg) 文件添加、修改或删除注册表子项和值。Regedit.exe 使用 .reg 文件导入和导出注册表子项和值。您可以使用这些 .reg 文件将注册表更改远程分发到多台基于 Windows 的计算机上。当您运行某个 .reg 文件时,该文件的内容就会合并到本地注册表中。因此,分发 .reg 文件时必须格外小心。

回到顶端
.Reg 文件的语法
.reg 文件具有以下语法:

RegistryEditorVersion
Blank line
[RegistryPath1]
“DataItemName1″=”DataType1:DataValue1″
DataItemName2″=”DataType2:DataValue2″
Blank line
[RegistryPath2]
“DataItemName3″=”DataType3:DataValue3″

其中:

RegistryEditorVersion 是“Windows Registry Editor Version 5.00”(对于 Windows 2000、Windows XP 和 Windows Server 2003)或“REGEDIT4”(对于 Windows 98 和 Windows NT 4.0)。“REGEDIT4”表头也适用于基于 Windows 2000、Windows XP 和 Windows Server 2003 的计算机。

Blank line 就是一个空行。它标识新的注册表路径的开始。每个项或子项都是一个新的注册表路径。如果 .reg 文件中有多个项,空白行可以帮助您检查内容和排查其中的问题。

RegistryPathx 是存放要导入的第一个值的子项的路径。请用方括号将路径括起来,并用反斜杠将层次结构的各个级别隔开。例如:
[HKEY_LOCAL_ MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
一个 .reg 文件可以包含多个注册表路径。 如果注册表中不存在路径语句中底层的层次结构,将创建一个新的子项。注册表文件的内容将按照它们的输入顺序发送到注册表。因此,如果您要新建一个包含另一子项的子项,必须按正确的顺序输入行。

DataItemNamex 是要导入的数据项的名称。如果文件中的数据项在注册表中不存在,.reg 文件将添加该数据项及其值。如果数据项存在,.reg 文件中的值将覆盖现有的值。数据项的名称用引号引起来。数据项名称后紧跟着一个等号 (=)。

DataTypex 是注册表值的数据类型,紧跟在等号后面。对于 REG_SZ(字符串值)以外的所有数据类型,数据类型后都紧跟一个冒号。如果数据类型是 REG_SZ,则不包括数据类型值或冒号。在这种情况下,Regedit.exe 假定数据类型为 REG_SZ。下表列出了典型的注册表数据类型:
数据类型 .reg 中的数据类型
REG_BINARY hexadecimal
REG_DWORD dword
REG_EXPAND_SZ hexadecimal(2)
REG_MULTI_SZ hexadecimal(7)
有关注册表数据类型的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 注册表说明
DataValuex 紧跟在冒号(对于 REG_SZ,则为等号)后面,并且格式必须正确(例如,字符串或十六进制)。对二进制数据项使用十六进制格式。

注意:可以为同一个注册表路径输入多个数据项行。

回到顶端
添加注册表子项或添加和更改注册表值
要添加注册表子项或添加/更改注册表值,请在注册表中进行相应的更改,然后导出相应的一个或多个子项。导出的注册表子项自动另存为 .reg 文件。要对注册表进行更改并将更改导出到 .reg 文件,请按照下列步骤操作:
1. 单击“开始”,单击“运行”,在“打开”框中键入 regedit,然后单击“确定”。
2. 找到并单击存放要更改的注册表项的子项。
3. 单击“文件”,然后单击“导出”。

此步骤在您进行更改之前备份子项。如果所做更改产生问题,您可以随后将此文件重新导入注册表。
4. 在“文件名”框中,键入用于保存包含原始注册表项的 .reg 文件的文件名,然后单击“保存”。

注意:请使用能提示其内容的名称,例如,可引用该子项的名称。
5. 在右窗格中,添加或修改所需的注册表项。
6. 重复步骤 3 和步骤 4,再次导出该子项,但是对该 .reg 文件使用不同的文件名。可以使用此 .reg 文件在其他计算机上对注册表进行更改。
7. 在本地计算机上测试所做更改。如果它们产生问题,请双击存放原始注册表数据备份的文件,以将注册表返回到其原始状态。如果更改起到预期作用,则可以使用本文分发注册表更改一节中的方法将您在步骤 6 中创建的 .reg 文件分发给其他计算机。

回到顶端
删除注册表项和值
要使用 .reg 文件删除注册表项,请在 .reg 文件中的 RegistryPath 前放置一个连字符 (-)。例如,要从以下注册表项中删除 Test 子项:
HKEY_LOCAL_MACHINE\Software
请在 .reg 文件中的以下注册表项前放置一个连字符:
HKEY_LOCAL_MACHINE\Software\Test
以下示例就是一个可以执行此任务的 .reg 文件。
[-HKEY_LOCAL_MACHINE\Software\Test]
要使用 .reg 文件删除注册表值,请在 .reg 文件中的 DataItemName 后的等号后放置一个连字符 (-)。例如,要从以下注册表项中删除 TestValue 注册表值:
HKEY_LOCAL_MACHINE\Software\Test
请在 .reg 文件中的 “TestValue”= 后面放置一个连字符。以下示例就是一个可以执行此任务的 .reg 文件。
HKEY_LOCAL_MACHINE\Software\Test
“TestValue”=-
要创建 .reg 文件,请使用 Regedit.exe 导出要删除的注册表项,然后使用记事本编辑 .reg 文件并插入连字符。

回到顶端
重命名注册表项和值
要重命名项或值,请删除该项或值,然后创建一个具有新名称的新项或新值。

回到顶端
分发注册表更改
您可以通过电子邮件将 .reg 文件发送给用户;将 .reg 文件放到网络共享上并指导用户到网络共享上运行它;或者向用户的登录脚本中添加命令以便在他们登录时自动导入 .reg 文件。当用户运行 .reg 文件时,他们会收到以下消息:
注册表编辑器
是否确认要将 path of .reg file 中的信息添加进注册表?
如果用户单击“是”,将会收到以下消息:
注册表编辑器
.reg 文件路径里的信息已被成功地输入注册表。
Regedit.exe 支持 /s 命令行开关,以便不显示这些消息。例如,要从登录脚本批处理文件以无提示方式运行 .reg 文件(使用 /s 开关),请使用以下语法:
regedit.exe /s path of .reg file
还可以使用“组策略”或“系统策略”将注册表更改在网络上分发。有关其他信息,请访问下面的 Microsoft 网站:
http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/DistributingRegistryChanges.asp (http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/DistributingRegistryChanges.asp)
注意:如果更改有效,可将该注册文件发送给网络上适当的用户。

回到顶端

阅读(33 次)

rpm安装总结

http://www.21ds.net/article/23/203

在RedHat Linux和Mandrake等兼容RedHat的发行版中,整个发行版都是利用RPM安装的。所以安装新软件的最好方

法是从网络上下载rpm包。
1)用RPM安装软件包,最简单的命令如下:

# rpm -ivh foo-1.0-l.i386.rpm (这里讲的软件包是foo-1.0-l.i386.rpm,以下都是)

foo####################

下面rpm就会输出该软件包的名称,并显示一个状态条。安装很简单。

2)拆除已安装的软件包
要反安装软件包foo,只需输入以下这行命令:

# rpm -e foo

注意:软件包名是foo,而不是rpm文件名”foo-1.0-l.i386.rpm”。

3)升级软件包
升级软件类似于安装软件:

# rpm -Uvh foo-2.0-l.i386.rpm

foo####################

用户要注意的是:rpm会自动反安装相应软件包的老版本。如果老版本软件的配置文件通新版本的不兼容,rpm会自动将其保存为另外一个文件,用户会看到下面的信息:

saving /etc/foo.conf as /etc/foo.conf.rpmsave

这样用户就可以自己手工去更改相应的配置文件。
另外如果用户要安装老版本的软件,用户就会看到下面的出错信息:

# rpm -Uvh foo-1.0-l.i386.rpm

foo packag foo-2.0-l(which is newer) is already installed

error:foo-1.0-l.i386.rpm cannot be installed

如果用户要抢行安装就使用-oldpackage参数。

4)查询软件包
用户可以用rpm -q在rpm的数据库中查询相应的软件,rpm会给出软件包的名称,版本,发布版本号,例如:

# rpm -q foo

foo-2.0-l

下面是查询时可以使用的特定参数:
-a 查询目前系统安装的所有软件包。
-f 文件名查询包括嘎文件的软件包。
-F 同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF)
-q 软件包名 : 查询该软件包
-Q 同-p参数,只是输入是标准输入(例如 find /mnt/cdrom/RedHat/RPMS | rpm -qQ)
下面是输出时的格式选择:
-i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息。
-l 显示软件包包含的文件
-s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing
-d 显示软件包中的文档(如man,info,README等)
-c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf,passwd,inittab等
如果用-v参数就可以得到类似于ls -l的输出

5)用rpm校验软件包
用户可以用rpm来校验已经安装的软件包,rpm可以校验文件大小、MD5校验码、文件权限、类型和属主等信息。
下面是校验时的参数说明:
-a 简单校验软件包中的文件是否存在
-b 校验软件包中的单个文件
-c 校验安装的所有软件包
-d 比较一个源软件包和已经安装的软件包

如果检验通过就没有任何出错信息,如果有出错信息,它的格式如下:出错信息是一个8位的字符串,如果是一个”.”,就代表没有问题,下面是相应的字符的意义:
5 MD5校验错
S 文件大小错
L 符号连接
T 文件修改时间错
D 设备文件错
U 用户名错
G 组名错
M 属性(包括改写权和文件类型)错
如果用户看到这些信息,最好重新安装或者手工修复。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rpm 实用技巧!
1)用户可以通过FTP来安装软件包。如果用户能够连上网络,想安装某个新的软件包时,可以直接用它的URL地址来安装:
比如:现在在ftp.linuxsir.com/pub/linux/redhat/RPMS/下有这个文件包:foo-1.0-1.i386.rpm,那就可以用这样的命令:

# rpm -i ftp.linuxsir.com/pub/linux/redhat/RPMS/foo-1.0-1.i386.rpm

来安装,也可以查询!

2)如果用户不小心巫山了几个文件,但不确定到底是那些文件,想对整个系统进行校验,以了解哪些部分可能已经损坏,可以用:

# rpm -Va

3)如果用户碰到一个人不出来的文件,想要知道它是属于那一个软件包的话,可以这样做:

# rpm -qf /usr/X11R6/bin/xjewel

结果会得到以下信息:
xjewel-1.6-1

4)如果用户得到一个新的RPM文件,却不清楚它的内容;或想了解某个文件包将会在系统里安装那些文件,可以这样做:

# rpm -qpi koules-1.2-2.i386.rpm

结果会获得很多信息

阅读(30 次)

打开 Microsoft 管理控制台时出现“Snap-in Failed to Initialize”(管理单元初始化失败)错误消息

打开 Microsoft 管理控制台时出现“Snap-in Failed to Initialize”(管理单元初始化失败)错误消息
察看本文应用于的产品
文章编号 : 826282
最后修改 : 2006年11月3日
修订 : 1.0
症状
当尝试在包含安全策略(例如“本地安全策略”、“组策略”或“域安全策略”)的 Windows XP Professional 中打开 Microsoft 管理控制台时,该控制台无法打开,您可能收到类似下列之一的错误消息:
管理单元初始化失败。
名称:组策略
CLSID:{8FC0B734-A0E1-11D1-A7D3-0000F87571-E3}
- 或 -
管理单元初始化失败。
名称:策略的结果集
CLSID:{6DC3804B-7212-458D-ADB0-9A07E2AE1FA2}
- 或 -
管理单元初始化失败。
名称:软件安装(计算机)
CLSID:{942A8E4F-A261-11D1-A760-00C04FB9603F}
- 或 -
管理单元初始化失败。
名称:<未知>
CLSID:{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}

回到顶端
原因
发生此问题的原因是 PATH 环境变量不包括 %SystemRoot%\System32\WBEM 文件夹。

回到顶端
解决方案
要解决此问题,请将 %SystemRoot%\System32\WBEM 文件夹添加到 PATH 环境变量中。为此,请按照下列步骤操作:
1. 右键单击“我的电脑”,然后单击“属性”。
2. 在“高级”选项卡上,单击“环境变量”。
3. 在“系统变量”下,双击“PATH 环境变量”。
4. 类型:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM
注意:如果出现其他系统变量,请不要删除。
5. 单击“确定”,然后单击“确定”。

回到顶端

http://support.microsoft.com/kb/826282/zh-cn

阅读(31 次)

gvim打开某些文本文件死住怎么解决

首先fuser 或ps -ef|grep vi一下看看该文件有没有被其他进程使用或被其他vi打开,有的话杀进程。确定使用该文件的进程没有了后,ls -la一下看看有没有和该文件相关的隐藏文件,一般是swp swo文件,删除掉后一般就能正常了

阅读(23 次)

如何诊断”Stop 0xC0000218″错误

http://support.microsoft.com/kb/314874/zh-cn

如何诊断”Stop 0xC0000218″错误
察看本文应用于的产品
文章编号 : 314874
最后修改 : 2003年1月14日
修订 : 1.1
本文的发布号曾为 CHS314874
症状
在基于 Windows 的计算机上,可能会收到以下有关”Stop”错误的信息之一:
Stop 0xc0000218 (0xe11a30e8, 0×00000000, 0×000000000, 0×00000000)
UNKNOWN_HARD_ERROR
-或-
Stop:0xc0000218 {Registry File Failure}
The registry cannot load the hive (file):
\SystemRoot\System32\Config\SYSTEM or its log or alternate.
It is corrupt, absent, or not writable.
括号中的参数特定于系统配置,可能有所变化。

回到顶端
原因
如果必需的注册表配置单元文件由于已损坏或丢失而无法加载,可能会出现这种现象。注册表文件可能因为硬盘损坏或其他一些硬件问题而损坏。

如果驱动程序在加载到内存中时损坏了注册表数据,或者注册表加载到的内存有奇偶校验错误,可能也会出现这种现象。在后一种情况中,请关闭外部缓存并检查内存芯片。

回到顶端
解决方案
若要解决该错误,请完成以下诊断步骤,直到不再出现该错误:
1. 尝试通过使用”已知上次加载正确”配置来启动计算机。为此,请在 Windows 加载中出现已知上次加载正确消息时按”空格”键。
2. 使用”故障恢复控制台”恢复注册表文件。有关如何使用”故障恢复控制台”恢复注册表文件的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中的文章:
CHS307545 (http://support.microsoft.com/kb/CHS307545/ZH-CN/) 如何恢复禁止 Windows XP 启动的损坏注册表
可能需要在基本输入/输出系统 (BIOS) 中更改启动顺序,以便从 CD 启动并启动”故障恢复控制台”。有关其他信息,请单击下面的文章编号,查看 Microsoft 知识库中的文章:
307654 (http://support.microsoft.com/kb/307654/EN-US/) HOW TO:安装和使用 Windows XP 的恢复控制台
3. 可能需要在基本输入/输出系统 (BIOS) 中更改启动顺序,以便从 CD 启动并启动”故障恢复控制台”。完成并行安装,并从磁带备份恢复注册表文件。.
a. 将 Windows 重新安装到一个单独的文件夹中。
b. 恢复位于 %SystemRoot%\System32\Config 文件夹中的注册表配置单元。
c. 如果没有磁带备份,请与管理员联系。网络服务器和生产工作站的备份作为运行任何产品系统的一个重要部分包括在内。
备注:如果 Windows 存储在格式化为 FAT 文件系统的分区上,可以通过使用来自其他计算机的文件并将注册表配置单元文件复制到 Windows 文件夹中来恢复文件。

4. 可能需要在基本输入/输出系统 (BIOS) 中更改启动顺序,以便从 CD 启动并启动”故障恢复控制台”。如果”Stop”错误信息是由硬件问题(例如,硬盘上损坏的扇区)引起的,驱动器可能需要低级格式化、重新分区、重新格式化和从磁带备份恢复整个系统,才能清除该错误。如果”Stop”错误是由物理上损坏的扇区引起的,必须使用低级格式化来重新定位损坏的扇区,即使这是一个激烈的方法。

回到顶端

阅读(32 次)

windows xp注册表的实体文件

注册表的文件有两处:
1、system32\config 下面多个无扩展名的文件都是
2、document and settings 用户名下的 NTUSER.DAT(相当于HKEY_CURRENT_USER
C:\WINDOWS\system32\config
里面主要的和注册表相关的文件
default
sam
security
software
system

阅读(24 次)

XP系统启动失败后重启用禁用自动重启设置有助于分析问题

http://www.zdnet.com.cn/server/2008/0927/1155332.shtml 

在这种情况下,你需要禁用自动重启功能。具体做法是:在Windows XP启动时,当你看到“Please select the operating system to start”,或者听到一声蜂鸣了之后,按F8键打开Windows高级选项菜单。

  然后,选择禁止在系统故障时自动重启,然后按Enter。现在Windows XP在遇到问题的时候会挂起,它会给出一个停止信息,你可以用于诊断问题。

阅读(30 次)