Linux操作系统基础解析之——Linux基本命令剖析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux操作系统基础解析之——Linux基本命令剖析相关的知识,希望对你有一定的参考价值。

  Linux操作系统自从出现以来,就备受关注。但是人们往往会有这样的一个印象:Linux比Windows难。为什么好多人都会有这样的想法呢?很简单,因为Windows是在更早的时候,甚至是大多数国人都没有认识到计算机的时候就已经被安装到X86架构的计算机上了。Microsoft公司寻求Intel公司的技术支持,并且建立合作之后,PC的市场就几乎被这两家公司垄断了。所以,很多人刚刚开始接触并逐渐学会使用计算机,Intel的X86架构的主机,而且这个主机上一般安装的都是Windows操作系统。因此,大家对于Windows的印象就是操作简单,易学易用。

  可是我想问大家一个问题,如果某个项目启动了,项目部有6个项目小组参与了这个项目。有这么一个需求,利用Windows系统创建一个保存该项目数据的文件夹,并且在这个文件夹下面创建出每个项目小组的子文件夹。就这么简单的一个要求,我们在Windows里面需要完成的操作至少分作7步,先创建项目文件夹,然后进入这个文件夹之后,再分别创建文件夹并改名。每一个习惯使用Windows操作者大概都会这么做,而且还会以为这样非常简单。但是在Linux里面,像上述的操作,其实只要一条命令就可以完成,别说是7个目录的创建,就算是再多些,一个命令足以。所以你还以为Windows的操作真的是简单么?其实从操作角度来讲,Linux是比Windows更简单的操作系统,只是Linux需要的入门起点稍高一些,但也仅此而已了。

  接下来我们就来说说Linux系统的基本操作,跟大家简单的剖析一下Linux里面基础命令的使用方法,即使你对Linux很陌生也没有关系,相信大家看过之后能够轻松的玩Linux了。

  至于Linux命令的格式,在前面的博文中已经说过了,有需要的请查看之前的那篇博文《Linux操作系统基础解析之(三)——基本命令行操作及获得帮助的方法》。


