第二周 Linux基础命令入门(二)

1、描述Linux上的文件管理类命令并详解。 2、描述Bash的工作特性。 3、描述文件的元数据信息详解。 4、描述命令别名的使用。 5、详解文件通配符。

第二周 Linux基础命令入门(二)

摘要

1、描述Linux上的文件管理类命令并详解。
2、描述Bash的工作特性。
3、描述文件的元数据信息详解。
4、描述命令别名的使用。
5、详解文件通配符。

一、Linux上的文件管理类命令

[root@localhost etc]# ls -l
-rw-r--r--.  1 root root        0 1019 02:00 3axaxx
-rw-r--r--.  1 root root        0 1019 02:01 abcdefg
drwxr-xr-x.  3 root root       97 1015 17:51 abrt
lrwxrwxrwx.  1 root root       56 1015 17:51 favicon.png -> /usr/share/icons/hicolor
/16x16/apps/fedora-logo-icon.png
    Linux系统上的文件类型:
     - : 常规文件,即f 
     d :directory   即目录文件   
     b :block device   映射块设备文件  ,支持以"block"为单位,支持随机访问
     c: character device   字符设备文件,支持以“character”为单位,支持线性访问(有次序得访问)
           ls - l /dev      crw-rw----. 1 root video    10, 175 11月 10 15:48 agpgart
                major number   主设备号,用表示设备类型,进而确定要加载的驱动程序
                minor number 次设备号,用于表示同一类型中的不同设备
             二者用,来区分
      l: symbolic link  符号链接文件(类似windows的快捷方式,指向另一文件的路径。或称为软连接文件)
      p:pipe  命名管道
      s:socket 套接字文件,实现多个进程之间进行通信,多用于提供服务

 

二、Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容

Bash的工作特性之命令执行状态返回值:

命令的执行状态结果 
    1) bash通过状态返回值来输出此结果
         成功:0            失败:1-255
       命令执行完成之后,其状态返回值保存于bash特殊变量 $? 中 。$?只能获取当前命令的结果
        [root@localhost etc]# echo $?
            0
      2)引用命令的执行结果:
           $(COMMAND) 或者 `COMMAND`
             [root@localhost etc]# mkdir $(date +%T) 
             [root@localhost etc]# ls 
                12:53:45                 hosts.allow               rc0.d

命令行展开所涉及的内容:

1)cp:copy  文件复制功能
源文件:目标文件         
   单源复制     cp [OPTION]... [-T] SOURCE DEST
        如果dest路径不存在,则复制原内容,粘贴创建该目录dest内
        如果dest存在,1)dest是非目录文件,则会复制目标文件   2)dest是目录文件,则先在dest目录下创建一个与源文件同名的文件,并复制过来
    多源复制     cp [OPTION]... SOURCE... DIRECTORY
                    cp [OPTION]... -t DIRECTORY SOURCE...
                    如果dest不存在,返回错误
                    如果dest存在,分别复制每个文件到目标目录中,并保持原名
     常用选项:
                 -i  交互式复制  覆盖之前提醒客户确认
                 -f  强制性覆盖目标文件           
                 -r  递归复制目录  
                 -d  复制符号链接文件本身,而非其指向的源文件本身
                 --preserv=
                              mode   权限
                              ownership  属主和属组
                              timestamps  时间戳    
                              context  安全标签
                              links  符号链接
                              xattr:扩展属性
                              all  上述所有属性
                  -a   -dr --preserve=all    archive   用于实现归档,备份使用

2)mv: move 移动
     常用选项
                -i 交互式
                -f force           
