常用文件管理命令及bash特性

文件管理命令,状态返回值,元数据,别名,命令行展开

常用的文件管理命令


ls

显示目标文件列表

语法

ls [选项] [文件路径]

选项

  • -a:显示所有文件,包含以“.”开头的隐藏文件

  • -l:以长格式显示文件列表

  • -c:按文件状态改变时间(i节点中的ctime)排序并输出目录内容。与-l连用时,使用文件的状态改变时间取代文件修改时间。

  • -t:按时间信息排序

  • -d:仅显示目录本身,而不显示其目录下的内容

  • -i:显示文件的inode信息

  • -A:显示除.和..之外的所有文件

  • -h:对文件大小进行单位换算

  • -r:逆序显示

  • -R:递归显示


cd

切换当前目录

语法

    cd [选项] [目录]

选项

  • -P:如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录

  • -L:如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。

实例

  •  不带任何参数时表示切换回家目录

  • cd ~表示切换回自己的家目录

  • cd -表示在上一次所在的目录与当前目录间来回切换

  • cd ..返回上级目录


pwd

pwd命令以绝对路径的方式显示用户当前工作目录


cp

复制文件和目录

语法

单源复制

cp [选项] [-T]SRC DEST

多源复制:

cp [选项] SOURCE DIRECTORY

cp [选项] -t DIRECTORY SOURCE···

注意:

  1. 源文件是文件时:
    1. 如果目标文件不存在,则创建目标文件,并复制源文件的内容到该文件中
    2. 如果目标文件存在:若目标文件是文件,则将源文件的内容覆盖至目标文件;若目标文件是目录,则在此目录下新建一个与源文件同名的文件,并将源文件中的内容填充到新建的文件中
  2. 源文件是目录时:必须使用-r选项递归复制

    1.  目标文件存在,则此目标文件必须是目录(否则会报错),在此目录下创建一个与源文件同名的目录,并将原文件中的所有内容复制到此目录中。
    2. 目标文件不存在时,则先创建目标目录,然后将源文件中的所有内容复制到此目录中
  3. 多源复制是,目标文件必须是目录。并且必须是事先存在的目录。

选项

  • -i:交互式复制
  • -r:递归复制目录及内部的所有内容

  • -d:不复制符号链接所指向的文件,只复制此符号链接,并保护在副本中原文件之间的硬链接

  • -a:归档;复制时尽可能保持文件的结构和属性,不保持目录结构,等同于-dpR

  • -p:保持原有稳健的属性信息
  • -f:强制覆盖
  • -v:显示过程

mv

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖

语法

    mv [选项] 源文件 目标文件

mv [选项] 源文件… 目录

mv [选项] –target-directory=DIRECTORY SOURCE…

注意

  1.  目标文件是文件,当此文件不存在时,执行的是剪切操作,并将文件名改为目标文件名;如果目标文件已存在,则执行覆盖。
  2.  目标文件是目录时,若此目录下由于源文件的文件名相同的文件,则执行覆盖,否则执行剪切操作

选项

  • -b:–backup[=CONTROL];当文件存在时,覆盖前为其创建一个备份。
  • -i:交互式操作,覆盖前先询问用户
  • -v:显示过程

  • -f:强制覆盖,直接覆盖,不询问用户

rm

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。注意:使用rm命令要格外小心。一旦删除了一个文件,就无法再恢复。

语法

    rm [选项] 文件或目录

选项

  • -f:强制删除文件或目录,不提示用户
  • -i:交互式操作,执行删除操作前询问用户是否删除

  • -r:递归处理;通常用于删除目录及其子目录和文件
  • -v:显示执行过程


mkdir

用于创建目录,创建目录时需要保证目录前面的路径必须事先存在,否则会报错。

注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录

语法

    mkdir [选项] 目录…

选项

  • -p:当目录存在是不返回错误,不存在时自动创建所需各目录
  • -v:显示执行过程


rmdir

rmdir用于删除空目录,删除目录时,必须具有对其父目录的写权限。

语法

    rmdir [选项] 空目录…

选项

  • -p:如果目录有多个路径名组成,则从最后一个路径名开始依次删除
  • -v:现实执行过程


touch

touch有两个功能:一是修改文件的时间戳记。而是用来创建新的空文件

语法

    touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)…

选项

  • -a:–time=atime,–time=access, –time=use;修改文件的存取时间
  • -c:不建立任何文件
  • -m:–time=mtime, –time=modify;只修改修改时间,通常结合使用-acm来修改文件的时间戳
  • -r ref_file(参照文件):以指定文件为参照,修改文件的时间戳


rename

rename命令用字符串替换的方式批量改变文件名。

语法

    rename [选项] 表达式 替换文件…

选项

  • -v:显示执行过程
  • -s:在符号连接上执行

用法


whereis

whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。

语法

    whereis [选项] 程序名称

选项

  • -b:只查找二进制文件
  • -m:只查找说明文件
  • -s:只查找源代码文件


which

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

语法

    which [选项] 程序名称

选项

  • -n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
  • -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
  • -w:指定输出时栏位的宽度

事例


file

file命令用来确定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

语法

    file [选项] 文件

  • 选项
  • -b:列出结果是不显示文件名
  • -c:详细显示执行过程
  • -L:直接显示符号链接执行的文件类别


