Linux基础——文件管理

Linux基础——文件管理

文件管理及常用命令详解

      Linux文件系统是以/为基本的倒置树状结构,我们来进一步学习下文件或者目录的操作和管理命令: 

目录相关操作:cd、pwd、mkdir、rmdir 
目录及文件检索:ls 
复制、移动、删除:cp、mv、rm 
文件内容查看:cat、tac、more、less、head、tail 
查看文件类型:file(type:查看命令类型) 
命令和文件搜索:which、whereis、find 

下面我们逐个进行解释:

1.cd

Change directory的缩写,变换工作目录的命令。
    cd [dir] 最简单的用法,目录可以是绝对路径也可以是相对路径
    cd ~$USERNAME 表示切换至$USERNAME的家目录下

2、pwd

Print Working Directory,显示当前所在目录的路径
    【OPTION】
    -P [dir]    表示实际的路径,而非使用link的路径
    【FOR EXAMPOR】
        [root@localhost ppp]# cd -P /var/mail/
        [root@localhost mail]# pwd
        /var/spool/mail
        [root@localhost mail]# pwd -P
        /var/spool/mail

3、mkdir

Make Directories,创建目录文件
    【OPTION】
    -m,--mode=MODE  
            set file mode,not a=rwx-umask指定权限,不受umask影响
    -p,--parents
            no error if existing,make parent directories as needed
            根据需要生成父目录(如果父目录不存在),不会报错
    -v,--verbose
            print a message for each created directories.
            打印创建目录消息
    【FOR EXAMPLE】
        [root@localhost tmp]# mkdir -m 555 test
        [root@localhost tmp]# umask
        0022
        [root@localhost tmp]# ll -a
        dr-xr-xr-x.  2 root root    6 Sep 24 22:45 test
        [root@localhost tmp]# mkdir -pv test/testx/testy
        mkdir: created directory ‘test/testx’
        mkdir: created directory ‘test/testx/testy

4、rmdir

Remove empty directories,删除空目录
    【SYNOPSIS】
    rmdir [option]... [dir]...
    【OPTION】
        -p, --parents   
            remove DIRECTORY and its ancestors(上代、祖先)
            删除目录及其上级目录一起删除
        -v,--verbose
    【FOR EXAMPLE】
        [root@localhost tmp]# ls -ld /tmp/*
        -rw-r--r--.  1 root root  134 Sep 21 23:07 /tmp/issue
        drwx------.  2 ftp  ftp    59 Sep 21 22:20 /tmp/skel
        dr-xr-xr-x.  3 root root   18 Sep 24 22:53 /tmp/test
        -rwx------.  1 root root    0 Sep 21 20:27 /tmp/test1
        drwxr-xr-x. 11 root root 4096 Sep 22 01:35 /tmp/x
        [root@localhost tmp]# rmdir -p test/testx/testy
        [root@localhost tmp]# ls -ld /tmp/*
        -rw-r--r--.  1 root root  134 Sep 21 23:07 /tmp/issue
        drwx------.  2 ftp  ftp    59 Sep 21 22:20 /tmp/skel
        -rwx------.  1 root root    0 Sep 21 20:27 /tmp/test1
        drwxr-xr-x. 11 root root 4096 Sep 22 01:35 /tmp/x

5、ls

List Directory contents,列举路径目录
    【SYNOPSIS】
    ls [option]... [file]...
    【OPTION】
        -a,--all
            don't ignore entries starting with.
            列举全部的文档,连同隐藏的文档(.开头的文档)
        -A,--almost-all
            don't list implied . and ..
        -l  use a long listing format
            使用长格式显示,每一行数据代表一个文件或者目录
        -f  do not sort, enable -aU, disable -ls --color
            不进行排序的显示
        -h,--human-readable
            with -l,print sizes in human readable format
            结合-l选项一起使用,以人类可读的格式显示(例如:kb,MB,GB等)
        -i,--inode
            print the index number for each file
            显示每个文件的inode号
        -s,--size
            print the allocated size of each file,in blocks
            显示每个文件分配的大小
        -S  sort by file size
            按文件大小排序,结合-l选项使用更清楚
        -r,--reverse(逆向)
            reverse order while sorting
            逆向排序显示,跟ls命令单独使用的结果相反
        -R,--recursive
            list subdirectories recursively
            连同子目录的内容一并列举(此命令慎用)
        -g  like -l,but don't list owner
        -G,--no-group

