鸟哥的私房菜笔记(一)

1.Linux 基础指令

 
 
  • 显示日期的指令: date
  • 显示日历的指令: cal
  • 简单好用的计算器: bc
     一些按键的说明:  
在 Linux 底下有几个常用的按键,这里要给他说明一下,以方便你未来在文字接口操作的情况下,可以直接按下这些按键来帮你处理事务喔! 
  • Ctrl + c : 在 Linux 底下,如果您输入了错误的指令或参数,有的时候这个指令或程序会在系统底下『跑不停』这个时候怎么办?别担心,如果您想让当前的程序『停掉』的话,可以输入:『Ctrl』+『c』,这个就是中断目前程序的按键啦!
  • : 有很多程序在跑的时候(例如 man 这个指令或 more 这个指令),如果您想跳出来,就按下 q 即可!这个按钮也是很多指令常定义的退出钮
  • [Tab] :会不会觉得打字很疲劳啊!没关系,在 Linux 的预设文字接口 ( 我们称为 BASH Shell ) 当中,有个很棒的功能,叫做是『命令与档案补全』的功能!那就是键盘左边的[Tab]这个按键啦!他有什么好处呢?例如刚刚我们要执行 cal 这个指令对吧,这个时候,你只要输入 ca[tab][tab] ,也就是输入 ca 之后,再按两次 [tab] 按键,您会发现什么事呢?啊!所以以 ca 为开头的指令都被显示出来啦!很棒吧!另外,如果你输入『 ls -al .bash[tab][tab]』会发生什么事呢?哈哈!在该目录下面所有以 .bash 的文件名称都会被显示出来!所以啰,你就会知道,[tab] 按键是『很棒的功能!』在文字接口底下,要多按 [tab] 按键,可以避免打错字或下错指令喔
    • 将数据同步写入硬盘中的指令: sync
    • 最正确的关机指令: shutdown
    • 重新开机: reboot
    • 关机啰: halt
  • 我想要知道 2003 年 5 月 2 日是星期几?该怎么做? 
    最简单的方式直接使用 cal 5 2003 即可找出 2003 年 5 月份的月历。
  • 使用 man date 然后找出显示目前的日期与时间的参数,成为类似:2002/10/16-20:03 
    date +%Y/%m/%d-%H:%M
  • 若以 X-Window 为预设的登入方式,那请问如何进入 Virtual console 呢? 
    s可以按下 [Ctrl] + [Alt] + [F1] ~ [F6] 进入 Virtual console ( 共六个 ); 
    而按下 [Ctrl] + [Alt] + [F8] 或 [F7] 可回到 X-Window 的 desktop 中!

2.目录

整个 Linux 的树状目录会制程下图:


请注意,每个目录都是依附在 / 这个根目录底下的,所以我们在安装的时候一定要有一个 / 对应的 partition 才能安装的原因即在于此!这也就是我们俗称的『树状目录』啰! 
  
每个目录的大致内容如下表所示: 
 
/bin这是放例如: ls, mv, rm, mkdir, rmdir, gzip, tar, telnet, 及 ftp 等等常用的执行档的地方(这些执行档的执行方法会在后面提到),有时候这个目录的内容与 /usr/bin 是一样的(有时候甚至会使用连结档哩),是给一般使用者使用的执行程序放置的所在!
/boot没错,这里就是放置你 Linux 核心与开机相关档案的地方,这个目录底下的 vmlinuz-xxx 就是 Linux 的 Kernel 啦!粉重要的东西!而如果你的开机管理程序选择 grub 的话,那么这个目录内还有 /boot/grub 这个次目录呦!
/dev摆放一些与装置有关的档案。基本上 Unix 或 Linux 系统均把装置当成是一个档案来看待,例如 /dev/fd0 代表软盘,亦即 Windows 系统下的 A 槽,而 /dev/cdrom 则代表光盘,等等!而如上所述,在这个目录底下的档案型态通常分为两种喔,分别是管理磁盘 Input/Output 的 Block 档案与周边的 Character 档案。
/etc系统在开机过程中需要读取的档案均在这个目录中,例如 Lilo 的参数、人员的账号与密码、系统的主要设定、http 架站的参数内容、你所要开启的服务项目等等都在这个目录中,所以在这个目录下工作的时候,请记得一定要备份,否则档案被改掉了可是很麻烦的!
/etc/rc.d这个路径主要在记录一些开关机过程中的 scripts 档案, scripts 有点像是 DOS 下的批次档(.bat檔名)
/etc/rc.d/init.d所以服务预设的启动 scripts 都是放在这里的,例如要启动与关闭 iptables 的话,可以:  
/etc/rc.d/init.d/iptables start 
/etc/rc.d/init.d/iptables stop
/etc/xinetd.d这个路径在较新的 Linux distribution 当中才有,由于早期的版本用来开启服务的档案是 inetd.conf ,但是在较新的版本中,开启服务的项目已经变成使用 xinetd.conf 这个档案,因此,你若需要启动一些额外的服务的话,在 Mandrake 9.0 或者是 Red Hat 7.0 以后就要到 /etc/xinetd.d 这个目录下了。
/etc/X11这是与 X windows 有关的设定文件所在的目录,尤其里面的 XF86Config-4 更是重要呢!
/home基本上,这是系统预设的使用者的家目录( home directory ),在你新增一般使用者账号的时候,预设的使用者家目录都在这里设定好啰!
/lib在 Linux 执行或编译一些程序的时候,均会使用到一些函式库(library),就在这个目录下
/lost+fount系统不正常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。例如你加装一棵硬盘于 /disk 中,那在这个目录下就会自动产生一个这样的目录 /disk/lost+found
/mnt这是软盘与光盘预设挂载点的地方;通常软盘挂在 /mnt/floppy 下,而光盘挂在 /mnt/cdrom 下,不过也不一定啦!只要你高兴,随便找一个地方来挂载也可以呀!
/proc系统核心与执行程序的一些信息。例如你的网络状态的问题啦!这个目录将在启动 Linux 的时候自动的被挂上,而且该目录底下不会占去硬盘空间!因为里面都是『内存』内的数据啦
/root系统管理员的家目录
/sbin放置一些系统管理常用的程序,例如: fdisk, mke2fs, fsck, mkswap, mount 等等。与 /bin 不太一样的地方,这个目录下的程序通常是给 root 等系统管理员使用的程序喔!
/tmp这是让一般使用者暂时存放档案的地方,例如你在安装 Linux 下的软件时,可能软件预设的工作目录就是 /tmp ,所以你要定期的清理一下,当然,重要数据最好不要放在这里!
/usr这是最重要的一个目录了,里面含有相当多的系统信息,内有许多目录,用来存放程序与指令等等。这个目录有点像是 Windows 底下的『Program Files』那个目录说~
/usr/bin放置可执行程序,如前所说,这个目录的档案与 /bin 几乎是相同的。
/usr/include一些套件的header檔。基本上,当我们在以 tarball 方式( *.tar.gz 的方式安装软件)安装某些数据时,会使用到的一些函式库都在这个目录底下喔!
/usr/lib内含许多程序与子程序所需的函式库。
/usr/local在你安装完了 Linux 之后,基本上所有的配备你都有了,但是软件总是可以升级的,例如你要升级你的 proxy 服务,则通常软件预设的安装地方就是在 /usr/local 中( local 是『当地』的意思),同时,安装完毕之后所得到的执行文件,为了与系统原先的执行文件有分别,因此升级后的执行档通常摆在 /usr/local/bin 这个地方。 

