马哥-51CTO-Linux培训-0830

1、总结文本编辑工具vim的使用方法:

Vim编辑器:全屏幕的编辑器:VIMvi: visual interface
vim: 模式化:编辑模式:命令模式输入模式:末行模式:
编辑模式 --> 输入模式:i: insert, a:append,o:new line,I: 行首A:行尾O:上方新建行
输入模式 --> 编辑模式:ESC
编辑模式 --> 末行模式::
末行模式 --> 编辑模式ESC

   打开文件:

# vim [OPTIONS] FILE...

+#:打开文件后,让光标定位于第#行行首

+/patten/: 打开文件后,让光标定位于第一个被pattern匹配到的行的行首

关闭文件:

:q!  保不存退出

:w!  强制保存(通常没有写权限时只有root用户才能执行此类操作)

:wq  保存退出

:x   保存退出

:w /path/to/somefile 文件另存

ZZ: 编辑模式下的命令,保存退出;

 vim的光标跳转

字符间跳转

h, j, k, l

h: 左

l: 右

j: 下

k: 上

#COMMAND:一次移动#个字符

单词间跳转:

w: 下一个单词的词首

e: 当前或下一个单词的词尾

b: 当前或前一个单词的词首

#COMMAND: 一次移动#个单词

 行内移动:

0:绝对行首

^: 本行行首第一个非空白字符

$: 绝对行尾

行间移动:

#G:跳转至第#行;

1G, gg:行首

G:尾行

句间移动:

)

(

 段落间移动:

}