ln

ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。

语法

    ln [options] source [dest]

ln [options] source…directory

选项

  • -d,-F,–directory:允许超级用户创建目录硬链接
  • -f:–force;强制建立文件或目录的硬链接,不论文件或目录是否存在
  • -s:对原文件建立符号链接


tree

tree命令以树状图列出目录的内容

语法

    tree [选项] 目录

选项

  • -a:显示所有文件和目录
  • -d:仅显示目录列表
  • -s:列出文件和目录大小


cat

cat命令用于连续的将文件的内容显示到标准输出设备上

语法

    cat [选项] file

选项

  • -n:显示行号
  • -b:显示非空白行的行号
  • -A:显示所有非正常的所有符号
  • -E:显示行结束符
  • -T:显示制表符

1 werer$ 2 wetgfy$ 3 $ 4 $ 5 qwettd$ 6 weted$ 7 $ 8 wtdwt$ 9 s$ 10 $ 11 wetyff$ 12 $

实例

  • 将两个文件链接在一起显示


tac

tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。

语法

    tac [选项] 文件

选项

  • -a或——append:将内容追加到文件的末尾;
  • -i或——ignore-interrupts:忽略中断信号。


head

head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。

语法

    head [选项] 文件

选项

  • -n:指定显示头部内容的n行;
  • -c #;:指定显示头部的#个字符;
  • -v:总是显示文件名的头信息;
  • -q:不显示文件名的头信息。


tail

tail命令用于输出文件的末尾部分

语法

    tail [选项] 文件

选项

  • -n:显示文件内容末尾n行
  • -c#:显示某位#个字符
  • ………


more

more是基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)

该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:

  • 按Space键:显示文本的下一屏内容。
  • 按Enier键:只显示文本的下一行内容。
  • 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
  • 按H键:显示帮助屏,该屏上有相关的帮助信息。
  • 按B键:显示上一屏内容。
  • 按Q键:退出rnore命令

语法

    more [选项] file…

选项

  • -<数字>:指定每屏显示的行数;
  • -d:显示“[press space to continue,’q’ to quit.]”和“[Press ‘h’ for instructions]”;
  • -c:不进行滚屏操作。每次刷新这个屏幕;
  • -s:将多个空行压缩成一行显示;
  • -u:禁止下划线;
  • +<数字>:从指定数字的行开始显示。


less

less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。

语法

    less [选项] 文件

选项

  • -e:文件内容显示完毕后,自动退出;
  • -f:强制显示文件;
  • -g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
  • -l:搜索时忽略大小写的差异;
  • -N:每一行行首显示行号;
  • -s:将连续多个空行压缩成一行显示;
  • -S:在单行显示较长的内容,而不换行显示;
  • -x<数字>:将TAB字符显示为指定个数的空格字符。

文件的元数据


文件有两类数据:

元数据:metadata,文件的属性数据

数据:data,文件内容,文件的实际数据

元数据的内容包括inode大小、权限、属主属组 时间戳、数据块指针

stat

stat命令用于查看文件的元数据信息

相关参数描述

  • File:文件名;
  • Size:文件大小;
  • Blocks:文件占了多少数据块;
  • IO Block:文件所占数据块的大小;
  • Device:文件所在的硬盘的位置;
  • Inode:文件的节点;
  • Links:文件的链接数;
  • Access:用户或组对该文件的访问权限;
  • Uid:文件的属主;
  • Gid:文件的属组;
  • Context:文件的安全上下文;
  • Access:文件上一次的访问时间,又称为access time;
  • Modify:文件最近一次修改的时间,又称为modify time;
  • Change:文件属性最近一次改动时间,又称为change time

touch命令修改时间戳


命令别名


命令别名就是将一个命令的用其他名字代替,可以通过alias命令来实现:

alias不带任何参数时,将显示当前shell进程下所有可用的命令别名的定义信息。

定义别名

通过命令行定义的命令别名只对当前的shell有效,退出此shell后自动失效。要想别名永久生效,需要将别名定义在配置文件中。如果定义的别名与原命令的名称相同,如果要执行原命令可使用“\COMMAND” 用以定义别名的配置文件有两个:

仅对当前用户生效的别名配置,是在用户家目录下的.bashrc文件中定义

对所有用户都生效的别名配置,是在/etc/bashrc文件中定义


命令结果引用


引用命令行的执行结果可以使用“$(command)”或者反引号 将命令行括起来。

例如:usid=id root` 等同于  usid=$(id root)

命令行状态返回值和命令行展开

命令状态返回值

命令的执行结果状态分为两种,bash通过状态返回值来输出结果:

成功:返回值为0

失败:返回值是1-255

命令执行完成后,其状态返回值保存在bash的特殊变量$?中。查看器其状态返回值可用:echo $?


命令行展开


命令行展开的几种方式:

    ~:展开为用户的主目录

~USERNAME:展开为指定用户的主目录

{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径

实例

  • 在当前目录下创建a和b目录,并在a目录下创建c目录


练习


  • 请使用命令行展开功能来完成以下练习:

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

(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

 

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

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

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

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

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

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

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

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/112416

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

评论列表(1条)

  • 马哥教育
    马哥教育 2018-08-28 14:33

    写的很棒,完全可以当范文了,希望可以再接再厉,继续保持

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code