基本命令:

  1.pwd:内部命令

    功能:显示当前工作目录的名称

    格式:pwd [-L|-P] 

    常用选项:

      -L 如果$PWD变量捕获到了当前工作目录的名称就显示该变量的值。

      -P 显示真实的物理路径,而不是用符号链接来显示。

      注意:-L选项被指定为pwd命令的默认行为。

    退出状态:

    除非给出的选项无效或当前目录不可读,返回值均为0。

    使用举例:

      [[email protected] ~]# cd /etc/init.d
      [[email protected] init.d]# pwd
      /etc/init.d
      [[email protected] init.d]# pwd -P
      /etc/rc.d/init.d
      [[email protected] init.d]#


  2.cd:内部命令

    功能:改变shell的工作目录

    格式:cd [-L|-P] [dir]

    常用选项:

     -L 强制跟随符号链接。(也就是说,如果cd命令的参数是某一目录的符号链接,那么在更改目录之后,使用pwd -L命令显示的结果是符号链接的路径,而不是其真实的物理路径。)

     -P 使用物理目录结构而不跟随用符号链接。

    退出状态:

      如果shell的工作目录成功更改,则状态返回值为0;否则不为0。

    使用举例:

      [[email protected] ~]# cd /etc/init.d
      [[email protected] init.d]# pwd
      /etc/init.d
      [[email protected] init.d]# cd -P /etc/init.d
      [[email protected] init.d]# pwd
      /etc/rc.d/init.d
      [[email protected] init.d]# 


  3.ls:外部命令

    功能:将目录内容列表显示

    格式:ls [OPTION]... [FILE]...

    常用选项:

      -a, --all:显示指定目录中包括"."和".."在内的所有文件。

      -A, --almost-all:显示指定目录中唯独部包括"."和".."在内的其他所有文件。

      --color[=WHEN]:给输出结果着色。WHEN的取值可以是always、none或者auto。

      -d, --directory:用目录本身的条目代替其内容,并且不参考符号链接。

      -F, --classify:给输出条目附加指示符。(可以简单区分文件类型:目录文件附加/;二进制文件附加*;管道文件附加|;套接字文件附加=;符号链接文件附加@,等等)

      -h, --human-readable:通常与-l配合使用,以K、M、G为单位显示转换单位以后的文件大小

      --help:显示简短的帮助信息

      -i, --inode:显示每个文件的索引编号

      -l:使用长列表格式显示每个文件的详细属性信息

      -n, --numeric-uid-gid:类似于-l,只不过会将文件的属主和属组以ID方式显示,不显示名称

      -r, --reverse:将输出结果按照倒序排列

      -R, --recursive:递归地列表子目录中的内容

      -s, --size:显示为每个文件分配了多少磁盘空间,与-h配合能够显示更加合适的单位,默认单位是KB

      -S:将输出结果按照文件大小进行排序

      -t:将输出结果按照内容修改时间进行排序

      -u:与-lt选项配合,将输出结果按照文件的访问时间进行排序

      -U:不排序,按照目录中存放的顺序显示

      -1:以每行列表显示一个文件的方式输出结果

      -Z, --context:只显示文件的权限、属主、属组、安全上下文和文件名。

      --scontext:只显示文件的安全上下文和文件名

    退出状态:

      0  命名被成功执行

      1  小问题(不能访问子目录等)

      2  大麻烦(没有权限访问、目标文件不存在、选项错误等)


    使用举例:

        [[email protected] ~]# ls -lt /tmp                
        total 80
        -rw-r--r--. 1 root root 10033 May 18 10:55 install.log.syslog
        -rw-r--r--. 1 root root 50828 May 18 10:55 install.log
        -rw-------. 1 root root  1465 May 18 10:55 anaconda-ks.cfg
        -rw-r--r--. 1 root root 10240 May 18 10:55 a.tar
        -rw-------. 1 root root     0 May 11 08:14 yum.log
        [[email protected] ~]# 
        [[email protected] ~]# ls -ltu /tmp
        total 80
        -rw-------. 1 root root     0 May 18 10:57 yum.log
        -rw-r--r--. 1 root root 10033 May 18 10:55 install.log.syslog
        -rw-------. 1 root root  1465 May 18 10:55 anaconda-ks.cfg
        -rw-r--r--. 1 root root 10240 May 18 10:55 a.tar
        -rw-r--r--. 1 root root 50828 May 18 10:55 install.log
        [[email protected] ~]# 
        [[email protected] ~]# ls -i /tmp
        7340036 anaconda-ks.cfg  7340038 install.log  7340034 yum.log
        7340037 a.tar   7340039 install.log.syslog
        [[email protected] ~]# [[email protected] ~]# ls -Z /tmp
        -rw-------. root root unconfined_u:object_r:user_tmp_t:s0 anaconda-ks.cfg
        -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 a.tar
        -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 install.log
        -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 install.log.syslog
        -rw-------. root root system_u:object_r:root_t:s0      yum.log
        [[email protected] ~]#
        [[email protected] ~]# ls --scontext /tmp
        unconfined_u:object_r:user_tmp_t:s0 anaconda-ks.cfg
        unconfined_u:object_r:user_tmp_t:s0 a.tar
        unconfined_u:object_r:user_tmp_t:s0 install.log
        unconfined_u:object_r:user_tmp_t:s0 install.log.syslog
        system_u:object_r:root_t:s0      yum.log

    由于内容过多,其他选项的组合请大家自行尝试。


  4.mkdir:外部命令

    功能:创建目录

    格式:mkdir [OPTION]... DIRECTORY...

    常用选项:

      -m, --mode=MODE:就像使用chmod命令那样为目录设置权限,而不是用a=rws - umask的方式

      -p, --parents:根据需要创建父目录,如果已存在也不会报错

      -v, --verbose:为每个被创建的目录显示一条信息

      -Z, --context=CTX:将每个被创建的目录的SELinux的安全上下文设置为CTX

      --help:显示帮助菜单信息

      --version:输出版本信息并退出

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。

    使用举例:

        [[email protected] ~]# mkdir -pv /tmp/myproject/dir{1,2,3/dir{1,2,3}}
        mkdir: created directory `/tmp/myproject‘
        mkdir: created directory `/tmp/myproject/dir1‘
        mkdir: created directory `/tmp/myproject/dir2‘
        mkdir: created directory `/tmp/myproject/dir3‘
        mkdir: created directory `/tmp/myproject/dir3/dir1‘
        mkdir: created directory `/tmp/myproject/dir3/dir2‘
        mkdir: created directory `/tmp/myproject/dir3/dir3‘
        [[email protected] ~]#


  5.rmdir:外部命令

    功能:移除空目录

    格式:rmdir [OPTION]... DIRECTORY...

    常用选项:

      -p, --parents:如果移除目录后,其祖先目录也为空,则一并移除

      -v, --verbose:输出每个被处理执行的目录的操作结果

      --help:显示简短帮助信息

      --version:输出版本信息并退出

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。

    使用举例:

        [[email protected] ~]# rmdir -pv /tmp/myprojects/james/first        
        rmdir: removing directory, `/tmp/myprojects/james/first‘
        rmdir: removing directory, `/tmp/myprojects/james‘
        rmdir: removing directory, `/tmp/myprojects‘
        rmdir: removing directory, `/tmp‘
        rmdir: failed to remove directory `/tmp‘: Directory not empty
        [[email protected] ~]#


  6.touch:外部命令

    功能:改变文件的时间戳

    格式:touch [OPTION]... FILE...

    常用选项:

      -a:只改变访问时间

      -c, --no-create:不创建任何文件

      -d, --date=STRING:分析STRING并使用它代替当前时间

      -m:只改变修改时间

      -r, --reference=FILE:参考指定文件的时间戳来设置目标文件的时间戳,不使用当前时间

      -t STAMP:使用[[CC]YY]MMDDhhmm[.ss]格式的时间代替当前时间

      --time=WORD:改变指定的时间,WORD可以是:access, atime, modify, mtime 

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。

    使用举例:

        [[email protected] test]# touch file1        
        [[email protected] test]# stat file1
          File: `file1‘
          Size: 5         Blocks: 8          IO Block: 4096   regular file
        Device: 802h/2050dInode: 7340048     Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)  Gid: (    0/    root)
        Access: 2016-05-21 18:30:59.844000944 +0800
        Modify: 2016-05-21 18:30:59.844000944 +0800
        Change: 2016-05-21 18:30:59.844000944 +0800
        [[email protected] test]# touch --time=atime file1
        [[email protected] test]# stat file1
          File: `file1‘
          Size: 5         Blocks: 8          IO Block: 4096   regular file
        Device: 802h/2050dInode: 7340048     Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)  Gid: (    0/    root)
        Access: 2016-05-21 18:31:24.270000248 +0800
        Modify: 2016-05-21 18:30:59.844000944 +0800
        Change: 2016-05-21 18:31:24.270000248 +0800
        [[email protected] test]# touch --time=mtime file1
        [[email protected] test]# stat file1
          File: `file1‘
          Size: 5         Blocks: 8          IO Block: 4096   regular file
        Device: 802h/2050dInode: 7340048     Links: 1
        Access: (0644/-rw-r--r--)  Uid: (    0/    root)  Gid: (    0/    root)
        Access: 2016-05-21 18:31:24.270000248 +0800
        Modify: 2016-05-21 18:32:40.812005557 +0800
        Change: 2016-05-21 18:32:40.812005557 +0800
        [[email protected] test]#


  7.stat:外部命令

    功能:显示文件或文件系统状态信息

    格式:stat [OPTION]... FILE...

    常用选项:

      -L, --dereference:不显示符号链接文件的状态,而是沿着链接路径显示源文件的状态

      -Z, --context:在显示结果中添加该文件的SELinux的安全上下文信息

      -f, --file-system:显示目标文件所在的文件系统的状态信息而不是该文件的信息

      -t, --terse:以简洁模式输出结果,慎用(因为输出结果很难理解)。

      -c  --format=FORMAT:使用指定格式输出文件的状态信息。

      常用的基于文件的有效格式包括(不考虑文件系统):

        %a  以数字的格式显示目标文件权限

        %A  以模式的格式显示目标文件权限

        %C  仅显示目标文件的SELinux的安全上下文信息

        %d  以十进制显示目标文件所在设备的设备号

        %D  以十六进制显示目标文件所在设备的设备号

           %F  显示目标文件的文件类型

           %g  显示目标文件的所属组的GID

           %G  显示目标文件的所属组的名称

           %h  显示目标文件的硬链接数量

           %i  显示目标文件的索引节点编号(inode)

           %n  显示目标文件的文件名

           %N  如果目标文件是符号链接,则引用文件名即链接关系

           %s  以字节为单位显示目标文件的完整大小

           %t  以十六进制的格式显示目标块设备文件的主设备号

           %T  以十六进制的格式显示目标块设备文件的次设备号

           %u  显示目标文件的属主的UID

           %U  显示目标文件的属主的用户名

           %x  显示目标文件的最后访问时间

           %X  显示目标文件的最后访问时间,格式为从1970-01-01 0:00:00到最后访问时间所经过

           的秒数

           %y  显示目标文件的最后修改时间

           %Y  显示目标文件的最后修改时间,格式为从1970-01-01 0:00:00到最后修改时间所经过

           的秒数

           %z  显示目标文件的最后状态改变时间

           %Z  显示目标文件的最后状态改变时间,格式为从1970-01-01 0:00:00到最后状态改变时

           间所经过的秒数   


        常用的基于文件系统的有效格式包括:

           %a  显示目标文件所在的文件系统中非超级用户可用的空闲块的数量 

           %b  显示目标文件所在的文件系统中数据块的总量

           %c  显示目标文件所在的文件系统中文件索引节点的总量

           %d  显示目标文件所在的文件系统中空闲的文件索引节点的数量

           %f  显示目标文件所在的文件系统中空闲的数据块

           %C  显示目标文件的SELinux安全上下文(很特殊,仍然针对目标文件而非文件系统)

           %i  以十六进制显示显示目标文件所在的文件系统的文件系统ID

           %l  显示目标文件所在的文件系统中文件名的最大长度

           %n  显示目标文件的文件名(很特殊,仍然针对目标文件而非文件系统)

           %s  显示目标文件所在的文件系统的块大小

           %S  显示目标文件所在的文件系统的基础块大小

           %t  以十六进制显示目标文件所在的文件系统的类型

           %T  以人们比较熟悉的名称显示目标文件所在的文件系统的类型

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。

    使用举例:

        [[email protected] test]# stat file1
          File: `file1‘
          Size: 5         Blocks: 8          IO Block: 4096   regular file
        Device: 802h/2050dInode: 7340048     Links: 1
        Access: (4644/-rwSr--r--)  Uid: (    0/    root)  Gid: (    0/    root)
        Access: 2016-05-21 18:31:24.270000248 +0800
        Modify: 2016-05-21 18:32:40.812005557 +0800
        Change: 2016-05-21 18:40:35.278997593 +0800
        [[email protected] test]# stat -c %A file1
	-rw-r--r--
	[[email protected] test]# stat -c %a file1
	644
	[[email protected] test]# chmod 4644 file1
	[[email protected] test]# stat -c %a file1
	4644
	[[email protected] test]# stat -c %C file1
	unconfined_u:object_r:user_tmp_t:s0
	[[email protected] test]# stat -c %d file1
	2050
	[[email protected] test]# stat -c %D file1
	802
        [[email protected] test]# stat -c %F file1
        regular file
        [[email protected] test]# stat -c %F /etc
        directory
        [[email protected] test]# stat -c %F /dev/sda4
        block special file
        [[email protected] test]# stat -c %F /dev/zero
        character special file
        [[email protected] test]# stat -c %F /etc/grub.conf 
        symbolic link
        [[email protected] test]# stat -c %g file1
        0
        [[email protected] test]# stat -c %G file1
        root
        [[email protected] test]# stat -c %h /etc
        116
        [[email protected] test]# stat -c %n /etc/init.d
        /etc/init.d
        [[email protected] test]# stat -c %N /etc/init.d
        `/etc/init.d‘ -> `rc.d/init.d‘
        [[email protected] test]# stat -c %s file1
        5
        [[email protected] test]# stat -c %t /dev/sda4
        8
        [[email protected] test]# stat -c %t /dev/sda3
        8
        [[email protected] test]# stat -c %T /dev/sda3
        3
        [[email protected] test]# stat -c %T /dev/sda4
        4
        [[email protected] test]# stat -c %x /dev/sda3
        2016-05-18 08:58:24.980999987 +0800
        [[email protected] test]# stat -c %X /dev/sda3
        1463533104
        [[email protected] test]# stat -fc %a /dev/sda3
        56911
        [[email protected] test]# stat -fc %a file1
        27752096
        [[email protected] test]# stat -fc %a /boot/
        147705
        [[email protected] test]# stat -fc %b file1
        30204965
        [[email protected] test]# stat -fc %b /etc
        30204965
        [[email protected] test]# stat -fc %b /boot
        194241
        [[email protected] test]# stat -fc %b /testdir
        5006815
        [[email protected] test]# stat -fc %a /testdir
        4739567
        [[email protected] test]# stat -fc %c /testdir
        1281120
        [[email protected] test]# stat -fc %C /testdir
        system_u:object_r:etc_runtime_t:s0
        [[email protected] test]# stat -fc %i /testdir
        8b9a7d2d8533510f
        [[email protected] test]# stat -fc %l /testdir
        255
        [[email protected] test]# stat -fc %n /testdir
        /testdir
        [[email protected] test]# stat -fc %s /testdir
        4096
        [[email protected] test]# stat -fc %S /testdir
        4096
        [[email protected] test]# stat -fc %t /testdir
        ef53
        [[email protected] test]# stat -fc %T /testdir
        ext2/ext3


  8.cp:外部命令

    功能:复制文件和目录

    格式:

      cp [OPTION]... [-T] SOURCE DEST

      cp [OPTION]... SOURCE... DIRECTORY

      cp [OPTION]... -t DIRECTORY SOURCE...

    常用选项:

      -a, --archive:归档文件,相当于-dR --preserve=all

      -i:交互式操作,防止目标文件被误覆盖

      -r, -R: 递归复制目录及内部的所有内容;

      -d:--no-dereference --preserv=links 不复制原文件,只复制链接名

      --preserv[=ATTR_LIST]

        mode: 权限

        ownership: 属主属组

        timestamp:时间戳

        links:符号链接

        xattr:扩展属性

        context:安全上下文

        all:全部

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。


  9.mv:外部命令

    功能:移动(重命名)文件

    格式:

      mv [OPTION]... [-T] SOURCE DEST

      mv [OPTION]... SOURCE... DIRECTORY

      mv [OPTION]... -t DIRECTORY SOURCE...

    常用选项:

      -i: 交互式选项,移动文件之前提示用户是否覆盖

      -f: 强制移动,覆盖文件之前不予提示

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。


  10.rm:外部命令

    功能:移除文件或目录

    格式:rm [OPTION]... FILE...

    常用选项:

      -i: 每一次移除操作执行之前提示用户是否删除

      -f: 忽略不存在的文件,也不给予提示,强制删除

      -r, -R, --recursive: 递归地删除目录及目录中的内容

      --no-preserve-root:不会特别地针对‘/‘实施保护

    退出状态:

      如果命令执行成功,状态返回值为0;如果命令执行失败,状态返回值为非0。


本文出自 “运维者的家” 博客,请务必保留此出处http://zhaotianyu.blog.51cto.com/132212/1775741

以上是关于Linux操作系统基础解析之——Linux基本命令剖析的主要内容,如果未能解决你的问题,请参考以下文章

Linux操作系统基础解析之——Linux基本命令剖析

Linux操作系统基础解析之——bash基础知识和基本使用技巧

Linux操作系统基础解析之——基本操作及获得帮助

linux基础之基本命令

Linux操作系统基础解析之——Bash(Shell)基础知识

Linux操作系统基础解析之——Bash(Shell)基础知识