{

  编辑命令:

                      字符编辑

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

#COMMAND: 删除光标所在处及向右的#个字符;

u: 恢复

xp: 交换两个字符的位置;让光标处于要交换位置的两个字符前一个字符上执行xp命令;

删除命令:

d:

结合光标跳转字符,实现多字符删除;

d$: 当前光标所在处至行尾

d^: 当前光标所在处至行首

dw:删除至词首

de

db:删除至词尾

           dd: 删除行

                                     #dd: 删除#行,从当前光标所在行开的#行;

                  注意:删除的内容会被vim编辑器保存至缓冲区当中;


            复制命令:

y, yank

y$, y^, y0

ye, yw, yb

yy: 复制行

#COMMAND

粘贴:

p (paste, put)

如果此复制或删除的内容不是一个完整行

p:粘贴至当前光标所在处后面;

P:粘贴至当前光标所在处前面;

如果复制的内容是完整行(可不止一行)

p: 粘贴至当前光标所在行下方;

P:行上方;

撤消此前的编辑操作:

u: undo

撤消此前编辑操作;

#u

Ctrl+r:

恢复此前的撤消操作

.: 重复前一个编辑操作

翻屏操作:

Ctrl+f: 向后一屏;

Ctrl+b:向前一屏;

Ctrl+d: 向后半屏

Ctrl+u: 向前半屏

vim内建教程:

vimtutor

  vim的末行模式

(1) 用地址做定界

:start_pos,end_pos

#:切换到第#行;

#,#:

#,+#:从第一数字行加上第二个数字行

.: 当前行

$: 最后一行

%: 全文,相当于1,$

/pat1/:第一次被此模式所匹配到的行;

#,/pat1/

/pat1/,/pat2/

后可跟编辑命令,用于实现相应的操作:

d, y,w, r

       (2) 查找

/PATTERN:向尾部进行

?PATTERN:向首部进行

n: 与命令同方向

N:与命令反方向

(3) 查找替换

s: 在末行模式下,在地址定界的范围内完成查找替换操作;

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;

\1, \2, ...

&:引用“要找的内容”匹配到的整个内容;

修饰符:

i: 忽略大小写

g: 全局替换

/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/

分隔符可替换为其它字符:例如@,#等;

3到100行pid改成processid,而且都改

所有行/etc/fstab改成/tmp/fstab

  定制vim的某些工作特性:

(1) 行号

显示:set nu

禁用:set nonu

(2) 括号匹配

显示:set sm

禁用:set nosm

(3) 自动缩进:

set ai

set noai

(4) 高亮搜索

set hlsearch

set nohlsearch

(5) 语法着色

syntax on

syntax off

(6) 忽略字符大小写

set ic

set noic

:help 获取帮助

:help SUBJECT

特性设定的永久生效方式:

全局配置文件:/etc/vimrc

用户个人的配置文件:~/.vimrc

练习:

1、复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符;

CentOS: /etc/grub.conf

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;

多文件模式:

vim FILE1 FILE2 ...

文件间切换:

:next

:prev

:first

:last

保存或退出所有

:wall

:qall

多文件窗口分割模式:

vim -o|-O FILE1 FILE2 ...

-o: 水平分割

-O: 垂直分割

在窗口间切换:Ctrl+w

        单文件窗口分割:

Ctrl+w后输入s: (split, 水平分割)

Ctrl+w后输入 v: (vertical, 垂直分割)

2、总结文件查找命令find的使用方法;

文件查找:在文件系统上查找符合条件的文件的过程;
文件查找:locate, findlocate: 非实时查找工具;依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新此数据库(updatedb);查找速度快;模糊查找;find:实时查找;查找速度略慢;精确查找;

很少使用find 查找整个电脑,原因在于find是直接搜索硬盘上的文件,这个命令相当的费时,也意味有一定程度消耗系统资源,所以不建议用find搜索整个硬盘(命令: find /dev/hda 如果是串口硬盘是 find /dev/sda)。
                  建议使用whereis 或 locate之类的命令,这几个命令是搜索数据库,会相当的快,但缺点是如果没有更新过,那么搜出的结果可能会出现以前删除过文件(更新数据库的命令 /user/bin/updated)

 find使用方法:

find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:默认为当前路径;

查找条件:指定的查找标准,可以根据文件名、大小、属主属组、类型等进行;默认为找出指定路径下的所有文件;

处理动作:对符合条件的文件做什么操作;默认为输出至屏幕;

查找条件:

根据文件名进行查找:

-name "文件名称": 支持使用glob;

*, ?, []

find . –name “a*”

find . –name “a*” –type f 只找目录(f是一般文件,d是目录)

-iname "文件名称":不区分字符大小写,支持使用glob;

-regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

根据属主、属组查找:

-user USERNAME: 查找属主为指定用户的文件;

-group GROUPNAME:

-uid UserID: 查找文件的属主指定uid的文件;

-gid GroupID:

-nouser: 查找没有属主的文件;

-nogroup:查找没有属组的文件;

根据文件类型进行查找:

-type TYPE

f: 普通文件

d: 目录

l: 符号链接

b: 块设备

c: 字符设备

p: 命名管道

s: 套接字

组合查找条件:

与条件:-a

或条件:-o

非条件:-not, !

!A -o !B = !(A -a B)

!A -a !B = !(A -o B)

根据文件大小来查找:

-size [+|-]#UNIT

单位:k, M, G

#UNIT: (#-1,#]

+#UNIT: (#,+oo)

-#UNIT:[0,#-1]

根据时间戳:

“天”为单位

-atime [+|-]#

#:[#,#+1)

+#: [#+1,oo]

-#: [0,#)

-mtime

-ctime

“分钟”为单位

-amin

-mmin

-cmin

根据权限:

-perm [/|-]MODE

MODE: 精确权限匹配

/MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件;

/400

-MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;

处理动作:

-print: 默认处理动作

-ls:类似于对查找到的每个文件做"ls -l"的操作;

-delete: 删除查找到的文件;

-fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;

-ok COMMAND {} \;

对每个文件执行指定的命令之前需要用户事先确认;

-exec COMMAND {} \;

无需用户确认;

3、总结bash环境变量的相关内容;

bash环境配置:

配置文件生效范围划分,存在两类:

全局配置:

/etc/profile, /etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

功能划分,存在两类:(这个范围没有明确的划分,两个可以互相使用,但是有优先级)

profile类:为交互式登录的shell提供配置

/etc/profile, /etc/profile.d/*.sh

~/.bash_profile

功用:

(1) 定义环境变量,例如PATH、PS1

(2) 运行命令或脚本

bashrc类:为非交互式登录shell提供配置

/etc/bashrc

~/.bashrc

功用:

(1) 定义命令别名;

(2) 定义本地变量;

变量:(用来存储变化的数据,变量名可以理解为是一个指针指向一个内存空间,用来存储数据)

类型:

环境变量:作用范围当前shell进程及其子进程

本地变量:作用范围当前shell进程

局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)

位置变量:$1, $2

特殊变量:$?

变量定义方式:

bash内置变量:可直接调用,内置了许多环境变量,例如PATH等

自定义变量:

变量赋值:变量名=值

bash弱类型:

变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;

存储120(把十进制转换成二进制):8bits

定义本地变量:

name=value

查看:set

定义环境变量:

export name=value

declare -x name=value

查看:env, printenv, export

撤消变量:

unset name

引用变量:

${name}, $name

bash中的引用符号:

‘ ‘ :强引用(变量替换不会发生)

" ":弱引用(会使用变量里的内容)

``:命令引用

shell登录类型:

交互式登录:

直接通过终端进行的登录;

通过su -l Username命令实现的用户切换;

非交互式登录:

图形界面下打开的命令行窗口;

执行脚本;

su Username;

配置文件作用次序:

交互式登录:

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

编辑配置文件定义的新配置如何生效?

(1) 重新登录;

(2) 让当前shell进程去重新读取指定的配置文件;

source /PATH/TO/SOMEFILE

. /PATH/TO/SOMEFILE

注意:副作用

4、总结Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点;

权限模型:

u, g, o

r, w, x

进程的安全上下文:

前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;

(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;

(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;

(3) 进程拥的访问权限,取决其属主的访问权限:

(a) 进程的属主,同文件属主,则应用文件属主权限;

(b) 进程的属主,属于文件的属组,则应用文件属组权限;

(c) 则应用其它权限;

SUID:

(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;

(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

权限设定:

chmod u+s FILE...

chmod u-s FILE...

注意:

s: 属主原本拥有x权限;

S: 属主原本无x权限;

SGID:

默认情况下,用户创建文件时,其属级为此用户所属的基本组;

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;

权限设定:

chmod g+s FILE...

chmod g-s FILE...

Sticky:

对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;

权限设定

chmod o+t FILE...

chmod o-t FILE...

SUID, SGID, STICKY

000

001

010

011

100

101

110

111

chmod 4777 FILE

chmod 3755 DIR

5、总结Linux磁盘管理、文件系统相关知识点及其相关命令的使用方法;

Linux磁盘管理
 硬盘:
  机械式硬盘
  SSD

机械式:
  track
  sector: 512bytes
  cylinder: 分区的基本单位;

MBR:Master Boot Record
   512bytes
    446: bootloader
    64: filesystem allocation table
     16: 标识一个分区
    2:55AA

磁盘接口类型:
  IDE (ATA):133MB/s,/dev/hd
  SCSI: 640MB/s
  SATA:6Gbps
  SAS:6Gbps
  USB:480MB/s

识别硬盘设备:/dev/sd
   标记不同的硬盘设备:/dev/sd[a-z]
   标记同一设备上的不同分区:/dev/sd[a-z][1-]
    1-4: 主或扩展分区标识
    5+:逻辑分区标识

设备文件:特殊文件
   设备号:
    major, minor
     major: 设备类型
     minor: 同一类型下的不同设备

“块”:block,随机设备
   “字符”:character,线性设备

GPT

分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;

分区工具:
  fdisk, parted, sfdisk

fdisk工具的使用:
  最多支持在一块硬盘上的15个分区;

分区管理子命令:
   p: 显示
   n: 创建
   d: 删除
   t: 修改分区ID
   l: 列出所有支持ID类型
   w: 保存退出
   q: 放弃修改并退出
   m: 获取帮助

创建完成之后,查看内核是否已经识别新的分区:
   # cat /proc/partitions

有三个命令可以让内核重读磁盘分区表:
    CentOS 5: partprobe [DEVICE]
    CentOS 6,7:
     partx
     kpartx

partx命令:
     partx DEVICE
     partx -a DEVICE
     partx -a -n M:N DEVICE
      M
      M:
      :N

kpartx命令:
     kpartx -af DEVICE

Linux文件系统管理

文件系统:
  VFS:Virtual File System

Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap
  光盘:iso9660
  Windows: fat32(vfat), ntfs
  Unix: ffs, ufs, jfs, jfs2
  网络文件系统:nfs, cifs
  集群文件系统:ocfs2, gfs2
  分布式文件系统:ceph,
   moosefs, mogilefs, hdfs, gfs, glusterfs

(1) 日志型文件系统
   非日志型文件系统:ext2
   日志型文件系统:ext3

(2) swap:交换分区

创建文件系统:
  在分区上执行格式化(高级格式化)
   要使用某种文件系统,满足两个条件:
    内核中:支持此种文件系统
    用户空间:有文件系统管理工具

创建工具:mkfs (make filesystem)
   mkfs -t type DEVICE

mkfs.type DEVICE

ext系列文件系统的专用管理工具:
    mke2fs -t {ext2|ext3|ext4} DEVICE
     -b BLOCK: 1024, 2048, 4096
     -L ‘LABEL‘: 设定卷标

blkid命令:
    blkid DEVICE
     LABEL, UUID, TYPE

6、复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符

:%s/^[[:space:]]\+//g

7、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加      一个#; 原有空白字符保留

  %s/^[[:space:]]/#&/g

8、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

 %[email protected]/etc/sysconfig/[email protected]/var/[email protected]

9、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#

%s/^#[[:space:]]//g

10、查找/var目录属主为root,且属组为mail的所有文件

 find /var -user root -group mail -ls 

11、查找/usr目录下不属于root、bin或hadoop的所有文件

find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls

12、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件

 find /etc -not \( -user root -o -user hadoop \) -a -mtime -7

13、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件

 find / \( -nouser -o -nogroup \) -a -atime -7

14、查找/etc目录下大于20k且类型为普通文件的所有文件

find /etc -type f -a -size +20k -ls

15、查找/etc目录下所有用户都没有写权限的文件

find /etc ! -perm /222 -ls

16、查找/etc目录下至少有一类用户没有执行权限的文件

 find /etc  not -perm /111 -ls 

17、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件

find /etc/init.d  -perm  -111 -a -perm -002 -ls

18、让普通用户能使用/tmp/cat去查看/etc/shadow文件

  chmod u+s /tmp/cat

19、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户         仅能删除自己的文件

mkdir -pv /test/data

        chmod g+ws /test/data

时间: 2025-01-01 13:54:04

马哥-51CTO-Linux培训-0830的相关文章

跟马哥学linux (lesson 6)linux包管理程序rpm & yum

一.rpm 1.什么是RPM RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用. 2.rpm语法格式 1)查询,验证           rpm {-q|--query} [select-options] [query-options] rpm {-V|--v

跟马哥学linux (lesson 8)awk & sed功能总结

一.awk 1.什么是awk awk 是一种程序语言. 它具有一般程序语言常见的功能.  因awk语言具有某些特点, 如 : 使用直译器(Interpreter)不需先行编译; 变量无类型之分(Typeless), 可使用文字当数组的下标(Associative Array)...等特色. 因此, 使用awk撰写程序比起使用其它语言更简洁便利且节省时间. awk还具有一些内建功能, 使得awk善于处理具数据行(Record), 字段(Field)型态的资料; 此外, awk内建有pipe的功能,

马哥 magedu Linux 运维学习的第一天

计算机系统由硬件系统和软件系统组成 第一代计算机   电子管时代 第二代计算机   晶体管时代 第三代计算机   集成电路时代 第四代计算机   大规模集成电路时代 1964年,世界第一代计算机ENICA.用来计算弹道轨迹. 冯诺依曼  计算机之父 运算器,控制器,存储器,输入设备,输出设备. 巨型计算机,大型计算机,小型计算机,微型计算机. 服务器Server/client C/S是计算机的一种,是网络中为客户端计算机提供各种服务的高性能计算机. 数据库 oracle,mysql,mariad

跟马哥学linux (lesson 7)Bash脚本基础知识

一.Linux程序分类: 1.守护进程(Daemon):开机自动启动 常见linux后台守护进程列举: amd:NFS守侯进程 apmd:高级电源治理 Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库 Autofs:自动安装治理进程automount,与NFS相关,依靠于NIS crond:linux下的计划任务 Dhcpd:启动一个DHCP(动态IP地址分配)服务器 Httpd:WEB服务器 Inetd:支持多种网络服务的核心守候程序 Lpd:打印服务器 n

跟马哥学linux (lesson 4)linux磁盘管理

Linux文件系统管理: mkfs, mkfs -type = mkfs.ext2,3,4 例: [[email protected] ~]# mkfs -type ext4 /dev/sdb mkfs.ype: No such file or directory [[email protected] ~]# mkfs -t ext4 /dev/sdb mke2fs 1.41.12 (17-May-2010) /dev/sdb is entire device, not just one par

跟马哥学linux (lesson 3)

简单文件权限管理命令总结: 一.命令功能总结 1.vim man文档说明: NAME        vim - Vi IMproved, a programmers text editor SYNOPSIS        vim [options] [file ..]        vim [options] -        vim [options] -t tag        vim [options] -q [errorfile]        ex gex        view   

马哥2016.Linux+Python高端运维班第一周作业

1  计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成,每一部件分别按要求执行特定的基本功能. ⑴ 运算器或称算术逻辑单元(Arithmetical and Logical Unit) 运算器的主要功能是对数据进行各种运算.这些运算除了常规的加.减.乘.除等基本的算术运算之外,还包括能进行"逻辑判断"的逻辑处理能力,即"与"."或"."非"这样的基本逻辑运算以及数据的比较.移位等操作. ⑵ 存储器(Memory

马哥学习linux第2天总结知识

虚拟终端:ctrl +alt +F(1-6)查看当前终端 tty 显示当前使用的shell echo $SHELL 显示当前所有shell cat/etc/shells 输入命令后系统做了哪些 请shell程序找到键入命令所对应得可执行程序或代码并其分析后提交给内核分配资源将其运行起来 在shell中可执行命令有两类 内建命令:由shell自带,而且通过某命令形式提供 外部命令:在当前系统某文件系统路径下对应的可执行文件 由which查找 shell程序搜索可执行程序文件的路径定义在PATH环境

配置私有CA命令与配置证书(根据马哥的linux视频教程总结出来)

一:配置私用CA命令 1.编辑配置文件/etc/pki/tls/openssl.cnf 更改dir 将"../../CA"改为"/etc/pki/CA" 可以更改默认国家.省份.城市 mkdir certs  newcerts   crl touch index.txt touch serial echo 01 >serial 2.创建私有秘钥(公钥从此生成) 在/etc/pki/CA目录下 (umask 077;openssl genrsa 2048 >

跟马哥学linux (lesson 5)linux任务管理

1.linxu任务计划: 任务计划: 在未来时间点执行一次任务:at,batch 周期性执行任务:crontab 电子邮件服务: smtp:simple mail transmission protocol /var/spool/mail/USERNAME 个人邮件缓冲目录 pop3:post office protocol imap4:internet mail access protocol MUA:mail命令 mail: mail:进入交互式收发邮件接口 mail -s "SUBJECT