6、cp

Copy Files and Directories,复制文件和目录,如果目标不存在,则创建目标文件或者目录,如果目标存在,则直接覆盖
    【SYNOPSIS】
    cp [OPTION]... [-T] SOURCE DEST     /*单源复制,SOURCE源文件,DESTINATION目标*/
    cp [OPTION]... SOURCE... DIRECTORY      /*多源复制*/
    cp [OPTION]... -t DIRECTORY SOURCE...       /*多源复制*/
    【OPTION】
        -a,--archive
            same as -dR --preserve=all
            保留源文件的所有属性,递归复制
        -i,--interactive
            prompt before overwrite 覆盖之前交互提示
        -f,--force
            if an existing destination file cannot be opened,remove it and try again
            如果目标文件无法打开,则删除它并重新尝试复制。也就是不进行提示,强制复制
        -R,-r,--recursive
            copy directories recursively 递归式复制
        -d,same as --no-dereference --preserve=links
            如果源文件是个链接文件,则将链接文件的源文件内容复制,但不指向源文件;选项与-p(P)同

7、mv

Move or Rename files
    【SYNOPSIS】
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
    【OPTION】
        -i,--interactive 交互式进行移动或者重命名
        -f,--force  强制移动或者重命名
        -n,--no-clobber
            don't overwrite an existing file 对已存在文件不进行重写

8、rm

Remove files and directories
    【SYNOPSIS】
    rm [OPTION]... FILE...
    【OPTION】
        -f,--force  强制删除不提示
        -i  每删除一个文件均提示确认
        -I  当删除多于3个文件时只提示一次
        --no-preserve-root  don't treat '/' specially   可删除/

9、cat

concatenate files and print on the standard output 标准输出文件内容
    【SYNOPSIS】
    cat [option]... [file]...
    【OPTION】
        -A,--show all   equivalent to -vET
        -b,--number-nonblank
            number nonempty output lines,overrides -n
            非空白行显示行号显示内容,与-n选项相反
        -E,--show-ends
            display $ at the end of each line
            每行结尾处带$符号显示
        -n,--number
            number all output lines 每行显示行号,包括空白行
        -T,--show-tabs
            display TAB characters as ^I,用^I替换TAB空白字符显示文件
        -v,--show-nonprinting
            use ^ and M- notation,except for LFD and TAB
        -s,--squeeze-blank
            suppress repeated empty output lines 重复空白行只显示一行
    【FOR EXAMPLE】

10、tac

concatenate files and print in reverse  反向输出文档内容,是cat的反义<br />

11、 more

    file perusal filter for crt viewing     分页式查看文件内容,类似cat
    【SYNOPSIS】          
    more [options] file [...]
    【OPTION】
        -number This  option  specifies an integer number which
          is the screen size (in lines)
            设置每页显示的行数
        -d  display help instead of ring bell
            显示帮助信息:SPACE继续查看,q退出
        -l  suppress pause after form feet
            遇到^字符时不会终止浏览
        -p  清屏后显示内容
        -c  显示内容后清理其他内容 
        -s  遇到连续重复的空白行后只显示一行
        +NUM    display file beginning from line number NUM
                从给定的行号开始显示全部内容
        +/string    display file beginning from search string match
                根据匹配字符串的位置开始显示文档内容
    【FOR EXAMPLE】
            [root@localhost tmp]# more -10 +/unset functions 
                ...skipping
                  . /etc/profile.d/lang.sh 2>/dev/null
                  # avoid propagating LANGSH_SOURCED any further
                  unset LANGSH_SOURCED
                fi                  
                # Read in our configuration
                if [ -z "${BOOTUP:-}" ]; then
                  if [ -f /etc/sysconfig/init ]; then
                      . /etc/sysconfig/init
                  else
                --More--(13%)

