命令熟悉

来源:互联网 发布:java md5 32加密算法 编辑:程序博客网 时间:2024/05/16 18:53

快捷键:打开终端 ctrl+alt+T   清除终端命令:ctrl+L  补全:Tab    提示:按两次Tab



1.我们打开linux终端的时候都有这样一句话: ***@***:~$  (其中***是自己用户的名字和主机名)

  fuzhongyu@fuzhongyu-Lenovo-G400:~$ 解析:

   fuzhongyu 指当前用户

   fuzhongyu-Lenovo-G400 指主机名

   ~ 家目录

   $  当前是普通用户   # root 用户


2 ls 命令

  选项: -a   显示所有文件,包括隐藏文件

      -l 显示详细信息

      -d 查看目录属性

      -h 人性化显示文件大小

      -i  显示inode (文件编码,相等于id)


演示实例:

ls -l

结果:

总用量 488-rw-r--r-- 1 fuzhongyu fuzhongyu   8980  4月  6 17:10 examples.desktop-rw-r--r-- 1 root      root      426904 12月  5  2013 hostapd_1.0-3ubuntu2.1_amd64.debdrwxrwxr-x 2 fuzhongyu fuzhongyu   4096  7月 29 15:07 mixeddrwxrwxr-x 3 fuzhongyu fuzhongyu   4096  4月 24 11:33 My eBooksdrwxrwxr-x 6 fuzhongyu fuzhongyu   4096  7月 30 16:58 softdrwxrwxr-x 4 fuzhongyu fuzhongyu   4096  4月 23 19:58 VirtualBox VMsdrwxrwxr-x 5 fuzhongyu fuzhongyu   4096  6月  1 09:43 workspacedrwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 公共的drwxrwxrwx 3 fuzhongyu fuzhongyu   4096  6月 26 23:08 共享文件drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 模板drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 视频drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 图片drwxr-xr-x 3 fuzhongyu fuzhongyu   4096  5月 23 20:59 文档drwxr-xr-x 4 fuzhongyu fuzhongyu   4096  7月 30 17:17 下载drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 音乐drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  7月 12 21:44 桌面

解析:

  ls -l 表示显示的是目录下的详细信息,默认为当前文件。也可用  ls -l  soft  这样显示的就是soft 文件目录下的详细信息了

  

  接下来我们对显示的信息做一个简单的了解: 

 -rw-r--r--:

   -(最开头那个) 代表的是文件类型(-文件,d 目录 , l 软链接文件)

   r (read) 读   w(write) 写  x(excute) 执行


   rw-           r--            r-- 

          所有者   所属组   其他人

 

例子:

  -rw-r--r-- 1 fuzhongyu fuzhongyu   8980  4月  6 17:10 examples.desktop
 这是一个文件(-开头) 所有者是 fuzhongyu 具有读写权限(rw-) ,所属组是fuzhongyu 具有读的权限(r--),其他人 具有读的权限(r--)

drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 图片
 这是一个目录(d开头) 所有者是 fuzhongyu 具有 读写执行 权限(rwx) ,所属组是fuzhongyu 具有 读执行 的权限(r-x),其他人 具有 读执行 的权限(r-x)


接着我们再看后面几列信息

drwxr-xr-x 2 fuzhongyu fuzhongyu   4096  4月  6 17:15 图片
  4096 表示的是文件的字节数  

  4月6 17:15 表示的是最后修改的时间 

  图片  表示的是目录的名称


好,下面我们来介绍一下 -h ,-d ,-i

   -h:上面我们通过-l 显示的文件大小是 字节 形式的, 我们用 -h 可将文件大小显示成K形式

 -d: 如果我们使用 ls -l  soft 那么显示的是soft 目录下文件的信息,那怎么能看到文件本身的信息呢,这时就可以用 ls -ld soft 来查询soft 文件本身的信息了

   -i : 每个文件都有一个唯一的标识,相当于id 我们可以通过-i 来看到这个文件的标识



3  建立目录命令

  mkdir -p 目录名

    -p  递归创建

