从这里开始学习Linux命令,本课程让你更清楚地了解和掌握它,在Linux中命令是讲究大小写的,所以请管好你的Caps Lock键。
不用担心,Linux命令说到底是几个字母的东西,你能学好它的,好,现在你找一个叫系统终端的东西,输入cal就行,出来的是什么,是当前月份的月历,就从这里开始吧。很简单的吧,再输入cal 2008,看到了吧,找出奥运会举办的日子。这只是非常简单的,你能学会的,shell是Linux四个主要部分之一,其实上Shell是一个命令解释器。
在学习Linux的过程中,经常会听到Shell这个词。可能大家在使用Windows的时候有这种感觉,我要听歌,我打开一个播放器,那么音箱就可以出声音,要打印一片文档,我们只要在程序中点击一下打印按钮,打印就会自动的把文档打印出来。但是我们并没有自己手动的控制音箱和打印机等硬件设备,是因为系统已经为我们作好了。其实我们可以把Windows叫做Shell,我们不用知道打印机的原理,也不需要自己控制它,我们只需要轻轻的点击一下鼠标,系统为我们来控制这些硬件设备。
看以下图,就知道Shell所起到的作用:
当用户使用系统,其实在和Shell在打交道,我们的Windows已经把各种各样的功能用图形表示出来了,当用户发出指令,其实先将这些指令发送给Shell,然后由Shell将用户的指令翻译后传送给内核,再由内核来控制硬件的工作。然后内核将硬件的工作情况发送个Shell,最后有Shell返回硬件的工作信息和情况。
这样一解释,大家应该明白其实Shell,就是一个工作环境,就像Windows系统一样,如果没有这个系统,那么Office软件、Photoshop软件,将无法工作,整个电脑就是一台废铁。也可以说我们在使用电脑的过程就是在和Shell打交道,是一个用户界面。
关机和注销
先看看注销,我们可以使用logout可以退出系统,这个和Windows中的注销是同等效果。用于用户保存自己的资料。
例如[root@Linux ~]# logout
当我们输入这个命令按下Enter之后,我们就又回到我们的登录界面了。
在来看看关机,关闭系统使用Shutdown命令,确保用户和系统的资料完整。只有root用户才能使用这个命令。一般的用户是不允许执行这个命令的。
我们先看看showdown语法:
shutdown [options] when [message]
options: -r 表示重启,-h表示系统服务停滞(halt)后,立刻关机 ,-f表示快速重启
when: 为shutdown指定时间。hh:mm:绝对时间,hh指小时,mm指分钟;如08:30,+m:m分钟后执行,now=+0,也就是立刻执行
message:表示系统的广播信息,一般提示各个用户系统关机或重启,要求用户保存资料后退出。
我们来看看几个例子:
shutdown -h now 立刻关机
shutdown -h 21:30 今天21:30关机
shutdown -h +10 十分钟后关机
shutdown -r now 立刻重启
shutdown -r +10 ‘the system will reboot’ 10分钟后重启,管理员提示用户系统要重启了,便于用户保存工作中的资料。只有root用户才能使用这个命令。
我们shutdown -h now ,看看是不是立刻关机。
显示当前工作目录中的内容
要想知道当前的工作目录中有些什么文件或目录,在Windows的“命令提示符”中要使用“dir”命令,那么在Linux中就要使用“ls”命令,如下所示:
[root@Linux ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog
这样屏幕上就立刻显示当前目录下的所有文件及自目录。注意你可能发现“Desktop”显示的颜色是蓝颜色,这里提示大家一下:
白色的文件:一般的文件
蓝色的文件:目录
绿色的文件:可执行文件
这种方法可以最直观的方法来识别文件类型。
直接使用“ls”可能看到的信息有限,为了知道关于文档的更多资料,我们可以增加一个参数“-l”,这样可以看到更多关于文件的信息:
[root@Linux ~]# ls -l
总计 56
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
这样就可以知道文档的权限、拥有者、大小、日期等相关的信息,关于这些信息可能大家一时看不懂,在以后的学习中会讲这些内容的。
“ls -l”有一个简写是“ll”,如下:
[root@Linux ~]# ll
总计 56
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
所显示的和使用“ls -l”一模一样。
显示隐藏的文件
系统中一些文件,和Windows中的系统文件一样,这些文件一般是不显示出来的,那么我们可以使用“-a”参数来显示隐藏的文件。如下所示:
[root@Linux ~]# ls -a
. .chewing .gconfd install.log .redhat
.. .cshrc .gnome install.log.syslog .scim
anaconda-ks.cfg Desktop .gnome2 .lesshst .tcshrc
.bash_history .dmrc .gnome2_private .metacity .thumbnails
.bash_logout .eggcups .gstreamer-0.10 .mozilla .Trash
.bash_profile .esd_auth .gtkrc-1.2-gnome2 .nautilus
.bashrc .gconf .ICEauthority .recently-used.xbel
看看这样显示的文件就比较多了。可以发现,隐藏文件是以“.”开头的文件。这些文件一般都有特殊的作用,如果显示出来,有可能被用户不小心删除。
我们可以结合上面的两个参数来显示目录下的文件,如下所示:
[root@Linux ~]# ls -al
总计 212
drwxr-x--- 18 root root 4096 03-19 05:30 .
drwxr-xr-x 24 root root 4096 03-19 12:21 ..
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
-rw------- 1 root root 2372 03-19 05:52 .bash_history
-rw-r--r-- 1 root root 24 2006-07-13 .bash_logout
-rw-r--r-- 1 root root 191 2006-07-13 .bash_profile
-rw-r--r-- 1 root root 176 2006-07-13 .bashrc
drwx------ 2 root root 4096 03-14 20:32 .chewing
-rw-r--r-- 1 root root 100 2006-07-13 .cshrc
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw------- 1 root root 26 03-14 20:31 .dmrc
drwxr-x--- 2 root root 4096 03-14 20:32 .eggcups
-rw------- 1 root root 16 03-19 05:30 .esd_auth
drwx------ 4 root root 4096 03-19 05:06 .gconf
drwx------ 2 root root 4096 03-19 05:30 .gconfd
drwxr-xr-x 3 root root 4096 03-14 20:32 .gnome
drwx------ 6 root root 4096 03-19 05:30 .gnome2
drwx------ 2 root root 4096 03-14 20:32 .gnome2_private
drwxr-xr-x 2 root root 4096 03-14 20:32 .gstreamer-0.10
-rw-r--r-- 1 root root 81 03-14 20:32 .gtkrc-1.2-gnome2
-rw------- 1 root root 358 03-19 05:30 .ICEauthority
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
-rw------- 1 root root 35 03-19 05:26 .lesshst
drwx------ 3 root root 4096 03-14 20:32 .metacity
drwx------ 3 root root 4096 03-14 20:36 .mozilla
drwxr-xr-x 3 root root 4096 03-19 05:30 .nautilus
-rw-r--r-- 1 root root 1528 03-19 05:30 .recently-used.xbel
drwxr-xr-x 3 root root 4096 03-14 20:32 .redhat
drwx------ 4 root root 4096 03-14 21:06 .scim
-rw-r--r-- 1 root root 129 2006-07-13 .tcshrc
drwx------ 3 root root 4096 03-14 20:33 .thumbnails
drwx------ 2 root root 4096 03-14 20:32 .Trash
这样显示是不是觉得更好呢?(drwx中d表示是目录文件,-表示是普通文件,b表示是快文件,c表示的字符文件,l开头的是连接文件,后面的rwx分别表示是读写执行权限,第一个root表示root用户,第二个root表示是root组,drwx这类有三组,第一组表示自身权限,第二组表示同组权限,第三组表示其他组的权限)
ls–F列出目录下文件名及其目录类型
ls –l详细列出目录下文件的权限、所有者文件大小等详细信息,可以简单输入“ll”
ls –a列出所有文件,包括隐藏文件
ls –t依照最后修改文件时间列出文件名
ls –R列出当前目录和其子目录的文件名
ls –color=never不以颜色方式显示
ls –color=always均以颜色方式显示
ls –color=auto系统自动判断
显示其他目录中的文件
上面都是显示当前工作目录中的文件,如果要显示其他目录中的文件,那么我们只要在“ls”后面加入所要显示的目录的路径。如下所示:
[root@Linux ~]# ls /
bin dev home lost+found misc net proc sbin srv tftpboot usr
boot etc lib media mnt opt root selinux sys tmp var
这样显示的就是“/”目录下的文件。当然我们也可以加入一下参数,如下所示:
[root@Linux ~]# ls -l /
总计 148
drwxr-xr-x 2 root root 4096 03-16 17:05 bin
drwxr-xr-x 4 root root 1024 03-15 03:58 boot
drwxr-xr-x 11 root root 3920 03-19 12:21 dev
drwxr-xr-x 96 root root 12288 03-19 12:21 etc
drwxr-xr-x 4 root root 1024 03-14 20:29 home
drwxr-xr-x 14 root root 4096 03-16 17:04 lib
drwx------ 2 root root 16384 03-15 03:45 lost+found
drwxr-xr-x 2 root root 4096 03-15 04:26 media
drwxr-xr-x 2 root root 0 03-19 12:21 misc
drwxr-xr-x 2 root root 4096 2006-10-11 mnt
drwxr-xr-x 2 root root 0 03-19 12:21 net
drwxr-xr-x 2 root root 4096 2006-10-11 opt
dr-xr-xr-x 83 root root 0 03-19 12:20 proc
drwxr-x--- 18 root root 4096 03-19 05:30 root
drwxr-xr-x 2 root root 12288 03-16 17:05 sbin
drwxr-xr-x 2 root root 4096 03-15 03:50 selinux
drwxr-xr-x 2 root root 4096 2006-10-11 srv
drwxr-xr-x 11 root root 0 03-19 12:20 sys
drwxr-xr-x 2 root root 4096 2006-07-13 tftpboot
drwxrwxrwt 6 root root 4096 03-19 12:21 tmp
drwxr-xr-x 14 root root 4096 03-15 03:54 usr
drwxr-xr-x 25 root root 4096 03-15 04:04 var
加入“-l”参数后,显示的信息还是多多了。
建立目录
当我们工作的需要,建立一个目录的时候,我们可以使用“mkdir”命令来建立一个目录,如下所示:
[root@Linux ~]# mkdir myfile
[root@Linux ~]# ll (ll的效果和ls -l一样)
总计 60
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
drwxr-xr-x 2 root root 4096 03-19 12:36 myfile
我们先使用“mkdir myfile”建立了一个名字叫“myfile”的目录,然后我们使用命令验证一下,发现我们已经建立了这个文件夹,可以根据颜色来判断是一个文件夹。
删除目录
如果这个目录不需要了,我们可以使用“rmdir”命令来删除一个目录,用法如下:
[root@Linux ~]# ll
总计 60
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
drwxr-xr-x 2 root root 4096 03-19 12:36 myfile
[root@Linux ~]# rmdir myfile
[root@Linux ~]# ll
总计 56
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
我们先看看当前目录下有一个myfile的目录,我们不需要这个目录了,我们可以使用“rmdir myfile”命令来删除这个目录,然后使用ll命令验证一下。
注意的是,使用这个命令来删除一个目录的时候,那么这个目录下必须是没有任何文件和文件夹的,我们看看如下的操作:
[root@Linux ~]# mkdir myfile
[root@Linux ~]# cd myfile cd命令是切换目录,这里就是进入myfile
[root@Linux myfile]# mkdir one
[root@Linux myfile]# cd .. ..表示当前目录的上一层目录
[root@Linux ~]# rmdir myfile
rmdir: myfile: 目录非空
我们在myfile目录下建立了一个one的目录,当我们删除myfile目录时,提示目录为空,所以必须将这个目录下的所有文件和目录全部删除之后,才能删除这个目录。
切换目录
上面的例子中提到了一个“cd”命令,一般为了工作的需要,我们可能需要到不同的目录中编辑不同的文件,这个时候我们就要在不同的目录中切换了。我们使用“cd”命令可以在不同的目录中切换,如下的操作:
[root@Linux ~]# mkdir one
[root@Linux ~]# mkdir two
[root@Linux ~]# cd one
[root@Linux one]#
我们建立了两个目录“one”和“two”,我们可以使用“cd one”,进入one目录,进入这个目录之后,命令提示符有原来的“[root@Linux ~]”变成了“[root@Linux one]”,提示符中的“one”表示我们在one这个目录中工作了。
我们看看这个目录下有什么文件,为了看看有没有隐藏文件,我们使用“ls -al”命令来看看这个目录。如下操作:
[root@Linux one]# ls -al
总计 12
drwxr-xr-x 2 root root 4096 03-19 12:43 .
drwxr-x--- 20 root root 4096 03-19 12:43 ..
我们发现这个目录下面有两个奇怪的家伙,一个是“.”,一个是“..”。其实这又要讲到路径的知识,路径的表示方法有两种:
A :绝对路径:就是表示出目标文件或子目录的目录树结构。我们这个例子中的目录“one”,的绝对路径表示方法为“/root/one”,如果one目录下还有一个目录xu,那么目录xu的绝对路径就是:“/root/one/xu”。
B :相对路径:就是相对于当前工作目录的路径来表示位置。相对路径中有两个符号,就是“..”,“.”。“..”表示当前当前工作目录的上一层目录。如当前我们处在one目录中,我们作如下操作:
[root@Linux one]# cd ..
[root@Linux ~]#
我们就或发现提示“[root@Linux one]”变为“[root@Linux ~]”。发现现在已经返回到目录one的上一层目录。
“.”表示当前的工作目录。如果当前我们处在one目录中,那么“.”就表示当前的工作目录one。
cd ~ 返回用户宿主目录
cd . 用户的当前目录
cd .. 返回上一级目录
复制文件
工作的时候,有是需要保存文件的一个副本,便于以后还原。我们可以使用“cp”命令,操作如下:
[root@Linux ~]# ll
总计 64
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
drwxr-xr-x 2 root root 4096 03-19 12:43 one
drwxr-xr-x 2 root root 4096 03-19 12:43 two
[root@Linux ~]# cp install.log ./one
[root@Linux ~]# cd one
[root@Linux one]# ll
总计 28
-rw-r--r-- 1 root root 27964 03-19 12:55 install.log
先看看当前目录下有哪些文件,然后我们需要将install.log文件复制一份到one目录中,我们可以使用“cp install.log ./one”就可以了,注意了,这里使用了上面的相对路径中的“.”,表示当前工作目录下的one目录。
然后进one目录,查看一下是否有intsall.log这个文件,可以看到我们已经复制了一份lnstall.log文件。
我们在来试一试,我们将目录one复制到two中,我们看看如下的操作:
[root@Linux ~]# ll
总计 64
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
drwxr-xr-x 2 root root 4096 03-19 12:55 one
drwxr-xr-x 2 root root 4096 03-19 12:43 two
[root@Linux ~]# cp one two
cp: 略过目录 “one”
[root@Linux ~]# cd two
[root@Linux two]# ll
总计 0
发现没有two目录下没有one文件夹,这个时候我们需要使用参数“-r”,看如下操作:
[root@Linux ~]# ll
总计 64
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
drwxr-xr-x 2 root root 4096 03-19 12:55 one
drwxr-xr-x 2 root root 4096 03-19 12:43 two
[root@Linux ~]# cp -r one two
[root@Linux ~]# cd two
[root@Linux two]# ll
总计 4
drwxr-xr-x 2 root root 4096 03-19 13:00 one
看看,在cp命令后面加入参数“-r”之后,就可以用来复制目录了,我们可以进入two目录下的子目录one,会发现原来one目录中的文件也一起被复制了。
最后来看看复制文件并重新命名的新文件,实例如下:
[root@Linux one]# cp install.log install.log.bak
[root@Linux one]# ll
总计 56
-rw-r--r-- 1 root root 27964 03-19 12:55 install.log
-rw-r--r-- 1 root root 27964 03-20 13:10 install.log.bak
这里就是复制了一个文件,并将复制的文件更名,我们可以看到目录下有两个文件了。
移动文件
我们可以使用mv命令将一个文件移动到另外一个目录中,如下操作:
[root@Linux ~]# ll
总计 64
-rw------- 1 root root 865 03-15 04:12 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-14 20:34 Desktop
-rw-r--r-- 1 root root 27964 03-15 04:12 install.log
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
drwxr-xr-x 2 root root 4096 03-20 13:10 one
drwxr-xr-x 3 root root 4096 03-19 13:00 two
[root@Linux ~]# mv install.log.syslog ./one
[root@Linux ~]# cd one
[root@Linux one]# ll
总计 68
-rw-r--r-- 1 root root 27964 03-19 12:55 install.log
-rw-r--r-- 1 root root 27964 03-20 13:10 install.log.bak
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
我们将root用户目录下的install.log.syslog,移动到目录one下。除此之外,我们还可以为文件更名,如下操作:
[root@Linux one]# ll
总计 68
-rw-r--r-- 1 root root 27964 03-19 12:55 install.log
-rw-r--r-- 1 root root 27964 03-20 13:10 install.log.bak
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
[root@Linux one]# mv install.log install.sys
[root@Linux one]# ll
总计 68
-rw-r--r-- 1 root root 27964 03-20 13:10 install.log.bak
-rw-r--r-- 1 root root 5069 03-15 04:11 install.log.syslog
-rw-r--r-- 1 root root 27964 03-19 12:55 install.sys
我们将install.log这个文件名称变为了install.sys。
创建文件
这个和前面的创建目录是有区别的,创建文件是指创建一个一般的普通文件,并且这个文件为空,我们可以使用touch命令来建立一般文件,如下操作:
[root@Linux two]# touch 111.txt
[root@Linux two]# touch 112.txt
[root@Linux two]# touch 113.txt
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 13:26 111.txt
-rw-r--r-- 1 root root 0 03-20 13:26 112.txt
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
这样我们就创建了三个文件。
删除文件
使用rm命令来删除文件,和前面的rmdir有点区别,不过rm也可以实现删除目录,我们来看看实际的操作:
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 13:26 111.txt
-rw-r--r-- 1 root root 0 03-20 13:26 112.txt
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
[root@Linux two]# mkdir one
[root@Linux two]# ll
总计 4
-rw-r--r-- 1 root root 0 03-20 13:26 111.txt
-rw-r--r-- 1 root root 0 03-20 13:26 112.txt
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
drwxr-xr-x 2 root root 4096 03-20 13:27 one
[root@Linux two]# rm 111.txt
rm:是否删除 一般空文件 “111.txt”? y
[root@Linux two]# ll
总计 4
-rw-r--r-- 1 root root 0 03-20 13:26 112.txt
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
drwxr-xr-x 2 root root 4096 03-20 13:27 one
我们先查看目录下的文件,然后删除这个目录下的文件111.txt,删除的时候,提示我们是否要删除文件,我们输入“y”,然后删除文件,删除之后,我们查看这个文件夹下的文件,发现少了111.txt文件。
如果我们不需要系统提示我们就要增加一个参数“-f”,这样只要输入命令之后,系统直接删除文件。看如下操作:
[root@Linux two]# rm -f 112.txt
[root@Linux two]# ll
总计 4
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
drwxr-xr-x 2 root root 4096 03-20 13:27 one
这样增加参数后,系统没有提示用户,直接删除了文件。
我们在来看看如何删除这个文件下的目录,增加参数“-r”就可以了,看如下操作:
[root@Linux two]# ll
总计 4
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
drwxr-xr-x 2 root root 4096 03-20 13:27 one
[root@Linux two]# rm -rf one
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 13:26 113.txt
这样,这个目录下的one目录就被删除了。
通配符
以上所有的操作我们好像都只能操作一个文件,当我们要同时对多个文件进行操作的时候,我们就可以使用通配符,这些符号不是作为普通的文字来使用,而是来代替文键名称的字符串。我们来看看Linux下的几种通配符,和他们的含义:
A:* :任何字符和字符串。
B:? :一个任意字符
C:[abc...] :[]内的任意一个字符。[abc]表示a、b、c任一个字符;有时候也表示范围,如[a-x],表示a到x的任一个字符;[1-9]表示1到9的任一数字。
D:[!abc...]:和上面的相反,表示除[]内的字符外的任意一个字符。
我们来分别看看这些符号的实际操作中的实例:
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:08 111.txt
-rw-r--r-- 1 root root 0 03-20 20:08 112.txt
-rw-r--r-- 1 root root 0 03-20 20:08 113.txt
[root@Linux two]# rm 1*.txt
rm:是否删除 一般空文件 “111.txt”? y
rm:是否删除 一般空文件 “112.txt”? y
rm:是否删除 一般空文件 “113.txt”? y
[root@Linux two]# ll
总计 0
这样只要是以“1”开头的文件全部删除。我们在来看下面的操作:
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:09 111.txt
-rw-r--r-- 1 root root 0 03-20 20:09 112.txt
-rw-r--r-- 1 root root 0 03-20 20:09 113.txt
-rw-r--r-- 1 root root 0 03-20 20:10 121.txt
[root@Linux two]# rm -f 11?.txt
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:10 121.txt
这样就删除了以“11”开头的文件,我们还是以上面的例子在看:
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:11 111.txt
-rw-r--r-- 1 root root 0 03-20 20:11 112.txt
-rw-r--r-- 1 root root 0 03-20 20:11 113.txt
-rw-r--r-- 1 root root 0 03-20 20:10 121.txt
[root@Linux two]# rm -f 11[1-3].txt
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:10 121.txt
这样就删除了以“11”开头,后面是以1、2、3结尾的文件。最后我们来看:
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:13 111.txt
-rw-r--r-- 1 root root 0 03-20 20:13 112.txt
-rw-r--r-- 1 root root 0 03-20 20:13 113.txt
-rw-r--r-- 1 root root 0 03-20 20:10 121.txt
[root@Linux two]# rm -f 1[!1]*.txt
[root@Linux two]# ll
总计 0
-rw-r--r-- 1 root root 0 03-20 20:13 111.txt
-rw-r--r-- 1 root root 0 03-20 20:13 112.txt
-rw-r--r-- 1 root root 0 03-20 20:13 113.txt
这样就删除了第二个字符不是为“1”的任何文件。
有了通配符,我们就可以针对多个文件一起进行操作。
pwd
如果切换目录次数太多,可能不知道自己在那个目录,那么就可以使用pwd命令,显示当前所在的目录。是print working directory的缩写。看如下操作:
[root@Linux ~]# pwd
/root
[root@Linux ~]# cd one
[root@Linux one]# pwd
/root/one
[root@Linux one]# cd ../two
[root@Linux two]# pwd
/root/two
这样就很清楚自己在那个目录下工作了。
增加用户
我们来看看增加用户的操作。到目前为止,我们都是使用的root用户登录系统,由于root这个用户的权限非常的高,可以进行任何的操作,所以有的时候,可能破坏系统。如前面的操作,如果执行了一个“rm -rf /*”这个命令,这样就会把“/”下面的文件全部删除。我们如果使用一般的用户,我们还是可以执行大部分的程序,除了少数的一些管理员的命令不能执行外,一些目录不能进行操作外,其他的操作我们都可以。所以建议:在使用一般操作的时候,我们使用一般用户,如果需要对系统进行维护,我们就使用root用户。
现在来看看如何增加一般用户。看如下操作:
[root@Linux one]# useradd user1
我们就为系统增加了一个用户“user1”,z增加完用户后,我们需要对用户设置密码,看如下操作:
[root@Linux one]# passwd user1
Changing password for user user1.
New UNIX password: <--这里输入用户的密码
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password: <--再次输入上面的密码
passwd: all authentication tokens updated successfully. <--提示用户设置密码成功
注意设置密码的时候,为了安全,一般不显示任何的字符。
这里我们知道了使用“useradd”命令来增加用户,使用“passwd”命令来为用户设置密码。到此,我们就为系统增加了一个用户“user1”,下次登录的时候,我们就可以使用这个用户了。
注意,这里只有root用户可以设置其他用户的密码,一般用户登录后可以更改自己的密码,但不能更改别人的密码。看如下操作:
[user1@Linux ~]$ passwd root
passwd: Only root can specify a user name.
提示只有root用户才能更改自己的密码。我们在来看看用户更改自己的密码:
[user1@Linux ~]$ passwd
Changing password for user user1.
Changing password for user1
(current) UNIX password: <--输入当前的密码
New UNIX password: <--输入新密码
BAD PASSWORD: is too simple <--提示密码太简单
New UNIX password: <--输入复杂的新密码
Retype new UNIX password: <--再次输入上面输入的密码
passwd: all authentication tokens updated successfully. <--提示密码更改成功
这个时候passwd后面不需要跟用户名称。
搜索文件
我们先来学习一下如何搜索文件,特别是刚开始学习Linux的时候,自己建立的文件不知道放在哪里了,常有发生。如果知道文件名,却不知道文件在那个目录下面了,我们就可以使用locate命令来搜索文件。看如下操作:
[root@Linux one]# locate install.log
/root/install.log
/root/install.log.syslog
看一下,我们一下就搜索了两个与install.log相关的文件,他们都在/root目录下,同时我们感觉到,使用这个命令搜索文件的速度比较快,其实要使用这个命令,必须配合数据库来使用,因为这个命令是从数据库中来搜索文件,这个数据库的更新速度是7天更新一次。如下操作:
[root@Linux one]# touch 001.txt
[root@Linux one]# locate 001.txt
发现这个命令找不到新建立的文件,所以我们要使用这个命令搜索文件之前,必须自己更新一下数据库,如下操作:
[root@Linux one]# updatedb
[root@Linux one]# locate 001.txt
/root/one/001.txt
看看,如果执行updatedb这个命令更新数据库之后,我们就可以找到我们所需要的数据。不过更新数据库的时间需要一段时间。
find命令
find命令的在查找文件或目录的功能非常强大,可以根据文件的大多数属性来查找文件,它的使用形式也是多变的,基本命令格式:
find [path] [expression] 使用这条命令最常用的是按照文件名查找,文件名表达式的格式为:-name 文件名,其中文件名可以使用*或?通配符进行表示。符合条件的将被显示出来。
我们在查找的过程中会发现它的查找速度相当的慢,而且这条命令十分耗硬盘。所以这条命令虽然功能十分的强大,但是最好先使用其它命令查找不到的时候使用。
其它可选选项:
-adminN 在过去N分钟内读过的文件
-anewerFILE 比文件FILE更晚读取的文件
-cnewer FILE 比文件FILE更新的文件
-atime[士]N 在过去N天以内(-)或以外(+)读取过的文件
-cmin[士]N 在过去N分钟以内(-)或以外(+)修改过的文件
-ctime[士]N 在过去N天以内(-)或以外(+)修改过的文件
-empty 空文件
-gN 组id号是N的文件
-groupNAME 组名是NAME的文件
-ipath P,path P 路径名符合P的文件,ipath会忽略大小写
-name NAME,-iname NAME 文件名称符合NAME的,iname会忽略大小写。
-sizeN[b|c|k|w] 文件大小是N,单位b代表512位的块,c表示一个char,k表示kilobytes,w是一个word。
-typeT 文件类型是T的文件,文件类型有d目录、c字符设备文件、 b块设备文件、f普通文件、l符号链接、s套接字文件。
-mount,-xdev 只检查和指定目录在同一个文件系统中的文件,避免列出其它文件系统中的文件。
显示文件内容-cat
是直接显示文件的内容到屏幕上,如下操作:
[root@Linux ~]# cat install.log
...
...
...
安装 vnc - 4.1.2-9.el5.i386
安装 screen - 4.0.3-1.el5.i386
安装 scim-bridge-gtk - 0.4.5-7.el5.i386
安装 scim-tables-chinese - 0.5.6-7.i386
安装 minicom - 2.1-3.i386
安装 Deployment_Guide-zh-CN - 5.0.0-19.noarch
安装 Deployment_Guide-zh-TW - 5.0.0-19.noarch
安装 scim-pinyin - 0.5.91-15.el5.i386
安装 scim-chewing - 0.3.1-10.el5.i386
安装 scim-chinese-standard - 0.0.2-1.el5.i386
安装 vim-X11 - 2:7.0.109-3.i386
安装 gftp - 1:2.0.18-3.2.2.i386
安装 gtkspell - 2.0.11-2.1.i386
安装 openldap-clients - 2.3.27-5.i386
安装 nmap - 2:4.11-1.1.i386
安装 OpenIPMI-tools - 2.0.6-5.el5.3.i386
安装 dhcp - 12:3.0.5-3.el5.i386
安装 zsh - 4.2.6-1.i386
安装 xchat - 1:2.6.6-8.el5.i386
安装 fonts-chinese - 3.02-9.6.el5.noarch
安装 stardict - 2.4.5-5.i386
安装 system-config-bind - 4.0.3-2.el5.noarch
前面的内容比较多,用“...”省略,我们只看到了这个文件的后面的部分,由此可以知道,这个命令适合于显示内容少于屏幕所能显示的最大行数。
这个命令比较有意思,写法是将cat反过来些,并且它和cat命令的功能刚好相反,是以文件的最后一行开始到文件的第一行反向的显示到屏幕。
显示文件内容-more
cat命令我们只能看到文件的部分或者只能看比较小的文件,那么more解决这个问题,操作如下:
[root@Linux ~]# more install.log
安装 libgcc - 4.1.1-52.el5.i386
warning: libgcc-4.1.1-52.el5: Header V3 DSA signature: NOKEY, key ID 37017186
安装 setup - 2.5.58-1.el5.noarch
安装 filesystem - 2.4.0-1.i386
安装 basesystem - 8.0-5.1.1.noarch
安装 tzdata - 2006m-2.fc6.noarch
安装 glibc-common - 2.5-12.i386
安装 glibc - 2.5-12.i686
安装 glib2 - 2.12.3-2.fc6.i386
安装 zlib - 1.2.3-3.i386
安装 chkconfig - 1.3.30.1-1.i386
安装 atk - 1.12.2-1.fc6.i386
安装 popt - 1.10.2-37.el5.i386
安装 libICE - 1.0.1-2.1.i386
安装 libSM - 1.0.1-3.1.i386
安装 libstdc++ - 4.1.1-52.el5.i386
安装 libart_lgpl - 2.3.17-4.i386
安装 mktemp - 3:1.5-23.2.2.i386
安装 audit-libs - 1.3.1-1.el5.i386
安装 libusb - 0.1.12-5.1.i386
安装 bzip2-libs - 1.0.3-3.i386
安装 libpng - 2:1.2.10-7.i386
安装 libattr - 2.4.32-1.1.i386
--More--(2%)
注意最下面显示了一个提示,表示只显示这个文件的2%,按下空格键就翻下一页,当内容显示完后,就自动的退出,还可以按下“Q”键也可以退出。
nl命令
nl命令查看文件的同时可以显示行号,用法和cat –n相似。
显示文件内容-less
more虽然可以显示比较大的文件,但是也有一个缺点,就是不能向上翻页,看过的内容要重新看,必须在重新运行命令。less就解决了more命令这个命令的不足。看如下操作:
[root@Linux ~]# less install.log
安装 libgcc - 4.1.1-52.el5.i386
warning: libgcc-4.1.1-52.el5: Header V3 DSA signature: NOKEY, key ID 37017186
安装 setup - 2.5.58-1.el5.noarch
安装 filesystem - 2.4.0-1.i386
安装 basesystem - 8.0-5.1.1.noarch
安装 tzdata - 2006m-2.fc6.noarch
安装 glibc-common - 2.5-12.i386
安装 glibc - 2.5-12.i686
安装 glib2 - 2.12.3-2.fc6.i386
安装 zlib - 1.2.3-3.i386
安装 chkconfig - 1.3.30.1-1.i386
安装 atk - 1.12.2-1.fc6.i386
安装 popt - 1.10.2-37.el5.i386
安装 libICE - 1.0.1-2.1.i386
安装 libSM - 1.0.1-3.1.i386
安装 libstdc++ - 4.1.1-52.el5.i386
安装 libart_lgpl - 2.3.17-4.i386
安装 mktemp - 3:1.5-23.2.2.i386
安装 audit-libs - 1.3.1-1.el5.i386
安装 libusb - 0.1.12-5.1.i386
安装 bzip2-libs - 1.0.3-3.i386
安装 libpng - 2:1.2.10-7.i386
安装 libattr - 2.4.32-1.1.i386
install.log
最下面显示的是这个文件的名称,我们可以使用“PageUp”和“PageDown”可以进行上一页和下一页的翻页。如果要知道具体的控制键,我们可以按下“H”键,可以显示less命令的所有控制键,如果想结束,可以按“Q”键。
显示文件内容-head和tail
上面是最常用的几个显示文件内容的命令,这里还介绍两个显示文件内容的命令,分别是head和tail命令,head是显示文件的头几行,tail是显示文件的末尾几行,默认情况下,都是10行。看如下操作:
[root@Linux ~]# head install.log
安装 libgcc - 4.1.1-52.el5.i386
warning: libgcc-4.1.1-52.el5: Header V3 DSA signature: NOKEY, key ID 37017186
安装 setup - 2.5.58-1.el5.noarch
安装 filesystem - 2.4.0-1.i386
安装 basesystem - 8.0-5.1.1.noarch
安装 tzdata - 2006m-2.fc6.noarch
安装 glibc-common - 2.5-12.i386
安装 glibc - 2.5-12.i686
安装 glib2 - 2.12.3-2.fc6.i386
安装 zlib - 1.2.3-3.i386
[root@Linux ~]# tail install.log
安装 gtkspell - 2.0.11-2.1.i386
安装 openldap-clients - 2.3.27-5.i386
安装 nmap - 2:4.11-1.1.i386
安装 OpenIPMI-tools - 2.0.6-5.el5.3.i386
安装 dhcp - 12:3.0.5-3.el5.i386
安装 zsh - 4.2.6-1.i386
安装 xchat - 1:2.6.6-8.el5.i386
安装 fonts-chinese - 3.02-9.6.el5.noarch
安装 stardict - 2.4.5-5.i386
安装 system-config-bind - 4.0.3-2.el5.noarch
分别显示的是这个文件的前10行与后10行。
which命令
which的基本功能是通过环境变量PATH到该路径内寻找可执行文件,所以用于查找可执行文件。其实这个时候想一想,怎样可以看出文件是可执行文件,我在前面已经介绍了一种方法,学习就是结合起来运用。在我们还不熟悉这个系统的时候,我们可以先在某个目录查看一下是否有可执行文件,然后在使用which验证。
whereis命令
whereis可以迅速的找到文件,而且还提供了这个文件的二进制可执行文件、源代码文件和使用手册页存放位置。
我们可以看到inittab是存放在子目录/etc下,而且他的使用手册在/usr/share/man/man5下的inittab.5.gz
mount命令
mount命令用于物理设备(例如:光盘、U盘、硬盘)中的文件系统挂载到linux文件系统的某个目录中,在mount命令不使用任何选项和参数的时候将显示当前linux系统中以挂载的文件系统信息。首先介绍光盘的挂载方法:
mount命令的功能强大,命令格式也比较丰富。但是常用挂载文件系统命令格式:mount –t type dev dir
其中–t type选项指出需要挂载的文件系统类型,光盘文件系统类型是:iso9660;dev表示需要挂载文件系统的设备名称,光盘驱动器的设备名称是/dev/cdrom; dir表示挂载点,即挂载到的文件目录路径。光盘设备在linux as4中系统中的默认路径是/media/cdrom。
由于光盘是只读的存储介质,因此mount命令在挂载光盘的时候会提示光盘一只读(read-only)模式进行挂载,挂载后使用mount命令查看已挂载的文件系统,可以在最后一行看到设备的挂载信息,证明挂载成功。
在linux系统中,USB设备被视为SCSI设备,使用这个设备文件的格式为“sdX”系统中的第一个SCSI设备表示为“sda”第二个表示为“sdb”由于我使用的系统硬盘是串口硬盘,所以我的U盘被识别为“sdb”
U盘设备插入系统后每次分配的设备文件名是不固定的,依赖于当前系统拥有几个SCSI设备,在不确定设备名称时,我们可以使用“fdisk -l”命令,列出系统中所有存储设备:
如果当前设备文件名是“/dev/sdb”,U盘上唯一的主分区设备文件的名称是“/dev/sdb1”,分区中的文件系统类型是fat。知道这些以后我们就可以使用mount命令挂载U盘到当前文件系统。“/mnt”目录通常用于挂载系统中临时使用的文件系统,可以将“/mnt”目录作为U盘系统的挂接点。使用“vfat”文件系统类型表示所有的fat文件系统类型,包括fat16和fat32,ntfs还是使用ntfs表示。
例子:
mount 192.168.0.16:/ /mnt(把IP为192.168.0.16的/根目录挂载到当前系统的、mnt下)
读取光盘中的内容非常的简单了,使用mount命令挂载后,可以访问挂载目录完成对光盘中内容的读取。
umount命令
umount命令用于卸载已经挂载的文件系统,基本格式如:umount dir device […]使用umount卸载文件系统可以指定挂载设备文件名或挂载目录作为参数,可以将卸载指定的设备或挂载点目录上的文件系统。
umount 192.168.0.16:/ /mnt(卸载挂载)
对于光盘文件系统的卸载可以使用,以下两条命令中的任意一条:注意在卸载的时候要退出光盘的挂载目录,否则提示文件系统在使用。
eject命令
使用eject命令可以将光盘驱动器中的光盘轻轻弹出和收回,不必使用光盘驱动器的弹出按钮。