12、less

    opposite of more 同样是翻页显示内容,只是less可以上下翻页及其他功能
    【OPTION】
        -b <缓冲区大小> 设置缓冲区的大小
        -e  当文件显示结束后,自动离开           
        -f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件          
        -g  只标志最后搜索的关键词         
        -i  忽略搜索时的大小写           
        -m  显示类似more命令的百分比          
        -N  显示每行的行号         
        -o <文件名> 将less 输出的内容在指定文件中保存起来          
        -Q  不使用警告音          
        -s  显示连续空行为一行           
        -S  行过长时间将超出部分舍弃            
        -x <数字> 将“tab”键显示为规定的数字空格

13、head

    output the first part of files 显示文件的第一部分
    【SYNOPSIS】
    head [OPTION]... [FILE]...
    【OPTION】
        -c,--bytes  按字节输出内容,例如:-c 20 显示前20个字节的内容
        -n,--lines  按行数显示内容
        -q,--quiet  静默模式,不显示文件名
        -v,--verbose 总是显示文件名
    【FOR EXAMPLE】
        [root@localhost tmp]# head -v -n 3 functions 
        ==> functions <==
        # -*-Shell-script-*-
        #
        # functions This file contains functions to be used by most or all
        [root@localhost tmp]# head -c 20 issue
        hwo are you?
        fine,th[root@localhost tmp]#

14、tail

    Print the last 10 lines of each FILE to standard output. 标准输出每一份文件的最后10行
    【SYNOPSIS】
    tail [OPTION]... [FILE]...
    【OPTION】
        -f,--follow     随着文件自增将内容追加到标准输出
        -n,--lines      设定显示的行数
        -s,--sleep-interval=N
                与-f参数一起用,表示刷新间隔
        -c,--bytes=K    从K字节位置显示内容
    【FOR EXAMPLE】       
        基本用法同head类似

15、file

    Determine type of FILEs 详细明确文件类型
    【SYNOPSIS】
    file [OPTION...] [FILE...]
    【OPTION】
    【FOR EXAMPLE】
        [root@localhost tmp]# file x/af1.txt 
        x/af1.txt: ASCII text
文件的元数据

stat

Display file or file system status
[root@localhost tmp]# stat issue
  File: ‘issue’  文件名
  Size: 191   文件大小      Blocks: 8  块大小      IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 101365706   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-09-25 11:42:52.578622335 +0800访问时间
Modify: 2016-09-25 11:42:48.371622436 +0800修改时间
Change: 2016-09-25 11:42:48.372622436 +0800元数据改变时间
 Birth: -

stat 默认会得到文件的元数据,其包括该文件的所有信息如上;我们通常可以根据文件的时间戳来确定文件的被使用情况,可通过命令touch来修改时间戳数据,不做详细解释。

命令别名

alias

Define or display aliases   定义或者显示aliases
alias作为一个linux内置命令,可以重新定义已有命令的格式;例如:alias rm=rm -i之后,使用rm命令则表示删除file之前且确认是否删除
【OPTION】
    -p  Print all defined aliases in a reusable format 显示所有定义的aliases
【FOR EXAMPLE】
    [root@localhost ~]# alias -p
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    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'
    alias vi='vim'

    [root@localhost ~]#alias tail='tail -f'
命令引用

命令的执行结果有很多种方式,其中之一如下:

  • “也就是1(!)之前的那个符号,表示优先执行

[root@localhost tmp]# cat `pwd`
cat: /tmp: Is a directory
[root@localhost tmp]# pwd
/tmp
[root@localhost tmp]# cat /tmp
cat: /tmp: Is a directory
  • 变量,简单的命令引用可使用变量

