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

相关推荐

  • 系统自动化安装

    系统自动化安装:实现同时部署多台操作系统,批量进行安装linux系统 CentOS系统安装     系统启动流程:       bootloader–>kernel(initaramfs)–>rootfs–>/sbi…

    Linux干货 2016-09-22
  • nginx服务

      Nginx 提供web服务,也是工作在应用层的负载均衡器,拥有强大的缓存能力。 本章主要学习,web server、web reverse proxy(http)和cache 缓存服务器使用较多的是varnish+squid: 任何缓存都是反向代理,但是varnish反向代理能力还是与nginx有很大差距。所以,varnish还是做缓存服务,而…

    Linux干货 2016-11-01
  • rsyslog日志服务

    一、知识整理: 1、日志服务rsyslogd新特点:     多线程;     基于SSL/TLS/UDP/TCP/RELP网络协议传输日志信息;     强大的过滤器,实现过滤日志信息中任何部分的内容;   &nbsp…

    Linux干货 2016-10-24
  • Bash1

    做语法测试,没有消息就是最好的消息 加权限 单个语句的错误并不妨碍之后的语句,但是逻辑错误会导致后续语句执行不了 bash:     -n:语法测试     -x:模拟单步执行 变量类别:     本地变量   &nbs…

    Linux干货 2016-09-17
  • 自我介绍

    个人简介     基本信息:     何秋雨,男,安徽人,22岁,初中学历 工作经验:     目前就职于南京的一家互联网公司做Java Web 开发,大概有一年半的工作经验。工作内容包括前端和Java后端两个部分。 个人爱好:   &nb…

    Linux干货 2016-08-08
  • HA Cluster-主备模型(项目实战)

    主机环境:主机A和主机B使用的是CentOS7.2的系统:    主机A IP地址为:192.168.1.103     主机B IP地址为:192.168.1.106     向外界提供的服务的地址为:192.168.1.100配置过程:…

    Linux干货 2016-11-01