Linux中的文件管理命令及shell特性

Linux中的文件管理命令

一、linux中的目录管理命令:mkdirrmdir

mkdir命令:创建目录

- SYNOPSIS     
   mkdir [OPTION]... DIRECTORY...
   
- OPTION     
   -p:按需自动创建父目录  
   -v:显示命令执行的详细过程  
   -m:创建目录时直接给定权限,否则为默认权限
   
- example:
    [root@centos ~]# mkdir -pv /tmp/x/y/z
    mkdir: created directory `/tmp/x'
    mkdir: created directory `/tmp/x/y'
    mkdir: created directory `/tmp/x/y/z'
    [root@centos ~]#

rmdir:删除目录

- SYNOPSIS:  
   rmdir [OPTION]... DIRECTORY...
   
- OPTION:  
   -p:删除某空目录后,如果其父目录为空,则一起删除。  
   -v:显示命令执行的详细过程
   
- example:    
    [root@centos ~]# rmdir -pv /tmp/x/y/z
    rmdir: removing directory, `/tmp/x/y/z'
    rmdir: removing directory, `/tmp/x/y'
    rmdir: removing directory, `/tmp/x'
    rmdir: removing directory, `/tmp'
    rmdir: failed to remove directory`/tmp': Directory not empty
    [root@centos ~]#

二、Linux中文件查看命令:cattacheadtailmoreless

more命令:file perusal filter for crt viewing

- SYNOPSIS:  
   more [OPTION] [file ...]
   
- 特点: 翻屏至文件尾部后自动退出

less命令:opposite of more

- SYNOPSIS:  
   less [file ...]
   
- 特点: 其实man读取帮助手册就是调用的less指令。所以less命令的操作方式同man

head命令:查看文件的前N行,默认为10行

- SYNOPSIS:  
    head [OPTION]... [FILE]...  
- OPTION:  
    -n # 或 -#:指定查看前#行

tail命令:查看文件的后N行,默认为10行

- SYNOPSIS:  
    tail [OPTION]... [FILE]...  
- OPTION:  
    -n # 或 -#:指定查看后#行    
    -f:查看文件尾部内容结束后不退出,跟随显示新增的行

cat:文本文件查看器。可将多个文本文件连接在一起显示
注:不能查看二进制文件。可以是用file指令确定文件是否是文本文件(ASCII test)

- SYNOPSIS:  
    cat [OPTION]... [FILE]...  
- OPTION:  
    -n:带行编号显示文件内容(不会修改原文)    
    -E:显示行结束符$

tac命令:与cat功能相近,只是逆序显示文件内容

三、Linux中文件管理命令:cpmvrm

cp:实现文件复制

- SYNOPSIS:  
    单原复制:cp [OPTION]... [-T] SOURCE DEST
    多源复制:cp [OPTION]... SOURCE... DIRECTORY
    多源复制:cp [OPTION]... -t DIRECTORY SOURCE...

    单原复制:cp [OPTION]... [-T] SOURCE DEST  
        - 如果DEST不存在,则首先创建此文件,并复制源文件的数据流至DEST中        
        - 如果DEST存在:            
            -- 如果DEST是非目录文件,则覆盖目标文件。            
            -- 如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制数据流到目标文件        
    多源复制:cp [OPTION]... SOURCE... DIRECTORY
    多源复制:cp [OPTION]... -t DIRECTORY SOURCE...
        - 如果DEST不存在:错误。        
        - 如果DEST存在:            
            -- 如果DEST是非目录文件,错误            
            -- 如果是目录文件。分别复制每个文件,至目标目录中,并保持原名。
            
- OPTION:
    -i:交互式复制,即覆盖之前提醒用户确认。    
    -f:强行覆盖目标文件。    
    -r:递归复制目录    
    -d:复制符号链接文件的本身,而非其指向的源文件    
    -a:-dR --preserve=all,用于实现归档    
    --preserve=        
        mode:权限
        ownership:属主和属组
        timestamps:时间戳
        context:安全标签
        xattr:扩展属性
        links:符号链接
        all:上述所有属性
        
