免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3318 | 回复: 5
打印 上一主题 下一主题

Some Tips For Linux [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-08-08 22:19 |只看该作者 |倒序浏览
.只列子目录的方法 \r\n  ls -F | grep /$ 或者 alias sub = \"ls -F | grep /$\"(linux) \r\n  ls -l  | grep \"^d\" 或者 ls -lL | grep \"^d\" (Solaris) \r\n  find . -type d \r\n  find . -type d | sort \r\n  参考dtree \r\n\r\n列出除了某些类型文件的当前目录所有文件 \r\n  使用Ksh,用ls !(*.Z)可以显示所有文件,除了*.Z文件。 \r\n  这个命令在一个目录里有许多种类型的文件的时候很有用. \r\n\r\n计算文件数和目录数 \r\n  下面的语句可以帮你计算有多少个文件和多少个目录.. \r\n  ls -l * | grep \"^-\" | wc -l   <---- to count files \r\n  ls -l *  | grep \"^d\" | wc -l  <----- to count dir \r\n  还可以将以上的语句变成script或做个alias \r\n\r\n复制子目录及子目录下的所有文件 \r\n  在用cp时加上-r参数,如\"cp -r /mnt/floppy/* /usr/local/\" \r\n  要参考的重要参数是-f -s \r\n\r\n快速进入某些目录 \r\n  键入 cd ~ (或cd $HOME)可进入用户的home目录. \r\n  键入 cd - 可进入上一次所在的目录. \r\n\r\n显示环境变量 \r\n   echo $HOME    显示家目录 \r\n   echo $PATH    显示可执行文件搜索路径 \r\n   env           显示所有环境变量(可能很多,最好用\"env | more\",\"env | grep PATH\"等) \r\n   修改环境变量,在bash下用export,在csh下用setenv。比如: \r\n   export PATH=$PATH:/usr/local/bin \r\n   要想知道export的具体用法,可以用shell的help命令:help export \r\n\r\n显示文件的类型 \r\n   用file命令,比如\"file /bin/mount\",\"file xxx.gz\",\"file netscape\",\"file initrd.img\"等等。 \r\n   相关的配置文件在/etc/magic或者/usr/share/magic \r\n\r\n查找命令文件的路径 \r\n   比如你要查找mount命令的具体路径,可以用 \r\n   type mount \r\n   whereis mount 这个命令还可以找出与这个命令文件相关的文件如manuals page。 \r\n\r\n查找文件 \r\n   使用find命令,比如: \r\n    find /usr -name XF86*          在/usr目录下(包含子目录)查找名字前四个字母为XF86的文件 \r\n    find . -name netscape -print   在当前目录下(包含子目录)查找名为netscape的文件 \r\n    find /home -nouser         在/home目录下查找没有用户属主的文件(用户帐号被删除但有遗留文件) \r\n    find /var -newer test          在/var目录下查找比test文件日期更新的文件 \r\n   find命令有很多参数,注意用man命令查看。 \r\n   更快速的查找文件是使用locate,第一次使用locate之前用updatedb来更新文件/目录名数据库。 \r\n   它把文件/目录信息写到数据库中,以后查找起来就特别的快。updatedb放在crontab中而且缺省 \r\n   配置是在半夜自动执行。locate存在轻微的安全性问题,因为普通用户可以用它来取得自己不能 \r\n   访问的目录/文件的部分信息。现在有个secure locate,把uid/gid也保存到数据库中,用户在 \r\n   locate时先比较权限。 \r\n\r\n控制台下回卷屏幕 \r\n   如何查看已经卷过屏幕的信息呢?试试这两个按键组合:shift+PageUp和shift+PageDown \r\n   对xterm/nxterm/cxterm/xxgdb都有效。而KDE带的KVT已经做得很好了。 \r\n\r\n查看文件内容的特殊方法 \r\n   相信最基本的cat和less你已经很熟悉了,如果有特殊的要求呢: \r\n   如果你只想看文件的前5行,可以使用head命令,如: \r\n     head -5 /etc/passwd \r\n   如果你想查看文件的后10行,可以使用tail命令,如: \r\n     tail -10 /etc/passwd \r\n     tail -f /var/log/messages \r\n          参数-f使tail不停地去读最新的内容,这样有实时监视的效果, \r\n          当你在ppp拨号的过程中用它岂不是很方便! \r\n   查看文件中间一段,你可以使用sed命令 如: \r\n     sed -n \'5,10p\' /etc/passwd \r\n   这样你就可以只查看文件的第5行到第10行。 \r\n\r\n取消^M字符 \r\n   当你FTP一些DOS文件到unix下时,你经常会看见每行文件后面有个讨厌的^M 字符, \r\n   有两个简单的方法可以取消它。 \r\n   用\"vi\"打开此文件,在Command mode下敲入: \r\n     :%s/^V^M//g \r\n   或者,在UNIX SHELL下敲入: \r\n     sed \'s/^V^M//g\' foo > foo.new \r\n\r\n利用Find命令改变所有权 \r\n   想要改变当前目录下所有文件的所有权,可以这样: \r\n     find . -exec chown OWNER.[GROUP] {} \\; (Solaris) \r\n     find . -exec chown -R OWNER.[GROUP] {} \\; (Linux) \r\n\r\n\r\n\r\n\r\n使用nohup命令(不挂起) \r\n   如果你想进程在你退出系统后还能执行,可以使用NOHUP命令如: \r\n     % nohup tar -cf /dev/tape /home & \r\n   你logout退出后再重新登录的话,使用\'ps\'命令可以看到进程还在执行 \r\n   注意,要想把命令真正放到后台运行,nohup必须与&操作同时使用。 \r\n   有些软件自己能处理SIGHUP信号,如wget,则对它们无须用nohup。 \r\n   如果你愿开动脑筋的话,还可以用nohup来实现ppp回拨:先拨号上去,然后以nohup执行一个自制的 \r\n   脚本,如\"sleep 60; ppp-start-script\"等等。最后logout退出并挂断电话等着就是。 \r\n\r\n产生一个以当日日期为后缀的文件 \r\n    file=`date   \'+%m%d\'` | touch todayis.$file \r\n   或者做一个shell脚本: \r\n     #!/usr/bin/sh \r\n     file=`date  \'+%M%d\'` \r\n     touch todayis.$file \r\n     exit 0 \r\n   注意定义file变量中的“`”不是“ \'”,而是左上角数字键1傍边那个(左单引号)。 \r\n\r\n将man/info的内容存为文本文件 \r\n   以man tcsh为例: \r\n   1) man tcsh | col -b > tcsh.txt \r\n   2) nroff -man tcsh.man | col -b > tcsh.txt \r\n   以info emacs为例 \r\n   info emacs -o emacs.txt -s \r\n   提示,如果安装了KDE的话用kdehelp去看man page和info page是很方便的。 \r\n   嫌KDE太大的话还有TkMan可以选择,也是图形/超文本方式的,有搜索引擎,功能更强。 \r\n   新来者要多去看man和info哟! \r\n\r\n关于rpm的小技巧 \r\n   1)安装rpm包时显示进度 \r\n     用-vh参数,如rpm -ivh ipchains-1.3.6-1.i386.rpm \r\n     如果用glint或xrpm则不必。 \r\n   2)直接通过ftp来安装rpm包 \r\n     如rpm -i ftp://ftp.xxx.xxx \r\n   3)校验所有的rpm包,查找丢失的文件 \r\n     rpm -Va \r\n   4)查找一个文件属于哪个rpm包 \r\n     例如:rpm -qf /usr/bin/who \r\n   5)列出一个rpm包的描述信息 \r\n     例如:rpm -qpi mon-0.37j-1.i386.rpm \r\n   6)列出一个rpm包的文件信息 \r\n     例如:rpm -qpl mon-0.37j-1.i386.rpm \r\n\r\n快速展开xxx.tar.gz/xxx.tgz压缩的包 \r\n   tar zvfx xxx.tgz 在当前目录下展开这个包 \r\n   tar zvft xxx.tgz 只测试不展开 \r\n   tar zvfx xxx.tgz -C /new-dir 展开后放到/new-dir目录下 \r\n   tar zvfc test.tgz /test 把/test目录下所有的文件及子目录打包成test.tgz \r\n   tar的参数很多,要仔细学习。 \r\n\r\n拷贝与粘贴文本 \r\n   如果启动了gpm这个守护神(deamon)程序的话,可以用鼠标左键来选择文本,然后就可以用鼠标 \r\n   中键把它粘贴到你所想要的地方。如果是两键鼠标则在配置是要选择防真3键鼠标,之后同时按 \r\n   下左右键模拟中键。在文本终端下应该用鼠标右键来粘贴。 \r\n\r\n快速查找某个程序运行中的PID号/关机 \r\n   例如想查找inetd: ps aux | grep inetd \r\n   又如想找到最吃内存的进程: ps aux | sort +4n \r\n   找到进程的PID之后就可以用kill给它发信号,或者强制杀死它如:kill -9 xxx(某个进程的PID) \r\n   在Linux下还提供了一个killall,可以直接使用进程的名字而不是PID号,如killall -HUP inetd \r\n   又如killall xdm。killall会把信号发给以指定名字的程序运行的所有进程。 \r\n   用killall -l列出所有可用的信号。 \r\n   提到ps忍不住给大家介绍一下qps,用qt写的图形界面,综合了free,top,ps及kill的特点,还可以看到 \r\n   进程的Socket/Memory Map/Files信息。还有为KDE写的ktop,优点是列出了父子进程的关系。 \r\n   shutdown -r now 杀掉所有进程立即重新启动 \r\n   shutdown -h now 杀掉所有进程立即停机 \r\n   shutdown -h +5 \"Warning: After 5 minutes I\'ll shutdown\" 给用户发消息并在5分钟后停机。 \r\n   相关命令有reboot,halt,poweroff,init等。 \r\n   要想实现软件关掉电源,则你的PC机必须是ATX结构的,然后去配置编译内核,打开 \r\n   charactor device/Advanced Power Management support/Power off on shutdown这一项。 \r\n\r\n查找Xwindow下的字体信息,特别是字符映射表(内码) \r\n   xlsfonts 列出所有字体 \r\n   xfontsel 分类列出所有字体并显示示范文本 \r\n   xfd 显示某个字体文件中的所有字符及内码,比如用 xfd -fn hanzigb16fs 看看中文内码 \r\n   再用xfd -fn cclib16st看看cxterm所用字库的内码与XF86的不同(注意最高位)。 \r\n\r\n查找日期为某一天的文件 \r\n   A=`find ~ -print` | ls -l --full-time $A 2>/dev/null | grep \"Jun 27\"  | grep 2002\r\n   Linux的命令很厉害的呀! \r\n 这个script,用着方便点儿。你把它存成一个随便什么名字的文件,置上x属性就行了。 \r\n  #!/bin/sh \r\n   # Copyright by Ming Gong for \r\n   # GPL V2, Jun 30, 1998 \r\n   # The right of usage, distribution and modification is here by granted by the author. \r\n   # The author deny any responsibilities and liabilities related to the code. \r\n   # \r\n   OK=0 \r\n   A=`find $1 -print` \r\n   if expr $3 == 1 >/dev/null  ; then M=Jan ; OK=1 ; fi \r\n   if expr $3 == 2 >/dev/null  ; then M=Feb ; OK=1 ; fi \r\n   if expr $3 == 3 >/dev/null  ; then M=Mar ; OK=1 ; fi \r\n   if expr $3 == 4 >/dev/null  ; then M=Apr ; OK=1 ; fi \r\n   if expr $3 == 5 >/dev/null  ; then M=May ; OK=1 ; fi \r\n   if expr $3 == 6 >/dev/null  ; then M=Jun ; OK=1 ; fi \r\n   if expr $3 == 7 >/dev/null  ; then M=Jul ; OK=1 ; fi \r\n   if expr $3 == 8 >/dev/null  ; then M=Aug ; OK=1 ; fi \r\n   if expr $3 == 9 >/dev/null  ; then M=Sep ; OK=1 ; fi \r\n   if expr $3 == 10 >/dev/null  ; then M=Oct ; OK=1 ; fi \r\n   if expr $3 == 11 >/dev/null  ; then M=Nov ; OK=1 ; fi \r\n   if expr $3 == 12 >/dev/null  ; then M=Dec ; OK=1 ; fi \r\n   if expr $3 == 1 >/dev/null  ; then M=Jan ; OK=1 ; fi \r\n\r\n   if expr $OK == 1 > /dev/null ; then \r\n     ls -l --full-time $A 2>/dev/null | grep \"$M $4\" | grep $2 ; \r\n   else \r\n     echo Usage: $0 path Year Month Day; \r\n     echo Example: $0 ~ 1998 6 30; \r\n   fi \r\n\r\n

论坛徽章:
0
2 [报告]
发表于 2002-08-08 22:20 |只看该作者
用软盘/光盘等移动介质  \r\n   简单地说,你需要把软盘/光盘设备上的文件系统安 \r\n   装到Linux目录树上的一个点上,称之为安装点(mount point),通常是一个目录。安装Linux后会有个缺省的安装点/mnt,在它下面还有/mnt/floppy和/mnt/cdrom。你可以用mount -t ext2 /dev/fd0 /mnt/floppy  <--把linux文件系统格式的软盘安装上来 \r\n       mount -t msdos /dev/fd0 /mnt/floppy <--把dos文件系统格式的软盘安装上来mount -t vfat /dev/fd0  /mnt/floppy <--vfat支持瘟95/98的长文件名mount /dev/hdb /mnt/cdrom  <--把以从盘方式接在第一个IDE口上的光驱上的光盘安装上来mount /dev/cdrom /mnt/cdrom  <-- /dev/cdrom是指向光驱设备的一个连接 \r\n       mount /mnt/cdrom    <--可以这么用是因为在/etc/fstab里已经定义了 \r\n       umount /mnt/floppy  <--在拿出软盘之前先要把它卸载 \r\n       umount /mnt/cdrom   <--不卸载就拿不出光盘 \r\n   当然你也可以自己建一些安装点,比如\"mkdir /mnt/smb\",\"mkdir /scd\"然后 \r\n       mount -t iso9660 /dev/scd0 /scd  <--/dev/scd0: SCSI光驱 \r\n       smbmount //fjj/download /mnt/smb \r\n   等等,熟悉之后就可以灵活运用。 \r\n   单用mount而不跟任何参数可以显示已经安装的文件系统,或者查看/etc/mtab文件 \r\n   初学者还经常问到如何格式化磁盘,在Linux里概念有些不同,称之为制作文件系统(make filesystem) \r\n   应该用mkfs命令,由于现在的Linux都使用ext2格式,最好直接使用mke2fs,比如mke2fs /dev/fd0 \r\n   mke2fs /dev/hdb2等等。如果要对软盘低级格式化,则可以用fdformat,而硬盘在出厂时已经格式化, \r\n   无须低级格式化(那是危险的)。检查文件系统则用e2fsck,如e2fsck -av /dev/fd0。 \r\n   哈,这个根本算不上Tips,不过有些初学者总是不喜欢看书思考,甚至还问如何添加/删除用户。 \r\n\r\n添加/删除用户 \r\n   用useradd username(或者adduser username)添加一个名为username的用户,然后用passwd username \r\n   指定口令。用户的信息记录在/etc/passwd文件里,由于每个用户都可以(而且必须能)读出这个文件然 \r\n   后就可以crack出其它用户的密码,为安全考虑现在都使用shadow。在/etc/passwd下用户的口令变为x \r\n   真正的口令密文记录在/etc/shadow里,而这个文件只有以root权限才能读出。Redhat 5.1以下版本没 \r\n   有直接使用shadow,需要用pwconv转换一下,如果要变回来,可以用pwunconv。提示:在/etc/skel目 \r\n   录记录了一个用户应该有的基本文件(ls -a /etc/skel/看看都有什么),useradd会自动把这些文件复 \r\n   制到用户的家目录下并置上适当的权限(除非添加用户时用了-m参数: useradd -m xxx)。如果你在这个 \r\n   目录下键一个public_html的目录,则以后添加的用户在它的家目录下都会自动有个同名的目录,这样 \r\n   每个用户都有了“个人主页”。 \r\n   删除用户可以用userdel usrname或userdel -r username(有些发行版可能是deluser),-r参数会删除 \r\n   这个用户的家目录,但是在系统里别的地方还可能有此用户的信息,所以在删除用户之前最好还要 \r\n   用find / -user username等方式去找一找相关信息。 \r\n   如果要临时禁止一个用户,可以在/etc/passwd文件中此用户的密码这一项第一个字符前添加一个*号。 \r\n   如果把密码域改为空,则此用户不需要密码就可以进入系统,当你忘记root口令时,可以用软盘启动 \r\n   把原来的root安装上来,直接去改passwd文件。我记得以单用户方式启动时不需要密码可以进去。 \r\n   长用户名的问题,在Redhat发行版中已经做得很好了,也允许用户名中有空格。如果你手上的发行版 \r\n   不支持,到/usr/include/utmpbits.h里把UT_NAMEDSIZE改为32,重新编译相关程序。 \r\n   另一个直观的配置工具是linuxconf,比如用它来配置pppuser等等。 \r\n   这里只能给一些线索,自己多看\"man useradd\",\"man shadow\",\"man group\",\"man userdel\"...... \r\n   再一次建议新来者多看书多思考多看看man page,否则不大容易找到/etc/skel是干什么的。 \r\n\r\n列出一个目录占用的空间 \r\n   du或du -s或du -k \r\n   du -S | sort -n 可以迅速发现那个目录是最大的。 \r\n   用df可以看到已安装的文件系统的空间大小及剩余空间大小。 \r\n   quota -v查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。 \r\n\r\n命令补齐(TAB键的妙用) \r\n   很多shell都有这个功能。 \r\n   1) 只需输入文件或目录名的前几个字符, 然后按TAB \r\n      键,如无相重的,完整的文件名立即自动在命令行 \r\n      出现;如有相重的,再按一下TAB键,系统会列出 \r\n      当前目录下所有以这几个字符开头的名字.例如 \r\n      cd /mnt/cd<tab键> 自动补起为 cd /mnt/cdrom \r\n   2) 在命令行下,只需输入例如\"m\",再连续按两次TAB \r\n      键,系统将列出所有以\"m\"开头的命令,(包括自定义 \r\n      的Bshell命令函数),对查找某些记不清楚的命令特 \r\n      有用.例如输入\"ftp\",将查到ftp,ftpcount,ftpwho \r\n      ftpshut等本不熟悉的命令. \r\n\r\n让grep搜寻文件及所有子目录下的文件里的内容 \r\n例如搜寻ZhXwin下所有C原代码中的\"Chinput\"(试试取消下行的-q参数): \r\n   find /download/ZhXwin -name *.c -exec grep -q -s Chinput {} \\; -print \r\n   查找所有文件则可以用: \r\n  find . -type f -exec grep -s chinese {} \\; -print \r\n   如果喜欢图形界面,KDE带的kfind很不错。 \r\n\r\n查看启动时的log信息 \r\n首先去查看/etc/syslog.conf文件,找到对应的文件。 \r\n(更详细的信息去看\"man syslogd\" \"man syslog.conf\" 以及\"man klogd\" \r\n 通常在SlackWare下为/var/adm/messages,\r\n在Redhat下为/var/log/messages。 \r\n这些文件可能会很大,要注意备份和删除。 \r\n前面已经提到用tail(tail -f)查看这些文件的方法。

论坛徽章:
0
3 [报告]
发表于 2002-08-08 22:25 |只看该作者
一些小技巧, 其实很有用的,原文比较乱,整理了一下子。\r\n希望大家喜欢。

论坛徽章:
0
4 [报告]
发表于 2002-08-12 14:38 |只看该作者
直接cd就是进入用户的$home里了

论坛徽章:
0
5 [报告]
发表于 2002-08-12 19:12 |只看该作者
一定费了不少力气整理....\r\n谢谢fenng 了,加入个人收入藏先...

论坛徽章:
0
6 [报告]
发表于 2003-03-09 20:40 |只看该作者
我也写一个\r\nfuser -k /directory\r\n杀掉与 directory有关的进程,比如光区不能UNMOUNT \r\nfuser -k /mnt/cdrom 就成\r\n\r\n建议,把这帖子置顶,大家都来写写自己知道的tips
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP