分享
 
 
 

[Linux] Linux的一些Tips (转载)

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

http://www.21php.com/tutorial/tutorial.php?tid=89

作者: LinuxForum

1.虚拟控制台

登录后按Alt+F2键这时又可以看到"login:"提示符, 这个就是第二个虚拟控制台.再按Alt+F1又回到第一个控制台,来回切换很方便。查看/etc/inittab文件可以找到一下几行:

#Run gettys in standard runlevels

1:12345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

也就是说初始化的时候定义了6个虚拟控制台,你可以编辑这个文件来增加或减少虚拟控制台。在Xwin下使用虚拟控制台则要用Ctrl+Alt+F?来切换。Xwindow占用虚拟控制台后的第一个控制台,缺省就是tty7,所以要切换回Xwin则按Alt+F7(当你改变了虚拟控制台的数目时则要改变)。如果启动了第二个Xserver则应该是Alt+F8,等等。

2.Redhat下显示彩色目录及文件列表

用ls --color -F,参数--color指示用彩色显示,参数-F会在文件/目录名后加一个字符来指示它的类别。建议初学者用man ls看看详细信息。比如用-l参数列出文件/目录的绝大部分信息(长格式显示);用-a参数列出所有文件;包括首字符为"."的隐含文件;用-N参数不处理文件名直接显示,这样在中文环境下就可以显示中文文件名了。还要注意ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more")。

为了方便起见,你可以编辑/etc/bashrc或自己家目录(home)下的.bashrc,加入一行:

alias ls="ls --color -F -N"

重新运行一下bash会立即生效,如果加在/etc/bashrc里则对所有使用bash shell的用户有效。如果使用的是其它的shell,则去找对应的配置文件。注意不是/etc/aliases文件,那是sendmail的别名配置文件。

ls显示的颜色是可以修改的,请参考"Colours with Linux terminals",里面有个shell脚本可以显示所有的ANSI颜色。你可以去看一下/etc/DIR_COLORS或$HOME/.dir_colors,要注意两个文件的作用范围不同。也可以用dircolors -p命令列出设置,更详细信息见"man dircolors"。

3.只列子目录的方法:

ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux)

ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)

find . -type d

find . -type d | sort

参考dtree

4.列出除了某些类型文件的当前目录所有文件

使用Ksh,用ls !(*.Z)可以显示所有文件,除了*.Z文件。

这个命令在一个目录里有许多种类型的文件的时候很有用.

5.计算文件数和目录数

下面的语句可以帮你计算有多少个文件和多少个目录..

ls -l * | grep "^-" | wc -l <---- to count files

ls -l * | grep "^d" | wc -l <----- to count dir

还可以将以上的语句变成script或做个alias

6.复制子目录及子目录下的所有文件

在用cp时加上-r参数,如"cp -r /mnt/floppy/* /usr/local/"

要参考的重要参数是-f -s

7.文件/目录改名

简单地用move命令移到新名字下即可。例如"mv /usr/oldname /usr/newname"

8.删除一个目录下的所有文件和子目录及子目录下的所有文件

rm -rf /tmp/example

