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

相关推荐

  • 20161021第6天作业

    20161021第6天作业 1、将PATH变量每个目录显示在独立的一行  echo "$PATH" |tr ':' '\n' 2、将指定文件中0-9分别替代成a-j tr '0-9' 'a-j' <文件 3、将文件中每个单词(由字母组成)显示在…

    Linux干货 2016-10-23
  • N26-博客作业-week15

    1、总结sed和awk的详细用法 sed: 语法结构 sed [OPTION]…’script’ [input-file]…[action] -r:支持扩展正则表达式 -n:不输出模式空间中的内容至屏幕 -e script1 -e script2 -e script3:指定多脚本运行 -f /path/to/script_file:从指定的文件中读取…

    Linux干货 2017-07-14
  • btrfs管理和应用

    一、btrfs概念        在btrfs中存在三种类型的数据,data, metadata和system。它们表示:        DATA           数据块。       &nbsp…

    系统运维 2016-04-12
  • Linux进程管理

    内核的功能:     进程管理 文件系统 网络功能 内存管理 驱动程序 安全功能等     rocess:运行中的程序的一个副本,是被载入内存的一个指令集合      进程ID(Process ID,PID)号码被用来标记各个进程 UID,GID,和…

    Linux干货 2016-09-12
  • Ansible初识

    Ansible概念 ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。说…

    2017-07-08
  • 磁盘分区和文件系统管理

    磁盘分区 两种分区方式:MBR,GPT  MBR: Master Boot Record,1982年,使用32位表示扇区 数,分区不超过2T  如何分区:按柱面      0磁道0扇区:512bytes      446bytes: boo…

    Linux干货 2016-08-29