Linux(四)Linux命令详解之文件和目录处理命令

前言

从本篇文章开始我将开始分享Linux常用的命令了。其实刚开始的时候会经常出错,因为你还不熟悉。
这里有两个Linux最常见的报错提示:

  • Command not found
    找不到命令(我们敲入的命令有误或者该命令还没安装)
  • No Such file or directory
    找不到我们输入的文件或者目录。

这只是我们在后面操作Linux系统时会遇到的两个很常见的问题报错提示,其实大家在后面遇到英文
提示的信息,不要刻意的去忽视,这是用来帮助我们解决问题的很好的提示。而英文大家遇到不会了
就去谷歌翻译,百度翻译查查,总归就是那些单词。

一、目录处理命令

1.1 显示目录文件命令:ls
  • 命令名称:ls
  • 英文原意:list
  • 命令所在路径:/bin/list
  • 执行权限:所有用户
  • 功能:显示当前目录的文件和目录
  • 语法:ls 选项【-ald】【文件或目录】
    -a 显示所有文件,包括隐藏文件
    -l 详细信息显示
    -d 仅显示目录名,而不显示目录下的内容列表
    -t 用文件和目录的更改时间排序,可以用第一个显示的文件判断最近修改的文件.
    -R 递归显示某个命令下的所有目录和文件

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

[lance@master ~]$ ll
total 11564
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ ls -dl
drwx------. 4 lance lance 231 Mar 30 14:09 .
[lance@master ~]$ ls -lt
total 11564
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ ls -la
total 11584
drwx------. 4 lance lance      231 Mar 30 14:09 .
drwxr-xr-x. 3 root  root        19 Feb 21 20:40 ..
-rw-------. 1 lance lance     1939 Mar 30 12:46 .bash_history
-rw-r--r--. 1 lance lance       18 Aug  3  2016 .bash_logout
-rw-r--r--. 1 lance lance      193 Aug  3  2016 .bash_profile
-rw-r--r--. 1 lance lance      392 Feb 21 22:47 .bashrc
-rw-------. 1 lance lance        0 Mar 28 12:02 .dbshell
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
-rw-------. 1 lance lance        0 Mar 28 12:02 .mongorc.js
drwxrwxr-x. 2 lance lance       40 Feb 21 22:47 .oracle_jre_usage
-rw-------. 1 lance lance     1588 Mar 28 20:25 .rediscli_history
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz

关于目录或者文件的详细信息的说明:
举例:

-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
  • 第一部分:-rw-rw-r–
    第一个字符表示文件类型,文件类型共有一下几种:
      1)“d” 表示目录文件(Directory File)
      2)“-” 表示常规文件(Regular File)
      3)“c” 表示字符设备文件(Character Device File)
      4)“b” 表示块设备文件(Block Device File)
      5)“s” 表示套接字文件(Sock File)
      6)“l” 表示链接文件(Link File)
      7)“p” 表示管道文件(Pipe File)
    第二、三、四个字符:表示拥有者的读、写、执行权限。
    第五、六、七个字符:表示同组人的读、写、执行权限。
    第八、九、十个字符:表示其他人的读、写、执行权限。
    注意:
      “r” 表示“读”权限
      “w” 表示“写”权限,对于目录来说表示可生成子目录或者文件的权限
      “x” 表示“执行”权限,对于目录来说表示可以查找该目录下的子目录或者文件的权限
      “-” 表示没有权限

  • 第二部分:1
    如果该文件是目录文件,则该数字表示该目录下的子目录数
    如果该文件是普通文件,则该数字表示该文件的硬链接(别名)

  • 第三部分:lance
    表示该文件的拥有者

  • 第四部分:lance
    表示该文件的所属组

  • 第五部分:27
    表示该文件的所占磁盘空间的大小

  • 第六部分:Mar 30 14:09
    表示该文件的最后一次修改时间

  • 第七部分:lance.txt
    表示该文件的文件名

1.2 创建目录命令:mkdir
  • 命令名称:mkdir
  • 英文原意:make directories
  • 命令所在路径:/bin/mkdir
  • 执行权限:所有用户
  • 功能:创建新目录
  • 语法:mkdir 【-p】【目录名】
     -p 递归创建

举例:

[lance@master ~]$ mkdir createmk
[lance@master ~]$ mkdir oneset/lance
mkdir: cannot create directory ‘oneset/lance’: No such file or directory
[lance@master ~]$ mkdir -p oneset/lance
[lance@master ~]$ mkdir oneset
mkdir: cannot create directory ‘oneset’: File exists