- example:    
    `单源复制-目标文件不存在情况`
    [root@centos ~]# ls /tmp/
    whatis.q3Uigb  yum.log
    [root@centos ~]# cp /etc/issue /tmp
    [root@centos ~]# ls /tmp/
    issue  whatis.q3Uigb  yum.log
    [root@centos ~]# cat /tmp/issue 
    CentOS release 6.5 (Final)
    Kernel \r on an \m
    
    `单源复制-目标文件已存在情况`
    [root@centos ~]# cp /etc/hosts /tmp/issue 
    cp: overwrite `/tmp/issue'? y
    [root@centos ~]# cat /tmp/issue 
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    `多源复制-目标目录不存在情况`
    [root@centos ~]# cp /etc/hosts /etc/issue /tmp/x
    cp: target `/tmp/x' is not a directory
    
    `多源复制-目标目录已存在情况`
    [root@centos ~]# mkdir /tmp/x
    [root@centos ~]# cp /etc/hosts /etc/issue /tmp/x
    [root@centos ~]# ls /tmp/x
    hosts  issue
    [root@centos ~]# 
    
    `-r选项实例`
    [root@centos ~]# mkdir -p /tmp/souce/x/y/z
    [root@centos ~]# mkdir /tmp/dest
    [root@centos ~]# cp -r /tmp/souce/ /tmp/dest/
    [root@centos ~]# tree /tmp/dest/    /tmp/dest/
    └── souce
        └── x
            └── y
                └── z
    
    4 directories, 0 files
    [root@centos ~]# 
    
    `--preserve选项实例`
    [root@centos ~]# ls -l /tmp/ |grep liubin
    -rw-rw-r--. 1 liubin liubin    0 Sep 27 04:56 liubin    
    [root@centos ~]# cp --preserve=ownership /tmp/liubin /tmp/root
    [root@centos ~]# ls -l /tmp/
    total 16
    drwxr-xr-x. 3 root   root   4096 Sep 27 04:53 dest
    -rw-r--r--. 1 root   root    158 Sep 27 04:43 issue    
    -rw-rw-r--. 1 liubin liubin    0 Sep 27 04:56 liubin    
    -rw-rw-r--. 1 liubin liubin    0 Sep 27 04:59 root    
    drwxr-xr-x. 3 root   root   4096 Sep 27 04:49 souce
    drwxr-xr-x. 2 root   root   4096 Sep 27 04:44 x
    -rw-------. 1 root   root      0 Sep 27 03:07 yum.log    
    [root@centos ~]#

mv命令:文件移动

- SYNOPSIS:  
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
    
- OPTION:  
    -i:交互式    
    -f:强制移动
    
- example:
    [root@centos ~]# tree /tmp/x
    /tmp/x
    ├── hosts
    └── issue    
    0 directories, 2 files
    [root@centos ~]# tree /tmp/dest/
    /tmp/dest/
    └── souce
        └── x
            └── y
                └── z    
    4 directories, 0 files
    [root@centos ~]# mv /tmp/x /tmp/dest/
    [root@centos ~]# tree /tmp/dest/
    /tmp/dest/
    ├── souce
    │   └── x
    │       └── y
    │           └── z
    └── x
        ├── hosts
        └── issue    
    5 directories, 2 files
    [root@centos ~]#

rm命令:文件移除。谨慎使用。

- SYNOPSIS:  
    rm [OPTION]... FILE...
    
- OPTION:  
    -i:交互式    
    -f:强制    
    -r:递归
    
- example:
  [root@centos ~]# ls /tmp
    dest  issue  liubin  root  souce  yum.log
    [root@centos ~]# tree /tmp/souce/
    /tmp/souce/
    └── x
        └── y
            └── z    
    3 directories, 0 files
    [root@centos ~]# rm -rf /tmp/souce/
    [root@centos ~]# ls
    anaconda-ks.cfg  install.log  install.log.syslog
    [root@centos ~]#

四、shell特性–命令行展开

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

    [root@centos7 liubin]# cd ~

    切换到了当前用户(root)的家目录
    [root@centos7 ~]# cd ~liubin

    切换到指定用户(liubin)的家目录
    [root@centos7 liubin]#

  • {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。
    例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b

五、shell特性–命令的执行状态结果

bash通过状态返回值来输出此命令执行的状态结果

  • 成功:0

  • 失败:1-255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中。
注:只能获取最近一次执行的命令结果

[root@centos ~]# ls /tmp/dest/  
souce  x  
[root@centos ~]# echo $?  
0  
[root@centos ~]# ls /tmp/source  
ls: cannot access /tmp/source: No such file or directory  
[root@centos ~]# echo $?  
2  
[root@centos ~]#

练习:

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

[root@centos ~]# ls /tmpdest  issue  liubin  root  yum.log
[root@centos ~]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: created directory `/tmp/a_c'
mkdir: created directory `/tmp/a_d'
mkdir: created directory `/tmp/b_c'
mkdir: created directory `/tmp/b_d'
[root@centos ~]# ls /tmp/
a_c  a_d  b_c  b_d  dest  issue  liubin  root  yum.log
[root@centos ~]#

2、创建/tmp/mylinux目录

  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@centos ~]# 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: created directory `/tmp/mylinux'
