分类: LINUX
2009-06-10 17:32:29
先飞 的 Linux 入门篇
在开始之前,我想规定一下符号的意义:
#表示是root 的shell.$表示一般用户的shell.
首先介绍一些在Linux下的基本命令:
(1) man
中文描述: man的作用是对你熟悉或者不熟悉的命令提供详细的帮助.
安装的默认文档的路径在/usr/man目录下面.
示例:
[bkbll@market man]$ man ls
LS(1) FSF LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by
default). Sort entries alphabetically if none of -cftuSUX
nor --sort.
…………………………………………………………………….
按空格键翻页,输入/后面加查询内容 可以查询.
按q键或者ctrl+c退出.随便说一句,在linux下可以使用ctrl+c终止当前程序运行.
当然,这需要你的英语比较好.
(2) ls
中文描述:查看目录或者文件的属性,列举出任一目录下面的文件.
示例:
[bkbll@market man]$ ls /usr/man
man1 man2 man3 man4 man5 man6 man7 man8 man9 manl mann share whatis
还可以这样:
[bkbll@market bkbll]$ ls -l
total 704
drwxr-xr-x 5 bkbll bkbll 4096 Feb 21 11:24 Desktop
-rw-r--r-- 1 bkbll bkbll 34545 Jul 18 16:41 Filter-1.23.tar.gz
-rw-r--r-- 1 bkbll bkbll 3805 Mar 20 1996 Makefile
drwxrwxr-x 2 bkbll bkbll 4096 Mar 8 19:19 Net
-rw-r--r-- 1 bkbll bkbll 60834 Mar 21 1996 README
-rwxrwxr-x 1 bkbll bkbll 18239 Jul 27 22:07 a.out
-rwxr-xr-x 1 bkbll bkbll 2463 Jul 16 19:34 apache3.pl
-rw-rw-r-- 1 bkbll bkbll 10320 Jul 16 09:16 bind.c
-rw-rw-r-- 1 bkbll bkbll 25 Jul 9 11:56 cool.t
-rwxrwxr-x 1 bkbll bkbll 12052 Mar 1 12:02 crypt
-rw-rw-r-- 1 bkbll bkbll 174 Mar 1 12:02 crypt.c
drwxrwxr-x 2 bkbll bkbll 4096 Jul 16 10:59 data
下面详细介绍一下上面的含义.
drwxrwxr-x 2 bkbll bkbll 4096 Jul 16 10:59 data
| --------- | ---- ---- ---- ------------ -----
1 2 3 4 5 6 7 8
1 表示文件结构.比如d表示目录(directory),如果是一个”-“表示是文件,如果是l则表示是一个连接文件(link) .
2.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x).
rwx rwx r-x
--- --- ----
u g o
u表示文件主人,既上面列表第4项表示,文件主人为bkbll,
g 表示文件文件所在组.上面第5项表示,文件组为bkbll
o 表示其他人.
上面的意思就是:允许文件主人bkbll有可读,可写,可执行的权限.
允许文件组bkbll里面的所以成员对其有可读,可写,可执行的权限
允许其他人有可读以及可执行的权限.
可以用一个8进制位表示.
0000 右起第一位表示x,第二位表示w,第三位表示r.
比如:rwx就可以用7表示.bin(111)=oct(7).
那么上面的属性就可以用775表示.
所以如果你想让其他文件也具有类似data的权限,可以使用chmod 775 文件名来转换.
3. 表示目录层次结构.比如: 2表示data目录下面还有一层的子目录.所以文件都是1了.
4. 表示文件(或目录)属主.
5. 表示文件(或目录)所属组.
6. 文件或目录大小.以字节为单位.
7. 文件或目录建立日期.
8. 文件或者目录名字
(3) . cp
中文描述:拷贝文件.
用法:cp filename1 filename2
把filename1拷贝成filename2
举例:
[bkbll@market bkbll]$ cp fing.c lpd/fing2.c
[bkbll@market bkbll]$ ls lpd/
fing2.c qib qib.tgz
[bkbll@market bkbll]$
把当前目录下面的fing.c拷贝成lpd目录下面的fing2.c文件.
提示:拷贝目录加一个-r参数
(4).rm
中文描述:删除文件和目录.
用法:rm 文件名或目录名.
举例:
[bkbll@market bkbll]$ ls lpd/
fing2.c qib qib.tgz
[bkbll@market bkbll]$ cd lpd
[bkbll@market lpd]$ ls
fing2.c qib qib.tgz
[bkbll@market lpd]$ rm fing2.c /*** 删除fing2.c文件
[bkbll@market lpd]$ ls
qib qib.tgz
[bkbll@market lpd]$ rm qib -r /**删除目录qib
[bkbll@market lpd]$ ls
qib.tgz
[bkbll@market lpd]$
注意:删除之后不会象windows那样容易恢复.
(5).mv
中文描述:移走目录或者改文件名.
用法:mv filename1 filename2
举例:
[bkbll@market lpd]$ mv qib.tgz qi.tgz /** 改名
[bkbll@market lpd]$ ls /**列举
qi.tgz /** 成功改名了
[bkbll@market lpd]$ mv qib.tgz ../qib.tgz /**移到上一级目录
mv: qib.tgz: No such file or directory /** qib.tgz文件不存在,抱错
[bkbll@market lpd]$ mv qi.tgz ../qib.tgz /**重新来
[bkbll@market lpd]$ ls -l ../qib.tgz /**列举,成功移动.
-rw-r--r-- 1 bkbll bkbll 13321 Feb 28 20:20 ../qib.tgz
[bkbll@market lpd]$
(6).cd ,pwd
中文描述:cd 改变当前目录 pwd 查看当前所在目录完整路径
用法:cd 路径名 ;pwd
举例:
[bkbll@market bkbll]$ pwd /**查看当前所在目录路径
/home/bkbll
[bkbll@market bkbll]$ cd ftp /**切换到ftp目录
[bkbll@market ftp]$ pwd /**成功切换,查看现在的路径
/home/bkbll/ftp /**和上面的pwd有什么不同?
[bkbll@market ftp]$
书接上回.(惊堂木一拍,顿时惊醒下面正在吃瓜子的xieshou和流泪睡觉的学生若干.)
上回说到.cd ,pwd的用法.现在我们继续. 注意:上次用的html格式,红色格式表示我们输入的命令,例如:
[bkbll@market lpd]$ mv qi.tgz ../qib.tgz /**重新来.
由于我的失误,把整行都转成了红色. 所以给各位同志的阅读带来了难度,让别人误解了.其实正确的格式应该是:
[bkbll@market lpd]$ mv qi.tgz ../qib.tgz /**重新来 蓝色表示的是用户的shell环境,其中bkbll表示当前用户名,如果你是用xieshou进来的,那么就 是[xieshou@**** ***]$了.后面的”@”表示”在”的意思.后面紧接着的是当前机器的名字,比 如,现在这台机器的名字是market,他在/etc/hosts文件里面定义了.您可以通过cat /etc/hosts 来查看文件.比如:
[bkbll@market bkbll]$ cat /etc/hosts
127.0.0.1 localhost localhost
202.202.50.40 market.eschool.edu market
[bkbll@market bkbll]$
注意这个”market”.表示的就是机器名字. 后面的lpd代表当前目录名字.后面的”$”上一节讲了,是普通用户的shell,
如果是root(既超级 管理员)的.
7.cat,more命令 中文描述:将某个文件的内容显示出来.两个命令所不同的是:cat把文件内容一直打印出来,而 more则分屏显示.
用法:cat filename ;more filename 举例:
[bkbll@market bkbll]$ cd own /**切换到own目录
[bkbll@market own]$ ls /**列举目录内容
1.c 1.h 2.c
[bkbll@market own]$ cat 1.c /** 显示1.c文件内容
main() {
int i;
i=6;
printf("%d",i);
}
[bkbll@market own]$ /**等待用户命令输入.
8.chmod 命令
中文描述: 改变文件保护,文件保护控制用户对文件的访问权,有三个安全级别,所有者级别 ,组访问级别,其他用户访问级别,在这三个级别中,又有三种权限:读(r),写(w),执 行(x)。(用户可以ls-lg来观看某一文件的所属的group)对于文件来说读权限意味着可以看 文件的内容,写文件可以修改或删除文件,执行权限则可以执行它(类似于DOS下的EXE,COM, BAT文件)。对于目录来说,读权限意味着可以查看目录下的内容,写权限意味着能在目录下建 立新文件,并可以从目录中删除文件,执行权限意味着可以从一个目录转变到另一个目录。 用法:chmod 一位8进制数 filename. 这个8位二进制就是上篇文章写的0000东西. 比如:如果你想让某个文件有运行的权限,但是只想给自己运行,别人只能读,那么可以使用 chmod u+x filenmame 其中u表示文件属组.x表示有x权限,(r代表可读,w代表可写,x代表可以运行) 如果想让同组的人来执行;那么就是: chmod g+x filename 举例:
[bkbll@market own]$ ls -l
total 12
-rw-rw-r-- 1 bkbll bkbll 39 Jul 30 20:29 1.c
-rw-rw-r-- 1 bkbll bkbll 43 Jul 18 13:58 1.h
-rw-rw-r-- 1 bkbll bkbll 88 Jul 18 14:03 2.c
[bkbll@market own]$ chmod u+x 1.c
[bkbll@market own]$ ls -l 1.c
-rwxrw-r-- 1 bkbll bkbll 39 Jul 30 20:29 1.c
[bkbll@market own]$ chmod g+x 1.c
[bkbll@market own]$ ls -l 1.c
-rwxrwxr-- 1 bkbll bkbll 39 Jul 30 20:29 1.c
[bkbll@market own]$ chmod o+w 1.c
[bkbll@market own]$ ls -l 1.c
-rwxrwxrw- 1 bkbll bkbll 39 Jul 30 20:29 1.c
[bkbll@market own]$
注意上面的权限位.
第一次是664(rw rw r)
第二次就成为:764 (rwx rw r)
第三次成为774 (rwx rwx r)
第四次成为:775(rwx rwx rx)呵呵;)头大了吗? 慢慢来,其实弄懂了权限位就很清楚了.
9. clear,date命令
中文描述:clear:清屏,相当与DOS下的cls;date:显示当前时间. 用法:clear;date; clear举例:就不用了吧?J
date举例:
[bkbll@market own]$ date
Mon Jul 30 21:10:41 HKT 2001
[bkbll@market own]$
10.mount 命令
中文描述:加载一个硬件设备.
用法:mount [参数] 要加载的设备 载入点. 举例: 加载软盘(在linux下软盘一第要mount上去才能用,和windows不同.) 要运行这个程序,您必须切换到root状态(忘记说su命令了) 先用 root登陆.(用ALT+F1,ALT+F2,…………ALT+F6切换终端).
[root@market /root]# mkdir /a /**建立一个目录,下节补讲
[root@market /root]# mount /dev/fd0H1440 /a
备注:如果mount /dev/fd0H1440 /a不成功 那么可以运行
mount -t msdos /dev/fd0H1440 /a 先建立一个目录,比如:/a表示根目录下的a.这样你mount成功后,可以直接象操作目录,文件一样 ,操作/a目录.
[root@market /a]# ls
1.jpg 2.pl 4.pl encrypt eschool.so test.pl 1.pl 3.pl decrypt eschool.bs facilities.cgi.bak 上面的就都是软盘里面的东西. 在取下软盘之前,必须先umount掉 umount掉之前,请先退出/a目录. 然后
[root@market /a]# cd ..
[root@market /]# umount /a
[root@market /]# ls /a
[root@market /]#
这样就把软盘umount掉了.
光盘就比较容易了:
[root@market /]# mount /dev/cdrom
[root@market /]# cd /mnt/cdrom
[root@market cdrom]# ls
CONTENTS.TXT Dos IE50 TOOLS WINDOWS handbook.doc
[root@market cdrom]#
缺省是mount到了/mnt的cdrom目录
10:su命令
中文描述:在不退出登陆的情况下,切换到另外一个人的身份.
用法:su -l 用户名(如果用户名缺省,则切换到root状态)
举例:
[bkbll@market own]$ whoami
bkbll
[bkbll@market own]$ su -l lltxyz
Password: /**这里输入用户lltxyz的密码
[lltxyz@market lltxyz]$ whoami
lltxyz
[lltxyz@market lltxyz]$
切换到root:
[bkbll@market own]$ whoami
bkbll
[bkbll@market own]$ su -l
Password:
[root@market /root]# whoami
root
[root@market /root]#
然后可以用exit和ctrl+d退出.
书接上回.
这几天我一直忙着写会员管理的程序,昨天刚写完,今天可以松一口气来写这个了.
11.whoami,whereis,which,id
中文描述:确认自己在终端机上的身份以及查找应用命令程序等的路径以及帮助文档所在目录.
whoami:确认自己身份.
whereis:查询命令所在目录以及帮助文档所在目录.
which:查询该命令所在目录(类似whereis)
id:打印出自己的UID以及GID.(UID:用户身份唯一标识.GID:用户组身份唯一标识.每一个用户只能有一个唯一的UID和GID.)
用法:whoami;whereis 命令 ;which 命令;id
举例,当你从一台机器登陆到(telnet)到另外一台机器上面去的时候,如果登陆过多,您就可能忘记自己的身份了,
这会给你的工作带来一些不必要的麻烦.不过使用whoami可以知道自己是谁:
[bkbll@market bkbll]$ whoami
bkbll /*这里就是你登陆的用户名
[bkbll@market bkbll]$
当你在使用一条命令的时候,是否想知道该条命令具体是放在哪个目录呢?whoami以及whereis提供了查询的功能.
所不同的是whereis会在整个的命令目录下面查找:具体包括:/bin,/usr/bin/,/usr/sbin/等.而且还会查找出该条命令的源码,
帮助等文件所在的目录.(前提是你要装了所有的源码).而which则只会简单的查找一些固定的目录.举例:
[bkbll@market bkbll]$ whereis bin
bin: /usr/local/bin
[bkbll@market bkbll]$ which bin
/usr/bin/which: no bin in (~HOME/./:/bin:/usr/bin:/usr/sbin/:/usr/local/bin:/bin :/usr/bin:/usr/X11R6/bin:/home/bkbll/bin)
从这里就能看出whereis比which搜索全面吧?
[bkbll@market bkbll]$ whereis man
man: /usr/bin/man /etc/man.config /usr/local/man /usr/man/man1/man.1.gz /usr/man /man7/man.7.gz
[bkbll@market bkbll]$ which man
/usr/bin/man
whereis命令能查找出和该命令相关的所有信息,比如配置文件(man.config),帮助文件路径:/usr/man/man1/man.1.gz
12.grep,find
中文描述:最有效的linux搜索软件.grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索.
基本用法: grep 搜索的字符串 目录 (-r 如果想在该目录的子目录下面查找);find 目录名 -name 文件名 -print
举例:
[bkbll@market myown]$ grep success * /*查找当前目录下面所有文件里面含有success字符的文件
1.pl:print "success$i!\n";} /*文件1.pl中有success字符串
3.pl:print "success$i!\n";} /* 文件3.pl中有success字符串
decrypt: print "encrypted $file to $target success!\n" ; /*文件decrypt有.
en: print "encrypted $file to $target success!\n" ; /*文件en满足条件
encrypt: print "encrypted $file to $target success!\n" ;
总的说来,每一行均是符合要求的文件内容片段.在第一个冒号的前面就是符合要求的文件名.这个在你在文件数量很大的时候,查找显得特别有用,
对我当年学习以及熟悉bbs的源码取了很大的作用.
[bkbll@market myown]$ find /etc -name inittab -print /*格式是:find 目录名(/etc根目录下etc目录) -name 文件名(inittab) -print
find: /etc/X11/xdm/authdir: Permission denied /*权限不够,不能浏览这个目录.
find: /etc/default: Permission denied /*权限不够
/etc/inittab /*查到这个文件,路径是/etc/inittab
find: /etc/webmin: Permission denied /* 权限不够.
[bkbll@market myown]$
如果没有找到符合要求的内容,文件,将会直接返回,没有任何输出.
13.kill
中文描述:可以杀死某个正在进行或者已经是dest状态的进程.(关于进程的理解,您可以认为是一个程序,但是是程序的最小单位.)
比如你正在运行的程序已经僵死了,可以形容成为"死机 "状态,在win98下你只有重启,但是在这里你可以使用kill命令来杀死你的这个程序进程 ,回到正常的界面.
比如:
[bkbll@market /bin]$ ftp download.microsoft.com
光标就死在那里不动了,这个时候该怎么处理呢?如果你有多个终端,你连上去,把你运行的这个进程给kill掉就好了.
比如:我用alt+F2,3,4,5 键切换到另一个终端console,进去后:
运行:
[bkbll@market /bin]$ ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:05 init [3]
2 ? SW 0:00 [kflushd]
3 ? SW 0:00 [kupdate]
4 ? SW 0:00 [kpiod]
5 ? SW 0:00 [kswapd]
............................
12890 pts/0 S 0:00 login -- bkbll
12891 pts/0 S 0:00 -bash
13138 pts/0 T 0:00 ftp download.microsoft.com
13159 pts/0 R 0:00 ps ax
其中第一列的数字就是我们需要的PID,进程ID,这个在系统上是唯一的,然后从COMMAND列里面找到对应的PID,比如:刚才我们 ftp 那个进程的PID就是
13138,那我运行:
[bkbll@market /bin]$ kill -9 13138
[1]+ Killed ftp download.microsoft.com
[bkbll@market /bin]$
其中-9表示强制执行,如果你直接kill 13138没有反映,那么请加上-9参数.
执行完了,再用ps -ax命令查看进程:
bkbll@market /bin]$ ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:05 init [3]
2 ? SW 0:00 [kflushd]
3 ? SW 0:00 [kupdate]
4 ? SW 0:00 [kpiod]
5 ? SW 0:00 [kswapd]
............................
12889 ? S 0:00 in.telnetd: 202.202.50.201
12890 pts/0 S 0:00 login -- bkbll
12891 pts/0 S 0:00 -bash
13163 pts/0 R 0:00 ps ax
[bkbll@market /bin]$
其中刚才的那个ftp.进程就已经被杀了.你再切换回来发现终端已经恢复正常.
可能今天写的东西比较复杂一点,如果有什么疑问的话,请即使反馈给我。
就写这么多了,下次待续....................