# Linux运维入门初步—–第二周

标签(空格分隔): Linux入门 linux 运维

写作:N27_李伟 2017-7-13
一、 Linux上常用的文件管理命令都有哪些,使用方法
1. 文件类型的分类
文件类型:
普通文件类型
d:目录文件
b:块设备
c:字符设备
l:符号链接文件
p:管道文件,pipe
s:套接字文件,socket
例如:

[root@loong ~]# ll
总用量 44
-rw-r--r--. 1 root root 26150 7月   9 18:43 install.log

说 明:自左向右:
这是一个普通文件
rw- 文件属主的权限
r– 文件属组的权限
r– 其他用户的权限
1   数字表示被硬链接的次数
root 文件的属主,本例中文件属主是root
root 文件的属组,本例中文件属组是root组
26150 文件的大小,字节数
7月…文件最后一次被修改的时间 
install.log 文件名

 [root@loong ~]# ll /dev
    总用量 0
    brw-rw----. 1 root disk      8,   0 7月  14 07:44 sda
    brw-rw----. 1 root disk      8,   1 7月  14 07:44 sda1
    brw-rw----. 1 root disk      8,   2 7月  14 07:44 sda2

     
说明:自左向右
b:块设备
rw-:属主权限,可读写。
rw-:属组权限
—:其他用户权限
1  :被硬链接的次数
root:设备文件属主
disk:设备文件属组
8,:设备主设备号,标识设备类型
0  :设备次设备号,标识同类型的不同设备
7月….:设备文件最后修改的时间
sda:设备文件名
2. 目录管理的命令mkdir,rmdir
    1. mkdir:创建一个目录
            语法:mkdir [OPTION]… DIRECTORY…
            -p:自动创建路径上不存在的目录
            -v:显示命令的创建过程
            -m:设定权限
            例如:在/tmp目录下建立mydir目录并在此目录下再建立名称为1的目录

            

 [root@loong ~]# ls /
 bin  boot  cgroup  data  dev  etc  home  lib lost+found  media  misc  mnt  net  opt  proc  root sbin  selinux  srv  sys  tmp  usr  var
[root@loong ~]# cd /tmp
[root@loong tmp]# ls
yum.log
[root@loong tmp]# mkdir -pv /tmp/mydir/1
mkdir: 已创建目录 "/tmp/mydir"
mkdir: 已创建目录 "/tmp/mydir/1"
[root@loong tmp]# ls
mydir  yum.log
[root@loong tmp]# cd mydir
[root@loong mydir]# ls
1

                
    2. rmdir:移除一个目录。要移除的目录必须是一个空目录。
       语法:rmdir [OPTION]… DIRECTORY…
       -p:删除某一空目录后如父目录为空,则一并删除。有较大风险,尽量不用
       -v:显示命令的创建过程
       
           例如:删除上例中建立的目录
            

[root@loong tmp]# mkdir -pv /tmp/mydit/1
mkdir: 已创建目录 "/tmp/mydit"
mkdir: 已创建目录 "/tmp/mydit/1"
[root@loong tmp]# ls /tmp
mydit  yum.log
[root@loong tmp]# ls mydit
1
[root@loong tmp]# rmdir mydit/1  //删除名为1的目录
[root@loong tmp]# ls mydit/1
ls: 无法访问mydit/1: 没有那个文件或目录     //目录已删除
[root@loong tmp]# rmdir mydit    //删除mydit目录
[root@loong tmp]# ls
yum.log
[root@loong tmp]# 

           
3.文件查看命令:
主要有cat,tac,head,tail,more,less命令。其中more,less命令分屏查看。
    1. cat
        将[文件]或标准输入组合输出到标准输出。

        -A, –show-all           等于-vET
        -b, –number-nonblank    对非空输出行编号
        -e                       等于-vE
        -E, –show-ends          在每行结束处显示”$”
        -n, –number             对输出的所有行编号
        -s, –squeeze-blank      不输出多行空行
        -t                       与-vT 等价
        -T, –show-tabs          将跳格字符显示为^I
        -u                       (被忽略)
        -v, –show-nonprinting   使用^ 和M- 引用,除了LFD和 TAB 之外
        –help 显示此帮助信息并退出
        –version 显示版本信息并退出
    2. tac:
        用法:tac [选项]… [文件]…
        将每个指定文件按行倒置并写到标准输出。
        如果不指定文件,或文件为”-“,则从标准输入读取数据
    3. head:
        head [选项]… [文件]…
        将每个指定文件的头10 行显示到标准输出。
        如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
        如果不指定文件,或者文件为”-“,则从标准输入读取数据。
        
            > 显示文件前15行
           

 [root@loong etc]# head -n20 passwd
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 adm:x:3:4:adm:/var/adm:/sbin/nologin
 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 sync:x:5:0:sync:/sbin:/bin/sync
 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 halt:x:7:0:halt:/sbin:/sbin/halt
 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
 operator:x:11:0:operator:/root:/sbin/nologin
 games:x:12:100:games:/usr/games:/sbin/nologin
 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 nobody:x:99:99:Nobody:/:/sbin/nologin
 dbus:x:81:81:System message bus:/:/sbin/nologin
 vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
 rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
 haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
 ntp:x:38:38::/etc/ntp:/sbin/nologin

    4. more 分屏查看命令
    5. less 分屏查看命令。man命令实际上调用less命令来查看帮助手册