这些都是给懒人们准备的,新手最好多用man命令学习。要是英语不好,等中文发行版出来 :-(

9.快速进入某些目录

键入 cd ~ (或cd $HOME)可进入用户的home目录.

键入 cd - 可进入上一次所在的目录.

10.显示环境变量

echo $HOME 显示家目录

echo $PATH 显示可执行文件搜索路径

env 显示所有环境变量(可能很多,最好用"env | more","env | grep PATH"等)

修改环境变量,在bash下用export,在csh下用setenv。比如:

export PATH=$PATH:/usr/local/bin

要想知道export的具体用法,可以用shell的help命令:help export

11.显示文件的类型

用file命令,比如"file /bin/mount","file xxx.gz","file netscape","file initrd.img"等等。

相关的配置文件在/etc/magic或者/usr/share/magic

12.查找命令文件的路径

比如你要查找mount命令的具体路径,可以用

type mount

whereis mount 这个命令还可以找出与这个命令文件相关的文件如manuals page。

13.查找文件

使用find命令,比如:

find /usr -name XF86* 在/usr目录下(包含子目录)查找名字前四个字母为XF86的文件

find . -name netscape -print 在当前目录下(包含子目录)查找名为netscape的文件

find /home -nouser 在/home目录下查找没有用户属主的文件(用户帐号被删除但有遗留文件)

find /var -newer test 在/var目录下查找比test文件日期更新的文件

find命令有很多参数,注意用man命令查看。

更快速的查找文件是使用locate,第一次使用locate之前用updatedb来更新文件/目录名数据库。

它把文件/目录信息写到数据库中,以后查找起来就特别的快。updatedb放在crontab中而且缺省配置是在半夜自动执行。locate存在轻微的安全性问题,因为普通用户可以用它来取得自己不能访问的目录/文件的部分信息。现在有个secure locate,把uid/gid也保存到数据库中,用户在locate时先比较权限。

14.控制台下回卷屏幕

如何查看已经卷过屏幕的信息呢?试试这两个按键组合:shift+PageUp和shift+PageDown

对xterm/nxterm/cxterm/xxgdb都有效。而KDE带的KVT已经做得很好了。

15.查看文件内容的特殊方法

相信最基本的cat和less你已经很熟悉了,如果有特殊的要求呢:

如果你只想看文件的前5行,可以使用head命令,如:

head -5 /etc/passwd

如果你想查看文件的后10行,可以使用tail命令,如:

tail -10 /etc/passwd

tail -f /var/log/messages

参数-f使tail不停地去读最新的内容,这样有实时监视的效果,

当你在ppp拨号的过程中用它岂不是很方便!

查看文件中间一段,你可以使用sed命令 如:

sed -n '5,10p' /etc/passwd

这样你就可以只查看文件的第5行到第10行。

16.取消^M字符

当你FTP一些DOS文件到unix下时,你经常会看见每行文件后面有个讨厌的^M 字符,

有两个简单的方法可以取消它。

用"vi"打开此文件,在Command mode下敲入:

:%s/^V^M//g

或者,在UNIX SHELL下敲入:

sed 's/^V^M//g' foo > foo.new

17.利用Find命令改变所有权

想要改变当前目录下所有文件的所有权,可以这样:

find . -exec chown OWNER.[GROUP] {} ; (Solaris)

find . -exec chown -R OWNER.[GROUP] {} ; (Linux)

18.改变xterm/cxterm下字体大小

同时按下Ctrl键和鼠标右键会弹出一个菜单让你选择,也可以在启动xterm时指定字体,

如"xterm -fn 8x16 &"

提示:难道你不想试试Ctrl+鼠标左键会有什么吗?!

19.启动一个程序时让它立即进入后台运行方式

看过前面一篇bash的介绍应该明白Ctrl+z/bg/fg的用法。有些程序工作起来挺费时间,在它后面加个&符号看看,例如"updatedb &","netscape &"等等。这样这个shell会释放出来干别的活。注意这样出来的程序父进程仍然是这个shell,若你退出这个shell,这些程序也会被kill掉(除非这个程序自己特别处理能脱离shell)。建议退出shell之前用jobs命令查看后台作业。

20.使用nohup命令(不挂起)

如果你想进程在你退出系统后还能执行,可以使用NOHUP命令如:

% nohup tar -cf /dev/tape /home &

你logout退出后再重新登录的话,使用'ps'命令可以看到进程还在执行

注意,要想把命令真正放到后台运行,nohup必须与&操作同时使用。

有些软件自己能处理SIGHUP信号,如wget,则对它们无须用nohup。

如果你愿开动脑筋的话,还可以用nohup来实现ppp回拨:先拨号上去,然后以nohup执行一个自制的脚本,如"sleep 60; ppp-start-script"等等。最后logout退出并挂断电话等着就是。

21.快速调出历史命令

看了上一篇bash的介绍,想必对history,!,!!这些用法很熟悉了。其实你还可以用上下光标键来调出历史命令,然后用左右光标键移动并可编辑命令行。

22.产生一个以当日日期为后缀的文件

file=`date '+%m%d'` | touch todayis.$file

或者做一个shell脚本:

#!/usr/bin/sh

file=`date '+%M%d'`

touch todayis.$file

exit 0

注意定义file变量中的“`”不是“ '”,而是左上角数字键1傍边那个(左单引号)。

23.将man/info的内容存为文本文件

以man tcsh为例:

1) man tcsh | col -b > tcsh.txt

2) nroff -man tcsh.man | col -b > tcsh.txt

以info emacs为例

info emacs -o emacs.txt -s

提示,如果安装了KDE的话用kdehelp去看man page和info page是很方便的。

嫌KDE太大的话还有TkMan可以选择,也是图形/超文本方式的,有搜索引擎,功能更强。

新来者要多去看man和info哟!

24.关于rpm的小技巧

1)安装rpm包时显示进度

用-vh参数,如rpm -ivh ipchains-1.3.6-1.i386.rpm

如果用glint或xrpm则不必。

2)直接通过ftp来安装rpm包

如rpm -i ftp://ftp.xxx.xxx

3)校验所有的rpm包,查找丢失的文件

rpm -Va

4)查找一个文件属于哪个rpm包

例如:rpm -qf /usr/bin/who

5)列出一个rpm包的描述信息

例如:rpm -qpi mon-0.37j-1.i386.rpm

6)列出一个rpm包的文件信息

例如:rpm -qpl mon-0.37j-1.i386.rpm

25.快速展开xxx.tar.gz/xxx.tgz压缩的包

tar zvfx xxx.tgz 在当前目录下展开这个包

tar zvft xxx.tgz 只测试不展开

tar zvfx xxx.tgz -C /new-dir 展开后放到/new-dir目录下

tar zvfc test.tgz /test 把/test目录下所有的文件及子目录打包成test.tgz

tar的参数很多,要仔细学习。

26.拷贝与粘贴文本

如果启动了gpm这个守护神(deamon)程序的话,可以用鼠标左键来选择文本,然后就可以用鼠标中键把它粘贴到你所想要的地方。如果是两键鼠标则在配置是要选择防真3键鼠标,之后同时按下左右键模拟中键。在文本终端下应该用鼠标右键来粘贴。

27.快速查找某个程序运行中的PID号/关机

例如想查找inetd: ps aux | grep inetd

又如想找到最吃内存的进程: ps aux | sort +4n

找到进程的PID之后就可以用kill给它发信号,或者强制杀死它如:kill -9 xxx(某个进程的PID)

在Linux下还提供了一个killall,可以直接使用进程的名字而不是PID号,如killall -HUP inetd

又如killall xdm。killall会把信号发给以指定名字的程序运行的所有进程。

用killall -l列出所有可用的信号。

提到ps忍不住给大家介绍一下qps,用qt写的图形界面,综合了free,top,ps及kill的特点,还可以看到进程的Socket/Memory Map/Files信息。还有为KDE写的ktop,优点是列出了父子进程的关系。

shutdown -r now 杀掉所有进程立即重新启动

shutdown -h now 杀掉所有进程立即停机

shutdown -h +5 "Warning: After 5 minutes I'll shutdown" 给用户发消息并在5分钟后停机。

相关命令有reboot,halt,poweroff,init等。

要想实现软件关掉电源,则你的PC机必须是ATX结构的,然后去配置编译内核,打开

charactor device/Advanced Power Management support/Power off on shutdown这一项。

28.查找Xwindow下的字体信息,特别是字符映射表(内码)

xlsfonts 列出所有字体

xfontsel 分类列出所有字体并显示示范文本

xfd 显示某个字体文件中的所有字符及内码,比如用 xfd -fn hanzigb16fs 看看中文内码

再用xfd -fn cclib16st看看cxterm所用字库的内码与XF86的不同(注意最高位)。

29.查找日期为某一天的文件

A=`find ~ -print` | ls -l --full-time $A 2>/dev/null | grep "Jun 27" | grep 1998

Linux的命令很厉害的呀!

给你写了下面这个script,用着方便点儿。你把它存成一个随便什么名字的文件,置上x属性就行了。

#!/bin/sh

# Copyright by Ming Gong(宫敏) for news://news.freesoft.cei.gov.cn/chinese.com.linux

# GPL V2, Jun 30, 1998

# The right of usage, distribution and modification is here by granted by the author.

# The author deny any responsibilities and liabilities related to the code.

#

OK=0

A=`find $1 -print`

if expr $3 == 1 >/dev/null ; then M=Jan ; OK=1 ; fi

if expr $3 == 2 >/dev/null ; then M=Feb ; OK=1 ; fi

if expr $3 == 3 >/dev/null ; then M=Mar ; OK=1 ; fi

if expr $3 == 4 >/dev/null ; then M=Apr ; OK=1 ; fi

if expr $3 == 5 >/dev/null ; then M=May ; OK=1 ; fi

if expr $3 == 6 >/dev/null ; then M=Jun ; OK=1 ; fi

if expr $3 == 7 >/dev/null ; then M=Jul ; OK=1 ; fi

if expr $3 == 8 >/dev/null ; then M=Aug ; OK=1 ; fi

if expr $3 == 9 >/dev/null ; then M=Sep ; OK=1 ; fi

if expr $3 == 10 >/dev/null ; then M=Oct ; OK=1 ; fi

if expr $3 == 11 >/dev/null ; then M=Nov ; OK=1 ; fi

if expr $3 == 12 >/dev/null ; then M=Dec ; OK=1 ; fi

if expr $3 == 1 >/dev/null ; then M=Jan ; OK=1 ; fi

if expr $OK == 1 > /dev/null ; then

ls -l --full-time $A 2>/dev/null | grep "$M $4" | grep $2 ;

else

echo Usage: $0 path Year Month Day;

echo Example: $0 ~ 1998 6 30;

fi

30.使用软盘/光盘等移动介质

刚从跺死/瘟都死转过来的朋友,手拿着软盘/光盘不知道该如何办,因为Linux下没有A盘D盘的概念.我自己刚开始学习Linux时也是这样(以前从来就没有做过root :-)。如果你手头有讲Linux的书,仔细去看设备及文件系统的相关章节。简单地说,你需要把软盘/光盘设备上的文件系统安装到Linux目录树上的一个点上,称之为安装点(mount point),通常是一个目录。安装Linux后会有个缺省的安装点/mnt,在它下面还有/mnt/floppy和/mnt/cdrom。你可以用

mount -t ext2 /dev/fd0 /mnt/floppy <--把linux文件系统格式的软盘安装上来

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是指向光驱设备的一个连接

mount /mnt/cdrom <--可以这么用是因为在/etc/fstab里已经定义了

umount /mnt/floppy <--在拿出软盘之前先要把它卸载

umount /mnt/cdrom <--不卸载就拿不出光盘

当然你也可以自己建一些安装点,比如"mkdir /mnt/smb","mkdir /scd"然后

mount -t iso9660 /dev/scd0 /scd <--/dev/scd0: SCSI光驱

smbmount //fjj/download /mnt/smb

等等,熟悉之后就可以灵活运用。

单用mount而不跟任何参数可以显示已经安装的文件系统,或者查看/etc/mtab文件

初学者还经常问到如何格式化磁盘,在Linux里概念有些不同,称之为制作文件系统(make filesystem)

应该用mkfs命令,由于现在的Linux都使用ext2格式,最好直接使用mke2fs,比如mke2fs /dev/fd0

mke2fs /dev/hdb2等等。如果要对软盘低级格式化,则可以用fdformat,而硬盘在出厂时已经格式化,

无须低级格式化(那是危险的)。检查文件系统则用e2fsck,如e2fsck -av /dev/fd0。

哈,这个根本算不上Tips,不过有些初学者总是不喜欢看书思考,甚至还问如何添加/删除用户。

31.添加/删除用户

用useradd username(或者adduser username)添加一个名为username的用户,然后用passwd username 指定口令。用户的信息记录在/etc/passwd文件里,由于每个用户都可以(而且必须能)读出这个文件然后就可以crack出其它用户的密码,为安全考虑现在都使用shadow。在/etc/passwd下用户的口令变为x 真正的口令密文记录在/etc/shadow里,而这个文件只有以root权限才能读出。Redhat 5.1以下版本没有直接使用shadow,需要用pwconv转换一下,如果要变回来,可以用pwunconv。提示:在/etc/skel目录记录了一个用户应该有的基本文件(ls -a /etc/skel/看看都有什么),useradd会自动把这些文件复制到用户的家目录下并置上适当的权限(除非添加用户时用了-m参数: useradd -m xxx)。如果你在这个目录下键一个public_html的目录,则以后添加的用户在它的家目录下都会自动有个同名的目录,这样每个用户都有了“个人主页”。

删除用户可以用userdel usrname或userdel -r username(有些发行版可能是deluser),-r参数会删除这个用户的家目录,但是在系统里别的地方还可能有此用户的信息,所以在删除用户之前最好还要用find / -user username等方式去找一找相关信息。

如果要临时禁止一个用户,可以在/etc/passwd文件中此用户的密码这一项第一个字符前添加一个*号。

如果把密码域改为空,则此用户不需要密码就可以进入系统,当你忘记root口令时,可以用软盘启动把原来的root安装上来,直接去改passwd文件。我记得以单用户方式启动时不需要密码可以进去。

长用户名的问题,在Redhat发行版中已经做得很好了,也允许用户名中有空格。如果你手上的发行版不支持,到/usr/include/utmpbits.h里把UT_NAMEDSIZE改为32,重新编译相关程序。

另一个直观的配置工具是linuxconf,比如用它来配置pppuser等等。

这里只能给一些线索,自己多看"man useradd","man shadow","man group","man userdel"......

再一次建议新来者多看书多思考多看看man page,否则不大容易找到/etc/skel是干什么的。

32.列出一个目录占用的空间

du或du -s或du -k

du -S | sort -n 可以迅速发现那个目录是最大的。

用df可以看到已安装的文件系统的空间大小及剩余空间大小。

quota -v查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。

33.命令补起(TAB键的妙用)

很多shell都有这个功能。

1) 只需输入文件或目录名的前几个字符, 然后按TAB键,如无相重的,完整的文件名立即自动在命令行出现;如有相重的,再按一下TAB键,系统会列出当前目录下所有以这几个字符开头的名字.例如

cd /mnt/cd<tab键> 自动补起为 cd /mnt/cdrom

2) 在命令行下,只需输入例如"m",再连续按两次TAB键,系统将列出所有以"m"开头的命令,(包括自定义的Bshell命令函数),对查找某些记不清楚的命令特有用.例如输入"ftp",将查到ftp,ftpcount,ftpwho,ftpshut等本不熟悉的命令.

34.在redhat5.0中没有setenv,用set设定的变量在程序中用getenv读不出来.

用哪个函数可以读出用set设定的环境变量?

set env;export env

然后在用getenv去读。

35.让grep搜寻文件及所有子目录下的文件里的内容

例如搜寻ZhXwin下所有C原代码中的"Chinput"(试试取消下行的-q参数):

find /download/ZhXwin -name *.c -exec grep -q -s Chinput {} ; -print

查找所有文件则可以用:

find . -type f -exec grep -s chinese {} ; -print

如果喜欢图形界面,KDE带的kfind很不错。

36.查看启动时的log信息

首先去查看/etc/syslog.conf文件,找到对应的文件。

(更详细的信息去看"man syslogd" "man syslog.conf" 以及"man klogd")

通常在SlackWare下为/var/adm/messages,在Redhat下为/var/log/messages。

这些文件可能会很大,要注意备份和删除。

前面已经提到用tail(tail -f)查看这些文件的方法,另外还有个logscanner工具,挺不错的。

建议大家去读一下The Linux Tips Howto,并且去订阅Linux Gazette。

收集整理这些文档的时候看到一个新开的站点:Linux Tips & Tricks

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有