[root@localhost ~]# cat $(pwd)
cat: /root: Is a directory
与上一个命令的结果一样。

命令行展开演示

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

        [root@localhost tmp]# mkdir -pv /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@localhost tmp]# ls
        a_c  a_d  b_c  b_d  issue  skel  test1  x

     创建/tmp/mylinux目录

    [root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-
    scripts},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/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@localhost tmp]# tree -d /tmp/mylinux/
        /tmp/mylinux/
        ├── bin
        ├── boot
        │   └── grub
        ├── dev
        ├── etc
        │   ├── rc.d
        │   │   └── init.d
        │   └── sysconfig
        │       └── network-scripts
        ├── lib64
        ├── proc
        ├── sbin
        ├── sys
        ├── tmp
        ├── usr
        │   └── local
        │       ├── bin
        │       └── sbin
        └── var
            ├── lock
            ├── log
            └── run         
        22 directories

显示/var目录下所有以了开头,以一个小写字母结尾,且中间至少有一位数字(可以有其他字符)的文件或者目录

[root@localhost tmp]# ls -dl /var/l*[0-9]*[a-z]

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

[root@localhost tmp]#ll -d /etc/[0-9]*[^0-9]

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

[root@localhost tmp]#ll -d /etc/[^a-z][^[:digit:]]*
[root@localhost tmp]# ll -d /tmp/[^[:alpha:]][^[:digit:]]*
-rw-r--r--. 1 root root 0 Sep 25 12:22 /tmp/1tfile2016n
-rw-r--r--. 1 root root 0 Sep 25 13:35 /tmp/2ABsdf
-rw-r--r--. 1 root root 0 Sep 25 13:34 /tmp/2asdljfl

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

[root@localhost tmp]#touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
[root@localhost tmp]#ll -a 
-rw-r--r--.  1 root root    0 Sep 25 13:39 tfile-2016-09-25-13-39-47

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

[root@localhost tmp]#mkdir mytest1
[root@localhost tmp]#cp -af /etc/p*[^0-9] /tmp/mytest1
[root@localhost mytest1]# ls
pam.d   passwd-  plymouth  popt.d   ppp             printcap  profile.d  python
passwd  pki      pm        postfix  prelink.conf.d  profile   protocols

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

[root@localhost tmp]#mkdir mytest2
[root@localhost tmp]# cp -af /etc/*.d /tmp/mytest2/
[root@localhost mytest2]# ls
bash_completion.d  dnsmasq.d      logrotate.d     popt.d          rc2.d  rc.d        sysctl.d
binfmt.d           dracut.conf.d  modprobe.d      prelink.conf.d  rc3.d  rsyslog.d   tmpfiles.d
chkconfig.d        grub.d         modules-load.d  profile.d       rc4.d  rwtab.d     xinetd.d
cron.d             init.d         my.cnf.d        rc0.d           rc5.d  statetab.d  yum.repos.d
depmod.d           ld.so.conf.d   pam.d           rc1.d           rc6.d  sudoers.d

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

[root@localhost tmp]# mkdir mytest3
[root@localhost tmp]# cp -a /etc/[lmn]*.conf /tmp/mytest3/
[root@localhost tmp]# ls -Al mytest3/
total 48
-rw-r--r--.  1 root root   28 Feb 28  2013 ld.so.conf
-rw-r-----.  1 root root  191 Oct 29  2014 libaudit.conf
-rw-r--r--.  1 root root 2391 Oct 13  2013 libuser.conf
-rw-r--r--.  1 root root   19 Sep 12 22:32 locale.conf
-rw-r--r--.  1 root root  662 Jul 31  2013 logrotate.conf
-rw-r--r--.  1 root root 5171 Jun 10  2014 man_db.conf
-rw-r--r--.  1 root root  936 Mar  6  2015 mke2fs.conf
-rw-r--r--.  1 root root 1717 Sep 12 22:32 nsswitch.conf
-rw-r--r--.  1 root root 2050 Sep 12 22:32 ntp.conf


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