Linux命令之mkdir,cat,touch,vi/vim的详解

 更新时间:2023年01月13日 14:59:22   作者:小熊coder  
这篇文章主要介绍了Linux命令之mkdir,cat,touch,vi/vim的内容,文章内容很详细,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

mkdir命令语法

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

命令格式

mkdir [选项] 目录…

命令功能

通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。

要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。

并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。

命令参数

  • -m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
  • -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
  • -v, --verbose 每次创建新目录都显示信息
  • –help 显示此帮助信息并退出
  • –version 输出版本信息并退出

mkdir命令示例

实例1:创建一个空目录

命令:

mkdir test1

输出:

[root@localhost soft]# cd test

[root@localhost test]# mkdir test1

[root@localhost test]# ll

总计 4drwxr-xr-x 2 root root 4096 10-25 17:42 test1

[root@localhost test]#

实例2:递归创建多个目录

命令:

mkdir -p test2/test22

输出:

[root@localhost test]# mkdir -p test2/test22

[root@localhost test]# ll

总计 8drwxr-xr-x 2 root root 4096 10-25 17:42 test1

drwxr-xr-x 3 root root 4096 10-25 17:44 test2

[root@localhost test]# cd test2/

[root@localhost test2]# ll

总计 4drwxr-xr-x 2 root root 4096 10-25 17:44 test22

[root@localhost test2]#

实例3:创建权限为777的目录

命令:

mkdir -m 777 test3

输出:

[root@localhost test]# mkdir -m 777 test3

[root@localhost test]# ll

总计 12drwxr-xr-x 2 root root 4096 10-25 17:42 test1

drwxr-xr-x 3 root root 4096 10-25 17:44 test2

drwxrwxrwx 2 root root 4096 10-25 17:46 test3

[root@localhost test]#

说明:

test3 的权限为rwxrwxrwx

实例4:创建新目录都显示信息

命令:

mkdir -v test4

输出:

[root@localhost test]# mkdir -v test4

mkdir: 已创建目录 “test4”

[root@localhost test]# mkdir -vp test5/test5-1

mkdir: 已创建目录 “test5”

mkdir: 已创建目录 “test5/test5-1”

[root@localhost test]#

实例五:一个命令创建项目的目录结构

命令:

mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}

输出:

[root@localhost test]# mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}

mkdir: 已创建目录 “scf”

mkdir: 已创建目录 “scf/lib”

mkdir: 已创建目录 “scf/bin”

mkdir: 已创建目录 “scf/doc”

mkdir: 已创建目录 “scf/doc/info”

mkdir: 已创建目录 “scf/doc/product”

mkdir: 已创建目录 “scf/logs”

mkdir: 已创建目录 “scf/logs/info”

mkdir: 已创建目录 “scf/logs/product”

mkdir: 已创建目录 “scf/service”

mkdir: 已创建目录 “scf/service/deploy”

mkdir: 已创建目录 “scf/service/deploy/info”

mkdir: 已创建目录 “scf/service/deploy/product”

[root@localhost test]# tree scf/

scf/

|-- bin

|-- doc

|  |-- info

|  `-- product

|-- lib

|-- logs

|  |-- info

|  `-- product