什么叫递归创建,比如:我想在目录下创建一个test目录,并在test目录下创建t目录,这时我们可以执行mkdir test 来先创建test目录,再进入test目录以相同的方式创建t文件,当我们有-p 时可直接使用 mkdir -p test/t 来创建


4 切换目录命令 cd

    cd ~ 进入用户家目录

 cd -  进入上次目录

 cd ..  进入上一级目录


5  删除命令 rm

     rm -rf  目录名

  -r  删除目录

  -f   强制删除


6 复制命令 cp

     cp [选项] [原文件或目录] [目标目录]

    选项:

   -r     复制目录

   -p     连带文件属性复制

   -d     若源文件是链接文件,则复制链接属性

   -a   相当于 -pdr


我们在使用的时候经常使用到的是 -r 和 -a,下面我们来看几个简单的列子:


cp  -r  t2/r  t1/

cp  -r  t2/r  t1/p

cp  -a  t2/r  t1/

第一条语句:将目录t2下的r目录复制到t1目录下

第二条语句:将t2下的r目录复制到t1目录下并重命名为p

第三条语句:将目录t2下的r目录复制到t1目录下,并保持修改创建时间等,文件的各种属性完全一致。


6 剪切和重命名 mv

  mv需要注意:cp 和 rm 在操作目录的时候需要加-r 但mv 操作目录不需要加-r

运行实例:

mv  /home/fuzhongyu/test/t2/p  /home/fuzhongyu/test/t1/

将t2下的p 目录 剪切到 t1下,这边使用了绝对路径


mv p s

将目录p 重命名为s


7  文件链接命令   ln

   硬链接:   ln  原文件 链接文件 

   硬链接:   ln  -s  原文件 链接文件   


这两个语法和cp基本相同,这里我们主要看看硬链接和软连接之间的区别:

图 2. 软链接的访问

 这是一张图示,hard link--->硬链接,file-->原文件,soft-->软连接,inode--->文件节点(相当于id,他存储有数据块的地址,读取数据时将这些数据块拼接就是我们看到的文件了,上面已经讲到过可用 ls -i查看这个节点) , data block--->数据块(数据块不一定是连续的)

 我们可以看到硬链接和原文件 存储的是相同的节点。而软连接存储的是原文件文件地址的节点,也就是说软链接并不是通过直接访问原文件的地址,而是先访问原文件文件地址的节点,再通过这个地址节点访问原文件的节点拿到数据。这是我们如果删除了原文件,这个软链接就会失效,硬链接不存在这个问题。我们看软链接的时候,相当于windows中的桌面快捷方式。


8 文件搜索命令

(1) locate文件搜索命令

  locate [文件名]

运行实例:

  locate  /home/fuzhongyu/te
  这条命令是搜索/home/fuzhongyu目录下已te开头的文件

结果:

/home/fuzhongyu/test/home/fuzhongyu/test/t1/home/fuzhongyu/test/t2/home/fuzhongyu/test/t1/r/home/fuzhongyu/test/t1/s/home/fuzhongyu/test/t2/r


这里我们再简单的来了解下locate 的一些知识,注:

  a,  locate 是在后台数据库(/var/lib/mlocate)中按文件名搜索的,其搜索速度快

        b,  后台数据库并不是实时更新的,他每天会去更新一次,所以我们刚新建的文件立刻使用locate 命令搜索是搜不到的

  c,  我们可以通过强制更新数据库的办法,使我们使用locate命令可以搜到刚更新的文件,直接使用命令 updatedb 即可

  d, 我们用locate命令是执行/etc/updatedb.com这个配置文件来进行搜索的,但他对于有些目录不会去搜索,下面我们打开这个文件来看一下具体的配置


updatedb.com文件:

PRUNE_BIND_MOUNTS="yes"# PRUNENAMES=".git .bzr .hg .svn"PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                                                               ~                                  
其中:PRUNE_BIND_MOUNTS="yes" 表示开启搜索限制

   PRUNEFS="   "   这里面的文件是搜索时,不进行搜索的文件系统

   PRUNENAMES="  "  搜索时不进行搜索的文件类型

   PRUNEPATHS="   "         搜索时不进行搜索的文件路径
