Linux文件管理和Bash特性

一、Linux基本文件管理命令

主要介绍cp、mv、rm命令的基本用法以及使用示例

  • cp命令

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录

cp (选项) (参数)
常用选项:
-a:此参数的效果和同时指定"-dpR"参数相同,用于实现归档; 
-d:复制符号链接文件本身,而非其指向的源文件; 
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份; 
-v:详细显示命令执行的操作。

[root@Node1 桌面]# cp -r /var/log /var/www  /tmp/test/
  • mv命令

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。

mv(选项)(参数)
选项
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

[root@Node1 桌面]# mv ex3 new1
  • rm命令

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。

rm (选项)(参数)
选项
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
-v:显示指令的详细执行过程。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。

二、bash工作的基础特性

(1)命令执行返回值

在 Linux 下,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称为错误号 ( Error Number )。

  • 命令执行的状态结果:

    bash通过状态返回值来输出此结果:

    成功:0

    失败:1-255

  • 命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

(2)命令行展开

命令行展开特性可以一步完成需要分开成多步完成的操作

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

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

例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b

三、命令行展开的两个练习

(1)创建/tmp目录下的:a_c, a_d, b_c, b_d

[root@Node1 tmp]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: 已创建目录 "/tmp/a_c"
mkdir: 已创建目录 "/tmp/a_d"
mkdir: 已创建目录 "/tmp/b_c"
mkdir: 已创建目录 "/tmp/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

[root@Node1 tmp]# 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}}
[root@Node1 tmp]# 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),又称中介数据,主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能

  • 元数据定义:

    • 元数据就是数据的数据
    • 元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的
    • 任何文件系统中数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode..)等。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
  • 查看文件的元数据的命令:stat


[root@Node1 ~]# stat 1.sh 
  File: "1.sh"                                                     #文件名
  Size: 139         Blocks: 8        IO Block: 4096   普通文件      #文件类型
Device: fd00h/64768d    Inode: 813855      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (  0/  root)  Gid: (  0/  root)    #文件权限以及所有者
Access: 2017-07-08 23:35:54.694489522 +0800                        #访问或执行时间
Modify: 2017-07-08 23:35:52.973490408 +0800                        #修改文件内容时间
Change: 2017-07-08 23:35:52.974490371 +0800                        #修改文件内容、更改所有者及权限时间
  • 修改文件时间戳命令:touch

touch命令有两个功能:一是用于更新已存在文件的时间戳信息;二是用来创建新的空文件。

touch(选项)(参数)
-a:或--time=atime或--time=access或--time=use 只更改access time;
-c:或--no-create 不建立任何文件;
-m:或--time=mtime或--time=modify 只更该modify time;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,[[CC]YY]MMDDhhmm[.ss];

[root@Node1 ~]# touch -t 200001012233.44 1.sh                     #将1.sh时间戳修改为指定时间
[root@Node1 ~]# stat 1.sh                                         #验证时间戳是否修改成功
  File: "1.sh"
  Size: 139         Blocks: 8        IO Block: 4096   普通文件
Device: fd00h/64768d    Inode: 813855      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (  0/  root)  Gid: (  0/  root)
Access: 2000-01-01 22:33:44.000000000 +0800
Modify: 2000-01-01 22:33:44.000000000 +0800
Change: 2017-07-09 16:13:35.909026238 +0800


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

(0)
N27_whatN27_what
上一篇 2017-07-09
下一篇 2017-07-09

相关推荐

  • LB-lvs

    Linux Cluster: Cluster:计算机集合,为解决某个特定问题组合起来形成的单个系统; Linux Cluster类型: LB:Load Balancing,负载均衡; HA:High Availiablity,高可用; A=MTBF/(MTBF+MTTR) (0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, …

    Linux干货 2017-06-25
  • FHS文件系统下个各目录功能

    FHS文件系统下个各目录功能 FHS文件系统的建立是为了让开发者和用户可以预测软件安装文件和文件夹的位置。对整个linux的文件系统系统做了以下的规范:     /bin:命令二进制文件的存放目录;     /boot:系统启动时一些文件存放的目录,包含引导linux的重要文件,…

    Linux干货 2016-10-18
  • php-fpm

    1.安装 mariadb 服务 修改配置文件 2.musql 安全加强 3.安装 php-fpm php-mysql php-mbstring php-mcrypt 服务 修改配置文件 4.安装httpd服务 加虚拟主机配置文件 5.测试php网页 6.安装myadmin包及测试

    2017-06-07
  • 马哥教育网络班19期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;         mke2fs -b 2048 -m 2 -L 'MYDATA' -o defau…

    Linux干货 2016-06-21
  • H3C 设备监测命令大全 (v3)

    H3C 设备监测命令大全  display aaa unsent-h323-call-record  display acl      display alarm   urgent   display…

    Linux干货 2016-06-01
  • LAMP+logzilla+sphinx+syslog-ng实现集中日志管理(第一版)[原创]

    一、前言        目前查看系统日志比较被动,遇到系统不正常或故障时才会主动去检查服务器系统日志,这样一来不能及时了解系统的运行情况,因此部署Logzilla+sphine+syslog-ng来弥补这不足。以下为安装、部署平台详细步骤。(Logzilla是什么新东西?其实前身就是php-syslog-ng,引用作者…

    Linux干货 2015-03-27