`-- service

   `-- deploy

    |-- info

     `-- product

12 directories, 0 files

[root@localhost test]#

cat命令语法

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

命令格式

cat [选项] [文件]…

命令功能

cat主要有三大功能:

  1. 一次显示整个文件:cat filename
  2. 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
  3. 将几个文件合并为一个文件:cat file1 file2 > file

命令参数

-A, --show-all      等价于 -vET

-b, --number-nonblank  对非空输出行编号

-e            等价于 -vE

-E, --show-ends     在每行结束处显示 $

-n, --number   对输出的所有行编号,由1开始对所有输出的行数编号

-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 

-t            与 -vT 等价

-T, --show-tabs     将跳格字符显示为 ^I

-u            (被忽略)

-v, --show-nonprinting  使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

cat命令示例

实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

命令:

cat -n log2012.log log2013.log 

输出:

[root@localhost test]# cat log2012.log 

2012-01

2012-02

======[root@localhost test]# cat log2013.log 

2013-01

2013-02

2013-03

======[root@localhost test]# cat -n log2012.log log2013.log 

   1 2012-01

   2 2012-02

   3

   4

   5 ======

   6 2013-01

   7 2013-02

   8

   9

   10 2013-03

   11 ======[root@localhost test]#

说明:

实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。

命令:

cat -b log2012.log log2013.log log.log

输出:

[root@localhost test]# cat -b log2012.log log2013.log log.log

   1 2012-01

   2 2012-02

   3 ======

   4 2013-01

   5 2013-02

   6 2013-03

   7 ======[root@localhost test]#

实例三:使用here doc来生成文件

输出:

[root@localhost test]# cat >log.txt <<EOF

> Hello

> World

> Linux

> PWD=$(pwd)

> EOF

[root@localhost test]# ls -l log.txt

-rw-r–r-- 1 root root 37 10-28 17:07 log.txt

[root@localhost test]# cat log.txt

Hello

World

Linux

PWD=/opt/soft/test

[root@localhost test]#

说明:

注意粗体部分,here doc可以进行字符串替换。

备注

tac (反向列示)

命令:

tac log.txt

输出:

[root@localhost test]# tac log.txt 

PWD=/opt/soft/test

Linux

World

Hello

说明:

tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!

touch命令语法

linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。

命令格式

touch [选项]… 文件…

命令参数

  • -a 或–time=atime或–time=access或–time=use 只更改存取时间。
  • -c 或–no-create 不建立任何文档。
  • -d 使用指定的日期时间,而非现在的时间。
  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  • -m 或–time=mtime或–time=modify 只更改变动时间。
  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  • -t 使用指定的日期时间,而非现在的时间。

命令功能

touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。

touch命令示例

实例一:创建不存在的文件

命令:

touch log2012.log log2013.log

输出:

[root@localhost test]# touch log2012.log log2013.log

[root@localhost test]# ll

-rw-r--r-- 1 root root  0 10-28 16:01 log2012.log

-rw-r--r-- 1 root root  0 10-28 16:01 log2013.log

如果log2014.log不存在,则不创建文件

[root@localhost test]# touch -c log2014.log

[root@localhost test]# ll

-rw-r--r-- 1 root root  0 10-28 16:01 log2012.log

-rw-r--r-- 1 root root  0 10-28 16:01 log2013.log

实例二:更新log.log的时间和log2012.log时间戳相同

命令:

touch -r log.log log2012.log

输出:

[root@localhost test]# ll

-rw-r--r-- 1 root root  0 10-28 16:01 log2012.log

-rw-r--r-- 1 root root  0 10-28 16:01 log2013.log

-rw-r--r-- 1 root root  0 10-28 14:48 log.log

[root@localhost test]# touch -r log.log log2012.log 

[root@localhost test]# ll

-rw-r--r-- 1 root root  0 10-28 14:48 log2012.log

-rw-r--r-- 1 root root  0 10-28 16:01 log2013.log

-rw-r--r-- 1 root root  0 10-28 14:48 log.log

实例三:设定文件的时间戳

命令:

touch -t 201211142234.50 log.log

输出:

[root@localhost test]# ll

-rw-r--r-- 1 root root  0 10-28 14:48 log2012.log

-rw-r--r-- 1 root root  0 10-28 16:01 log2013.log

-rw-r--r-- 1 root root  0 10-28 14:48 log.log

[root@localhost test]# touch -t 201211142234.50 log.log

[root@localhost test]# ll

-rw-r--r-- 1 root root  0 10-28 14:48 log2012.log

-rw-r--r-- 1 root root  0 10-28 16:01 log2013.log

-rw-r--r-- 1 root root  0 2012-11-14 log.log

说明:

-t time 使用指定的时间值 time 作为指定文件相应时间戳记的新值.此处的 time规定为如下形式的十进制数:

[[CC]YY]MMDDhhmm[.SS]

这里,CC为年数中的前两位,即”世纪数”;

YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch 将把年数CCYY限定在1969–2068之内.

MM为月数,DD为天将把年数CCYY限定在1969–2068之内.

MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.

此处秒的设定范围是0–61,这样可以处理闰秒.

这些数字组成的时间是环境变量TZ指定的时区中的一个时 间.

由于系统的限制,早于1970年1月1日的时间是错误的。

vi与vim的区别

vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。

它是我们使用Linux系统不能缺少的工具。

由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。

vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;因为程序简单,编辑速度相当快速。

vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。

vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。

vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。

比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

按ESC键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:

img

vi/vim 使用实例

使用 vi/vim 进入一般模式

如果你想要使用 vi 来建立一个名为 runoob.txt 的文件时,你可以这样做:

$ vim runoob.txt

直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!

img

按下 i 进入输入模式(也称为编辑模式),开始编辑文字

在一般模式之中,只要按下 i, o, a 等字符就可以进入输入模式了!

在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。

这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。

img

按下 ESC 按钮回到一般模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 Esc 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!

在一般模式中按下 :wq 储存后离开 vi

OK,我们要存档了,存盘并离开的指令很简单,输入 :wq 即可保存离开!

img

OK! 这样我们就成功创建了一个 runoob.txt 的文件。

到此这篇关于Linux命令之mkdir,cat,touch,vi/vim的详解的文章就介绍到这了,更多相关Linux之mkdir,cat,touch,vi/vim内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 实战 LAMP 服务器配置 完整篇

    实战 LAMP 服务器配置 完整篇

    LAMP 服务器配置 按部就班篇,大家可以学习试试。
    2009-06-06
  • ubuntu中swap(虚拟内存)设置方法

    ubuntu中swap(虚拟内存)设置方法

    这篇文章主要介绍了ubuntu中swap(虚拟内存)设置方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 在Ubuntu20.04中安装ROS Noetic的方法

    在Ubuntu20.04中安装ROS Noetic的方法

    这篇文章主要介绍了在Ubuntu20.04中安装ROS Noetic的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Linux虚拟机如何改中文

    Linux虚拟机如何改中文

    这篇文章主要介绍了Linux虚拟机如何改中文问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Linux里Makefile是什么?它是如何工作的?

    Linux里Makefile是什么?它是如何工作的?

    今天小编就为大家分享一篇关于makefile是什么及其工作原理的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • apache ab工具页面压力测试返回结果含义解释

    apache ab工具页面压力测试返回结果含义解释

    这篇文章主要介绍了apache ab工具页面压力测试返回结果含义解释,ab工具的使用非常简单,但返回结果中的数据有点多,看不懂的话就需要看看本文了,需要的朋友可以参考下
    2015-07-07
  • 腾讯云服务器部署前后分离项目之前端部署

    腾讯云服务器部署前后分离项目之前端部署

    本文主要介绍了腾讯云服务器部署前后分离项目之前端部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 高性能HTTP加速器Varnish-3.0.3搭建、配置及优化步骤

    高性能HTTP加速器Varnish-3.0.3搭建、配置及优化步骤

    这篇文章主要介绍了高性能HTTP加速器Varnish-3.0.3搭建、配置及优化步骤,需要的朋友可以参考下
    2016-02-02
  • 修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法

    修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法

    这篇文章主要介绍了修改ubuntu 18.04的sources.list源为阿里或清华镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 用DNSPod和Squid打造自己的CDN (八) 测试并运行SQUID

    用DNSPod和Squid打造自己的CDN (八) 测试并运行SQUID

    想要测试SQUID是否正常,必须要先把www.naizhao.com这个域名解析到2.2.2.2这个IP上。跟上一章一样,如果你是网通用户就不需要做任何操作,DNSPod会给你返回2.2.2.2这个IP
    2013-04-04

最新评论

?


http://www.vxiaotou.com