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系统vim文本编辑器

                                                      &nbsp…

    Linux干货 2016-08-15
  • 第七周学习总结–系统启动流程

    写在前面 作为一个理工科的你,我相信你一定给自己或者给别人装过windows操作系统,作为windows操作系统都图形化了,因此我们可能很难去了解中间都发生了什么。比如使用U盘安装的时候,网上一大堆某某某U盘制作系统工具,按照网上的教程,制作完成以后,就可以在要装系统的电脑上点击电源键狂按F12(不同的电脑可能不同)进入BIOS设置了,然后就等着使用了。作为…

    2018-01-14
  • vim文本编辑器和sed用法汇总

    1. Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进 和增加了很多特性。 VIM是纯粹的自由软件。 2. vim的三种工作模式: (1) 编辑模式:也叫命令模式,可以执行个各种快捷键的命令 (2) 插入模式:在文本文件中可以直接输入内容。 (3) 末行模式:红帽官方叫扩展命令行模式vim内置命令行接口  注:vi…

    Linux干货 2016-08-12
  • KVM基本功能

    前言:本来想写出关于KVM的精品文章,然而学的时间不够长,理解也不够透彻。所以有关KVM的高级功能只能等下一次在写。本次只涉及到KVM的基础核心功能,平时经常会使用的功能.。 一、环境准备: 1、BIOS启用Virtualication。 2、在linux系统上查看系统是否支持硬件虚拟化。Intel系列CPU支持虚拟化标识为vmx,AMD系列CPU标识为sv…

    Linux干货 2015-10-27
  • n28-第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 cp:copy files and directories 复制文件和目录 -i:交互式复制 默认情况下是别名定义了alias cp=’cp -i’ -f:强制复制 #cp -f /etc/issue /tmp/first.txt -r:递归复制目录 将/etc目录递归复制到/tmp…

    Linux干货 2017-12-10
  • 马哥教育网络班28期—第1、2天知识点概略

    没做随堂笔记,根据记忆手打,看看自己能记住多少。

    Linux干货 2017-12-03

评论列表(1条)

  • luoweiro
    luoweiro 2016-10-10 22:41

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