RHCSA笔记-03

RHCSA笔记-03

vim 编辑文件

vim -o FILE1 FILE2 水平分屏方式显示两个文件内容 
vim -O FILE1 FILE2 垂直分屏方式显示两个文件内容
  • 切换编辑内容 ctrl+w+w

vim file+ 进入文件的末尾编辑

命令模式:

执行vim后最先进入命令模式,直接按键盘即可执行对应的命令。

dd 删除光标所在行
d enter 删除光标以及光标所在下一行的内容
dG 删除光标所在行以及文档尾的所有内容
dgg  删除光标所在行以及文档首的所有内容
d^ 删除光标到行首的内容(光标所在字符不会删除)
d$ 删除光标到行尾的内容
x 删除光标所在字符
cc 剪切 光标所在行 (进入插入模式---退出到命令模式(ESC))
NUMcc 从光标开始剪切指定行 
yy 复制,复制光标所在行
NUMyy 从光标开始复制指定行 2yy
p 粘贴 (光标所在的下一行)
^ 跳转光标所在行的行首
$ 跳转光标所在行的行尾
gg 跳转到文档首
G 跳转到文档尾(末尾行行首)
NUMG 跳转到指定行
u 撤销 左撤销
ctrl+r 重做 右撤销

插入模式:

方向键移动光标,编辑内容

i 进入插入模式,插入在光标前
I 进入插入模式,插入在光标所在行的行首
a 进入插入模式,插入在光标后
A 进入插入模式,插入在光标所在行的行尾
o 进入插入模式,插入在光标所在的下一行
O 进入插入模式,插入在光标所在的上一行
s 删除光标所在字符,并进入插入模式
S 删除光标所在行,并进入插入模式

末行模式:

在命令模式输入“:”即可进入末行模式,会在屏幕最下一行左侧显示“:”

:w 将内容写入
:w /NEWFILE 将内容写到指定文件
:q 退出 
:q!强制退出
:wq 保存并退出 
:wq!强制保存并退出
:set nu 行号标记
:set nonu 取消行号标记
:24 跳转到指定行
 /字符 匹配指定字符高亮标记
 n 向下匹配关键字啊
 N 向上匹配关键字
:2,4 d 删除2-4行
:2,4 co 10 复制2-4到第十行下
 :r /file 将/file文件内容读取到当前文件
:%s /aaa/bbb/g 替换每一行中所有的aaa字符为bbb

可视模式:

在命令模式按下ctrl+v

  1. 通过上下键选取要编辑行

  2. 按下I 进入插入模式,编辑一行内容

  3. esc 退出,对所有选取的行进行相同内容的编辑

echo 标准输出==打印命令

$引用变量

用$提取出变量的值,通过echo输出

[root@zhujd ~]# echo $SHELL
/bin/bash
[root@zhujd ~]# echo $HOSTNAME
zhujd

引号的区别

  • “ ” 双引号 弱引用 (可以实现变量替换 )

  • ‘ ’ 单引号 强引用 (不能实现变量替换 )

  • `` 反引号 命令替换 $()

[root@zhujd ~]# echo $HOSTNAME
zhujd
[root@zhujd ~]# echo "$HOSTNAME"
zhujd
[root@zhujd ~]# echo '$HOSTNAME'
$HOSTNAME
[root@zhujd ~]# echo Today is date
Today is date
[root@zhujd ~]# echo Today is `date`
Today is Sat Nov 20 02:19:23 CST 2021
[root@zhujd ~]# echo Today is $(date)
Today is Sat Nov 20 02:19:40 CST 2021

数据流 “>” “>>” “<” “<<”

> 重定向符:可以将标准输出覆盖到指定文件,若文件没有则创建

[root@localhost ~]# echo  this is a
this is a
[root@localhost ~]# echo  this is a > aaa
[root@localhost ~]# cat aaa
this is a
[root@localhost ~]# echo this is aaa > aaa
[root@localhost ~]# cat aaa
this is aaa

重定向到空设备,垃圾站

>/dev/null  

**>> 追加重定向符 **