3)rm:remove  删除文件(建议move到一个单独的文件夹,作用类似回收站)
                -i
                -r   删除命令,每个文件都会确认一遍
                -rf   强制删除           
                        危险操作,勿操作!!! rm-rf /或者rm  -rf /*
4)目录管理类的命令:
     mkdir , rmdir 
     mkdir          make  DIRECTORY 创建目录
            mkdir [OPTION]... DIRECTORY...
              注意:路径基名方为命令的作用对象,基名之前的路径必须存在。             
            -p   自动按需创建父目录
            -v   verbose   显示详细过程
            -m  MODE    直接给定权限    
         rmdir   rmdir [OPTION]... DIRECTORY...
                 删除文件下的空目录,如果删除为非空目录,则失败,需要先删除里面内容再删除外部
             -p   删除某目录后,如果其父目录为空,则一并删除之
             -v   显示过程
                             pwd:printing woking  directory     显示工作目录
5)cd: change directory      切换目录
         cd   [/PATH/TO/SOMENDIR]
            只输入 cd    切换回家目录
             bash中,~也表示家目录
                 cd ~   切换回自己的家目录
                 输入cd ~USERNAME ;切换至指定用户的家目录,只有管理员可以切换至其他用户家目录
                 cd -  在上一次所在目录与当前目录来回切换
                    $PWD:当前工作目录
                    $OLDPWD:上一次的工作目录
6)ls:list   列出指定目录下的内容                               
          ls [OPTION]... [FILE]...
               -a  显示所有文件,包括隐藏文件
               -A:显示除了。和。。之外的所有文件,包括隐藏文件
                         ls -A /etc
               -l     --long   长格式列表,显示文件的详细属性信息:
                         /]# ls -l /etc
                          -rw-r--r--.  1 root root    16 10月 10 14:35 adjtime
                     -r :文件类型,- ,d,b,c,l,s,p
                           -rw-r--r--.  
                             rw-    文件属主权限 
                             r--    文件属组权限
                             r--      其他用户(非属主、属组)的权限
                             1:数字表示文件被硬链接的次数,
                             root   第一个root   文件的属主
                             root   第二个root    文件的属组
                             16: 数字表示文件大小,单位是字节   
                             16 10月 10 14:35    文件最近一次修改时间
                             adjtime    文件名       
                     -h   对文件大小单位换算,换算后的结果非精确值
                     -ld  查看文件本身的信息,而非其自身内部的文件内容
                             /]# ls -ld /etc
                              drwxr-xr-x. 74 root root 8192 10月 12 02:24 /etc
                     -r或者-lr    对文件排序呈降序排序
                     -R    recursive   递归显示
7) cat:  concatenate file  连接文件   文件正序显示
               文本文件查看工具
               cat  /etc/fstab
               cat后可以跟多个路径文件
                     -n :显示的文件内容进行统一编号
                          cat -n [COMMAND] [COMMAND]
                     -E:显示行结束符$
8) tac    文本 逆序显示                        
                文本文件查看工具
                tac  /etc/fstab
                   tac后可以跟多个路径文件
                -n :显示的文件内容进行统一编号
                   tac -n [COMMAND] [COMMAND] 
                -E:显示行结束符$
9)file:查看文件内容类型
                 file  [FILE].................
10)echo :回显命令 
                echo [SHORT-OPTION]... [STRING]...
           STRING 可以使用引号,单引号和双引号均可用
           单引号:强引用,变量引用不执行替换
                 [root@localhost /]# echo '$SHELL'
                    $SHELL
           双引号:  弱引用,变量引用会被替换
                 [root@localhost /]# echo "$SHELL"
                     /bin/bash 
                 [root@localhost /]# echo "DAA"
                      DAA
            -n   输出后不自动换行操作
                 [root@localhost /]# echo  -n "DAA"
                      DAA[root@localhost /]# 
            -e   让转义符生效      \n显示换行   \t:制表符,类似增加新字段
                  [root@localhost /]# echo  -e "D \nAA"
                       D 
                       AA

三、完成以下练习(1)

命令行展开

    ~ :自动展开为用户的家目录,或指定的用户的家目录
    { }:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
(1)创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: 已创建目录 "/tmp/a_c"
mkdir: 已创建目录 "/tmp/a_d"
mkdir: 已创建目录 "/tmp/b_c"
mkdir: 已创建目录 "/tmp/b_d"
[root@localhost tmp]# ls
a_c  a_d  b_c  b_d  

创建/tmp/mylinux目录下的 :

mylinux/
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var
    ├── lock
    ├── log
    └── run
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,syscon
fig/{network-scripts}},lib/{modules},lib64,proc,sbin,sys,tmp,usr/{local/{bin,sbin}},var/{lo_{ck,g},run}}
mkdir: 已创建目录 "/tmp/mylinux"
mkdir: 已创建目录 "/tmp/mylinux/bin"
mkdir: 已创建目录 "/tmp/mylinux/boot"
mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
mkdir: 已创建目录 "/tmp/mylinux/dev"
mkdir: 已创建目录 "/tmp/mylinux/etc"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/{network-scripts}"
mkdir: 已创建目录 "/tmp/mylinux/lib"
mkdir: 已创建目录 "/tmp/mylinux/lib/{modules}"
mkdir: 已创建目录 "/tmp/mylinux/lib64"
mkdir: 已创建目录 "/tmp/mylinux/proc"
mkdir: 已创建目录 "/tmp/mylinux/sbin"
mkdir: 已创建目录 "/tmp/mylinux/sys"
mkdir: 已创建目录 "/tmp/mylinux/tmp"
mkdir: 已创建目录 "/tmp/mylinux/usr"
mkdir: 已创建目录 "/tmp/mylinux/usr/{local"
mkdir: 已创建目录 "/tmp/mylinux/usr/{local/bin}"
mkdir: 已创建目录 "/tmp/mylinux/usr/{local/sbin}"
mkdir: 已创建目录 "/tmp/mylinux/var"
mkdir: 已创建目录 "/tmp/mylinux/var/lo_ck"
mkdir: 已创建目录 "/tmp/mylinux/var/lo_g"
mkdir: 已创建目录 "/tmp/mylinux/var/run"
[root@localhost tmp]# cd mylinux/
[root@localhost mylinux]# ls
bin  boot  dev  etc  lib  lib64  proc  sbin  sys  tmp  usr  var
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

四、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

1、文件的元数据

文件的元数据包括:名称,路径,大小,inode号,文件类型,硬链接数,权限,时间戳等
                stat [option] file…
file 文件名称
size 文件大小 单位K
blocks 所占块的个数
IO blocks 单块的大小
device 设备标识
inode 节点id,文件的元数据保存在磁盘上的inode区域中,每一个文件都有一个对应的inode号码
links 硬链接数,一个文件的硬链接数为N,表示该文件在磁盘上有N个与其对应的inode号码相同的文件
access 权限,文件的权限包括r(读),w(写),x(执行),suid,sgid,sbit这几种权限,它们可以分别对应到文件的属主、属组和其他人上
uid 属主信息
gid 属组信息
access 最后一次访问时间,文件被访问,即文件在使用cat, more, less, head等命令查看,或者cp等命令将其作为源文件复制给其他路径下,或者使用grep命令进行匹配查找等操作时,atime都会改变
modify 最后一次修改时间,指文件内容被修改时,mtime会改变
change 最后一次更正时间,指文件的元数据被改变,例如chmod, chown, mv等命令改变了文件权限名称路径等信息,ln命令增加了文件的硬链接等操作都会改变ctime
[root@localhost mylinux]# stat -L /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大小:4096       块:8          IO 块:4096   目录
设备:fd00h/64768d Inode:202724745   硬链接:14
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2017-11-29 14:28:11.973040042 +0800
最近更改:2017-11-29 14:28:02.480300238 +0800
最近改动:2017-11-29 14:28:02.480300238 +0800
创建时间:-

 

使用touch修改时间戳

用法:touch [选项]... 文件...
参数:
 -a  只更改访问时间
-c, --no-create 不创建任何文件
-d, --date=字符串  使用指定字符串表示时间而非当前时间
-f          (忽略)
-h, --no-dereference        会影响符号链接本身,而非符号链接所指示的目的地
            (当系统支持更改符号链接的所有者时,此选项才有用)
-m      只更改修改时间
-r, --reference=FILE   use this file's times instead of current time
-t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD        change the specified time:
                       WORD is access, atime, or use: equivalent to -a
                       WORD is modify or mtime: equivalent to -m
--help      显示此帮助信息并退出
--version       显示版本信息并退出
        请注意,-d 和-t 选项可接受不同的时间/日期格式。
[root@localhost mylinux]#  touch -m -t 021211221133.00  /tmp/mylinux/
[root@localhost mylinux]# stat -L /tmp/mylinux/
  文件:"/tmp/mylinux/"
  大小:4096       块:8          IO 块:4096   目录
设备:fd00h/64768d Inode:202724745   硬链接:14
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2017-11-29 16:13:38.263642314 +0800
最近更改:0212-11-22 11:33:00.000000000 +0805
最近改动:2017-11-29 16:14:10.970745835 +0800
创建时间:-

五、命令的别名

 命令别名:
     获取所有可用别名的定义:
           ~]#alias
     定义别名 
            ~]#alias  NAME=‘COMMAND’   
     注意:只对当前shell进程设置有效
            /]# alias cls=clear
     撤销别名
           /]# cls
           ~]#unalias   NAME 
 which    
      显示文件完成路径 which - shows the full path of (shell) commands.
       which [options] [--] programname [...]
           ~]# which which
                alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
                /usr/bin/alias
                /usr/bin/which
         --COMMAND-alias   忽略别名

   whereis  
          显示文件的路径,手册页,
          -b  只看二进制文件路径
          -m 只看使用手册文件路径                      
    who 
           查看登录当前用户的相关信息
           -b  显示系统此次启动时间
           -d  显示此次死亡进程
            -l  显示登录进程
            -u 比who多显示端口号
            -r  运行级别
    w
           查看当前用户和其现阶段工作内容

六、详解文件通配符并完成以下练习

详解文件通配符

globbing :文件名通配
       匹配模式:元字符     
            *:匹配任意长度的任意字符
            ? :匹配任意单个字符
                   pa?   ??pa   p?a   p?a?
            [ ]: 匹配指定范围内的任意单个字符
            有几种特殊格式:
                    [a-z]  [A-Z] [0-9] [a-z0-9] [abcxyz]
                        pa[0-9][a-z]    pa2[0-9][0-9]
                    [[:upper:]]  只匹配大写字母
                    [[:lower:]]   只匹配小写字母
                    [[:alpha:]]   只匹配所有字母
                    [[:digit:]]     只匹配所有数字
                    [[:alnum:]]  只匹配所有字母和数字
                    [[:space:]]   所有空白字符  touch p \空格  a
                    [[:punct:]]    匹配所有符号
                    [^] :匹配指定范围外的单个字符(非!!)
                          [^[:upper:]]  
                          [^0-9]

 

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录

[root@localhost var]# ls -d l*[[:alnum:]] 
lib  local  local01  local02  lock  log

2、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

[root@localhost var]# ls -d [0-9]*[^0-9]
0_abcc  0_bafaf  2_abcc  2_bafaf

3、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

[root@localhost etc]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/3axaxx  /etc/,avc23

4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

[root@localhost etc]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
[root@localhost etc]# ls /tmp
a_c  a_d  b_c  b_d  magedu1.com  mylinux  tfile-2017-11-29-18-08-27

5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest2目录中。

[root@localhost mytest2]# cp -a /etc/p*[^[:digit:]] /tmp/mytest2/
[root@localhost mytest2]# ls
pam.d   passwd-  pki       pm      postfix  prelink.conf.d  profile    protocols
passwd  pinforc  plymouth  popt.d  ppp      printcap        profile.d

6、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest1目录中。

[root@localhost mytest2]# mkdir -pv /tmp/mytest1
mkdir: 已创建目录 "/tmp/mytest1"
[root@localhost ~]# cp -a /etc/*.d /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
bash_completion.d  gdbinit.d     modules-load.d  rc1.d  rsyslog.d    usb_modeswitch.d
binfmt.d           grub.d        my.cnf.d        rc2.d  rwtab.d      xinetd.d

 

7、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中

[root@localhost ~]# mkdir -pv /tmp/mytest3
mkdir: 已创建目录 "/tmp/mytest3"
[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3
[root@localhost ~]# ls  /tmp/mytest3
ld.so.conf     libuser.conf  logrotate.conf  mke2fs.conf  nsswitch.conf
libaudit.conf  locale.conf   man_db.conf     named.conf

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90353

(0)
TK_linTK_lin
上一篇 2017-12-18 19:31
下一篇 2017-12-19

相关推荐

  • 推荐-Linux Namespace的一点理解

        下文的原文来自: http://blog.csdn.net/preterhuman_peak/article/details/40857117    原文写的非常好,下文中大部分文字描述来自原文,我仅做了一点理解性的插图和实验部分。    &…

    Linux干货 2016-03-28
  • OpenStack私有云部署

    架构 实验环境 角色 主机名 网卡 系统环境 Controller Node controller.qween.com 管理接口eth0:192.168.22.128 外部接口eth1:192.168.36.130CentOS6.8Compute Nodecompute1.qween.com管理接口eth0:192.168.22.129 隧道接口eth1:1…

    2017-12-12
  • 程序包管理:rpm、yum以及(make)源代码编译安装

    程序包管理:rpm、yum以及(make)源代码编译安装 在Linux上安装程序一般都有三种方法:源代码编译安装,rpm包安装和rpm包的前端安装yum, (rpm,和yum程序包管理器是针对CentOS6平台的) 程序包管理方式都大同小异:  源代码–>目标二进制格式(二进制程序、库文件、配置文件、帮助文件)–&gt…

    Linux干货 2017-01-10
  • 设计模式(十一)代理模式Proxy(结构型)

    1.概述        因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供…

    Linux干货 2015-07-09
  • 马哥教育网络班21期-第八周课程练习

    第八周作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器工作在OSI七层模型的物理层;功能是将传输信号再生或放大,收到数据后将数据转发至除接收接口外的所有接口(广播)),但是由于集线器所有端口属于共享带宽,属于同一个冲突域和属于同一个广播域,容易产生信号冲突导致帧碎片,现今大部分集线器已经被交换机所替代; 网…

    Linux干货 2016-09-01
  • Linux平台的4个最佳开源代码编辑器

    原文出处: Abhishek   译文出处:Linux中国 su-kaiyao   正在寻找Linux平台最棒的代码编辑器?如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代尖端、漂亮、时髦而且十分强大, 功能丰富…

    Linux干货 2015-03-02