注意:

  • 创建的目录已经存在, 那么 Linux 会提示我们 Linux 无法创建它。
  • 不带任何参数运行 mkdir 命令会在当前目录下创建目录。
  • 不带上-p,如果新建的文件上级目录不存在则不会执行成功这种说法是错误的。
    加或者不加上 -p 前面的目录没有得都会依次创建。
  • 创建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限。
1.3 切换目录命令:cd
  • 命令名称:cd
  • 英文原意:change directory
  • 命令所在路径:shell 内置命令
  • 执行权限:所有用户
  • 功能:切换目录
  • 语法: cd【目录名】

使用介绍:

切换到指定目录:cd /oneset
回到上一级目录:cd .. 
还是在当前目录:cd .
返回上两级目录:cd ../..
返回进入此目录之前所在的目录:cd  -  

举例:

[lance@master oneset]$ cd lance/
[lance@master lance]$ cd -
/home/lance/oneset
[lance@master oneset]$ cd ..
[lance@master ~]$ 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命令可以分辨内部命令与外部命令:

[lance@master ~]$ type cd
cd is a shell builtin
[lance@master ~]$ type mkdir
mkdir is /usr/bin/mkdir

内部命令和外部命令最大的区别之处就是性能。内部命令由于构建在shell中而不必创建多余的进程,
要比外部命令执行快得多。因此和执行更大的脚本道理一样,执行包含很多外部命令的脚本会损害
脚本的性能。

1.4 显示当前目录命令:pwd
  • 命令名称:pwd
  • 英文原意:print working directory
  • 命令所在路径:/bin/pwd
  • 执行权限:所有用户
  • 功能:显示当前目录
  • 语法: pwd

举例:

[lance@master softwere]$ pwd
/home/lance/softwere
1.5 删除空目录命令:rmdir
  • 命令名称:rmdir
  • 英文原意:remove empty directories
  • 命令所在路径:/bin/rmdir
  • 执行权限:所有用户
  • 功能:删除空目录(如果目录下存在文件则不能删除)
  • 语法: rmdir 【空目录名】

举例:

注意:由于此命令只能删除空目录,在实际操作中应用的不多,后面我们讲解 rm 命令可以替代。

1.6 复制文件或目录命令:cp
  • 命令名称:cp
  • 英文原意:copy
  • 命令所在路径:/bin/cp
  • 执行权限:所有用户
  • 功能:显示当前目录
  • 语法: cp -rp 【原文件或目录】【目标目录】
    -r 复制目录
    -p 保留文件属性

举例:
- 把家目录的lance.txt复制到oneset目录下