mkdir: created directory `/tmp/mylinux/bin'
mkdir: created directory `/tmp/mylinux/boot'
mkdir: created directory `/tmp/mylinux/boot/grub'
mkdir: created directory `/tmp/mylinux/dev'
mkdir: created directory `/tmp/mylinux/etc'
mkdir: created directory `/tmp/mylinux/etc/rc.d'
mkdir: created directory `/tmp/mylinux/etc/rc.d/init.d'
mkdir: created directory `/tmp/mylinux/etc/sysconfig'
mkdir: created directory `/tmp/mylinux/etc/sysconfig/network-scripts'
mkdir: created directory `/tmp/mylinux/lib'
mkdir: created directory `/tmp/mylinux/lib/modules'
mkdir: created directory `/tmp/mylinux/lib64'
mkdir: created directory `/tmp/mylinux/proc'
mkdir: created directory `/tmp/mylinux/sbin'
mkdir: created directory `/tmp/mylinux/sys'
mkdir: created directory `/tmp/mylinux/tmp'
mkdir: created directory `/tmp/mylinux/usr'
mkdir: created directory `/tmp/mylinux/usr/local'
mkdir: created directory `/tmp/mylinux/usr/local/bin'
mkdir: created directory `/tmp/mylinux/usr/local/sbin'
mkdir: created directory `/tmp/mylinux/var'
mkdir: created directory `/tmp/mylinux/var/lock'
mkdir: created directory `/tmp/mylinux/var/log'
mkdir: created directory `/tmp/mylinux/var/run'
[root@centos ~]# 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
    └── run24 directories, 0 files
[root@centos ~]#

六、文件的元数据
文件的元数据可通过stat命令查看:

[root@centos ~]# stat /etc/issue
  File: `/etc/issue'
  Size: 47        	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1966607     Links: 1Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-09-27 03:25:29.196999983 +0800
Modify: 2013-11-27 19:53:33.000000000 +0800
Change: 2016-09-27 03:13:22.876999801 +0800
[root@centos ~]#

  • 文件名

  • 文件大小

  • 文件块

  • 文件类型

  • 文件链接数

  • 权限

  • UID

  • GID

  • 文件最后一次被查看的时间

  • 文件数据最后一次被修改的时间

  • 文件数据和元数据最后一次被改动的时间

touch命令:可于更改前2个时间戳

- SYNOPSIS:  
    touch [OPTION]... FILE...  
    
- OPTION:  
    -c:指定的文件路径不存在时不予创建    
    -a:仅修改access time    
    -m:仅修改modify time   
     
    `注意:如果不加选项。默认将三个时间改为当前时间`
    
    -t STAMP:更改指定时间        
        [[CC]YY]MMDDhhmm[.ss
        
- example:
[root@centos ~]# touch -a -t 201609262232 /tmp/issue
[root@centos ~]# stat /tmp/issue
  File: `/tmp/issue'
  Size: 158       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 262148      Links: 1Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-09-26 22:32:00.000000000 +0800
Modify: 2016-09-27 06:31:08.898995817 +0800
Change: 2016-09-27 06:32:04.517998108 +0800
[root@centos ~]#

七、命令别名及命令引用

