萝卜运维记-第二周

part2–针对文件命令的介绍,使用,演示

Ⅰ Linux文件管理类命令常用方法
Ⅱ bash的工作特性,相关示例
Ⅲ 文件的元数据有哪些,以及所代表的含义。
Ⅳ 相关命令的操作,和结果演示。

①Linux文件管理命令常用方法

Linux常见文件类型

-:常规文件;即f;

d: directory,目录文件;

b: block device,块设备文件,支持以“block”为单位进行随机访问

c:character device,字符设备文件,支持以“character”为单位进行线性访问

    8位二进制:0-255

    major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序

    minor number:次设备号,用于标识同一类型中的不同的设备;

l:symbolic link,符号链接文件;

p: pipe,命名管道;

s: socket,套接字文件;

命令管理工具指南:cp、rm、mv

1. cp(copy)复制:命令格式

  单源复制:cp [OPTION]… [-T] SOURCE DEST

  多源复制:cp [OPTION]… SOURCE… DIRECTORY

  cp [OPTION]… -t DIRECTORY SOURCE…

常用参数

  -r:递归复制目录及其子目录内的所有内容

  -a:相当于-dR –preserve=all

  -p:保持指定文件的原有属性

  -d:等于–no-dereference –preserve=links

  -f:强制覆盖

例1:将home目录下的test1文件夹里名为jiang的文件,复制到test2下,如下

  home]#cp test1/jiang test2
  home]#ls
  jiang

例2:将test1文件夹里的所有文件、子文件夹adb下的jiang2内容全部复制到test2,如下:

 home]#cp -r test1/* test2
 home]#cd test2
 test2]#ls
 adb jiang
 test2]cd adb
 adb]#ls
 jiang2

例3:使用参数-f 复制test1里面的jiang ,到test2里面,同时test2下已经存有jiang这个文件!

 cp -f test1/jiang test2
 当目标文件夹下有一个和源文件夹一样的同名文件,那么在操作这个cp命令时,系统会提示,如果想跳过这个直接加上f 就可以强制覆盖!

2.  rm(Remove)删除,移除:命令格式

 rm [OPTION]… FILE…

常用参数

 -i:interactive (默认rm是‘rm -i’的别名)

 -f:force

 -r: recursive

 -v:显示指令的详细过程

 删除目录:rm -rf /PATH/TO/DIR

★注意:废弃文件建议不要直接删除,而是移动至某个专用目录;rm -rf  file  这个命令请谨慎使用!

例1:删除home目录下的test1里的所有文件,文件夹。

 home]#ls
 test1  test2  Vince
 home]#rm -rf  test1
 home]#ls
 test2 Vince

3. mv(move)剪切,重命名:命令格式

   mv [OPTION]… [-T] SOURCE DEST

   mv [OPTION]… SOURCE… DIRECTORY

   mv [OPTION]… -t DIRECTORY SOURCE…

常用参数

 -i: 交互式

 -f: force

例1:将test1 重命名为Angela

 home]#ls
 test1
 home]#mv test1 Angela
 home]#ls
 home]#Angela

例2:将test1目录移动到etc目录下

 home]#mv test1 etc/
 home]#cd /etc
 etc]#ls
 test1

★注意:使用mv时候,请确认目标目录位置,mv在同一个硬盘分区上操作是inode号是不变的,
mv在同一个硬盘分区上操作是inode号是不变的,无论文件多大都很快,
是因为只是修改了文件对应的指针。跨分区是执行复制操作,所以很慢。

②bash的工作特性,相关示例

bash特性之一:命令别名

 #alias NAME='COMMAND'

bash的特性之二:命令历史

命令语法格式:

 history [-c] [-d OFFSET] [n]
 history -anrw [FILENAME]
 history -ps VALUE [VALUE…]

常用参数
    -c: 清空命令历史;
    -d offset(偏移量):删除指定命令历史,offset为history显示出来的命令数字;
    -r: 从文件读取命令历史至历史列表中;
    -w:把历史列表中的命令追加至历史文件中;
    history #:显示最近的#条命令;

