文章目录

  • 本章节目标:
  • 文件层级系统
    • FHS:文件层级系统
  • 重定向
    • I/O重定向:
  • 管道
  • tee命令:从标准输入读取数据,输出一份到屏幕,一份保存到文件
  • Linux下的编辑器
    • vi编辑器
    • vi/vim的特点
    • vi/vim的三种编辑模式
    • vi/vim的三种模式间的转换的方式
    • 模式切换
    • 打开文件方式
    • 关闭文件方式
    • 移动光标的方式
    • 字符编辑
    • 删除命令:d
      • 末行模式下d命令的使用:
    • 复制与黏贴
    • 替换、撤销编辑与反复编辑操作
    • 撤销编辑:u
    • 可视化文本查找:
    • 文本查找:
    • 复制与黏贴
    • 替换、撤销编辑与反复编辑操作
    • 撤销编辑:u
    • 可视化文本查找:
    • 文本查找:

本章节目标:

了解linux文件层级系统

掌握重定向的使用

掌握vi/vim编辑器

实验步骤:

文件层级系统

FHS:文件层级系统

/:根分区

[root@sh ~]# cd /
[root@sh /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

/boot:系统启动相关的文件,如内核(vmlinuz)、initrd(initramfs)以及grub(bootloader)

[root@sh /]# cd /boot/
[root@sh boot]# ls
config-3.10.0-693.el7.x86_64
efi
grub2
initramfs-0-rescue-45bb5dbec89e4e3abf2f495c53f2bfa9.img
initramfs-3.10.0-693.el7.x86_64.img
initramfs-3.10.0-693.el7.x86_64kdump.img
initrd-plymouth.img
symvers-3.10.0-693.el7.x86_64.gz
System.map-3.10.0-693.el7.x86_64
vmlinuz-0-rescue-45bb5dbec89e4e3abf2f495c53f2bfa9
vmlinuz-3.10.0-693.el7.x86_64

/dev:设备文件,不能单独分区

[root@sh /]# cd /dev/
[root@sh dev]# ls
agpgart          kmsg                sg1       tty25  tty5     usbmon1
autofs           log                 shm       tty26  tty50    usbmon2
block            loop-control        snapshot  tty27  tty51    vcs
bsg              mapper              snd       tty28  tty52    vcs1
btrfs-control    mcelog              sr0       tty29  tty53    vcs2
bus              mem                 stderr    tty3   tty54    vcs3
cdrom            mqueue              stdin     tty30  tty55    vcs4
char             net                 stdout    tty31  tty56    vcs5
console          network_latency     tty       tty32  tty57    vcs6
core             network_throughput  tty0      tty33  tty58    vcsa
cpu              null                tty1      tty34  tty59    vcsa1
cpu_dma_latency  nvram               tty10     tty35  tty6     vcsa2
crash            oldmem              tty11     tty36  tty60    vcsa3
disk             port                tty12     tty37  tty61    vcsa4
dm-0             ppp                 tty13     tty38  tty62    vcsa5
dm-1             ptmx                tty14     tty39  tty63    vcsa6
dri              pts                 tty15     tty4   tty7     vfio
fb0              random              tty16     tty40  tty8     vga_arbiter
fd               raw                 tty17     tty41  tty9     vhci
full             rfkill              tty18     tty42  ttyS0    vhost-net
fuse             rhel                tty19     tty43  ttyS1    vmci
hidraw0          rtc                 tty2      tty44  ttyS2    vsock
hpet             rtc0                tty20     tty45  ttyS3    zero
hugepages        sda                 tty21     tty46  uhid
hwrng            sda1                tty22     tty47  uinput
initctl          sda2                tty23     tty48  urandom
input            sg0                 tty24     tty49  usbmon0

/etc:配置文件目录

[root@sh ~]# cd /etc
[root@sh etc]# ls
adjtime                  hosts.deny                rc1.d
aliases                  init.d                    rc2.d
aliases.db               inittab                   rc3.d
alternatives             inputrc                   rc4.d
anacrontab               iproute2                  rc5.d
audisp                   issue.net                 rc.d
audit                    kdump.conf                rc.local
bash_completion.d        kernel                    redhat-release
bashrc                   krb5.conf                 resolv.conf

/home:普通用户家目录

[root@sh etc]# cd /home/
[root@sh home]# useradd xx
[root@sh home]# ls
xx

/root:管理员家目录

[root@sh home]# cd
[root@sh ~]# ls
anaconda-ks.cfg  vsftpd.con

/lib:库文件目录

[root@sh ~]# cd /lib
[root@sh lib]# ls
binfmt.d   grub        modules         sendmail          tuned
debug      kbd         modules-load.d  sendmail.postfix  udev
dracut     kdump       NetworkManager  sse2              yum-plugins
firewalld  kernel      polkit-1        sysctl.d
firmware   locale      python2.7       systemd
games      modprobe.d  rpm             tmpfiles.d

/media:挂载点目录,通常用来挂载移动设备

/mnt:挂载点目录,通常用来挂载额外的临时文件系统,比如另一块硬盘

[root@sh mnt]# ls
addons            images      repodata
EFI               isolinux    RPM-GPG-KEY-redhat-beta
EULA              LiveOS      RPM-GPG-KEY-redhat-release
extra_files.json  media.repo  TRANS.TBL
GPL               Packages

/opt:可选目录,早期通过用来安装第三方软件

[root@sh opt]# ls
123.tar.gz  456.tar.bz2  a  anaconda-ks.cfg

/proc:伪文件系统,内核映射文件,不能单独分区

[root@sh proc]# ls
1     2541  329  354  378  580  751          interrupts    scsi
10    2546  330  355  379  584  752          iomem         self
1163  2550  331  356  38   60   754          ioports       slabinfo
1165  2586  332  357  380  602  773          irq           softirqs
1175  2587  333  358  381  611  788          kallsyms      stat
1191  26    334  359  382  645  8            kcore         swaps
12    27    335  36   39   647  9            keys          sys
13    273   336  360  41   648  92           key-users     sysrq-trigger
14    274   337  361  453  652  953          kmsg          sysvipc
1419  275   338  362  454  655  acpi         kpagecount    timer_list
1421  28    339  363  465  658  buddyinfo    kpageflags    timer_stats
1478  283   340  364  466  661  bus          loadavg       tty
15    284   341  365  479  663  cgroups      locks         uptime
16    285   342  366  480  665  cmdline      mdstat        version
1690  288   343  367  481  667  consoles     meminfo       vmallocinfo
17    290   344  368  482  669  cpuinfo      misc          vmstat
18    292   345  369  483  671  crypto       modules       zoneinfo
19    295   346  370  484  7    devices      mounts
2     3     347  371  485  707  diskstats    mpt
2129  323   348  372  486  732  dma          mtrr
2133  324   349  373  487  738  driver       net
2185  325   350  374  488  740  execdomains  pagetypeinfo
2359  326   351  375  489  741  fb           partitions
25    327   352  376  5    742  filesystems  sched_debug
2535  328   353  377  557  743  fs           schedstat

/sys:伪文件系统,跟硬件设备相关的属性映射文件,不能单独分区

[root@sh proc]# cd /sys/
[root@sh sys]# ls
block  class  devices   fs          kernel  power
bus    dev    firmware  hypervisor  module

/tmp:临时文件目录

[root@sh sys]# cd /tmp
[root@sh tmp]# ls
ks-script-9juPkV.bz2
systemd-private-0ef4fc9689b94072b746c5a246474a9e-chronyd.service-eCSpmF
systemd-private-0ef4fc9689b94072b746c5a246474a9e-vgauthd.service-wvb0Yb
systemd-private-0ef4fc9689b94072b746c5a246474a9e-vmtoolsd.service-I0WHCV
systemd-private-7ceb34d638664ccea235651e67687b2b-chronyd.service-jFwEbV
systemd-private-7ceb34d638664ccea235651e67687b2b-vgauthd.service-C1cncp
systemd-private-7ceb34d638664ccea235651e67687b2b-vmtoolsd.service-rgUA79

/var:可变化的文件,比如log、cache。存放日志文件、pid文件、lock文件

[root@sh tmp]# cd /var
[root@sh var]# ls
adm    db     games     lib    log   opt       spool
cache  empty  gopher    local  mail  preserve  tmp
crash  ftp    kerberos  lock   nis   run       yp

/bin:可执行文件,用户命令

[root@sh var]# cd /bin/
[root@sh bin]# ls
[                      nl-list-sockets
a2p                    nl-monitor
addr2line              nl-neigh-add
alias                  nl-neigh-delete
apropos                nl-neigh-list
ar                     nl-neightbl-list

/sbin:管理命令

[root@sh bin]# cd /sbin/
[root@sh sbin]# ls
accessdb                   mke2fs
addgnupghome               mkfs
addpart                    mkfs.btrfs
adduser                    mkfs.cramfs
agetty                     mkfs.ext2
alternatives               mkfs.ext3
anacron                    mkfs.ext4
applygnupgdefaults         mkfs.minix

/usr:全局共享只读文件。提供操作系统核心功能,可以单独分区

/usr/bin

/usr/sbin

/usr/lib

/usr/local:第三方软件安装路径

/usr/local/bin

/usr/local/sbin

/usr/local/lib

/usr/local/etc

/usr/local/man

重定向

系统设定:

默认输入设备:标准输入,STDIN,0(键盘)

默认输出设备:标准输出,STDOUT,1(显示器)

标准错误输出:标准错误,STDERR,2(显示器)

I/O重定向:

>:覆盖输出
[root@sh ~]# echo 'abc' > 1
[root@sh ~]# cat 1
abc
>>:追加输出
[root@sh ~]# echo '123' >> 1
[root@sh ~]# cat 1
abc
123
2>:重定向错误输出
[root@sh ~]# lj
-bash: lj: 未找到命令
[root@sh ~]# lj 2> 1
[root@sh ~]# cat 1
-bash: lj: 未找到命令
&>:覆盖重定向标准输出和错误输出至同一文件
[root@sh ~]# ls &> 1
[root@sh ~]# cat 1
1
anaconda-ks.cfg
vsftpd.conf
[root@sh ~]# lj &> 1
[root@sh ~]# cat 1
-bash: lj: 未找到命令

管道

使用格式:命令1|命令2|命令3…

[root@sh ~]# cat -n anaconda-ks.cfg | head -11  #version=DEVEL

tee命令:从标准输入读取数据,输出一份到屏幕,一份保存到文件

[root@sh ~]# echo 'hello word ' | tee /root/3
hello word
[root@sh ~]# cat 3
hello word

Linux下的编辑器

Linux下常见的文本编辑器有:

emacs

pico

nano

joe

jed

vi

vi编辑器

vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。

vi编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。

vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。

vi/vim的特点

vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等。

vi/vim只是一个文本编辑工具,只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等

vi/vim的三种编辑模式

命令模式:用户执行命令

输入模式:用于用户输入文本、修改文本

末行模式:用于查找文本、保存修改

vi/vim的三种模式间的转换的方式

命令模式–>输入模式
i:insert,在当前光标所在字符的前面,转为输入模式

I:大写的i,在当前光标所在行的行首转换为输入模式

a:append,在当前光标所在字符的后面转换为输入模式

A:在当前光标所在行的行尾转换为输入模式

o:open,在当前光标所在行的下方新建一行并转为输入模式

O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式

模式切换

输入模式–>命令模式

ESC

命令模式–>末行模式

:

末行模式–>命令模式

ESC ESC

打开文件方式

vim filename //打开文件
[root@sh ~]# vi 1

vim +n filename //打开文件并定位到第n行

vim +/pattern filename //打开文件并定位到第一次被/pattern匹配到的内容行首

关闭文件方式

命令 方式
q 退出
wq 保存退出
w 保存
q! 强制退出
wq! 强制保存退出
ZZ 保存退出

移动光标的方式

移动光标的方式 移动方法 意义
逐字符移动 h
l
j
k
#h
#l
#j
#k
向左移动一个字符
向右移动一个字符
向下移动一个字符
向上移动一个字符
向左移动#个字符
向右移动#个字符
向下移动#个字符
向上移动#个字符
以单词为单位移动 w
e
b
#w
#e
#b
移动至下一个单词的词首
跳至当前或下一个单词的词尾
跳至当前或上一个单词的词首
以当前光标为起点跳至第#个单词的词首
以当前光标为起点跳至第#个单词的词尾
以当前光标为起点跳至第#个单词的词首
行内跳转 0
^
$
数字0,跳转到绝对行首
跳转到行首的第一个非空白字符
跳转到绝对行尾
行间跳转 gg
G
#gg
#G
跳转到第一行
跳转到最后一行
跳转至第#行
跳转至第#行
翻屏 ctrl+f
ctrl+b
ctrl+d
ctrl+u
向下翻一屏
向上翻一屏
向下翻半屏
向上翻半屏

字符编辑

x:删除光标所在处的单个字符

#x:删除光标所在处及其向后#个字符

xp:交换光标所在处及其后面字符的位置

删除命令:d

d$:表示删除当前光标所在位置到行尾的内容

d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容

d0:表示删除当前光标所在位置到绝对行首的内容

#d跳转符:删除跳转符指定范围内的#个【删除右边5个字符(5d–>)】

#dw

#de【向后删除#个字符】

#db【向前删除#个字符】

dd:删除当前光标所在行整行

#dd:删除包括当前光标所在行在内的#行

D:删除当前光标所在行的内容,保留空行

末行模式下d命令的使用:

startADD,endADDd

复制与黏贴

复制命令yy

黏贴命令p:光标下方黏贴

黏贴命令P:光标上方黏贴

替换、撤销编辑与反复编辑操作

替换r

R:替换模式,替换多个字符

r#:将当前光标字符替换成#,#可以是任何字符

撤销编辑:u

#u:直接撤销此前的#次操作

ctrl+r:还原最近一次撤销操作

重复前一次编辑操作: .

可视化文本查找:

可视化模式:可视化模式下可以对选取的内容进行前面讲的所有编辑操作

v:按字符选取内容

V:按矩形快(行)选取内容

文本查找:

/pattern:从上往下查找匹配的内容

?pattern:从下往上查找匹配的内容

n:可视化模式下可以对选取的内容进行前面讲的所有编辑操作

查找并替换与行号控制:

查找并替换:s

s命令只能在末行模式下使用,

使用格式:

ADDR1,ADDR2 s/pattern/pattern/g

末行模式下显示与取消显示行号

set nu:显示行号

set nonu:取消显示行号

startADD,endADDd

复制与黏贴

复制命令yy

黏贴命令p:光标下方黏贴

黏贴命令P:光标上方黏贴

替换、撤销编辑与反复编辑操作

替换r

R:替换模式,替换多个字符

r#:将当前光标字符替换成#,#可以是任何字符

撤销编辑:u

#u:直接撤销此前的#次操作

ctrl+r:还原最近一次撤销操作

重复前一次编辑操作: .

可视化文本查找:

可视化模式:可视化模式下可以对选取的内容进行前面讲的所有编辑操作

v:按字符选取内容

V:按矩形快(行)选取内容

文本查找:

/pattern:从上往下查找匹配的内容

?pattern:从下往上查找匹配的内容

n:可视化模式下可以对选取的内容进行前面讲的所有编辑操作

查找并替换与行号控制:

查找并替换:s

s命令只能在末行模式下使用,

使用格式:

ADDR1,ADDR2 s/pattern/pattern/g

末行模式下显示与取消显示行号

set nu:显示行号

set nonu:取消显示行号

Linux基础(三)相关推荐

  1. 《Linux基础三》用户和文件权限管理

    用户和文件权限管理 1,用户 管理员用户: Root用户,也称根用户.超级用户.超级管理员 可对根目录执行读写和执行操作 具有系统中的最高.所有权限 普通用户: 权限有限的用户 Root用户拥有系统的 ...

  2. Linux基础优化方法(三)———字符集编码设置优化

    Linux基础优化方法(三)---字符集编码设置优化 一.什么是字符编码 二.编码GB2312.GBK.UTF-8 三.工作时有乱码的原因 四.进行优化 1.CentOS 6 ①.查看默认编码信息: ...

  3. #Linux基础(三)

    #Linux基础(三) ###vi/vim的特点 vi/vim是一种纯文本编辑工具,它不像world可以排版,可以调整字体大小,可以改变字体颜色. vi/vim正是一个文本编辑工具,只能对文本的内容进 ...

  4. 生物信息入门之 linux,手把手教你学生信系列(三)-- Linux 基础入门拦路虎

    原本计划这一篇介绍基础命令的,然后我们微课学院之前已经有相关录制好的视频,而且网上的相关文章多不胜数,因此也就不在卖弄了,简单交流一下 Linux 入门过程中的几个拦路虎,具体命令等在后文具体与到时候 ...

  5. 小猿圈Linux基础面试题,看看你能答对几道?

    最近身边的很多朋友都在学习linux,从最开始的安装软件都需要百度一天的他们,现在已经成长为了,不需要百度就可以把自己弄懵圈的了,接下来的几天小猿圈linux老师会为大家准备一些实用的linux技巧分 ...

  6. 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...

    本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

  7. Linux基础第一周

    Linux基础第一周 命令的格式 command(命令)option(选项)arguments(参数)三部分组成,之间需要空格间隔 options 选项 启用命令的某项功能,从而更改命令的功能 arg ...

  8. 20155301 滕树晨linux基础——linux进程间通信(IPC)机制总结

    20155301 滕树晨linux基础--linux进程间通信(IPC)机制总结 共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在 ...

  9. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  10. 《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础

    本节书摘来异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者:华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

最新文章

  1. vim 打造属于自己的 IDE
  2. 现在计算机学什么好找工作吗,计算机专业都学什么 毕业好找工作吗
  3. linux c编程操作数据库(sqlite3应用)
  4. C++学习之路 | PTA乙级—— 1076 Wifi密码 (15 分)(精简)
  5. 计算机科学与技术 net,计算机科学与技术
  6. Leetcode每日一题:10.09.sorted-matrix-search-lcci(排序矩阵查找)
  7. No project is easy, am I right?
  8. 论文笔记_S2D.73_2019_BTS_从大到小:多尺度局部平面引导的单目深度估计
  9. ubuntu虚拟机全屏显示问题
  10. 大一python期末总结
  11. 对等商务_对等| 第2部分
  12. 数据结构之病毒感染检测问题
  13. 中规中矩的Spring事件监听
  14. db2 java 函数_DB2函数大全
  15. 用 Python 快速分析你的微信好友
  16. Mac 常用软件注册码
  17. 深度学习之目标检测学习笔记——1、基本概念
  18. Linux_ubuntu
  19. E-office OA 任意文件下载漏洞复现
  20. DHT11温湿度传感器编程详解

热门文章

  1. 矩阵键盘消抖 c语言,按键消抖,矩阵键盘原理和矩阵键盘的仿真模型
  2. VS2010中文版MSDN下载地址
  3. FAT文件系统解析(一) 引导扇区、FAT表及根目录区分析
  4. git push报错:fatal: unable to access ‘https://XXX.git/‘: Failed toconnect to github.com port 443
  5. Mac 下载破译版本 secureFX 和 secureCRT
  6. JavaScript设计模式-观察者模式
  7. wordpress连接mysql数据库_wordpress远程连接mysql数据库方法
  8. 使超星数字图书馆的PDG文件转换为PDF文件的方法
  9. Android-APK签名工具-jarsigner和apksigner
  10. 关于conime.exe