例如:我们在/tmp  下的文件,使用locate使搜索不到的,因为在配置文件中已经配置了这个文件路径下的文件不进行搜索。

   (2) 命令路径搜索命令  whereis和which

       注: 使用这两个命令只能搜索命令,不能搜索普通文件 

  whereis  命令名

     选项: -b    只看可执行文件路径

         -m  只看帮助文件路径

 运行实例:

 whereis   ls

  结果:

 ls: /bin/ls /usr/share/man/man1/ls.1.gz

运行实例2:

 whereis  -b   ls

结果:
 ls: /bin/ls
  


   which  命令名

这两个命令差不多,就不再做解释 


(3)find命令

  find  [搜索范围] [搜索条件]

  搜索时用到的通配符: * 匹配任意内容, ? 匹配任意一个字符, [] 匹配任意一个中括号内的字符 


a, 根据文件名搜索

   find [搜索范围]  -name [搜索条件]  

运行实例:在fuzhongyu目录下搜索名称为r 的文件(完全匹配)  

 find  /home/fuzhongyu/  -name  r
结果:

 /home/fuzhongyu/test/t2/r /home/fuzhongyu/test/t1/r

运行实例2:在/home/fuzhongyu/mixed/文件目录下找出ca开头的文件
find  /home/fuzhongyu/mixed/  -name  "ca*"

结果:

/home/fuzhongyu/mixed/ca.out

 b  , find [搜索范围]  -iname [搜索条件]    不区分大小写

 c,  find [搜索范围]  -user [用户名] 根据文件用户所有者搜索

 d,  find [搜索范围]  -nouser   查找没有所有者的文件(垃圾文件)

 e,  find [搜索范围]  [参数] [时间]  根据文件修改等参数搜索文件

   -atime     文件访问时间

            -ctime  改变文件属性

            -mtime 修改文件内容

   时间参数: 如+10表示距离今天10天以前的文件,10表示距离今天第10天的文件,-10在距离今天10内的文件

运行实例:

 find  /home/fuzhongyu/mixed/  -atime  -5
结果:
/home/fuzhongyu/mixed//home/fuzhongyu/mixed/view.out/home/fuzhongyu/mixed/ca.out

 f , find [搜索范围] -size [大小]    按大小搜索单位(k , M)需要注意大小写,单位要带上

      大小参数: 如+10表示大于10,-10表示小于10,10表示等于10

实例: 搜索当前目录下文件大于5k的文件,“.”代表是当前目录

find  .  -size  +5k
 g, find [搜索范围] -inum  [节点号]

    h, find [搜索范围] -size  [大小]  参数 -size  [大小]

              -a     且的意思and

             -o       或的意思or

实例:搜索当前文件目录下大于5k 小于10k 的文件

<pre name="code" class="java"> find  .  -size  +5k -a  -size -10k

 

  j. 对搜索出来的文件再进行处理

     find [搜索范围] [条件]  -exec 命令 {} \; 

实例: 对当前目录下小于10k的文件进行人性化显示详情 (人性化显示:ls -lh [文件名])

  find  .   -size -10k -exec  ls -lh  {} \;

结果:
总用量 8.0Kdrwxrwxr-x 4 fuzhongyu fuzhongyu 4.0K  8月 22 23:00 t1drwxrwxr-x 3 fuzhongyu fuzhongyu 4.0K  8月 22 22:58 t2总用量 4.0Kdrwxrwxr-x 2 fuzhongyu fuzhongyu 4.0K  8月 22 22:31 r总用量 0总用量 8.0Kdrwxrwxr-x 2 fuzhongyu fuzhongyu 4.0K  8月 22 22:42 rdrwxrwxr-x 2 fuzhongyu fuzhongyu 4.0K  8月 22 22:53 s

(4) grep 命令

  grep  选项 [字符] [文件名]  

  选项:  -i 忽略大小写

       -v 不含有(即反转)

 grep 命令用于搜索文件中含有该字符的行

运行实例:查询ca.out文件中含有size的行(不区分大小写)

grep  -i  "size" ca.out

9帮助命令 man (manual)  help

    man [命令]

 实例:查看ls命令的文档

    man ls
 

    [命令] --help

实例:查看ls命令

   ls  --help



0 0
原创粉丝点击