[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance        6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance        6 Mar 30 15:06 oneset
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ cp lance.txt oneset/
[lance@master ~]$ ll oneset/
total 4
-rw-rw-r--. 1 lance lance 27 Mar 30 15:08 lance.txt
  • 可以用于复制后文件改名家目录的lance.txt复制到oneset目录下并修改为copylance.txt
[lance@master ~]$ cp lance.txt oneset/copylance.txt
[lance@master ~]$ ll oneset/
total 8
-rw-rw-r--. 1 lance lance 27 Mar 30 15:10 copylance.txt
-rw-rw-r--. 1 lance lance 27 Mar 30 15:08 lance.txt

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

1.7 剪切文件或目录命令:mv
  • 命令名称:mv
  • 英文原意:move
  • 命令所在路径:/bin/mv
  • 执行权限:所有用户
  • 功能:剪切文件、改名
  • 语法: mv【原文件或目录】【目标目录】

举例:

[lance@master ~]$ mkdir tmp
[lance@master ~]$ mv oneset/ tmp/
[lance@master ~]$ ll tmp/
total 0
drwxrwxr-x. 2 lance lance 44 Mar 30 15:10 oneset
1.8 删除文件或目录命令:rm
  • 命令名称:rm
  • 英文原意:remove
  • 命令所在路径:/bin/rm
  • 执行权限:所有用户
  • 功能:剪切文件、改名
  • 语法: rm -rf 【文件或目录】
    -r 删除目录
    -f 强制执行

举例:

[lance@master ~]$ rm test
rm: cannot remove ‘test’: Is a directory
[lance@master ~]$ rm -r test/
[lance@master ~]$ mkdir test1
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance        6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
drwxrwxr-x. 2 lance lance        6 Mar 30 15:22 test1
drwxrwxr-x. 3 lance lance       20 Mar 30 15:15 tmp
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ rm -rf tmp/ test1/
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance        6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz

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

二、文件处理命令

2.1 创建空文件命令:touch
  • 命令名称:touch
  • 命令所在路径:/bin/touch
  • 执行权限:所有用户
  • 功能:创建空文件
  • 语法: touch 【文件名】

举例:

[lance@master ~]$ touch test
[lance@master ~]$ touch test1 test2
[lance@master ~]$ touch "test1 test2"
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance        6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance       27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance       66 Feb 22 00:31 softwere
-rw-rw-r--. 1 lance lance        0 Mar 30 15:26 test
-rw-rw-r--. 1 lance lance        0 Mar 30 15:26 test1
-rw-rw-r--. 1 lance lance        0 Mar 30 15:26 test1 test2
-rw-rw-r--. 1 lance lance        0 Mar 30 15:26 test2
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz

注意:创建文件时,文件名不要有空格,不然就是创建了 两个文件.
如果我们想创建一个文件名为 test1 test2 ,应该用引号括起来(尽量避免文件名包含空格)

2.2 显示文件内容命令(适合内容较少的文件):cat
  • 命令名称:cat
  • 命令所在路径:/bin/cat
  • 执行权限:所有用户
  • 功能:显示文件内容(只能显示内容较少的文件)
  • 语法: cat【文件名】
    -n 显示文件行号

举例:通过不加参数-n和加参数-n来查看效果

[lance@master ~]$ cat lance.txt 
i love linux
use vary easy
thank you my  love
[lance@master ~]$ cat -n lance.txt 
     1  i love linux
     2  use vary easy
     3  thank you my  love

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

2.3 反向显示文件内容命令(适合内容较少的文件):tac
  • 命令名称:tac
  • 命令所在路径:/bin/tac
  • 执行权限:所有用户
  • 功能:显示文件内容(只能显示内容较少的文件)
  • 语法: tac【文件名】

举例:

[lance@master ~]$ cat lance.txt 
i love linux
use vary easy
thank you my  love
[lance@master ~]$ tac lance.txt 
thank you my  love
use vary easy
i love linux
2.4 分页显示文件内容命令(不能向前翻页):more
  • 命令名称:more
  • 命令所在路径:/bin/more
  • 执行权限:所有用户
  • 功能:分页显示文件内容
  • 语法: more【文件名】
    (空格)或f 翻页(一页一页的往后显示)
    (Enter) 换行(一行一行的往后显示)
    q 或 Q 退出

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

2.5 分页显示文件内容命令(可以前后翻页):less
  • 命令名称:less
  • 命令所在路径:/usr/bin/less
  • 执行权限:所有用户
  • 功能:分页显示文件内容
  • 语法: less【文件名】
    空格)或f 或PgDn 翻页(一页一页的往后显示)
    PgUp向前翻页
    (Enter) 换行或向下的箭头(一行一行的往后显示)
    向上的箭头(一行一行的往前显示)
    q 或 Q 退出
    输入/想搜索的字符,然后回车键

举例:查看etc目录下的 services 文件信息:less/etc/services。
主要是最后提到的搜索功能,我们在进入命令之后,输入/想搜索的字符,然后回车键,如下:

回车之后,如下显示:

2.6 显示文件内容命令(指定行数):head
  • 命令名称:head
  • 命令所在路径:/usr/bin/head
  • 执行权限:所有用户
  • 功能:显示文件的前面几行 
  • 语法: head【文件名】
    -n 指定显示的行数
    不加 -n 默认显示前 20 行数据

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

[lance@master ~]$ head -n 10 /etc/services 
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
2.7 反向文件内容命令(文件即时更新后也能动态显示,多用于日志文件显示):tail
  • 命令名称:tail
  • 命令所在路径:/usr/bin/tail
  • 执行权限:所有用户
  • 功能:显示文件的后面几行  
  • 语法: tail【文件名】
    -n 指定显示的行数
    -f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)

举例:显示 etc目录下的 services 文件后面 20 行 tail -n 20 -f /etc/services
我们也可以使用tailf -n 20 /etc/services

注意:如果我们想结束加上 -f显示的tail命令,通过 Ctrl+C。

三、总结

本篇文章主要讲解了Linux系统中的文件和目录处理命令显示目录文件信息 ls 这是我们最常用的,
然后创建目录命令 mkdir,切换目录命令 cd,显示当前目录 pwd,删除空目录命令 rmdir,这个
命令用的不多,如果我们想删除目录可以用 rm 命令,注意 rm 如果加上 -f 参数,那将没有提示,
直接将文件从系统中删除,需要特别注意,以免删除系统文件。然后我们接着介绍了复制文件或目录
命令 cp,剪切文件或目录命令 mv,注意mv命令在剪切后可以直接更改文件或目录名称。

之后就介绍了几个文件处理的命令,创建空文件 touch,显示文件内容的命令有很多,我们也不需要
记住那么多,首先less命令能显现文件内容比较多的文件,而且能前后翻页显示。再就是如果我们需
要动态监视文件内容的变化,比如某个日志文件,我们可以通过 tail 加上-f参数动态显示文件末尾
的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值