提示:以下是本篇文章正文内容,下面案例可供参考
一、命令历史
命令历史:系统默认会记录最近所输的命令。
history
命令可以查看命令历史。
使用方法:history
[选项]
常用选项:
-c
清空缓冲区命令历史
-w
把缓冲区的命令写⼊到⽂件中
-d
10 删除命令历史中的第10条记录
其他
命令历史文件: ~/.bash_history
命令历史相关变量:
HISTSIZE 缓冲区大小,默认为1000
HISTFILE 命令历史文件
HISTTIMEFORMAT 时间格式,默认是没有设置的
HISTTIMEFORMAT=“%F %T ” 设置命令历史时间
调用历史命令
[root@server ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2658 Dec 16 13:05 /etc/passwd
[root@server ~]# !!
ls -l /etc/passwd
-rw-r--r--. 1 root root 2658 Dec 16 13:05 /etc/passwd
[root@server ~]# systemctl restart sshd
[root@server ~]# !sys
systemctl restart sshd
二、命令别名和命令替换
命令替换:把命令的执行结果传递给前面的命令。
命令替换方式:
使用``
命令1 `命令2`
[root@server ~]# ls -l `which ps`
-rwxr-xr-x. 1 root root 138024 Jul 8 18:55 /usr/bin/ps
使⽤$()
#命令1 $(命令2)
[root@server ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
[root@server ~]# touch $(date +%Y%m%d)
[root@server ~]# ls
20201229 anaconda-ks.cfg initial-setup-ks.cfg
把``或$()中的内容当作命令执行,然后引用执行的结果。
命令别名:把一条命令定义为一个命令,当运行这个别名就相当于运行整条命令。
[root@server ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
省略
[root@server ~]# alias veth='vim /etc/sysconfig/network-scripts/ifcfg-ens160'
[root@server ~]# veth
TYPE=Ethernet
省略
三、管道和重定向
1.管道和重定向
管道和重定向
I/O重定向
[root@server ~]# echo Hello
Hello
[root@server ~]# touch file0.txt
[root@server ~]# echo Hello > file0.txt
[root@server ~]# cat file0.txt
Hello
[root@server ~]# ls
20201229 anaconda-ks.cfg file0.txt initial-setup-ks.cfg
[root@server ~]# ls >> file0.txt //追加重定向
[root@server ~]# cat file0.txt
Hello
20201229
anaconda-ks.cfg
file0.txt
initial-setup-ks.cfg
2.管道
管道:
将前一条命令的标准输出作为后一条命令的标准输入管道的操作符是“|”。
注意:
1.管道命令只处理前一个命令正确输出,不处理错误输出。
2.管道右边命令。
[root@server ~]# echo 12345678 | passwd --stdin rhel
Changing password for user rhel.
passwd: all authentication tokens updated successfully.
三、文本文件
文本文件:ascii格式的文件,Linux下很多文件都是文本文件。
1.使文VIM编辑文本
vi
:Visual Interface 可视化⽂本编辑器。
vim
:vi的增强版。
im语法格式
vim
[选项]
文件
如果文件不存在,vim将新建一个文件。
vim
模式:
命令模式:此状态下敲击键盘动作会被vim识别为命令,而非输入字符。
输入模式:常规的文本编辑。
末行模式:也叫底线模式,此模式下可以输入单个或多个字符命令。
vim 打开⽂件:
[root@server ~]# vim file
[root@server ~]# vim +10 file //打开文件并使光标处于第10行
[root@server ~]# vim + file //打开文件并使光标处于最后一行
[root@server ~]# vim +/abc file //打开文件并使光标处于第一次匹配到abc的行
vim保存关闭文件
2.命令模式
vim从命令模式进入编辑模式
光标移动
在末行模式下,光标行间跳转。
输入“:行号” --> 回车
删除字符或行
复制和粘贴
字符替换
字符查找
3.末行模式下字符查找和替换。
:起始行,结束行s/pattern/string/gi
不指定起始和结束行则默认是只搜索替换光标所在行。
s
表示查找
/
是分割符,也可以用其他符号,前后保持一致即可
pattern
是要搜索的字符,支持正则
string
是替换的字符
g
表示全局,默认是只替换一行里面第一次被匹配到的字符
i
表示忽略大小写
例如:
用vim把/etc/passwd中的/bin/nologin替换成/bin/bash
:%s#/sbin/nologin#/bin/bash#g
% 表示全文
末行模式下配置其他特性
vim参数配置
vim的配置位于/etc/vimrc,用于配置vim相关功能。
字符过滤
grep
:对⽂本内容进⾏关键词搜索匹配
语法格式
grep
[选项]
‘搜索的字符’⽂件
[root@server ~]# grep rhel /etc/passwd
rhel:x:1000:1000:rhel:/home/rhel:/bin/bash
[root@server ~]# cat /proc/cpuinfo | grep name
model name : Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz
grep
常用选项
正则表达式
正则表达式是一种模式匹配语言,用一些简单的符号来描述一个复杂的规则。
正则表达式常用符号
例如:
1.把/etc/ssh/sshd_config文件中有效配置(去除空行和以#开头的行)
[root@server ~]# grep -v ^# /etc/ssh/sshd_config | grep -v ^$
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
PermitRootLogin yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
2.过滤出/proc/meminfo中以“S”开头的行
[root@server ~]# grep ^S /proc/meminfo
SwapCached: 9388 kB
SwapTotal: 2097148 kB
SwapFree: 2008316 kB
Shmem: 6764 kB
Slab: 174968 kB
SReclaimable: 58164 kB
SUnreclaim: 116804 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
四、内容查看
1.cat查看文本
cat
连接并显示文本,可以将多个文件连在一起显示
语法格式
cat
[选项]
文件
常用选项:
-n
显示行号
2.more分页查看文件
more
分页查看文件,一次显示一屏。
语法格式
more
文件
内置键
空格:向下翻一屏
b
:向上翻一屏
3.head查看文件前面内容
head
查看文件前面内容,默认是查看前10行
语法格式
head
[选项]
文件
选项:
-c
查看前多少个字符
-n
查看前多少行
[root@server ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@server ~]# head -c 20 /etc/passwd
root:x:0:0:root:/roo[root@server ~]#
3.tail查看文件尾部内容
tail
查看文件尾部内容,默认是查看文件最后10行。
语法格式
tail
[选项]
尾件
选项:
-f
监控文件文件尾部增长
-n
查看后多少行
[root@localhost ~]# tail -n 5 /etc/passwd
ansible:x:2000:2000::/home/ansible:/sbin/nologin
web:x:3000:3000::/home/web:/sbin/nologin
shaer:x:2001:2001::/home/shaer:/bin/bash
student:x:3001:3001::/home/student:/bin/bash
abcd:x:3002:3002::/home/abcd:/bin/bash
[root@server ~]# tail -f /var/log/messages
Dec 30 14:44:58 localhost systemd[1]: Started dnf makecache.
Dec 30 15:11:25 localhost cupsd[1238]: REQUEST localhost - - "POST / HTTP/1.1" 200 183 Renew-Subscription client-error-not-found
Dec 30 15:45:57 localhost systemd[1]: Starting dnf makecache...
Dec 30 15:45:58 localhost dnf[14121]: Updating Subscription Management repositories.
Dec 30 15:45:58 localhost dnf[14121]: Unable to read consumer identity
Dec 30 15:45:58 localhost dnf[14121]: This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Dec 30 15:45:58 localhost dnf[14121]: Failed determining last makecache time.
Dec 30 15:45:58 localhost dnf[14121]: There are no enabled repositories in "/etc/yum.repos.d", "/etc/yum/repos.d", "/etc/distro.repos.d".
Dec 30 15:45:58 localhost systemd[1]: dnf-makecache.service: Succeeded.
Dec 30 15:45:58 localhost systemd[1]: Started dnf makecache.
4.wc文本统计
wc
统计文件的行数,词数和字符数
语法格式
wc
[选项]
文件
默认统计行数、词数和字符数
选项:
-l
只统计行数
-w
只统计词数
-c
只统计字符数
-L
统计最长行的字符数
[root@server ~]# wc /etc/passwd
47 115 2658 /etc/passwd
行数 词数 字符数
统计/etc目录下的文件和目录数量
[root@server ~]# ls /etc/ | wc -l
264