bash特性之三:快捷键

 Ctrl+a:跳转至命令行行首;
 Ctrl+e:跳转至命令行行尾;
 Ctrl+u:删除行首至光标所在处之间的所有字符;
 Ctrl+k:删除光标所在处至行尾的所有字符;
 Ctrl+l:清屏,相当于clear;

bash的特性之四:命令补全和路径补全

1.命令查找和补全机制:
    (1) 查找内部命令;

 (2) 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;

 (3) 给定开头的部分字符串如果能惟一标识某命令程序文件,则直接补全;

 不能惟一标识某命令程序文件,再击tab键一次,会给出列表;

2.路径补全:

 在给定起始路径下,以对应路径下的打头字串逐一匹配起始路径下每个文件:
 TAB按键;如果能惟一标识,则直接补全;否则,再一次tab,给出列表;

3.命令行展开

 ~:自动展开为用户的家目录,或指定的用户的家目录;

 {}:花括号展开。可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

bash的特性之五:命令行展开:

 1)、命令行展开;

 以某些bash能够解释的符号来代替命令中的某些参数。

 ~:展开为用户的家目录;

例1:切换至家目录

 cd ~;pwd
 /root
 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径;

例2:在/tmp/d目录下创建f1,f2,f3三个文件

 touch /tmp/d/f{1,2,3}

 bash

bash特性之六:命令的执行状态结果:

 1)、bash的基础特性之状态值返回:在bash中使用一个特殊的变量$?来保存上一个命令的执行状态结果。

 0表示成功,

 1-255表示失败

③ 使用命令行展开功能实现习题

1.创建tmp目录下的:a_c,a_d,b_c,b_d;

 tmp]#mkdir {a,b}{_c,_d}
 tmp]#ls
 a_c,a_d,b_c,b_d

2.创建/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

 home]#mkdir -p test1/mylinux {{bin,dev,lib64,proc,sbin,sys,tmp,
 {boot/grup,lib/modules,var/{lock,log,run},usr/local/{bin,sbin},
 etc/{rc.d/init.d,sysconfig/network-scripts}}}}

3. 文件的元数据信息有哪些?分别代表什么含义?如何查看?如何修改时间戳信息?

元数据信息:文件名称、属主属组、文件访问权限、uid、gid、三个时间戳(centos7是四个)、inode号等等

访问时间access time:读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。

修改时间modify time:修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。

状态改变时间change time:是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。

查看命令:stat filename

  [root@localhost mylinux]# stat bin
  File: ‘bin’
  Size: 6             Blocks: 0          IO Block: 4096   directory
  Device: fd00h/64768d    Inode: 71268759    Links: 2
  Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Context: unconfined_u:object_r:user_tmp_t:s0
 Access: 2016-12-12 15:19:52.198280184 +0800      //第一次的时间
 Modify: 2016-12-12 15:19:42.192280550 +0800
 Change: 2016-12-12 15:19:42.192280550 +0800
 Birth: -

修改时间戳信息:touch [option] filename

touch命令:

touch – change file timestamps

touch [OPTION]… FILE…

-c: 指定的文件路径不存在时不予创建;

-a: 仅修改access time;

-m:仅修改modify time;

-t 指定时间:[[CC]YY]MMDDhhmm[.ss]

  [root@localhost mylinux]# touch -a bin    //修改文件的访问时间
  [root@localhost mylinux]# stat bin
  File: ‘bin’
  Size: 6             Blocks: 0          IO Block: 4096   directory
  Device: fd00h/64768d    Inode: 71268759    Links: 2
  Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
  Context: unconfined_u:object_r:user_tmp_t:s0
  Access: 2016-12-12 15:48:10.714218002 +0800       //时间已经更新
  Modify: 2016-12-12 15:19:42.192280550 +0800
  Change: 2016-12-12 15:48:10.714218002 +0800
  Birth: -

 [root@localhost mylinux]# touch -m bin    //修改文件的编辑时间
       Modify: 2016-12-12 15:57:33.883197385 +0800    //时间已经更新