4、文件管理命令cp,rm,mv
cp:copy,复制文件命令
    源文件:—->目标文件
    单源复制:cp [OPTION]… [-T] SOURCE DEST
    如果目标不存在,则创建之并复制源文件的数据流到目标文件。
    如果目标存在:
    1、如果目标文件是非目录文件则覆盖目标文件
    2、如果目标文件是目录文件,则在其下创建源文件同名的文件并复制源方便的数据流到该文件中。
    例如:
     

[root@loong conf]# pwd
 /tmp/conf
[root@loong conf]# ls
mke2fs.conf nsswitch.conf  numad.conf  prelink.conf  request-key.conf  rsyslog.conf nfsmount.conf  ntp.conf  pm-utils-hd-apm-restore.conf  readahead.conf  resolv.conf
[root@loong conf]# cd /tmp/mytest
[root@loong mytest]# ls
ntp1.conf  ntp.conf
[root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/
//拷贝/tmp/conf/numad.conf到/tmp/mytest目录下
[root@loong mytest]# ls /tmp/
conf/      .ICE-unix/ mytest/    yum.log    
[root@loong mytest]# ls /tmp/mytest
ntp1.conf  ntp.conf  numad.conf      
 //在目标目录下创建同名文件并拷贝完成)
    [root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/
    cp:是否覆盖"/tmp/mytest/numad.conf"? y                               //再次拷贝,因为已经存在一个同名文件,提示是否覆盖
    [root@loong mytest]# 

    多源复制:cp [OPTION]… SOURCE… DIRECTORY
       cp [OPTION]… -t DIRECTORY SOURCE…
       如果DEST不存在:错误;
      如果DEST存在:
      如果DEST是非目录文件:错误;
      如果DEST是目录文件:分别复制每个文件至目标目录中,并保                 持原名;
      例如:复制/tmp/conf下所有的n*.conf文件到/tmp/mytest下

[root@loong mytest]# cp /tmp/conf/ n*.conf /tmp/mytest1 
cp: 目标"/tmp/mytest1" 不是目录
//目标mytest1不存在,报错
[root@loong mytest]# cp /tmp/conf/n*.conf /tmp/mytest
[root@loong mytest]# ls /tmp/mytest
nfsmount.conf  nsswitch.conf  ntp.conf  numad.conf
//多个文件原名复制到目标目录下
[root@loong mytest]# 

cp命令常用选项:
-i:交互式复制,即覆盖之前提醒用户确认;
-f:强制覆盖目标文件;
-r, -R:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件;
-a:-dR –preserve=all, archive,用于实现归档;

rm命令:
    rm命令:remove
    rm [OPTION]… FILE…

    常用选项:
    -i:interactive 交互式
    -f:force 强制
    -r: recursive,目录递归操作1

    删除目录:rm -rf /PATH/TO/DIR
    危险操作:rm -rf /*

注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)

mv命令
    mv命令:move,移动一个文件到指定位置
      mv [OPTION]… [-T] SOURCE DEST
      mv [OPTION]… SOURCE… DIRECTORY
      mv [OPTION]… -t DIRECTORY SOURCE..    

      常用选项:
      -i:交互式;
      -f:force

    
二. bash工作特性之命令执行状态返回值
  命令执行状态返回值
  在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称为错误号 ( Error Number )。这个值保存在特殊环境变量?中,可以用’echo $?‘查看。

  

 [root@loong ~]# ls /
    bin  boot  cgroup  data  dev  etc  home  lib  lost+found  media        misc  mnt  net  opt  proc  root  sbin  selinux  srv  sys  tmp  usr     var
    [root@loong ~]# echo $?
    0
    [root@loong ~]# 

    
    
返回值是0,表示命令操作成功,反之将返回1~255之间的一个数值。但是’$?‘变量只保存最后一条执行命令的返回值。

程序执行也有返回值,对程序执行结果的返回值可以通过'(command)’或’$(command)’来引用。
例:引用pwd的显示结果,交由ls命令执行

    

 [root@loong ~]# pwd
 /root
 [root@loong ~]# ls `pwd`
 anaconda-ks.cfg  install.log  install.log.syslog
 [root@loong ~]# ls $pwd
 anaconda-ks.cfg  install.log  install.log.syslog
 [root@loong ~]# 

 

命令行展开
~ 展开为用户的主目录,~username展开为指定用户的家目录
{}可承载一个以逗号分隔的列表,并展开为多个路径。
如:/tmp/{a,b}=/tmp/a,/tmp/b
    /tmp/{a,b}/h=/tmp/a/h,/tmp/b/h

练习:
1. 创建/tmp目录下a_c,a_d,b_c,b_d
    
    
    

 [root@loong ~]# ls /tmp
 conf  yum.log
 [root@loong ~]# mkdir /tmp/{a,b}_{c,d}
 [root@loong ~]# ls /tmp
 a_c  a_d  b_c  b_d  conf  yum.log

    
    
2. 创建/tmp/mylinux/下的如下目录

        /tmp/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
                
执行过程:-p表示如父目录不存在,则自动创建之。-v表示显示创建过程
          tree命令显示目录的树形结构

    

 [root@loong ~]# mkdir -pv  /tmp/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}}
    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/lock"
    mkdir: 已创建目录 "/tmp/mylinux/var/log"
    mkdir: 已创建目录 "/tmp/mylinux/var/run"
    [root@loong ~]# tree /tmp/mylinux
    /tmp/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

    24 directories, 0 files

文件的元数据信息有哪些,分别表示哪些含义,如何查看

    元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。因此,元数据就是数据的数据。任何文件系统中的数据分为数据和元数据。数据指文件中实际存在的数据,元数据指用来描述该文件的系统特征的数据。诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。

文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。
查看元数据的命令是stat
stat [OPTION]… FILE…

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 10:44:44.170998930 +0800   //访问时间
Modify: 2017-07-19 10:44:44.170998930 +0800   //修改时间,即修改文件内容
Change: 2017-07-19 10:44:44.170998930 +0800  //改变时间,指元数据改变

可以看出获得的元数据包括了文件名,文件大小的字节数,文件占用的块数(blocks),文件权限、用户属主和属组信息,以及最后三行的时间戳信息。

修改文件的时间戳信息
使用touch命令来修改时间戳信息
touch [OPTION]… FILE…
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]

例:直接touch filename,将文件的时间戳修改为当前时间。会修改所有的三个时间戳。

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-05 11:30:10.000000000 +0800
Modify: 2017-07-19 10:44:44.170998930 +0800
Change: 2017-07-19 11:37:05.144985181 +0800
[root@loong tmp]# touch numad.conf
[root@loong tmp]# stat numad.conf 
  File: "numad.conf"
  Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 14:38:31.574996407 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:38:31.574996407 +0800

例:使用-a选项,仅修改atime,并指定时间为2017-6-21 15:22:05

[root@loong tmp]# touch -a -t 201706211522.05 numad.conf 
[root@loong tmp]# stat numad.conf 
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-06-21 15:22:05.000000000 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:45:09.950992896 +0800

原创文章,作者:N27_loong,如若转载,请注明出处:http://www.178linux.com/81788

(0)
N27_loongN27_loong
上一篇 2017-07-19
下一篇 2017-07-20

相关推荐

  • ☞RAID使用手册

    RAID使用手册 RAID演示

    Linux干货 2016-09-02
  • Function函数实例

    函数:function     把一段独立功能的代码当做一个整体,而后为之取一个名字,命令的代码段,即为函数。 注意:     定义函数的代码段不会自动执行,在调用时执行;所谓调用函数,在代码中给定函数名即可     函数名出现的任何位置,…

    Linux干货 2016-08-21
  • yum——替你排忧解难的前端包安装工具

    yum CentOS前端工具: yum, dnf 统一资源定位符:URL YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,自动安装软件包,以及该软件包的依赖包,up2date的替代工具 yum repository: yum repo (yum仓库)  &nbsp…

    Linux干货 2016-08-24
  • while循环中的一个常见问题

    在楼主刚刚学习接触while循环的时候,发现了一个问题,在while循环内部对变量赋值、定义变量、数组定义等等环境,在循环外面失效。 一个简单的测试脚本如下: 执行结果证明,$new_var的结果是空值。在google上查了查,才发现问题出在管道上。 先看看下面的内容。 while循环的写法有好几种,它的语法结构为: while test_cmd_list;…

    2017-08-26
  • iptables介绍和使用

    iptables/netfilter:    Packets Filter Firewall:          包过滤型防火墙:  Firewall:隔离工具,工作于主机或网络的边缘处,对经由的报文根据预先定义的规则(识别标准)进行检测,对于能够被规则匹配到的报文实行…

    Linux干货 2017-04-29
  • 初识Linux之——Linux是如何诞生的

    初识Linux之——Linux是如何诞生的 对于大多数初次接触Linux的童鞋,可能会非常好奇什么是Linux?它是做什么的?为什么那么多高手都喜欢Linux?Linux是如何产生出来的呢?本文将为大家解答释疑,让大家对Linux有一个清晰的概念。 Linux是什么 简单来说,如Windows7、Windows10、安卓、IOS等,Linux是一个计算机操作…

    Linux干货 2016-10-14

评论列表(1条)

  • 马哥教育
    马哥教育 2017-07-26 23:55

    总结的不错,相较于上一篇来说,注释部分使用了’//’,可见是思考之后的,继续加油~