CH02_文件和目录命令


Linux命令的普遍语法格式

命令格式: 命令 【-选项】【参数】

  例子:   ls -la /etc

  说明: ①、个别命令使用不遵循此格式,【】这种符号表示可以省略

       ②、当有多个选项时,可以写在一起

       ③、简化选项(一般用一个-)与完整选项(一般用两个–)

         比如 ls -a 等于 ls –all

目录处理命令

显示目录文件命令:ls

①、命令名称:ls

  ②、英文原意:list

  ③、命令所在路径:/bin/ls

  ④、执行权限:所有用户

  ⑤、功能描述:显示目录文件

  ⑥、语法: ls 选项【-ald】【文件或目录】

     -a 显示所有文件,包括隐藏文件

     -l 详细信息显示

     -d 仅显示目录名,而不显示目录下的内容列表

     -h 人性化显示(hommization)

     -i 查看任意一个文件的i节点(类似于身份证唯一信息)

​   -t 用文件和目录的更改时间排序;可以用第一个显示的文件判断最近修改的文件

  注意:. 开头的文件除非是目录,否则就是隐藏文件.

创建目录命令:mkdir

①、命令名称:mkdir

  ②、英文原意:make directories

  ③、命令所在路径:/bin/mkdir

  ④、执行权限:所有用户

  ⑤、功能描述:创建新目录

  ⑥、语法: mkdir 【-p】【目录名】

     -p 递归创建

  例子:创建单个目录:mkdir /tmp/vae.txt

     创建多个目录:mkdir /tmp/a.txt /tmp/b.txt

  注意:1、创建的目录已经存在, 那么 Linux 会提示我们 Linux 无法创建它。

     2、不带任何参数运行 mkdir 命令会在当前目录下创建目录。

     3、不带上-p,如果新建的文件上级目录不存在则不会执行成功这种说法是错误的。加或者不加上 -p 前面的目录没有得都会依次创建。

     4、创建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限。

切换目录命令:cd

①、命令名称:cd

  ②、英文原意:change directory

  ③、命令所在路径:shell 内置命令

  ④、执行权限:所有用户

  ⑤、功能描述:切换目录

  ⑥、语法: cd【目录名】

  例子:切换到指定目录:cd /tmp/vae

​ 回到根目录:cd /

     回到上一级目录:cd ..

     还是在当前目录:cd .

     返回上两级目录:cd ../..

     返回进入此目录之前所在的目录:cd -

shell内置命令和外部命令的区别

大家可以看到前面的三个命令,ls命令和mkdir命令都有命令的所在路径,而cd命令我们说是shell内置命令。这两者便是Linux内置命令和外部命令。

  内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。

  外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等。

  用type命令可以分辨内部命令与外部命令:

显示当前目录命令:pwd

①、命令名称:pwd

  ②、英文原意:print working directory

  ③、命令所在路径:/bin/pwd

  ④、执行权限:所有用户

  ⑤、功能描述:显示当前目录

  ⑥、语法: pwd

  例子:显示当前目录:pwd

删除空目录命令:rmdir

①、命令名称:rmdir

  ②、英文原意:remove empty directories

  ③、命令所在路径:/bin/rmdir

  ④、执行权限:所有用户

  ⑤、功能描述:删除空目录(如果目录下存在文件则不能删除)

  ⑥、语法: rmdir 【空目录名】

  例子:删除指定空目录:rmdir /tmp/a

复制文件或目录命令:cp

①、命令名称:cp

  ②、英文原意:copy

  ③、命令所在路径:/bin/cp

  ④、执行权限:所有用户

  ⑤、功能描述:复制文件或目录

  ⑥、语法: cp -rp 【原文件或目录】【目标目录】

        -r 复制目录

         -p 保留文件属性

  例子:比如我们将 opt\ 目录下的a.txt 文件复制到 opt/a/b/c 目录下

可以用于复制后文件改名 :

注意复制目录的时候要加 -r选项。加-p属性之后会将原文件的一些属性比如修改时间等也原封不动的复制过去。如果不加-p属性,那么复制后的文件修改时间为当前系统时间。

剪切文件或目录命令:mv

①、命令名称:mv

  ②、英文原意:move

  ③、命令所在路径:/bin/mv

  ④、执行权限:所有用户

  ⑤、功能描述:剪切文件、改名

  ⑥、语法: mv【原文件或目录】【目标目录】

删除文件或目录命令:rm

①、命令名称:rm

  ②、英文原意:remove

  ③、命令所在路径:/bin/rm

  ④、执行权限:所有用户

  ⑤、功能描述:剪切文件、改名

  ⑥、语法: rm -rf 【文件或目录】

         -r 删除目录

         -f 强制执行

例子:在opt 目录下有两个目录 t1 ,t2\和文件a.txt,

rm -r t1 是删除这个目录,但是需要输入 y 来确认

rm -rf t2 是强制删除 t2 目录,不需要输入 y 来确认,这种做法很简单,但是容易误删文件,没有反悔的机会.

rm -rf t1 t2 同时删除两个目录

文件处理命令

创建空文件命令:touch