命令别名查看:
[root@centos ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

创建别名:
[root@centos ~]# alias clear='cls'
[root@centos ~]# alias
alias clear='cls'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

引用命令的执行结果:

  • 使用“引用:

[root@centos ~]# echo `date`
Tue Sep 27 06:45:08 CST 2016
[root@centos ~]#
  • 使用$(COMMAND)引用

[root@centos ~]# file $(which --skip-alias ls)
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
[root@centos ~]#

八、globbing文件通配

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

[root@centos ~]# ls /var/1*[[:digit:]]*[[:lower:]]
/var/1Qw2Ws
[root@centos ~]#

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

[root@centos ~]# ls /etc/[[:digit:]]*[^[:digit:]]
/etc/2wssc.
[root@centos ~]#

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

[root@centos ~]# ls /etc/[^[:alpha:]][[:alpha:]]*
/etc/2wssc.
[root@centos ~]#

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

[root@centos ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)
[root@centos ~]# ls /tmp/
a_c  b_c  dest  liubin  root  yum.loga_d  b_d  issue  mylinux  tfile-2016-09-27-07-10-10
[root@centos ~]#

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

[root@centos ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
[root@centos ~]# ls /tmp/mytest1/
pam.d    pinforc                       popt.d         prelink.conf    protocols
pango    pki                           portreserve    prelink.conf.d  pulse
passwd   plymouth                      postfix        printcap
passwd-  pm                            ppp            profile
pcmcia   pm-utils-hd-apm-restore.conf  prelink.cache  profile.d
[root@centos ~]#

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

[root@centos ~]# cp -r /etc/*.d /tmp/mytest2/
[root@centos ~]# ls /tmp/mytest2/
bash_completion.d  init.d         modprobe.d      rc0.d  rc6.d          
statetab.dchkconfig.d        latrace.d      oddjobd.conf.d  rc1.d  rc.d           
sudoers.dcron.d             ld.so.conf.d   pam.d           rc2.d  request-key.d  
xinetd.ddepmod.d           logrotate.d    popt.d          rc3.d  rsyslog.d      
yum.repos.ddracut.conf.d   lsb-release.d  prelink.conf.d  rc4.d  rwtab.devent.d
makedev.d      profile.d       rc5.d  setuptool.d
[root@centos ~]#

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

[root@centos ~]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3
[root@centos ~]# ls /tmp/mytest3
latrace.conf  libaudit.conf  logrotate.conf  mke2fs.conf    nsswitch.conf  
numad.confld.so.conf    libuser.conf   ltrace.conf     nfsmount.conf  ntp.conf
[root@centos ~]#



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

(0)
上一篇 2016-09-26 22:23
下一篇 2016-09-27 13:04

相关推荐

  • Linux交换分区的创建和调整

    概述 本文对swap进行简要介绍,以及系统安装后(在运行中)如何建立或调整swap分区。 文中演示环境为: 什么是swap space? 交换分区,即swap space。它将某段磁盘空间独立划分出来,当物理内存不够的情况下,系统先把物理内存中暂时不用的数据,暂存到交换空间,腾出内存空间来,以保证程序的运行;当swap中存储的页面被访问到时,系统会将其重新载…

    Linux干货 2016-08-30
  • 包管理之包查询,包校验,rpm数据库.yum的详细用法及说明

    一.概述 包查询 rpm {-q|–query} [select-options] [query-options] [select-options] -a: 所有包 -f: 查看指定的文件由哪个程序包安装生成 -p rpmfile:针对尚未安装的程序包文件做查询操作; –whatprovides CAPABILITY:查询指定的CAP…

    Linux干货 2016-08-30
  • 初识mysql:基本原理和使用

    一、 数据库的出现      1. 数据库是什么: 数据库简单来说,就是存储数据的地方(废话),对于用户认证这个过程来说,当用户登录服务器时, 系统需要把用户的输入的用户认证信息和存储的用户认证信息进行比对,这一过程就需要事先把所有用户的信息存储在一个数据库中,然后逐条进行比对。早起最传统的数据库当然就是文本…

    Linux干货 2015-06-04
  • OpenSSH的应用和利用OpenSSL创建私有CA签证给httpd服务器开起https

    一、OpenSSH     OpenSSH与SSH协议是远程登录的首选连接工具。它加密所有流量,以消除窃听,连接劫持和其它攻击。OpenSSH常常被误认以为与OpenSSL有关系,但实际上这两个项目的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。  &…

    Linux干货 2016-04-24
  • 面向对象魔术方法

    ##**特殊属性**– __name__ 类、函数、方法等的名字– __module__ 类定义所在的模块名– __class__ 对象或类所属的类– __bases__ 类的基类的元组,顺序为它们在基类列表中出现的顺序– __doc__ 类、函数的文档字符串,如果没有定义则为None–…

    Linux干货 2017-11-21
  • 用户 组 和权限 以及权限的 分类

    关于文件的安全我们要从3A验证 说起     1  Authentication:认证      2  Authorization:授权      3  Accouting|Audition:审计 由于系统文件的用户太多为了便于管理 我们便把系统的用…

    系统运维 2016-08-04

评论列表(1条)

  • luoweiro
    luoweiro 2016-10-10 22:41

    基础知识和实战总结的非常不错。