[root@localhost ~]# echo  this is a >> aaa
[root@localhost ~]# cat aaa
this is aaa
this is a
[root@localhost ~]# cat aaa > bbb
[root@localhost ~]# cat bbb
this is aaa
this is a

< 输入重定向符

[root@localhost ~]# cat file 
this is file
[root@localhost ~]# cat < file 正常显示文件内容时会用到,表示将指定文件的内容输入给cat命令显示
this is file

<< 指定终止结束符,输入定义的字符即可退出

[root@localhost ~]# cat << EOF
> 123
> 55
> 44
> EOF
123
55
44
[root@localhost ~]# cat << EOF > newfile ==
[root@localhost ~]# cat > newfile <<EOF
\> this is file
\> EOF

文件三个描述字符:
0 标准输入
1 标准输出(正确输出)
2 错误输出
& 正确或者错误输出

| 管道符

前一个命令输出作为后一个命令的标准输入

[root@localhost ~]# echo 123456 |passwd --stdin redhat

|tee T型管道

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

[root@localhost ~]# cat file |tee  ddd
this is file
[root@localhost ~]# cat ddd
this is file
[root@localhost ~]# echo this is aaa > aaa
[root@localhost ~]# cat aaa |tee ddd
this is aaa
[root@localhost ~]# cat ddd
this is aaa
[root@localhost ~]# cat file |tee -a  ddd
this is file
[root@localhost ~]# cat ddd
this is aaa
this is file

-a或–append 附加到既有文件的后面,而非覆盖它

[command] | tee -a [file]
[command] | tee [file1] [file2] [file3] 写入多个文件

grep 过滤显示命令

grep命令用于按行提取文本内容

grep root /etc/passwd 把/etc/passwd文件中有root关键字的行显示到终端

-v 反过滤
grep  -v  root  /etc/passwd  把/etc/passwd文件中没有root关键字的行显示到终端
-i 忽略大小写
grep  -i ROOT  /etc/passwd
-o 只显示关键字
-n 显现过滤信息标记行号
grep -n  root  /etc/passwd   
把/etc/passwd文件中有root关键字的行标记行号显示到终端
-A 2 显示指定关键的行以及下两行
grep  -A  2  root /etc/passwd 
-B 2 显示指定关键的行以及上两行
-C 2 显示指定关键的行以及上下两行

-c 只显示匹配关键字行号

-w 按照单词过滤
ll  /usr/bin | grep -w  passwd

cut 文本剪切

-c 指定字符剪切
[root@kongd ~]#cut  -c  1-3  /etc/passwd   剪切文件的前三个字符
-d 指定分割符
-f 指定字段
[root@kongd ~]# cut -d: -f 1 /etc/passwd | head  -3  剪切/etc/passwd文件,通过:分割将第一个字段剪切并只显示前三行
root
bin
daemon

uniq 去重命令(重复行相邻)

该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行

-c 显示每一行以及重复行的 次数
[root@localhost ~]# cat b.txt
ccc
ccc
ccc
ddd
ddd
 -d 只显示重复行
[root@localhost ~]# uniq -d b.txt
ccc
ddd
-D 显示所有重复行
[root@localhost ~]# uniq -D b.txt
ccc
ccc
ccc
ddd
ddd

sort 排序

  • 按照字符比较进行排序
  • sort命令执行后默认会按照字母顺序进行排序

-n 指定按照数值进行排序(默认升序)

-r 逆序排序 -nr

-u 去重,不论内容之间是否夹杂有其它内容,只要有两个一摸一样的内容

行,就可以去重

-f 忽略大小写

-t 指定分隔符
-k 指定字段
sort  -t : -k  3  -n /etc/passwd   
将/etc/passwd的内容安照:分割通过第三个字符基于数值进行升序排序显示

tr 字符替换或者字符删除

echo this is aaa | tr a b 把a字符替换为b字符