①、命令名称:touch

  ②、英文原意:

  ③、命令所在路径:/bin/touch

  ④、执行权限:所有用户

  ⑤、功能描述:创建空文件

  ⑥、语法: touch 【文件名】

  例子:在 opt 目录下创建 mylog.log 文件

注意:创建文件时,文件名不要有空格,不然就是创建了 两个文件

touch progrom files 这是创建了两个文件,progrom 和 files

如果我们想创建一个文件名为 progrom files ,应该用引号括起来(尽量避免文件名包含空格)

touch “progrom files”

显示文件内容命令:cat

①、命令名称:cat

  ②、英文原意:

  ③、命令所在路径:/bin/cat

  ④、执行权限:所有用户

  ⑤、功能描述:显示文件内容(只能显示内容较少的文件)

  ⑥、语法: cat -n【文件名】

        -n 显示文件行号

注意:此命令只能显示文件内容比较少的文件,如果文件内容很多,用cat命令是不合适的,视觉效果是屏幕不断滚动更新。

反向显示文件内容命令:tac

①、命令名称:tac

  ②、英文原意:

  ③、命令所在路径:/bin/tac

  ④、执行权限:所有用户

  ⑤、功能描述:显示文件内容(只能显示内容较少的文件)

  ⑥、语法: tac【文件名】

分页显示文件内容命令:more

①、命令名称:more

  ②、英文原意:

  ③、命令所在路径:/bin/more

  ④、执行权限:所有用户

  ⑤、功能描述:分页显示文件内容

  ⑥、语法: more【文件名】

    (空格)或f 翻页(一页一页的往后显示)

    (Enter) 换行(一行一行的往后显示)

     q 或 Q 退出

  例子:查看etc目录下的 services 文件信息:more /etc/services

分页显示文件内容命令(可以前后翻页):less

①、命令名称:less

  ②、英文原意:

  ③、命令所在路径:/usr/bin/less

  ④、执行权限:所有用户

  ⑤、功能描述:分页显示文件内容

  ⑥、语法: less【文件名】

    (空格)或f 或PgDn 翻页(一页一页的往后显示)

     PgUp向前翻页

    (Enter) 换行或向下的箭头(一行一行的往后显示)

    向上的箭头(一行一行的往前显示)

     q 或 Q 退出

显示文件内容命令(指定行数):head

①、命令名称:head

  ②、英文原意:

  ③、命令所在路径:/usr/bin/head

  ④、执行权限:所有用户

  ⑤、功能描述:显示文件的前面几行 

  ⑥、语法: head【文件名】

    -n 指定显示的行数

    不加 -n 默认显示前 20 行数据

  例子:显示 etc目录下的 services 文件前面 20 行 head -n 20 /etc/services

反向文件内容命令(文件即时更新后也能动态显示,多用于日志文件显示):tail

①、命令名称:tail

  ②、英文原意:

  ③、命令所在路径:/usr/bin/tail

  ④、执行权限:所有用户

  ⑤、功能描述:显示文件的后面几行 

  ⑥、语法: tail -nf【文件名】

    -n 指定显示的行数

    -f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)

  例子:显示 etc目录下的 services 文件后面 20 行 tail -n 20 -f /etc/services

字符串输出命令:echo

①、命令名称:echo

  ②、英文原意:

  ③、命令所在路径:/usr/bin/echo

  ④、执行权限:所有用户

  ⑤、功能描述:将string回显到标准输出 

  ⑥、语法: echo -n【文本内容】

    -n 不尾随换行符

       -e 启用解释反斜杠的转义功能  

       -E 禁用解释反斜杠的转义功能(默认) 

禁用/启用转义输出

输出到文件:追加文件内容

输出到文件:覆盖文件内容

在文件中查找字符串:grep

①、命令名称:grep

  ②、英文原意:

  ③、命令所在路径:/usr/bin/grep

  ④、执行权限:所有用户

  ⑤、功能描述:在指定的文本文件中查找指定的字符串 

  ⑥、语法: grep [-r] [-n] [-i] [-c] 查找目标 文件/目录

​ -d 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作

    -r 此参数的效果和指定”-d recurse”参数相同。

       -n 在显示符合样式的那一行之前,标示出该行的列数编号。

       -i 忽略字符大小写的差别。

​ -c 计算符合样式的列数。

案例1:在指定文件中查找

案例2:在目录中查找

在指定目录下查找文件:find

①、命令名称:find

  ②、英文原意:找到

  ③、命令所在路径:/usr/bin/find

  ④、执行权限:所有用户

  ⑤、功能描述:如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

  ⑥、语法:find path -option 参数

​ -name 名字

    -ctime 时间

       -type 类型

将目前目录及其子目录下所有txt 的文件列出来。

将目前目录其其下子目录中所有的文件/目录 列出

将目前目录及其子目录下所有最近 10 天内更新过的文件列出

利用脚本来处理文本文件:sed

①、命令名称:sed

  ②、英文原意:

  ③、命令所在路径:/usr/bin/sed

  ④、执行权限:所有用户

  ⑤、功能描述:Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

  ⑥、语法:sed [-hnV][-e

查看限定的行:sed [-n] 开始行数,结束行数p 文件名