• 第三章 常用Shell(Bash)命令


    3.1 查看文件和目录

    3.1.1 ls命令:列出文件名和目录

    ls命令不带任何选项,将列出当前目录下所有文件和目录,但不会显示详细的信息。

    [root@hadoop100 ~]# ls
    anaconda-ks.cfg  file  initial-setup-ks.cfg  itheima  公共  模板  视频  图片  文档  下载  音乐  桌面
    

    使用-l选项,将每行显示一条记录:

    [root@hadoop100 ~]# ls -l
    总用量 44
    -rw-------. 1 root root 1685 69 16:55 anaconda-ks.cfg
    -rw-r--r--. 1 root li      0 617 21:57 file
    -rw-r--r--. 1 root root 1733 69 17:01 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root 4096 614 21:44 itheima
    drwxr-xr-x. 2 root root 4096 610 22:11 公共
    drwxr-xr-x. 2 root root 4096 610 22:11 模板
    drwxr-xr-x. 2 root root 4096 610 22:11 视频
    drwxr-xr-x. 2 root root 4096 610 22:11 图片
    drwxr-xr-x. 2 root root 4096 610 22:11 文档
    drwxr-xr-x. 2 root root 4096 610 22:11 下载
    drwxr-xr-x. 2 root root 4096 610 22:11 音乐
    drwxr-xr-x. 2 root root 4096 610 22:11 桌面
    

    使用-l选项,将以长列表格显示文件和目录,包括文件类型、大小、修改日期和时间、权限等信息。
    从上面的输出可以看到每行有 7个字段,那么每个字段的含义是什么意思呢?

    • 第一个字符:文件类型。
      • 连字符"-"表示普通文件;
      • d表示目录;
      • s表示套接字文件;
      • l表示链接文件。
    • 字段一:文件权限。接下来的9个字符指示文件的权限。每3个字符分别涉及所有者、用户组和其他用户的读、写、执行权限。
    • 字段二:链接数。1表示只有一个链接到此文件。
    • 字段三:所有者。
    • 字段四:用户组。
    • 字段五:文件大小。默认输出的大小单位是字节。
    • 字段六:文件最近依次被修改的日期时间。
    • 字段七:文件名。

    使用-lh选项可以将文件大小显示为符合人类阅读习惯的格式:

    [root@hadoop100 ~]# ls -lh
    总用量 44K
    -rw-------. 1 root root 1.7K 69 16:55 anaconda-ks.cfg
    -rw-r--r--. 1 root li      0 617 21:57 file
    -rw-r--r--. 1 root root 1.7K 69 17:01 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root 4.0K 614 21:44 itheima
    drwxr-xr-x. 2 root root 4.0K 610 22:11 公共
    drwxr-xr-x. 2 root root 4.0K 610 22:11 模板
    drwxr-xr-x. 2 root root 4.0K 610 22:11 视频
    drwxr-xr-x. 2 root root 4.0K 610 22:11 图片
    drwxr-xr-x. 2 root root 4.0K 610 22:11 文档
    drwxr-xr-x. 2 root root 4.0K 610 22:11 下载
    drwxr-xr-x. 2 root root 4.0K 610 22:11 音乐
    drwxr-xr-x. 2 root root 4.0K 610 22:11 桌面
    

    使用-F选项,将使用不同的特殊字符归类不同的文件类型:

    [root@hadoop100 ~]# ls -F
    anaconda-ks.cfg  initial-setup-ks.cfg  公共/  视频/  文档/  音乐/
    file             itheima/              模板/  图片/  下载/  桌面/
    

    如上例所示:

    • /表示目录
    • 无特殊字符表示普通文件
    • @ 表示链接文件
    • * 表示可执行文件

    使用–color=auto命令,将不同的文件类型显示为不同的颜色:

    [root@hadoop100 ~]# ls --color=auto
    anaconda-ks.cfg  file  initial-setup-ks.cfg  itheima  公共  模板  视频  图片  文档  下载  音乐  桌面
    

    使用-ld选项,可以以长列表格式列出某个目录的信息:

    [root@hadoop100 ~]# ls -ld /var/log
    drwxr-xr-x. 20 root root 4096 819 09:08 /var/log
    

    使用-R选项,将递归地列出子目录的内容:

    [root@hadoop100 ~]# ls -R /etc/sysconfig/
    /etc/sysconfig/:
    anaconda    crond             kdump            nfs            rpc-rquotad    sysstat
    atd         ebtables-config   kernel           ntpd           rsyncd         sysstat.ioconf
    authconfig  fcoe              ksm              ntpdate        rsyslog        virtlockd
    autofs      firewalld         libvirtd         qemu-ga        run-parts      virtlogd
    cbq         grub              man-db           radvd          samba          wpa_supplicant
    cgred       init              modules          raid-check     saslauthd
    chronyd     ip6tables-config  netconsole       rdisc          selinux
    console     iptables-config   network          readonly-root  smartmontools
    cpupower    irqbalance        network-scripts  rpcbind        sshd
    
    /etc/sysconfig/cbq:
    avpkt  cbq-0000.example
    
    /etc/sysconfig/console:
    
    /etc/sysconfig/modules:
    
    /etc/sysconfig/network-scripts:
    ifcfg-ens33  ifdown-ipv6    ifdown-TeamPort  ifup-ippp   ifup-routes       network-functions
    ifcfg-lo     ifdown-isdn    ifdown-tunnel    ifup-ipv6   ifup-sit          network-functions-ipv6
    ifdown       ifdown-post    ifup             ifup-isdn   ifup-Team
    ifdown-bnep  ifdown-ppp     ifup-aliases     ifup-plip   ifup-TeamPort
    ifdown-eth   ifdown-routes  ifup-bnep        ifup-plusb  ifup-tunnel
    ifdown-ib    ifdown-sit     ifup-eth         ifup-post   ifup-wireless
    ifdown-ippp  ifdown-Team    ifup-ib          ifup-ppp    init.ipv6-global
    [root@hadoop100 ~]#
    

    联合使用-ltr选项,将以长列表格式按文件或目录的修改时间倒序地列出文件和目录:

    [root@hadoop100 ~]# ls -ltr
    总用量 44
    -rw-------. 1 root root 1685 69 16:55 anaconda-ks.cfg
    -rw-r--r--. 1 root root 1733 69 17:01 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root 4096 610 22:11 桌面
    drwxr-xr-x. 2 root root 4096 610 22:11 音乐
    drwxr-xr-x. 2 root root 4096 610 22:11 下载
    drwxr-xr-x. 2 root root 4096 610 22:11 文档
    drwxr-xr-x. 2 root root 4096 610 22:11 图片
    drwxr-xr-x. 2 root root 4096 610 22:11 视频
    drwxr-xr-x. 2 root root 4096 610 22:11 模板
    drwxr-xr-x. 2 root root 4096 610 22:11 公共
    drwxr-xr-x. 2 root root 4096 614 21:44 itheima
    -rw-r--r--. 1 root li      0 617 21:57 file
    

    联合使用-ls选项,将以长列表格式按文件大小顺序列出文件和目录:

    [root@hadoop100 ~]# ls -ls
    总用量 44
    4 -rw-------. 1 root root 1685 69 16:55 anaconda-ks.cfg
    0 -rw-r--r--. 1 root li      0 617 21:57 file
    4 -rw-r--r--. 1 root root 1733 69 17:01 initial-setup-ks.cfg
    4 drwxr-xr-x. 2 root root 4096 614 21:44 itheima
    4 drwxr-xr-x. 2 root root 4096 610 22:11 公共
    4 drwxr-xr-x. 2 root root 4096 610 22:11 模板
    4 drwxr-xr-x. 2 root root 4096 610 22:11 视频
    4 drwxr-xr-x. 2 root root 4096 610 22:11 图片
    4 drwxr-xr-x. 2 root root 4096 610 22:11 文档
    4 drwxr-xr-x. 2 root root 4096 610 22:11 下载
    4 drwxr-xr-x. 2 root root 4096 610 22:11 音乐
    4 drwxr-xr-x. 2 root root 4096 610 22:11 桌面
    

    使用-a选项,将列出包括隐藏文件或目录在内的所有文件和目录,包括".“(当前目录)和”…"(父目录):

    [root@hadoop100 ~]# ls -a
    .                .bash_logout   .config    file                  .local       公共  文档
    ..               .bash_profile  .cshrc     .ICEauthority         .tcshrc      模板  下载
    anaconda-ks.cfg  .bashrc        .dbus      initial-setup-ks.cfg  .viminfo     视频  音乐
    .bash_history    .cache         .esd_auth  itheima               .Xauthority  图片  桌面
    

    使用-A选项,将列出包括隐藏文件或目录(不包含",“和”…")在内的所有文件和目录:

    [root@hadoop100 ~]# ls -A
    anaconda-ks.cfg  .bashrc  .dbus          initial-setup-ks.cfg  .viminfo     视频  音乐
    .bash_history    .cache   .esd_auth      itheima               .Xauthority  图片  桌面
    .bash_logout     .config  file           .local                公共         文档
    .bash_profile    .cshrc   .ICEauthority  .tcshrc               模板         下载
    

    使用-i选项,将显示文件或目录的inode编号,有时在系统中操作时可能需要直到inode编号:

    [root@hadoop100 ~]# ls -i
    1846943 anaconda-ks.cfg       1847000 itheima  1847008 视频  1847002 下载
    1847028 file                  1847004 公共     1847007 图片  1847006 音乐
    1846950 initial-setup-ks.cfg  1847003 模板     1847005 文档  1847001 桌面
    

    注意:在使用find命令中,可以使用inode编号移除文件名中含有特殊字符的文件。

    使用-n选项,其输出的内容类似于-l选项,指示显示uid和gid,替代显示所有者和用户组:

    [root@hadoop100 ~]# ls -n
    总用量 44
    -rw-------. 1 0    0 1685 69 16:55 anaconda-ks.cfg
    -rw-r--r--. 1 0 1000    0 617 21:57 file
    -rw-r--r--. 1 0    0 1733 69 17:01 initial-setup-ks.cfg
    drwxr-xr-x. 2 0    0 4096 614 21:44 itheima
    drwxr-xr-x. 2 0    0 4096 610 22:11 公共
    drwxr-xr-x. 2 0    0 4096 610 22:11 模板
    drwxr-xr-x. 2 0    0 4096 610 22:11 视频
    drwxr-xr-x. 2 0    0 4096 610 22:11 图片
    drwxr-xr-x. 2 0    0 4096 610 22:11 文档
    drwxr-xr-x. 2 0    0 4096 610 22:11 下载
    drwxr-xr-x. 2 0    0 4096 610 22:11 音乐
    drwxr-xr-x. 2 0    0 4096 610 22:11 桌面
    

    3.1.2 cat命令:连接显示文件内容

    cat命令也是Linux系统中最常见使用的命令之一。cat命令让我们可以查看文件的内容、连接文件、创建一个或多个文件和重定向输出到终端或文件。
    cat命令的语法如下所示:

    $ cat [OPTION] [FILE]...
    

    使用cat命令查看文件/etc/group的内容:

    [root@hadoop100 ~]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    ....
    

    显示多个文件内容:

    [root@hadoop100 etc]# cat /etc/hosts /etc/hostname
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.203.129 hadoop100
    hadoop100
    
    

    使用-n选项,可以显示文件内容的行号:

    [root@hadoop100 etc]# cat -n /etc/hosts
         1  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
         2  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
         3  192.168.203.129 hadoop100
    
    

    -b选项和-n选项类似,但只标识非空白行的行号。

    使用-e选项,将每一行的结尾显示"$"字符。这个选项在需要将多行内容转换成一行时是很有用的。

    [root@hadoop100 etc]# cat -e /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4$
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6$
    192.168.203.129 hadoop100$
    
    

    cat命令可以重定向标准输出到一个新文件。

    3.1.3 less、more命令:分屏显示文件

    more命令在使用小的xterm窗口时,或是想不适用文本编辑器而只是简单地阅读一个文件时是很有用的。more命令是一个用于一次翻阅一整屏文件的过滤器。
    使用more命令查看一个文件:

    [root@hadoop100 etc]# more /etc/inittab
    # inittab is no longer used when using systemd.
    #
    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
    #
    # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
    #
    # multi-user.target: analogous to runlevel 3
    # graphical.target: analogous to runlevel 5
    #
    # To view current default target, run:
    # systemctl get-default
    #
    # To set a default target, run:
    # systemctl set-default TARGET.target
    #
    
    

    more会自动地清空屏幕并显示文件的开始部分,如果按空格键,more将会向下移动一个当前终端窗口的高度,来显示下一页内容。

    使用-num(num是一个整数)选项,可以指定一次显示的行数:

    [root@hadoop100 etc]# more -5 /etc/services
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    --More--(0%)
    

    也可以通过管道流将cat命令显示的内容输出到more命令。比如有时想输出一个文件的全部内容,但是要慢慢地查看它:

    cat README | more
    
    [root@hadoop100 etc]# cat /etc/services | more
    # /etc/services:
    # $Id: services,v 1.55 2013/04/14 ovasik Exp $
    #
    # Network services, Internet style
    # IANA services version: last updated 2013-04-10
    #
    # Note that it is presently the policy of IANA to assign a single well-known
    # port number for both TCP and UDP; hence, most entries here have two entries
    # even if the protocol doesn't support UDP operations.
    # Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
    # are included, only the more common ones.
    #
    # The latest IANA port assignments can be gotten from
    #       [http://www.iana.org/assignments/port-numbers](http://www.iana.org/assignments/port-numbers)
    # The Well Known Ports are those from 0 through 1023.
    # The Registered Ports are those from 1024 through 49151
    # The Dynamic and/or Private Ports are those from 49152 through 65535
    #
    # Each line describes one service, and is of the form:
    #
    # service-name  port/protocol  [aliases ...]   [# comment]
    
    tcpmux          1/tcp                           # TCP port service multiplexer
    tcpmux          1/udp                           # TCP port service multiplexer
    rje             5/tcp                           # Remote Job Entry
    rje             5/udp                           # Remote Job Entry
    echo            7/tcp
    echo            7/udp
    discard         9/tcp           sink null
    discard         9/udp           sink null
    systat          11/tcp          users
    systat          11/udp          users
    daytime         13/tcp
    daytime         13/udp
    qotd            17/tcp          quote
    qotd            17/udp          quote
    msp             18/tcp                          # message send protocol (historic)
    --More--
    

    less命令与more命令类似,但less命令先前和先后翻页都支持,而且less命令不需要在查看前加载整个文件,即less命令查看文件更快速。使用 less命令打开一个文件后,可以使用搜索功能,搜索指定的关键字。

    3.1.4 head命令:显示文件头部

    head命令用于打印指定输入的开头部分内容。默认情况下,打印每个指定输入的前10行内容。
    使用-n选项可以指定打印文件的前N行,如下所示:

    [root@hadoop100 etc]# head -n 5 /etc/inittab
    # inittab is no longer used when using systemd.
    #
    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
    
    

    也可以直接输入数字:

    [root@hadoop100 etc]# head -5 /etc/inittab
    # inittab is no longer used when using systemd.
    #
    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
    
    

    使用-c选项打印文件的前N个字节的数据,类似如下:

    # inittab [root@hadoop100 etc]# head -c 10 /etc/services
    # /etc/ser
    

    3.1.5 tail命令:显示文件尾部

    tail命令与head命令相反,它打印指定输入的结尾部分的内容。默认情况下它打印指定输入的最后10行内容。

    使用-n选项可以指定打印文件的最后N行,如下所示:

    [root@hadoop100 etc]# tail -n  10 /etc/services
    3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
    isnetserv       48128/tcp               # Image Systems Network Services
    isnetserv       48128/udp               # Image Systems Network Services
    blp5            48129/tcp               # Bloomberg locator
    blp5            48129/udp               # Bloomberg locator
    com-bardac-dw   48556/tcp               # com-bardac-dw
    com-bardac-dw   48556/udp               # com-bardac-dw
    iqobject        48619/tcp               # iqobject
    iqobject        48619/udp               # iqobject
    matahari        49000/tcp               # Matahari Broker
    

    使用-f选项可以即使打印文件中新写入的行:

    tail -f /var/log/messages
    

    注意:使用这个选项对于监控日志文件是非常有用的。
    –pid选项和-f选项同时使用,可以在特定的进程结束时终结tail命令,命令类似如下:

    $ tail -f /tmp/debug.log --pid=24184
    

    3.1.6 file命令:查看文件类型

    file命令用于接收一个文件作为参数并执行某些测试,以确定正确的文件类型。下面时使用file命令确定一个文件类型的基本方法:

    [root@hadoop100 ~]# file /etc/inittab
    /etc/inittab: ASCII text
    [root@hadoop100 ~]# file /etc/inid.d/network
    /etc/inid.d/network: cannot open (No such file or directory)
    [root@hadoop100 ~]# file /usr/bin/file
    /usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=58f6c*****70887d7136a7181************, stripped
    [root@hadoop100 ~]# file /etc
    /etc: directory
    

    使用-i选项,可以MIME类型的格式显示文件类型的信息:

    [root@hadoop100 ~]# file -i /etc/inittab
    /etc/inittab: text/plain; charset=us-ascii
    
    [root@hadoop100 ~]# file -i /etc/init.d/network
    /etc/init.d/network: text/x-shellscript; charset=us-ascii
    
    [root@hadoop100 ~]# file -i /usr/bin/file
    /usr/bin/file: application/x-executable; charset=binary
    

    使用-N选项,输出的队列可以以在文件名之后无空白填充的形式显示,其格式对比如下:

    [root@hadoop100 ~]# file -N *
    anaconda-ks.cfg: ASCII text
    file: empty
    initial-setup-ks.cfg: ASCII text
    itheima: directory
    公共: directory
    模板: directory
    视频: directory
    图片: directory
    文档: directory
    下载: directory
    音乐: directory
    桌面: directory
    
    # 区别:
    [root@hadoop100 ~]# file *
    anaconda-ks.cfg:      ASCII text
    file:                 empty
    initial-setup-ks.cfg: ASCII text
    itheima:              directory
    公共:                 directory
    模板:                 directory
    视频:                 directory
    图片:                 directory
    文档:                 directory
    下载:                 directory
    音乐:                 directory
    桌面:                 directory
    

    3.1.7 wc命令:查看文件统计信息

    wc用于查看文件的行数、单词数和字符数等信息。其语法类似如下所示:

    $ wc filename
    X Y Z filename
    

    X:表示行数
    Y:表示单词数
    Z:表示字节数
    filename:表示文件名

    示例:

    [root@hadoop100 ~]# wc anaconda-ks.cfg
    67  159 1685 anaconda-ks.cfg
    

    使用-l选项,可以只统计文件的行数信息,如下所示:

    [root@hadoop100 ~]# wc -l anaconda-ks.cfg
    67 anaconda-ks.cfg
    

    使用-w选项,可以只统计文件的单词数信息,如下所示:

    [root@hadoop100 ~]# wc -w anaconda-ks.cfg
    159 anaconda-ks.cfg
    

    使用-c选项,可以只统计文件的字节数信息,如下所示:

    [root@hadoop100 ~]# wc -c anaconda-ks.cfg
    1685 anaconda-ks.cfg
    

    使用-L选项,可以统计文件中最长的行的长度,如下所示:

    [root@hadoop100 ~]# wc -L anaconda-ks.cfg
    125 anaconda-ks.cfg
    

    3.1.8 find命令:查找文件或目录

    find命令是Linux系统中最重要也是最常用的命令之一。find命令用于根据指定的参数搜索和定位文件和目录的列表。find命令可以在多种情况下使用,可以通过权限、用户、用户组、文件类型、日期、大小和其他可能的条件来查找文件。
    简单的使用find命令查找指定目录下的某个文件的方法如下所示:

    [root@hadoop100 ~]# find /etc/ -name inittab
    /etc/inittab
    

    注意:此处的命令行提示符是"#"号,表示当前用户账号是root。
    在当前目录下,根据文件名查找:

    $ find . -name filename
    

    当前目录下,文件名不区分大小写查找:

    $ find . -name filename
    

    当前目录下,根据目录名查找:

    $ find . -type d -name filename
    -type c
                  文件是 c 类型的。类型可取值如下:
                  b      特殊块文件(缓冲的)
                  c      特殊字符文件(不缓冲)
                  d      目录
                  p      命名管道 (FIFO)
                  f      普通文件
                  l      符号链接
                  s      套接字
                  D      门 (Solaris 特有)
    

    当前目录下,根据文件权限查找:

    $ find . -type f -perm mode
           -perm mode
                  文件的权限位恰好是 mode (八进制或符号)。 Symbolic modes use mode  0  as  a  point  of
                  departure.
           -perm -mode
                  所有的权限位 mode 都被设置了的文件。
           -perm +mode
                  任何权限位 mode 被设置了的文件。
    

    3.2 操作文件和目录

    3.2.1 touch命令:创建文件

    在Linux中,每个文件都关联一个时间戳,并且每个文件都会存储最近一次访问的时间、最近一次修改的时间和最近一次变更的时间等信息。所以,无论何时我们创建一个新文件,访问或修改一个已存在的文件,文件的时间戳都会自动更新。
    touch命令就可用于创建、变更和修改文件的时间戳。它是Linux操作系统的标准程序。touch命令有如下选项:

    • -a:只修改访问时间;
    • -c:不创建任何文件;
    • -m:只改变修改时间;
    • -r:使用指定文件的时间替代当前时间;
    • -t:使用[[CC]YY]MMDDhhmm[.ss]替代当前时间。

    使用touch命令创建一个的名称为effyl的新的空文件(0字节):

    $ touch effyl
    

    使用touch命令可以创建多个文件,示例如下:

    touch sheffyl myeffyl lurffyl
    

    示例:

    # 使用-a选项,可以改变或更新文件的最新访问时间
    touch -a effyl
    # 使用-c选项,可以避免创建一个新文件,并用当前时间更新文件的时间戳
    touch -c effyl
    # 使用-m选项,可以只改变文件的修改时间,而访问时间不变
    touch -m effyl
    # 使用-c -t选项,来明确设置文件的时间
    touch -c -t YYMMDDHHMM filename
    touch -c -t 1212131030 effyl
    # 使用-r选项,使用文件myeffyl的时间戳更新文件effyl的时间戳
    touch -r myeffyl effyl
    

    3.2.2 mkdir命令:创建目录

    mkdir命令用于创建一个新目录。最基本的mkdir命令的使用方法如下所示:

    $ mkdir 
    

    可以使用相对或绝对路径来创建,示例如下:

    $ mkdir /home/backup/old
    

    使用-p选项,mkdir命令会自动创建所有还不存在的父目录,示例如下:

    $ mkdir -p backup/old
    # 或者
    $ mkdir -p /home/li/backup/old
    

    要创建的目录已经存在的情况下,会引发错误信息。例如要创建的文件夹backup已经存在,系统会显示错误信息:

    [root@hadoop100 ~]# mkdir backup
    mkdir: 无法创建目录"backup": 文件已存在
    

    使用-p后,不会报错:

    [root@hadoop100 ~]# mkdir -p backup
    

    使用-m选项,可以设置将要创建的目录的权限。例如:想要创建一个任何人都有读写访问权限的目录:

    $ mkdir -p -m 777 backup/old
    # 或
    $ mkdir -p -m a=rwx backup/old
    

    3.2.3 cp命令:复制文件或目录

    在Linux下,我们可以使用cp命令复制文件和目录。cp命令用于将文件从一个地方复制到另一个地方。原来的文件保持不变,新文件可能保持原名或用一个不同的名字。
    使用cp命令复制文件和目录的语法有以下几种:

    $ cp [OPTION] SOURCE DEST # 复制源文件到目标文件
    $ cp [OPTION] SOURCE... DIRECTORY # 复制一个或多个源文件到一个目录
    $ cp [OPTION] -t DIRECTORY SOURCE... # 同上
    

    创建一个test目录,进入目录后创建file.txt文件,再复制file.txt文件的副本取名为newfile.txt。代码如下:

    [root@hadoop100 ~]# mkdir test
    [root@hadoop100 ~]# cd test
    [root@hadoop100 test]# touch file.txt
    [root@hadoop100 test]# cp file.txt newfile.txt
    [root@hadoop100 test]# ls
    file.txt  newfile.txt
    

    复制当前目录下的文件file.txt到/root/tmp目录下:

    [root@hadoop100 test]# cp file.txt /root/tmp/
    

    复制当前目录下的所有文件到/root/tmp目录:

    [root@hadoop100 test]# cp * /root/tmp
    

    使用-p选项,可以使复制一个文件到新文件时,保留源文件的所有者、用户组、权限、修改和访问时间,以及一些扩展属性等信息:

    [root@hadoop100 test]# cp -p file.txt /root/tmp/
    

    使用-R或-r选项,可以递归地复制一个目录,即将一个目录及其下的所有文件和子目录都复制到另一个目录。

    $ cp -R * /home/li/backup
    

    还有比较常用的归档模式复制;

    $ cp -a * /home/li/backup
    
    • -a:存档模式。相当于-dpR。
    • -d:保留软链接。
    • -p:保留权限、所有权和时间戳等信息。
    • -R:递归地复制目录。

    3.2.4 ln命令:链接文件或目录

    ln命令用于创建软链接或硬链接。ls -l命令列出的每一条目的第一个字符指示文件类型,当一个字符"l"(小写的L)时,即表示它是一个软链接。

    • 软链接又称符号链接,是一类特殊的文件,这个文件包含了另一个文件或目录的路径名(绝对路径或相对路径)。在对符号文件进程读或写操作时,系统会自动把该操作转换为对源文件或目录的操作,但输出链接文件时,系统仅仅删除链接文件,而不删除源文件或目录本身。软链接可以链接不同文件系统的文件。
    • 硬链接可以理解为一文件的一个或多个文件名。它引用的是文件在文件系统中的物理索引(也称为inode)。当你移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件权限,也不会显示原始文件的位置,这样有助于文件的安全。如果删除的文件有相应的硬链接,那么这个文件依然会被保留,直到所有对它的引用都被删除,即硬链接数为0。硬链接只能链接同一文件系统中的文件。

    使用-s选项,可以创建一个软链接:

    [root@hadoop100 test]# ln -s file.txt ../tmp/
    

    创建软链接时,如果已经存在一个与此软链接同名的文件,那么可以使用–backup选项,让ln命令在创建这个新连结之前,先备份已经存在的同名文件:

    [root@hadoop100 test]# ln file.txt sfile.txt
    ln: 无法创建硬链接"sfile.txt": 文件已存在 # 已经存在时,会提示错误信息
    [root@hadoop100 test]# ln --backup file.txt sfile.txt
    

    当前目录下,创建文件file.txt的硬链接,命名为hfile.txt。两个文件的inode编码应该相同:

    [root@hadoop100 test]# ln file.txt hfile.txt
    [root@hadoop100 test]# ls -i
    1966391 file.txt  1966391 hfile.txt  1966402 newfile.txt
    

    注意:Linux不允许给目录创建硬链接。

    3.2.5 mv命令:重命名文件或目录

    mv命令用于将文件和目录从一个位置移到另一个位置。除了移动文件,mv命令还可用于修改文件或目录的名字。
    mv命令的基本语法如下所示:

    $ mv SOURCE... DIRECTORY
    

    将目录中的file.txt移动到tmp目录中:

    [root@hadoop100 test]# mv file.txt ../tmp/
    

    也可以同时移动多个文件:

    [root@hadoop100 tmp]# mv file.txt namefile.txt ../test/
    

    使用mv将当前目录下的文件改名:

    [root@hadoop100 tmp]# mv newfile.txt oldfile.txt
    [root@hadoop100 tmp]# ll
    总用量 0
    -rw-r--r--. 2 root root 0 819 16:54 oldfile.txt
    

    默认情况下,如果目标文件或目录已存在,mv命令并不会提示任何信息,而是直接将其重写覆盖。为了避免这个问题,可以使用-i选项,让mv命令在重写覆盖目标文件或目录之前给出提示信息。这样可以通过输入字符"y"或"n"来接收或拒绝此操作。
    使用mv命令也可以同时移动多个文件或目录。比如想移动当前目录下的所有文件可以使用"*"。

    3.2.6 rm命令:删除文件或目录

    rm命令用于删除指定的文件和目录。其语法如下所示:

    $ rm [OPTION] ... FILE ...
    

    使用rm命令删除文件file1.txt、file2.txt、file3.txt,假设这三个在当前目录下:

    [root@hadoop100 tmp]# rm file1.txt file2.txt file3.txt
    rm:是否删除普通空文件 "file1.txt"?y
    rm:是否删除普通空文件 "file2.txt"?y
    rm:是否删除普通空文件 "file3.txt"?y
    

    使用-i选项,可以让rm命令在删除每一个文件和目录前提示用户确认:

    [root@hadoop100 tmp]# rm -i file1.txt file2.txt file3.txt
    rm:是否删除普通空文件 "file1.txt"?y
    rm:是否删除普通空文件 "file2.txt"?y
    rm:是否删除普通空文件 "file3.txt"?y
    

    使用-f选项,删除前不提示用户确认,并忽略不存在的文件。
    使用-r(或-R)选项,递归地删除目录及其下的内容。

    3.3 管理文件或目录权限

    3.3.1 ls -l:显示文件和目录权限

    使用ls -l命令可以按长列表方式输出文件的详细信息,其中第一个字符表示文件的类型(目录、文件或链接),从第2~10这9个字符即指示文件的3种用户类型的权限。

    [root@hadoop100 test]# ls -l
    总用量 0
    -rw-r--r--. 4 root root 0 819 16:54 file.txt
    -rw-r--r--. 4 root root 0 819 16:54 hfile.txt
    -rw-r--r--. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rw-r--r--. 4 root root 0 819 16:54 sfile.txt
    -rw-r--r--. 4 root root 0 819 16:54 sfile.txt~
    

    每个文件或目录都有3个用户权限组:

    • 所有者权限:第一组的3个字符rw-,表示只应用于文件或目录的所有者,它们将不影响其他用户行为。
    • 用户组权限:第二组的3个字符r–,表示只应用于已经指定给文件或目录的组,它们将同样不影响其他用户的行为。
    • 其他用户权限:第三组的三个字符r–,表示只应用于系统中的所有其他用户。

    每个文件或目录华友三个基本的权限类型:

    • r:读权限。指用户的读文件内容或列出目录内容的权限。
    • w:写权限。指用户的写或修改文件或目录的权限。
    • x:执行权限。指用户执行文件或进入目录的权限。

    3.3.2 chmod命令:修改权限

    chmod命令用于修改文件或目录的权限。chmod命令根据相应的模式修改每个给定文件的权限。这里的模式有两种:一种是符号表达式模式,另一种是八进制位模式。
    使用符号表达式模式的格式如下所示:

    $ chmod [OPTION] ...[ugoa] [ [+-=] , [rwxug] ] [,...] FILE...
    

    字母"ugoa"的组合控制哪些用户对文件的访问权限将被改变。

    • u:指文件或目录的所有者。
    • g:指文件或目录的用户组的成员。
    • o:指不在文件或目录的用户组中的其他用户。
    • a:指所有用户,即(ugo)。

    注意:如果使用chmod命令的符号表达式模式时,不给出"ugoa"的组合。则得到的结果和使用"a"相同。
    操作符"±="表示权限的授予或撤销。

    • +:选定的权限将被添加。
    • -:选定的权限将被移除。
    • =:文件只拥有选定的权限。

    示例:
    赋予所有人对文件读、写和执行的权限:

    chmod a+rwx file.txt
    

    chmod命令的数字模式使用数字来表示读(4)、写(2)和执行(1)的权限,而每个用户权限组的值就是表示读、写和执行权限的这3个数字(4,2,1)组合的相加得到的八进制数(0~7)。各数字所表示的权限如下表所示:

    数值说明
    4r读权限
    2w写权限
    1x执行权限
    4+2+1=7rwx读写执行权限
    4+2+0=6rw读写权限
    2+1=3wx写执行权限
    4+1=5rx读执行权限

    赋予所有人对文件的读、写和执行权限:

    [root@hadoop100 test]# chmod 777 namefile.txt
    [root@hadoop100 test]# ll
    总用量 0
    -rwxrwxrwx. 4 root root 0 819 16:54 file.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 hfile.txt
    -rwxrwxrwx. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 sfile.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 sfile.txt~
    

    使用-R选项,chmod命令可以递归地修改目录的权限。

    3.3.3 chown、chgrp命令:修改文件所有者和用户组

    chown命令用于修改文件或目录的所有者和用户组信息。其语法如下所示:

    $ chown [OPTION]... [OWER] [:[GROUP]] FILE
    

    例如,将文件file.txt的所有者改为li:

    [root@hadoop100 test]# chown li file.txt
    [root@hadoop100 test]# ll
    总用量 0
    -rwxrwxrwx. 4 li   root 0 819 16:54 file.txt
    -rwxrwxrwx. 4 li   root 0 819 16:54 hfile.txt
    -rwxrwxrwx. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rwxrwxrwx. 4 li   root 0 819 16:54 sfile.txt
    -rwxrwxrwx. 4 li   root 0 819 16:54 sfile.txt~
    

    将文件file.txt的用户组也修改为li:

    [root@hadoop100 test]# chown :li file.txt
    [root@hadoop100 test]# ll
    总用量 0
    -rwxrwxrwx. 4 li   li   0 819 16:54 file.txt
    -rwxrwxrwx. 4 li   li   0 819 16:54 hfile.txt
    -rwxrwxrwx. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rwxrwxrwx. 4 li   li   0 819 16:54 sfile.txt
    -rwxrwxrwx. 4 li   li   0 819 16:54 sfile.txt~
    

    同时修改所有者和用户组:

    [root@hadoop100 test]# chown root:root file.txt
    [root@hadoop100 test]# ll
    总用量 0
    -rwxrwxrwx. 4 root root 0 819 16:54 file.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 hfile.txt
    -rwxrwxrwx. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 sfile.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 sfile.txt~
    

    修改文件所有者和所有组后,硬链接和软链接文件的所有者和所有组均被修改。

    修改软链接文件的所有者和用户组信息:

    [root@hadoop100 test]# chown li:li sfile.txt
    [root@hadoop100 test]# ll
    总用量 0
    -rwxrwxrwx. 4 li   li   0 819 16:54 file.txt
    -rwxrwxrwx. 4 li   li   0 819 16:54 hfile.txt
    -rwxrwxrwx. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rwxrwxrwx. 4 li   li   0 819 16:54 sfile.txt
    -rwxrwxrwx. 4 li   li   0 819 16:54 sfile.txt~
    

    注意:默认情况下,当使用chown命令修改软链接文件时,实际修改的是软链接所指向的文件。修改

    修改硬链接文件的所有者和所有组信息:

    [root@hadoop100 test]# chown root:root hfile.txt
    [root@hadoop100 test]# ll
    总用量 0
    -rwxrwxrwx. 4 root root 0 819 16:54 file.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 hfile.txt
    -rwxrwxrwx. 1 root root 0 819 20:56 namefile.txt
    -rw-r--r--. 2 root root 0 819 16:54 newfile.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 sfile.txt
    -rwxrwxrwx. 4 root root 0 819 16:54 sfile.txt~
    

    chgrp命令和chown命令类似,但是chgrp命令只用于修改文件或目录的用户组(不能修改所有者)。其语法如下:

    $ chgrp [OPTION]... GROUP FILE...
    

    3.3.4 设置setuid和setgif权限位:设置用户和组权限位

    setuid(设置用户标识)是允许用户以文件所有者的权限执行一个程序的权限位。
    setgig(设置组标识)是允许用户以用户组成员的权限执行一个程序的权限位。
    可以使用chown命令设置setuid和setgid权限位。

    3.4 文本处理

    3.4.1 sort命令:文本排序

    sort命令用于将文本文件的行排序。默认情况下,sort命令是按照字符串的字母顺序排序。现有一个包含如下内容的文件:

    [root@hadoop100 test]# cat file.txt
    abc
    def
    ghi
    jkl
    mno
    def
    

    不使用任何选项,sort命令可以简单地将文件内容按字母顺序进行排序:

    [root@hadoop100 test]# sort file.txt
    abc
    def
    def
    ghi
    jkl
    mno
    

    使用-u选项,sort命令可以移除所有重复的行:

    [root@hadoop100 test]# sort -u file.txt
    abc
    def
    ghi
    jkl
    mno
    

    使用-n选项,可以使用sort命令将数字按数值的大小排序:

    [root@hadoop100 test]# cat numfile.txt # 原始文件
    20
    10
    35
    100
    69
    83
    [root@hadoop100 test]# sort numfile.txt # 使用sort排序并不能按照大小排序
    10
    100
    20
    35
    69
    83
    [root@hadoop100 test]# sort -n numfile.txt # 使用-n选项排序
    10
    20
    35
    69
    83
    100
    

    使用-r选项,可以是sort命令以倒序方式排序:

    [root@hadoop100 test]# sort -nr numfile.txt
    100
    83
    69
    35
    20
    10
    

    sort命令可以同时将多个文件的内容排序:

    $ sort file1 file2
    

    如果一个文件有多个列,(每列以逗号","分隔)如下所示:

    [root@hadoop100 test]# cat lettfile.txt
    abc,20
    def,10
    ghi,35
    jkl,100
    mno,69
    def,83
    

    默认情况下,sort命令按文件第一列字符串字母顺序将文件内容排序:

    [root@hadoop100 test]# sort lettfile.txt
    abc,20
    def,10
    def,83
    ghi,35
    jkl,100
    mno,69
    

    指定sort命令按照第二列的字符串顺序将文件内容排序:

    [root@hadoop100 test]# sort -t ',' -k2,2 lettfile.txt
    def,10
    jkl,100
    abc,20
    ghi,35
    mno,69
    def,83
    
    

    使用-t选项用于指定列的分隔符,上例中的分隔符是逗号",";-k选项用于指定进行排序的列 -k POS1[,POS2]
    ,这里指定了第二列。
    指定sort命令按照第二列的数值顺序将文件内容排序:

    [root@hadoop100 test]# sort -t ',' -k2n,2 lettfile.txt
    def,10
    abc,20
    ghi,35
    mno,69
    def,83
    jkl,100
    

    指定sort命令按照第二列的数值倒序将文件内容排序:

    [root@hadoop100 test]# sort -t ',' -k2nr,2 lettfile.txt
    jkl,100
    def,83
    mno,69
    ghi,35
    abc,20
    def,1
    

    3.4.2 uniq命令:文本去重

    uniq命令用于移除或发现文件中重复的条目:
    现有一个文件,其内容形式如下:

    [root@hadoop100 test]# cat letter.txt
    aaa
    aaa
    bbb
    bbb
    ccc
    ccc
    ccc
    

    使用uniq命令,不带任何选项时,它将移除文件中重复的行并显示单一行:

    [root@hadoop100 test]# uniq letter.txt
    aaa
    bbb
    ccc
    

    使用-c选项,可以统计重复行出现的次数:

    [root@hadoop100 test]# uniq -c letter.txt
    2 aaa
    2 bbb
    3 ccc
    

    使用-d选项,只显示文件中有重复的行并且只显示一次:

    [root@hadoop100 test]# uniq -d letter.txt
    aaa
    bbb
    ccc
    

    使用-u选项,只显示文件中不重复的行

    使用-w选项,可以限制uniq命令只比较每行的前N个字符。

    使用-s选项,可以避免uniq命令比较每行的前N个字符,

    使用-f选项,可以避免uniq命令比较前N列,即跳过前N列,只比较后面的字符。

    3.4.3 tr命令:替换或删除字符

    tr命令用于转换字符、删除字符和压缩重复的字符。它从标准输入读取数据并将结果输出到标准输出。语法如下所示:

    $ tr [OPTION]... SET1 [SET2]
    

    3.4.4 grep命令:查找字符串

    grep命令用于搜索文本或指定的文件中与指定的字符串或模式相匹配的行。默认情况下,grep命令只显示匹配的行。语法如下所示:

    $ grep [OPTION]... PATTERN [FILE] ...
    $ grep [OPTION]... [-e PATTERN | -f FILE] [FILE]...
    

    使用grep命令查找文件/etc/passwd中账号root的信息:

    [root@hadoop100 ~]# grep root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    

    使用-i选项,可以强制grep命令忽略搜索关键字的大小写:

    [root@hadoop100 ~]# grep -i root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    

    使用-r选项,可以递归搜索指定目录下的所有文件:

    [root@hadoop100 ~]# grep -r root /etc/
    # 或者
    [root@hadoop100 ~]# grep -R root /etc/
    

    将-r选项与-l选项结合使用,grep命令可以只打印输出包含匹配指定模式的行的文件的名字:

    [root@hadoop100 ~]# grep -rl root /etc/
    /etc/rsyncd.conf
    /etc/dnsmasq.conf
    /etc/rpm/macros.jpackage
    /etc/rpm/macros.fjava
    /etc/rpm/macros.perl
    /etc/lsm/lsmd.conf
    

    默认情况下,当搜索字符串root时,grep命令也会匹配root122、rootegn等字符串。使用-w选项,可以强制grep命令只匹配包含指定单词的行。比如查找文件/etc/passwd中只包含指定单词li的行:

    [root@hadoop100 ~]# grep -w li /etc/passwd
    li:x:1000:1000:li:/home/li:/bin/bash
    

    使用-c选项,grep命令可以报告文件或文本中模式被匹配的次数:

    [root@hadoop100 ~]# grep -c li /etc/passwd
    10
    

    使用-n选项,grep命令可以显示每一个匹配的行的行号:

    [root@hadoop100 ~]# grep -n li /etc/passwd
    17:libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    18:colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
    19:rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    24:setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
    28:chrony:x:992:987::/var/lib/chrony:/sbin/nologin
    34:geoclue:x:989:983:User for geoclue:/var/lib/geoclue:/sbin/nologin
    36:gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    37:rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    38:nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    44:li:x:1000:1000:li:/home/li:/bin/bash
    

    使用-v选项,grep命令可以输出除匹配指定模式的行以外的其他所有行:

    [root@hadoop100 ~]# grep -v li /etc/passwd
    

    grep命令通常与Shell管道一起结合使用:

    [root@hadoop100 ~]# grep -n li /etc/passwd
    

    3.4.5 diff命令:比较两个文件

    diff命令用于比较两个文件,并找出它们之间的不同。语法如下所示:

    $ diff [OPTION]... from-file  to-file
    

    3.5 其他常用命令

    3.5.1 hostname命令:查看主机名

    hostname命令用于查看系统的主机名,或是修改系统的主机名。
    直接简单地使用hostname命令,不指定任何参数,将显示你的系统的当前主机名:

    [root@hadoop100 ~]# hostname
    hadoop100
    

    使用houstname可以修改主机名,但是只是临时地修改系统的主机名。当系统重启后,这个新修改的主机名将不会被使用。
    使用-F选项,hostname命令可以从指定的文件中读取主机名。

    3.5.2 w、who命令:列出系统登录的用户

    w命令用于显示登录的用户及他们当前运行的进程。
    w命令输入的内容格式如下:

    $ w
    

    示例:

    [root@hadoop100 ~]# w
     22:27:27 up 26 min,  1 user,  load average: 0.00, 0.01, 0.03
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.203.1    22:01    7.00s  0.08s  0.01s w
    

    w命令输出的第一行内容与uptime命令默认输出的内容相同。第三行分别显示的是:登录账号的用户名、tty名称、从哪台主机登录、登录时间、空闲时间、tty上的所有进程所使用的CPU时间、当前进程所使用的CPU时间以及当前运行的进程。
    who命令有与w命令类似的用途,但它的功能比w命令更强大一些。who命令的语法如下:

    $ who [OPTION]...[FILE | ARG1 ARG2]
    

    直接使用who命令,不知道任何参数,将显示当前登录的所有用户的信息:

    [root@hadoop100 ~]# who
    root     pts/0        2022-08-20 22:01 (192.168.203.1)
    

    使用-b选项,who命令可以显示系统的启动时间:

    [root@hadoop100 ~]# who -b
    系统引导 2022-08-20 22:01
    

    使用-l选项,who命令会显示出系统登录进程:

    [root@hadoop100 ~]# who -l
    

    使用-m选项,who命令将只显示与当前标准输入关联的用户信息:

    [root@hadoop100 ~]# who -m
    root     pts/0        2022-08-20 22:01 (192.168.203.1)
    

    使用-r选项,who命令将显示系统的运行级别:

    [root@hadoop100 ~]# who -r
    运行级别 5 2022-08-20 22:01
    

    使用-q选项,who命令将只显示所有登录用户的用户名和登录的用户数:

    [root@hadoop100 ~]# who -q
    root
    # 用户数=1
    

    3.5.3 uptime命令:查看系统运行时间

    uptime命令用于打印系统的运行时间等信息。
    uptime命令的使用很简单,只需要简单地在命令提示符下输入uptime命令,将显示如下信息:

    [root@hadoop100 ~]# uptime
     22:38:42 up 37 min,  1 user,  load average: 0.00, 0.01, 0.03
    # 当地时间  系统已经连续运行多久 几个用户 系统的过去1分钟、5分钟、15分钟的平均负载
    

    3.5.4 uname命令:查看系统信息

    uname命令用于打印内核名称和版本、主机名等系统信息。

    $ uname [OPTION]...
    
    [root@hadoop100 ~]# uname
    Linux
    

    3.5.5 date命令:显示和设置系统日期和时间

    date命令用于多种格式显示日期和时间,或设置系统的日期和时间。
    date命令的语法如下:

    $ date [OPTION]...[+FORMAT]
    $ date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
    
    [root@hadoop100 ~]# date
    2022年 08月 20日 星期六 22:57:38 CST
    
    

    3.5.6 id命令:显示用户属性

    id命令用于打印输出用户的uid、gid、用户名和组名等用户身份信息。id命令的语法如下:

    $ id [OPTION]...[USERNAME]
    

    直接输入id命令,将打印输出当前用户的uid、用户名、gid、组名,以及用户属于的所有群组信息:

    [root@hadoop100 ~]# id
    uid=0(root) gid=0(root)=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
  • 相关阅读:
    网络安全框架和云安全参考架构介绍
    CompletionService 使用小结
    Spring Cloud Gateway + Knife4j 4.3 实现微服务网关聚合接口文档
    【浅学Java】哈希桶的模拟实现以及HashMap原码分析
    11:STM32---spl通信
    初阶数据结构:链表相关题目练习(补充)
    数据分享|函数型数据分析部分省市新冠疫情数据
    工信部教考中心:什么是《研发效能(DevOps)工程师》认证,拿到证书之后有什么作用!(下篇)丨IDCF
    java中静态属性和静态方法的使用
    18. “状态变化”模式 之State模式(状态模式)
  • 原文地址:https://blog.csdn.net/shield911/article/details/126962940