-c 反向替换
echo  this is aaa | tr  -c  a b    把不是a的字符全替换为b
-d 删除指定字符 
echo  this is aaa | tr -d a
-s 将多个连续重复字符替换为单个字符
将多个连续的空格替换,成一个空格
[root@localhost ~]# df -h
文件系统     容量  已用  可用 已用% 挂载点
devtmpfs     887M   0  887M   0% /dev
tmpfs      904M   0  904M   0% /dev/shm
tmpfs      904M  9.7M  894M   2% /run
tmpfs      904M   0  904M   0% /sys/fs/cgroup
/dev/nvme0n1p2  20G  4.3G  16G  22% /
/dev/nvme0n1p1  195M  147M  48M  76% /boot
tmpfs      181M  1.2M  180M   1% /run/user/42
tmpfs      181M  3.5M  178M   2% /run/user/0
/dev/sr0     7.4G  7.4G   0  100% /run/media/root/RHEL-8-1-0-BaseOS-x86_64

[root@localhost ~]# df -h | tr -s " " " "
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 887M 0 887M 0% /dev
tmpfs 904M 0 904M 0% /dev/shm
tmpfs 904M 9.7M 894M 2% /run
tmpfs 904M 0 904M 0% /sys/fs/cgroup
/dev/nvme0n1p2 20G 4.3G 16G 22% /
/dev/nvme0n1p1 195M 147M 48M 76% /boot
tmpfs 181M 1.2M 180M 1% /run/user/42
tmpfs 181M 3.5M 178M 2% /run/user/0
/dev/sr0 7.4G 7.4G 0 100% /run/media/root/RHEL-8-1-0-BaseOS-x86_64

[root@localhost ~]# df -h | tr -s " " " " | cut -d " " -f 2
容量
887M
904M
904M
904M
20G
195M
181M
181M
7.4G

wc 文本统计命令

wc命令用于统计指定文本文件的行数、字数或字节数

行 单词数 字节数 文件名

-l 统计行数

-w 统计单词数

-c 统计字节数

-m 统计字符数

[root@zhujd ~]# wc -l /etc/passwd 
45 /etc/passwd 

stat 查看文件属性

[root@zhujd ~]# stat user
  File: user
  Size: 365       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 34935670    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-11-19 23:57:51.661692584 +0800
Modify: 2021-11-19 23:57:36.780692815 +0800
Change: 2021-11-19 23:57:36.780692815 +0800
 Birth: -

四种文件查找

  1. whereis 查找文件匹配范围是环境变量路径(echo $PATH)查找所有文件

    [root@zhujd ~]# whereis ls
    ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
    
    [root@zhujd ~]# whereis pwd
    pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz
    
  2. which 查找文件匹配范围是环境变量路径(echo $PATH)查找所有可执行文件(x执行权限)

    [root@zhujd ~]# which locate
    /usr/bin/locate
    
    [root@zhujd ~]# which whereis
    /usr/bin/whereis
    
  3. locate 基于数据库查找(匹配速度快)–所有文件—确保所有数据文件更新到数据库文件updatedb

    [root@zhujd ~]# updatedb
    [root@zhujd ~]# locate whereis
    /usr/bin/whereis
    /usr/share/bash-completion/completions/whereis
    /usr/share/man/man1/whereis.1.gz
    
  4. find 全盘搜索所有文件 (比较慢)

    [root@localhost ~]# find 搜索路径 [选项] 搜索内容 
    -name:按照文件名搜索 
    -iname:按照文件名搜索,不区分文件名大小写 
    -inum:inode 号搜索 
    -mtime +4 -4 4 :匹配修改内容的时间
    • +4代表大于等于5天前的档名: find /var -mtime +4
    • -4代表小于等于4天内的文件档名:find /var -mtime -4
    • 4则是代表4-5那一天的文件档名: find /var -mtime 4
    -type (f d l b c s p ):文件类型
    find   /   -name   FILENAME
    