4. 文件别名的定义,如何在命令中引用另一个命令的执行结果。

alias命令

  alias NAME='COMMAND'      //只对当前shell进程有效,结束后得重新来再次定义
  unalias NAME              //撤销别名

例子:

 [root@localhost mylinux]#  alias A='cd /home'     //将A定义为使用cd 进入home目录

 [root@localhost mylinux]# A                       //此时要进入home目录无需在cd /home,直接使用A即可

 [root@localhost home]#                            //切换到home目录下


 *引用命令的执行结果:使用$()或者 “*

④exercise

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

   ls -d /var/l*[0-9]*[[:lower:]]

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

  ls -d /etc/[0-9]*[^0-9]

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

  ls -d /etc/[^[:alpha:]][[:alpha:]]*

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

   touch /tmp/tfile-$(date +%F-%H-%M-%S)

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

   cp -a /etc/p*[^0-9] /tmp/mytest1

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

  cp -a /etc/*.d /tmp/mytest2

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

 cp -r /etc/[lmn]*.conf /tmp/mytest3

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

(0)
上一篇 2016-12-12 16:51
下一篇 2016-12-12 17:25

相关推荐

  • 网络服务基础理论

    最近学习了有关网络管理的有关知识,所以给也在学习这些知识的童鞋分享一下我的一些经验。 听了这几天课,总结了几个前提。 有关网络的通信均是基于数据传输的,且数据均是二进制格式的流式数据。 在网络中需要把大包分成小包, 每传一个包都需要有三个地址,由内向外为端口号、IP地址、MAC地址。端口号确定应用,IP确定网段,MAC确定广播域中的某个网卡。 OSI模型 &…

    Linux干货 2017-09-01
  • 浅析linux软、硬链接

    软链接 硬链接 不同点 创建时会占用新的inode号, 不会占用 可以跨分区 不可以跨分区 与源文件是两个不同的文件,不会增加文件链接数 与源文件数据相同,会增加文件链接数 依赖于链接的文件名,当删除或移动源文件后,连接可能失效 不依赖于源文件名,删除或移动源文件后,硬链接依然使用 对文件,目录都可以执行链接操作 只能对文件执行链接操作 大小为指向源文件路径…

    Linux干货 2016-12-05
  • 菜鸟教你如何磁盘分区与创建文件系统以及挂载(2)

    一、文件系统简介与创建 1、什么是文件系统?    文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。 2、文件系统的作用    从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件…

    Linux干货 2016-08-29
  • 使用ext_skel和phpize构建php5扩展

    首先声明:我们要构建的是扩展或者模块名为hello_module.该模块提供一个方法:hello_word. 1、php环境的搭建 我们一般使用源码包编译安装,而不是binary包安装。因为使用PHP的二进制分发包安装有些冒险,这些版本倾向于忽略./configure的两个重要选项,它们在开发过程中很便利: 第一个–enable-debug。这个…

    Linux干货 2015-05-28
  • Mysql备份I

    Mysql备份I I备份在什么时候会被需要 硬件故障 机器无法启动 机器突然消失了怎么办 业务出现异常 一定要先select 在操作 类似drop或delete的操作 攻击 程序bug 业务特殊需求  重要数据多处多次多版本备份 至少有2份远程备份文件2处本地备份 II哪些东西需…

    Linux干货 2016-06-09
  • 路由器解析路由表

    1.定义——>选择最佳路径;他只完成发送到下一个路径上就结束,任务到达就撤了(就像快递员一样,当他将物件发往到下一个目的地,那他的任务就结束了)2.分类:主机路由、网络路由、默认路由3.每个路由记录由四项主要组成部分目标地址:主机IP、网络ID号、未知地址(0.0.0.0)子网掩码接口interface:从哪个口发往目标地址 网…

    2017-09-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 17:03

    赞~~总结的不错~加油~