给个建议啦,通常 VBird 都会将后来才安装上去的软件放置在这里,因为便于管理呦!

/usr/sbin放置管理者使用程序,与 /sbin 类似的功能
/usr/share/doc放置一些系统说明文件的地方,例如你安装了 lilo 了,那么在该目录底下找一找,就可以查到 lilo 的说明文件了!很是便利!
/usr/share/man放置一些程序的说明文件的地方,那是什么?呵呵!就是你使用 man 的时候,会去查询的路径呀!例如你使用 man ls 这个指令时,就会查出 /usr/share/man/man1/ls.1.bz2 这个说明档的内容啰!
/usr/src这是放置核心原始码的预设目录,未来我们要编译核心的时候,就必须到这个目录底下呦!
/usr/X11R6X Window System存放相关档案的目录
/var这个目录可就重要了!所有服务的登录文件或错误讯息档案(log files)都在 /var/log 里面,此外,一些数据库如 MySQL 的数据库则在 /var/lib 里头,此外,使用者未读邮件邮件的预设放置地点为 /var/spool/mail !呵呵!你说重不重要呀!?

 

2.档案与目录管理

  • 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。
  • 相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:『cd ../man』这就是相对路径的写法啦!

    目录与路径的几个常用的指令:

      • cd     变换目录
      • pwd    显示目前的目录
      • mkdir 建立一个新目录
      • rmdir 删除一个里面是空的空目录  
        .     代表此层目录 
        ..    代表上层目录 
        ~     代表自己的家目录 
        ~user 代表到 user 这个人的家目录

  • cd 
    语法
    [root @test /root ]# cd [相对路径或绝对路径]  
    参数说明: 
    路径有『相对路径』与『绝对路径』的分别,请千万小心啰! 
    范例: 
    [root @test /root]# cd ..       <==回到上一层目录 
    [root @test /root]# cd ../home     <==相对路径的写法 
    [root @test /root]# cd /var/www/html  <==绝对路径的写法 
    [root @test /etc]# cd         <==回到使用者的家目录 
    [root @test /etc]# cd ~         <==回到使用者的家目录! 
    [root @test /etc]# cd ~test      <==回到 test 这个使用者的家目录
    说明: 
    cd 是 change directory 的缩写,这是用来变换工作路径的指令。注意,路径与 cd 指令之间存在一个空格!一登入 Linux 系统后,root 会在 root 的家目录,亦即 /root 下,至于使用者会在预设的 /home/username 底下,例如鸟哥的 ID 为 vbird ,则以 vbird 的身份登入后,会到 /home/vbird 这个路径下。OK!那回到上一层可以用『 cd .. 』而到相对路径可到『 cd ../bird』,至于绝对路径则是 cd /usr/sbin !注意喔,在前面的提示字符会改变路径名称!此外,家目录还有一个代码,那就是『 ~ 』符号!例如上面的例子可以发现,使用『 cd ~ 』可以回到个人的家目录里头去呢!此外,如果你的 Linux 主机当中有个 testing 的账号,你要到他的家目录去,可以下达『 cd ~testing』立刻去到 testing 的家目录啰! 
      

  • pwd 
    语法
    [root @test /root ]# pwd  
    范例: 
    [root @test root]# cd /home/test 
    [root @test test]# pwd  
    /home/test             <==显示目前你所在的目录呦!
    说明: 
    pwd 是 print working directory 的缩写,也就是显示目前所在目录的指令,例如在上个表格最后的目录是 /home/test 这个目录,但是提示字符仅显示 test ,如果你想要知道目前所在的目录,可以输入 pwd 即可:
  • mkdir 与 rmdir 管理目录: 
    那么要如何建立删除目录呢?很简单呀!就用 mkdir 与 rmdir ,看出来了吗?没错啦!就是 make/remove directory 的缩写说!看要怎么用吧! 
     
  • mkdir 
    语法
    [root @test /root ]# mkdir [-mp] [目录名称] 
    参数说明: 
    -m :设定档案的权限喔!直接设定,不需要看 umask 这个内容的脸色! 
    -p :帮助你直接将上面的目录递归建立起来! 
    范例: 
    [root @test /root]# cd tmp 
    [root @test /tmp]# mkdir test<==建立名称为 test 的目录 
    [root @test /tmp]# mkdir -p test1/test2/test3/test4 <==直接建立 test2...等上层目录 
    [root @test /tmp]# mkdir -m 711 testqq  <==建立权限为 711 的目录! 
    [root @test /tmp]# ll test* 
    drwxrwxr-x    2 test    test        4096 Feb  6 20:47 test/ 
    drwxrwxr-x    3 test    test        4096 Feb  6 20:48 test1/ 
    drwx--x--x    2 test    test        4096 Feb  6 20:48 testqq/
    说明: 
    如果想要建立新的目录的话,那么就使用 mkdir 吧! 不过,请注意呦!在预设的情况下,你所需要的目录得一层一层的建立才行!例如:假如你要建立一个目录为 /home/bird/testing/test1,那么首先必须要有 /home 然后 /home/bird ,再来 /home/bird/testing 都必须要存在,才可以建立 test1 这个目录!假如没有 /home/bird/testing 时,就没有办法建立 test1 的目录啰!不过,现在有个更简单有效的方法啦!那就是加上 -p 这个参数喔!你可以直接下达:『 mkdir -p /home/bird/testing』则系统会自动的帮你将 /home, /home/bird, /home/bird/testing 依序的建立起目录!并且,如果该目录本来就已经存在时,系统也不会显示错误讯息喔!挺快乐的吧! ^_^ 
      

  • rmdir 
    语法
    [root @test /root ]# rmdir [-p] [目录名称] 
    参数说明: 
    -p :将上层的目录也删除吧! 
    范例: 
    [root @test /root]# rmdir test<==删除名称为 test 的目录 
    [root @test tmp]# ll 
    drwxrwxr-x    3 test    test        4096 Feb  6 20:48 test1/ 
    [root @test tmp]# rmdir test1 
    rmdir: `test1': Directory not empty 
    [root @test tmp]# rmdir -p test1/test2/test3/test4 
    [root @test tmp]$ ll
    说明: 
    如果想要建立删除旧有的目录时,就使用 rmdir 吧!例如将刚刚建立的 test 杀掉,使用 rmdir test 即可!请注意呦!目录需要一层一层的删除才行!而且被删除的目录里面必定不能还有其它的目录或档案!那如果要将所有目录下的东西都杀掉呢?!这个时候就必须使用 rm -rf test 啰!不过,还是使用 rmdir 比较不危险!不过,你也可以尝试以 -p 的参数加入,来删除上层的目录喔!


    ls 显示文件名称、属性等 
    cp 拷贝档案或目录 
    rm 删除档案或目录 
    mv 移动档案或目录 

    ls 
    语法

    [root @test /root ]# ls [-ailS] 
    参数说明: 
    -a       :全部的档案都列出(连同隐藏档) 
    -i       :印出 inode 的值 
    -l       :长的列出,连同档案大小的数据等等 
    -S       :以档案大小排序 
    --color=never     :不要显示颜色 
    --color=always    :均显示颜色 
    --color=auto      :由系统自行判断! 
    范例: 
    [root @test /root]# ls -al 
    total 48 
    drwxr-x---    4 root     root         4096 Mar 10 00:37 . 
    drwxr-xr-x   21 root     root         4096 Mar 10 20:16 .. 
    -rw-------    1 root     root          524 Mar 10 00:40 .bash_history 
    -rw-r--r--    1 root     root           24 Jun 11  2000 .bash_logout 
    -rw-r--r--    1 root     root          266 Jun 11  2000 .bash_profile 
    -rw-r--r--    1 root     root          249 Mar  6 20:50 .bashrc 
    -rw-r--r--    1 root     root          210 Jun 11  2000 .cshrc 
    drwx------    2 root     root         4096 Mar  9 11:06 .gnupg 
    -rw-------    1 root     root          524 Jan 16 14:37 .mysql_history 
    drwx------    2 root     root         4096 Mar  9 11:06 .ssh 
    -rw-r--r--    1 root     root          196 Jul 11  2000 .tcshrc 
    -rw-r--r--    1 root     root         1126 Aug 24  1995 .Xresources 
    [root @test /]# ls 
    bin   dev    etc   lib         misc  opt   root  tftpboot  usr 
    boot  disk1  home  lost+found  mnt   proc  sbin  tmp       var 
    [root @test /]# ls --color=never 
    bin   dev    etc   lib         misc  opt   root  tftpboot  usr 
    boot  disk1  home  lost+found  mnt   proc  sbin  tmp       var 
    [root @test /]# ls -al|

    ls='ls --color=never'这样就可以把颜色去到了

    cp 
    语法

    [root @test /root ]# cp [-drsu] [来源档] [目的档] 
    参数说明: 
    -d     :在进行 copy 的时候,如果是 copy 到 link 档案,若不加任何参数,则预设情况中会将 link 到的源文件 
           copy 到目的地,若加 -d 时,则 link 档案可原封不动的将 link 这个快捷方式其拷贝到目的地! 
    -r     :可以进行目录的 copy 呦! 
    -s          :做成连结档,而不 copy 之意!与 ln 指令相同功能! 
    -u, --update:如果来源档比较新,或者是没有目的档,那么才会进行 copy 的动作!可用于备份的动作中! 
    范例: 
    [root @test /root]# cp    .bashrc bashrc      <==将 .bashrc 拷贝成 bashrc 这个档案! 
    [root @test /root]# cp -r /bin /tmp/bin        <==这个功能就好玩啦!这是用来 copy 整个目录的参数! 
    [root @test /root]# cp -s .bashrc bashrc         <==将 .bashrc 建立一个连结档,档名为 bashrc 
    [root @test /root]# cp -u /home/.bashrc .bashrc  <==先检查 /home/.bashrc 是否与 .bashrc 不同,如果不同的话就开始 copy 一份!如果相同则不做任何动作!

    说明: 
    这个指令会常用到的呦!因为我们得常常需要 copy 资料呀!所以需要了解一下喔!如果你有些很大档案的需要备份,偏偏这个档案的更新率很低,那么每次备份都需要在 copy 一份吗?看来是不需要了!你可以使用『cp -u 来源档 目的档』来备份呦!如此一来,当档案被改变过后,才会进行 copy 的动作!

    rm 
    语法

    [root @test /root ]# rm [-fir] [檔名] 
    参数说明: 
    -i     :提供使用者确认(这是默认值) 
    -r     :循环,就是一直杀掉,直到没有东西为止的意思 
    -f     :force ,就是强力杀掉啦! 
    范例: 
    [root @test /root]# cp .bashrc bashrc<==建立一个新档案, bashrc 
    [root @test /root]# rm bashrc           <==会显示如下的提示: 
    rm: remove `bashrc'? 
    [root @test /root]# mkdir testing 
    [root @test /root]# cp .bashrc testing 
    [root @test /root]# rmdir testing 
    rmdir: `testing': Directory not empty   <==由于 testing 里面有 .bashrc ,所以砍不掉! 
    [root @test /root]# rm -rf testing      <==持续删除该目录下的所有档案与目录
    说明: 
    这是移除的指令,相当于 dos 下的 del 指令!这里要注意的是,通常在 Linux 系统下,为了怕档案被误杀,所以都已经有 -i 这个参数, -i 是指每个档案被杀掉之前都会让使用者确认一次,以预防误杀档案!而如果要连目录下的东西都一起杀掉的话,例如子目录里面还有子目录时,那就要使用 -rf 这个参数了!不过,使用『 rm -rf 』这个指令之前,请千万注意了,因为,该目录或档案『肯定』会被 root 杀掉!因为系统不会再次询问你是否要砍掉呦! 所以那是个超级严重的指令下达呦!得特别注意!不过,如果你确定该目录不要了,那么使用 rm -rf 来循环杀掉是不错的方式! 
    mv 
    语法
    [root @test /root ]# mv [-u] [来源档] [目的档] 
    参数说明: 
    -u   :同样的,为 update 的简写,当来源档比目的档还新的时后才会动作! 
    范例: 
    [root @test /root]# cp .bashrc bashrc 
    [root @test /root]# mv bashrc bashrc.old 
    [root @test /root]# mv bashrc bashrc2 /tmp<==将 bashrc 与 bashrc2 移动到 /tmp 这个目录下!请注意,最后一个才是最终的目标,其它的都是 SOURCE
    说明: 
    这是搬移的意思!当你要移动档案或目录的时后,呵呵!这个指令就很重要啦!同样的,你也可以使用 -u ( update )才测试新旧档案,看看是否需要搬移啰!另外一个用途就是『变更档名!』,我们可以很轻易的使用 mv 来变更一的档案的档名呢! 

  • basename 
    语法
    [root @test /root ]# basename [目录] 
    参数说明: 
    范例: 
    [root @test /root]# basename /usr/local/etc 
    etc 
    这个指令会将后面的[目录]仅撷取出最后面的那个目录或档案, 
    以上面的例子来看, /usr/local/etc 不论 etc 是目录或档案, 
    他都会被撷取出来,因为他是最后一个出现的咚咚!
    说明: 
    这个指令颇有点意思~他可以将一个目录或档案的最后一个咚咚秀出来!所以,未来如果你有要使用变量,并且取出最后一个数据(不论是档案还是目录),那么使用这个玩意儿就对啦! ^_^ 
      

  • dirname 
    语法
    [root @test /root ]# dirname [目录] 
    参数说明: 
    范例: 
    [root @test /root]# dirname /usr/local/etc 
    /usr/local 
    恰恰与 basename 相反,他仅是秀出来前面的『目录』部分喔!
    说明: 
    这个指令恰恰与 basename 相反的啦!呵呵!很好玩吧!这部份也最常用在我们第三部分要讲的 Shell 的学习中喔!用最多的地方应该是 scripts 啦!用这两个宝贝蛋来撷取部分数据的内容!有用的很!
    cat  由第一行开始显示档案内容 
    tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写! 
    more 一页一页的显示档案内容 
    less 与 more 类似,但是比 more 更好的是,他可以往前翻页! 
    head 只看头几行 
    tail 只看尾巴几行 
    nl   显示的时候,顺道输出 行号! 
    od   以二进制的方式读取档案内容!
  • cat 
    语法
    [root @test /root ]# cat [-nAE] 
    参数说明: 
    -n:   显示时,连行号印出屏幕上。 
    -A:   将 DOS 下的 <tab> 与断行字符都列出来! 
    -E:   将 DOS 编辑的文件中,仅列出 断行字符出来! 
    范例: 
    [root @test /root]# cat ~/.bashrc         <==显示 .bashrc 这个档案 
    # .bashrc

    # User specific aliases and functions 
    PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH" 
    alias rm='rm -i' 
    alias cp='cp -i' 
    alias mv='mv -i' 
    alias ll='ls -l --color=never'

    [root @test /root]# cat ~/.bashrc -n      <==显示 .bashrc 并且加上行号! 
         1  # .bashrc 
         2 
         3  # User specific aliases and functions 
         4  PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH" 
         6  alias rm='rm -i' 
         7  alias cp='cp -i' 
         8  alias mv='mv -i' 
         9  alias ll='ls -l --color=never'

    [root @test /root]# cat -A regexp.txt 
    This is a cat, however, I need a dog.^M$ 
    I want to "Happy" and <Happy> and /Happy/ here.^M$ 
    OK! ^Ieverythins is OK^M$ 
    Now, I will eat my food^M$ 
    are you ^Ifinished your work^M$ 
    what do you 123 goto where^M$ 
    显示出 DOS 档案的几个特殊符号,以上面档案为例, 
    可发现 ^M 为断行符号,而每行的 $ 为行尾符号, 
    至于 ^I 则是 <tab> 按键啦! 

    说明: 
    嘿嘿! Linux 里面有『猫』?!喔!不是的, cat 是 Concatenate (连续)的简写,主要的功能是将一个档案的内容连续的印出在屏幕上面!例如上面的例子中,我们将重要的参数档 .bashrc 印出来!如果加上 -n 的话,则每一行前面还会加上行号呦!cat 比较少用!毕竟当你的档案内容的行数超过 40 行以上,嘿嘿!根本来不及看!所以,配合 more 或者是 |more 来执行比较好!此外,如果是一般的 DOS 档案时,就需要特别留意一些奇奇怪怪的符号了,例如断行与<tab>等,要显示出来,就得加入 -A 之类的参数了!。 
      

  • tac 
    语法
    [root @test /root ]# tac [檔名] 
    参数说明: 
    范例: 
    [root @test /root]# tac ~/.bashrc <==发现了没?反向印出呦! 
    fi 
            . /etc/bashrc 
    if [ -f /etc/bashrc ]; then 
    # Source global definitions

    alias h='history' 
    alias lm='ls -al|more' 
    alias ll='ls -l' 
    # alias ll='ls -l --color=never' 
    alias mv='mv -i' 
    alias cp='cp -i' 
    alias rm='rm -i'

    export PATH 
    PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH" 
    # User specific aliases and functions

    # .bashrc

    说明: 
    tac 这个好玩了!怎么说呢?详细的看一下, cat 与 tac ,有没有发现呀!对啦! tac 刚好是将 cat 反写过来,所以他的功能就跟 cat 相反啦, cat 是由『第一行到最后一行连续显示在屏幕上』,而 tac 则是『由最后一行到第一行反向在屏幕上显示出来』,很好玩吧! 
      

  • more 
    语法
    [root @test /root ]# more [檔名] 
    参数说明: 
    范例: 
    [root @test /root]# more ~/.bashrc  <==一页一页的显示档案内容
    [root @test /]# ls -al | more  <==一页一页的将 ls 的内容显示出来
    说明: 
    more 真是个很有用的指令!我好喜欢呦!当你的档案太大的时后,那么使用 cat 将没有办法看清楚!这个时候你可以使用 more 来做动作!more 也可以用来做为管线的同时执行之用!例如你在执行 find 这个寻找的指令时,可以同时使用 |more ,则搜寻结果可以一页一页的列出呦!关于管线( pipe )的用法我们在 bash shell 的地方再来谈! 
      

  • less 
    语法
    [root @test /root ]# less [檔名]  
    参数说明:  
    范例:  
    [root @test /root]# less ~/.bashrc 
    说明: 
    less 的用法比起 more 又更加的有弹性,怎么说呢?在 more 的时候,我们并没有办法向前面翻,只能往后面看,但若使用了 less 时,呵呵!就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,您瞧,是不是更容易使用来观看一个档案的内容了呢!? 
      
    more 与 less 的用途与用法真的是很广啦!首先,你可以在 more 与 less 的画面中进行『搜寻』的工作!如何进行呢?我们以 less 来说明好了,如果你想要知道 /etc/man.config 这个档案里面有没有一个叫做 GER 的大写字眼,那么可以: 
     
    [root @test /root ]# less /etc/man.config  
    按键说明: 
    /word:在 /etc/man.config 这个档案中搜寻 word 这个字符串的所在 
    q    :离开 less 的画面
      
    然后在输入 / 之后,光标会移动到最左下角等待输入,这个时候您只要输入你的字符串之后,就会自动的帮你找出来该关键词啰! 
      

  • head 
    语法
    [root @test /root ]# head [-n number] [檔名] 
    参数说明: 
    -n :显示 number 行 
    范例: 
    [root @test /root]# head ~/.bashrc  <==预设情况下,显示头十行
    [root @test /root]# head -n 20 ~/.bashrc<==显示头二十行!
    说明: 
    head 的英文意思就是『头』啦,那么这个东西的用法自然就是显示出一个档案的前几行啰!没错!就是这样!若没有加上 -n 这个参数时,预设只显示十行,若只要一行呢?那就加入『 head -n 1 filename 』即可! 
      

  • tail 
    语法
    [root @test /root ]# tail [-n number] [檔名] 
    参数说明: 
    -n :显示 number 行 
    范例: 
    [root @test /root]# tail ~/.bashrc 
    [root @test /root]# tail -n 5 ~/.bashrc <==只显示最后面五行!
    说明: 
    那么有 head 自然就有 tail ( 尾巴 ) 啰!没错!这个 tail 的用法跟 head 的用法差不多类似,只是显示的是后面几行就是了!预设也是显示十行,若要显示非十行,就加 -n number 的参数! 
     
    例题一:假如我想要显示 ~/.bashrc 的第 11 到第 20 行呢? 
    答:
    这个应该不算难,想一想,在第 11 到第 20 行,那么我取前 20 行,再取后十行,所以结果就是:『 head –n 20 ~/.bashrc | tail –n 10 』,这样就可以得到第 11 到第 20 行之间的内容了!但是里面涉及到管线命令,需要在第三篇的时候才讲的到!
      

  • nl 
    语法
    [root @test /root ]# nl [檔名] 
    参数说明: 
    范例: 
    [root @test /root]# nl ~/.bashrc
    说明: 
    那么 nl 又是什么?这也没什么,这个指令的用法跟 cat -n 的用法类似,也就是『可以印出行号』的指令来查看档案啦!也是挺好用的! 
      

  • od 
    语法
    [root @test /root ]# od [檔名] 
    参数说明: 
    范例: 
    [root @test /root]# od ~/.bashrc 
    0000000 020043 061056 071541 071150 005143 021412 052440 062563 
    0000020 020162 070163 061545 063151 061551 060440 064554 071541 
    0000040 071545 060440 062156 063040 067165 072143 067551 071556 
    0000060 050012 052101 036510 027442 064542 035156 071457 064542 
    0000100 035156 072457 071163 071457 064542 035156 072457 071163 
    0000120 061057 067151 027472 071565 027562 067554 060543 027554 
    0000140 061163 067151 027472 071565 027562 067554 060543 027554 
    0000160 064542 035156 050044 052101 021110 062412 070170 071157 
    0000200 020164 040520 044124 005012 066141 060551 020163 066562 
    0000220 023475 066562 026440 023551 060412 064554 071541 061440 
    0000240 036560 061447 020160 064455 005047 066141 060551 020163 
    0000260 073155 023475 073155 026440 023551 021412 060440 064554 
    0000300 071541 066040 036554 066047 020163 066055 026440 061455 
    0000320 066157 071157 067075 073145 071145 005047 066141 060551 
    0000340 020163 066154 023475 071554 026440 023554 060412 064554 
    0000360 071541 066040 036555 066047 020163 060455 076154 067555 
    0000400 062562 005047 066141 060551 020163 036550 064047 071551 
    0000420 067564 074562 005047 021412 051440 072557 061562 020145 
    0000440 066147 061157 066141 062040 063145 067151 072151 067551 
    0000460 071556 064412 020146 020133 063055 027440 072145 027543 
    0000500 060542 064163 061562 056440 020073 064164 067145 004412 
    0000520 020056 062457 061564 061057 071541 071150 005143 064546 
    0000540 000012 
    0000541
    说明: 
    好了,那么如果有一个非 ASCII 的数据文件呢?例如那个 binary 的档案!使用 vi 根本就是看不着~这个时候看来只有使用将整个数据以数值方法读出来啦!那就是 od 这个指令来读出来呦!这个东西可以用来输出该数据为十进制、16进位等等的数据格式!不过这个东西对于工程师可能比较有用啦!因为印出来的东西都是数字或内存当中的数据~~


    档案与目录权限:

    由  Linux 档案属性 的内容我们可以知道一个档案有若干个属性,包括 ( r, w, x ) 等基本属性,及是否为目录 (d) 与档案 (-) 或者是连结档 (l) 等等的属性!那么要修改属性的方法在前面也约略提过了,这里再加强补充一下!此外,由于 Linux 还可以设定其它的系统安全属性,使用 chattr 来设定,而以 lsattr 来查看,最重要的属性就是可以设定其不可修改的特性!让连档案的拥有者都不能进行修改!这个属性可是相当重要的,尤其是在安全机制上面( security )!
    chown 改变档案的拥有人 
    chgrp 改变档案的所属群组 
    chmod 改变档案的可写、可读、可执行等属性 
    umask 改变预设的建立档案或目录时的属性 
    chattr 改变档案的特殊属性 
    lsattr 显示档案的特殊属性!

    • chown 
      语法
      [root @test /root ]# chown [-R] user:group [目录名称] 
      参数说明: 
      -R    :循环的将该目录下的所有档案都改成 user 与 group 的名称! 
      范例: 
      [root @test /root]# mkdir /home/test/testing  <==在 /home/test 这个家目录中建立一个名为 testint 的子目录 
      [root @test /root]# cp * /home/test/testing 
      [root @test /root]# chown test /home/test/testing 
      [root @test /root]# chown -R test:test /home/test/testing<==将该目录下的所有目录或档案均变为 test 拥有
      说明: 
      前一个章节才刚讲完,应该不会就这样忘记了吧?!由于 chown 的使用范围较广,所以这里再次的给他复习一下 chown 就好, chgrp 请回前一章内容观看呦! 
        
      记得档案有『拥有人』及『拥有群组』吧,这个 chown 就是在改变拥有者的指令。刚接触 Linux 的朋友最容易犯的一个错误在哪里呢?就是以 root 的身份 copy 一个档案(或路径)给一般使用者(假设为 test )时,忘记将该档案的所有人改成 test 了!由于复制者是 root 所以该档案也会是 root 所有!那么 test 当然也就不能修改该档案了! 
        
      在上面的例子中,『 chown test /home/test/testing 』这个指令只会将该目录变成 test 的,但是 group 仍然是 root 的呦!所以你可以使用『 chown test:test /home/test/testing 』,连使用者群组都给他改变一下啰!不过需要注意的是,这两个指令都只改变了『目录』的所有权而已!那么在这个目录下的东西也要改变的话,该如何?!呵呵,就使用 -R 这个参数即可! 
        

    • chmod 
      语法
      [root @test /root ]# chmod [-R] [parameter] [目录名称] 
      参数说明: 
      -R   :循环的一直将该目录的档案均改变之! 
      范例: 
      [root @test /root]# chmod 777 .bashrc 
      说明: 
      还记得在『档案属性与系统』那一章吧!一个档案或目录至少有九个属性,三个三个一组,共分为三组!而可以使用数字来当作变换属性的参考依据!各属性如下:
      r:4 
      w:2 
      x:1
      举个例子来说,当一个属性为『-rwxr-xr--』时,那是几分呢?!我们可以将他看成如下『-[rwx][r-x][r--]』三组,所以分数就变成了『[4+2+1][4+0+1][4+0+0]』共有『754』分啦!这样会算吗?!OK!测试一下,底下的分数为几分:
      -r-xr-xr-x 
      -rwxrw----
      如果你可以算出『555』与『760』,呵呵!那么你就应该会算啰!所以,如果你要将 .bashrc 设定成所有人都可以读取的话,就下达『 chmod 777 .bashrc 』吧!其中需要特别注意的是,通常我们都会允许个人网页的设定!那么由于个人网页预设是记录在/home/userID/public_html底下,偏偏 /home/userID 的属性为『drwx------』根本就不允许任何人进入!所以,你最少要将你的目录设定成『drwx--x--x』 才可以!当然也可以设定成『drwxr-xr-x』!不过不建议设定成『777』呦! 
        

    • umask 
      OK!那么现在我们知道如何建立或者是改变一个目录或档案的属性了,不过,您知道当你建立一个新的档案或目录时,他的预设属性会是什么吗?呵呵!那就与 umask 有关了!那么 umask 是在搞什么呢?基本上, umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』,那么如何得知或设定 umask 呢?他的指定条件以底下的方式来指定: 
      语法
      [root @test root]# umask 
      0022 
      [root@vbird test]# umask 002   <==后面接 3 个数字! 
      [root@vbird test]# umask 
      0002
      说明: 
      查看 umask 数值为直接输入 umask 即可,而设定呢?没错!就是 umask 之后接三个数字!那么如何来指定呢?主要还是跟 Linux 的档案属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅: 
       
      • 若使用者建立为『档案』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 分 
        --rw-rw-rw-
      • 若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分 
        drwxrwxrwx
        
      那么 umask 指定的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以啰!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,这样了解吗?请问您, 5 分是什么?呵呵!就是读与执行的权限啦!如果以上面的例子来说明的话,因为 umask 为 002 ,所以 user, group 并没有被拿掉属性,不过 others 的属性被拿掉了 2 ( 也就是 w 这个属性 ),那么由于当使用者: 
       
      • 建立档案时:(-rw-rw-rw-) – (--------w-) ==> -rw-rw-r--
      • 建立目录时:(drwxrwxrwx) – (--------w-) ==> drwxrwxr-x
        
      不相信吗?你只要使用 touch test 然后看看这个 test 的档案属性,就可以知道了!那么如何看你这个使用者目前的 umask 呢?直接下达 umask 即可!实作看看先: 
       
      [root@vbird test]# umask 
      0002 
      [root@vbird test]# touch test1 
      [root@vbird test]# mkdir test2 
      [root@vbird test]# ls -l 
      -rw-rw-r--    1 root     root            0 Oct 22 00:00 test1
      drwxrwxr-x    2 root     root         4096 Oct 22 00:00 test2/ 
      发现了什么?呵呵! Test1 的属性为 666-002 = 664 !正确吗?是的!正确! 
      而 test2 这个目录呢?就是 777-002 = 775 !也正确!

      [root@vbird test]# umask 003 
      [root@vbird test]# touch test3 
      [root@vbird test]# mkdir test4 
      [root@vbird test]# ll 
      -rw-rw-r--    1 root     root            0 Oct 22 00:03 test3
      drwxrwxr--    2 root     root         4096 Oct 22 00:03 test4/ 
      嘿!属性又跟刚刚的不一样啰!仔细推敲一下为什么呦!test3 666-003 =663,这是怎么一回事?! 663 应该是 -rw-rw--wx 才对啊!怎么会是上面的属性!呵呵!这里就要特别的给他强调了!『尽量不要以数字相加减啦!』容易造成类似上面的问题!你应该要这样想(-rw-rw-rw-) - (--------wx)=-rw-rw-r--这样就对啦!了解了吗?不要用十进制的数字喔!够能力的话,用二进制来算,不晓得的话,用 rwx 来算喔! ^_^

        
      由上面的例子您应该很轻易的就可以发现 umask 的用途!而这个 umask 可以在 /etc/bashrc 里面进行修改喔!预设的情况之下, root 的 umask 为 022 而一般使用者则为 002 ,因为可写的权限蛮严重的,因此预设都会拿掉这个权限!此外,因为 root 比较重要!所以为了安全的需求,其同群组的写入属性就被拿掉了!这东西对于安全性也有一定程度的贡献呦! 
        

    • chattr 
      语法
      [root @test /root ]# chattr [+-=][ASacdistu] [档案或目录名称] 
      参数说明: 
      +-= :分别为 [+ 增加] [- 减少] [= 设定] 属性的意思 
      A  :当设定了 A 这个属性时,这个档案(或目录)的存取时间 atime (access) 将不可被修改,
          可避免例如手提式计算机容易有磁盘 I/O 错误的情况发生! 
      S  :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失! 
      a  :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root 才能设定这个属性。
      c  :这个属性设定之后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩出来! 
          但是在储存的时候,将会先进行压缩之后再储存(看来对于大档案似乎蛮有用的!) 
      d  :当 dump (备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)具有 dump 功效!
      i  :这个 i 可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法写入或新增数据!』 
          对于系统安全性有相当大的帮助! 
      j  :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在 journal 中! 
          但是当 filesystem 设定参数为 data=journalled 时,由于已经设定了日志了,所以这个属性无效! 
      s  :当档案设定了 s 参数时,他将会被完全的移除出这个硬盘空间。 
      u  :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中,可以使用来 undeletion. 
      范例: 
      [root @test /root]# chattr +i /etc/shadow<==呵呵!如此则无法更动这个档案啰! 
      [root @test /root]# chattr -i /etc/shadow <==解除该属性!
      说明: 
      这这个指令是重要的,尤其是在系统的安全性上面!由于这些属性是隐藏的性质,所以需要以 lsattr 才能看到该属性呦!其中,个人认为最重要的当属 +i 这个属性了,因为他可以让一个档案无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要 root 才能设定的呢!此外,如果是 log file 这种的登录档,就更需要 +a 这个可以增加,但不会被杀掉的参数了!怎样?很棒吧!未来提到登录档的认知时,我们再来聊一聊如何设定他吧! 
        

    • lsattr 
      语法
      [root @test /root ]# lsattr [-aR] 
      参数说明: 
      -a :将隐藏文件的属性也秀出来; 
      -R :连同子目录的数据也一并列出来! 
      范例: 
      [root @test /root]# chattr +i .bash_logout 
      [root @test /root]# lsattr -a  
      -------------- ./. 
      -------------- ./.. 
      ---i---------- ./.bash_logout 
      -------------- ./.bash_profile 
      -------------- ./.bashrc 
      -------------- ./.emacs 
      -------------- ./.screenrc
      说明: 
      这两个指令在使用上必须要特别小心,例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录档案给他设定成为具有 i 的属性,那么过了若干天之后,你突然要新增使用者,却一直无法新增!别怀疑,赶快去将 i 的属性拿掉吧!

    搜寻档案或目录:

    档案的搜寻可就厉害了!因为我们常常需要知道那个档案放在哪里,所以来谈一谈怎么搜寻吧!在 Linux 底下也有相当优异的搜寻系统呦!通常 find 不很常用的!因为速度慢之外,也很操硬盘!通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦!为什么呢?因为 whereis 与 locate 是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘,比较省时间啦!
    which   查看可执行档案的位置 
    whereis 查看档案的位置 
    locate  配合数据库查看档案位置 
    find    实际搜寻硬盘去查询文件名称

    • which 
      语法
      [root @test /root ]# which  [文件名称] 
      参数说明: 
      范例: 
      [root @test /root]# which passwd 
      /usr/bin/passwd
      说明: 
      which 的基本功能是『藉由 PATH 这个环境变量的内容,去该路径内寻找可执行文件』,所以基本的功能在于『寻找执行档』啰! 
        

    • whereis 
      语法
      [root @test /root ]# whereis [-bmsu] [目录名称] 
      参数说明: 
      -b    :只找 binary 的档案 
      -m    :只找在说明文件 manual 路径下的档案 
      -s    :只找 source 来源档案 
      -u    :没有说明档的档案! 
      范例: 
      [root @test /root]# whereis passwd 
      passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.bz2 
      将 passwd 相关字眼的档案或目录都列出来!

      [root @test /root]# whereis -b passwd 
      passwd: /usr/bin/passwd /etc/passwd 
      仅列出binary 档案!

      [root @test /root]# whereis -m passwd 
      passwd: /usr/share/man/man1/passwd.1.bz2 
      仅搜寻 man page 所在的目录!

      说明: 
      如果使用 find 太麻烦,而且时间花用的很大!(因为如果你的硬盘比较老旧的话,嘿嘿!有的等的!)这个时候 whereis 就相当的好用了!另外, whereis 可以加入参数来找寻相关的资料,例如如果你是要找可执行档( binary )那么加上 -b 就可以啦!例如上面的范例针对 passwd 这支程序来说明!如果不加任何参数的话,那么就将所有的数据列出来啰!那么 whereis 到底是使用什么咚咚呢?为何搜寻的速度会比 find 快这么多?!其实那也没有什么!这是因为 Linux 系统会将系统内的所有档案都记录在一个数据库档案里面,而当使用 whereis 或者是底下要说的 locate 时,都会以此数据库档案的内容为准,因此,有的时后你还会发现使用这两个执行档时,会找到已经被杀掉的档案!这就是因为他是一个『数据库』档案呀!另外,基本上 Linux 每天会针对 Linux 主机进行 updatedb (就是那一个数据库档案啰!)的动作,你可以在 /etc/cron.weekly/slocate.cron 这个档案找到相关的机制呦!当然,也可以直接使用 /usr/bin/updatedb 来更新数据库档案呢! 
        

    • locate 
      语法
      [root @test /root ]# locate [目录名称] 
      参数说明: 
      范例: 
      [root @test /root]# locate root 
      ……一大堆跟 root 有关字眼的档案都出来了 @_@

      [root @test /root]# updatedb        <==立刻更新数据库

      说明: 
      locate 的使用方式就更简单了!直接键入你要找的档名即可!但是,这个东西还是有使用上的限制呦!为什么呢?您会发现使用 locate 来寻找数据的时候特别的快,这是因为 locate 寻找的数据是由『已建立的数据库 /var/lib/slocate』里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据,呵呵!当然是很快速啰!那么有什么限制呢?就是因为他是经由数据库来搜寻的,而数据库的建立预设是在每个礼拜执行一次,所以当您新建立起来的档案,却还在数据库更新之前搜寻该档案,那么 locate 会告诉您『找不到!』呵呵!因为必须要更新数据库呀! 
        
      那么我到底要建立哪些数据库呢?是否全部都要建立?似乎不需要,这个时候,你可以自己选择需要建立档案数据库的目录呢!在 /etc/updatedb.conf 这个内即可设定了! 
       
      [root @test root]# more /etc/updatedb.conf 
      ## Linux-Mandrake configuration. 
      # 由何处开始查询数据,当然是由根目录啦!所以填入 / 即可 
      FROM="/"

      # 哪些目录不想要建立档案搜寻数据,呵呵!就是那些不要的数据嘛! 
      # 忘记的话,记得回上一章去看看内容,就知道为何如此设定了! 
      PRUNEPATHS="/proc,/tmp,/var/tmp,/usr/tmp,/net,/afs,/mnt"

      # 安全等级 
      #   0 代表关闭安全检验,速度上面较快速,但较不安全; 
      #   1 启动安全简易,这是系统的默认值; 
      SECURITY="1"

      # 查询的时候是否要由屏幕输出?当然不要,否则多麻烦? 
      VERBOSE="NO"

      # 数据库所在处!这是默认值,不要随意移动,否则会找不到! 
      DATABASE="/var/lib/slocate/slocate.db"

      # 哪些档案系统我们也不搜寻建立?就是光盘啦、非 Linux 的档案格式啦, 
      # 我们都不要进行搜寻信息的建立啦! 
      PRUNEFS="nfs,smbfs,ncpfs,proc,devpts,supermount,vfat,iso9660,udf,usbdevfs,devfs"

        

    • find 
      语法
      [root @test /root ]# find [路径] [参数] 
      参数说明: 
      1. 时间: 
         -atime n    :在 n*24 小时内被 access 即存取过的档案列出来! 
         -ctime n    :在 n*24 小时内被 changed 即改变、新增的档案或目录印出 
         -mtime n    :在 n*24 小时内被 modified 即修改过的档案印出 
         -newer file :比 file 还要新的档案就列出来! 
      2. 使用名称: 
         -gid n      :寻找 群组 ID 为 n 的档案 
         -group name :寻找群组名称为 name 的档案 
         -uid n      :寻找拥有者 ID 为 n 的档案 
         -user name  :寻找使用者名称为 name 的档案 
         -name file  :寻找档名为 file 的文件名称(可以使用万用字符) 
         -type type  :寻找档案属性为 type 的档案,type 包含了 b, c, d, p, l, s, 
                      这些与前一章的属性相同!例如 l 为 Link 而 d 为路径之意! 
      范例: 
      [root @test /root]# find / -name testing            <==寻找档名为 testing  
      [root @test /root]# find / -name 'test*'       <==寻找档名包含 test 的! 
      [root @test /root]# find . -ctime 1                 <==寻找目前目录下一天内新增的目录或档案 
      [root @test /root]# find /home/test -newer .bashrc  <==寻找 /home/test 目录下比 .bashrc 还要新的档案 
      [root @test /root]# find /home -user test       <==寻找 /home 底下拥有者为 test 的档案 
      [root @test /root]# find /dev -type b               <==寻找 /dev 这个目录下,档案属性为 b 的档案
      说明: 
      如果你要寻找一个档案的话,那么使用 find 会是一个不错的主意!他可以根据不同的参数来给予档案的搜寻功能!例如你要寻找一个档名为 httpd.conf 的档案,你知道他应该是在 /etc 底下,那么就可以使用『 find /etc -name httpd.conf 』噜!那如果你记得有一个档案档名包含了 httpd ,但是不知道全名怎办?!呵呵,就用万用字符 * 吧,如上以:『 find /etc -name '*httpd*' 』就可将档名含有 httpd 的档案都列出来啰!不过,由于 find 在寻找数据的时后相当的耗硬盘!所以没事情不要使用 find 啦!有更棒的指令可以取代呦!那就是 whereis 与 locate 啰!!鸟哥的私房菜笔记
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值