常见压缩档

  • .zip | zip 程序压缩打包的档案;(常见,但是因为不包含文档名编码信息,跨平台可能会乱码)
  • .rar | rar 程序压缩打包的档案;(在windows上很常见,但是个商业软件)
  • .gz | gzip 程序压缩的档案;(linux目前使用最广泛的压缩格式)
  • .bz2 | bzip2 程序压缩的档案;
  • .xz | xz 程序压缩的档案;
  • .tar | tar 程序打包的资料,并没有压缩过;
  • .tar.gz | tar 程序打包的档案,其中并且经过 gzip 的压缩 (最常见)
  • .tar.bz2 | tar 程序打包的档案,其中并且经过 bzip2 的压缩
  • .tar.xz | tar 程序打包的档案,其中并且经过 xz 的压缩 (新一代压缩选择)
  • .7z | 7zip 程序压缩打包的档案。

windows 上推荐使用 7z,而 linux 上 推荐使用 tar.gz tar.xz 7z 之一。此外 rar 的损坏很容易修复,zip 受众多(需要注意乱码问题)

tar 压缩解压缩

-c 创建.tar格式的包文件

-x 解.tar包

-t 查看包的文件列表

-z 压缩为gzip .gz

-j 压缩为bzip2 .bz2

-J 压缩为xz .xz

-v 详细信息

-f 跟上包文件名,后面紧跟包文件名

tar -cf 789.tar  7 8 9  对7  8 9 三个文件打包
tar -cfz  789.tar.gz  7 8 9  格式错误
tar -czf  789.tar.gz  7 8 9  对7 8 9三个文件压缩为gzip
tar -cjvf  789.tar.bz2  7 8 9 对7 8 9三个文件压缩为bzip2,并显示详细信息

练习题:

  1. 将/etc/passwd 中第一个字段(用户名)截取到user文件中
  2. 将3,4 字段分别截取出来写入文件UID和文件GIU但是要使这两个文件中的信息是以数值由大到小的形式显示;
  3. 截取当前日期的年月日时分显示在文件A.txt
  4. 将3,4 字段分别截取出来写入文件UID和文件GIU但是要使这两个文件中的信息是以数值由小到大的形式显示;
  5. 通过查看时间命令将分别将年月日时分写入A文件,将当前显示为星期几追加写入A文件。或者在屏幕上输出“the day is (星期几)”
  6. 并将文件通过合并命令将UID与GID文件中的信息写入USERID文件 。
  7. 告诉用户当前系统有多少用户?
  8. 通过过滤指令将/etc/login.defs 文件中关键的配置信息显示在file文件中。
  9. 显示系统中执行频率最高的前三个命名

答:

  1. 1. [root@zhujd ~]#cut -d : -f 1 /etc/passwd > ~/user
    2. [root@zhujd ~]# cut -d : -f 3 /etc/passwd |sort -nr > ~/UID
       [root@zhujd ~]# cut -d : -f 4 /etc/passwd |sort -nr > ~/GID
    3. [root@zhujd ~]# date "+%Y-%m-%d %H:%M:%S" > ~/A.txt
    4. [root@zhujd ~]# cut -d : -f 3 /etc/passwd |sort -n > ~/UID
       [root@zhujd ~]# cut -d : -f 4 /etc/passwd |sort -n > ~/GID
    5. [root@zhujd ~]# date "+%Y-%m-%d %H:%M:%S" > ~/A
       [root@zhujd ~]# date "+%A" >> ~/A
       [root@zhujd ~]# echo the day is $(date "+%A")
       或者[root@zhujd ~]# echo the day is $( date "+%A" |tee -a ~/A)
    6. [root@zhujd ~]# cat GID UID > ~/USERID
    7. [root@zhujd ~]# echo 当前系统用户数量为: $(cat -n ~/user |tail -1 |tr -s " " " "|cut -c 1-3)
       或者[root@zhujd ~]# wc -l ~/user
    8. [root@zhujd ~]# grep ^# -v /etc/login.defs |tee ~/file
    9. [root@zhujd ~]# echo 系统中执行频率最高的前三个命令为:$(history |tr -s " " " "|cut -d " " -f 3|sort|uniq -c|sort -nr|head -3)
    

猜你喜欢

转载自blog.csdn.net/z99533/article/details/121446986