linux常用命令

文章目录

一、systemd 初始化进程

初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化进程,为用户提供合适的工作环境。在RHEL 7 系统中已经将System V init 初始化进程服务替换成systemd。 systemd使用并发启动机制,性能有了不少的提升。

表 1 systemctl 管理服务的启动、重启、停止、重载、查看状态等

System V init 命令systemd 命令作用
service foo startsystemctl start foo.service启动服务
service foo restartsystemctl restart foo.service重启服务
service foo stopsystemctl stop foo.service停止服务
service foo reloadsystemctl reload foo.service重新加载配置文件(不终止服务)
service foo statussystemctl status foo.service查看服务状态

表 2 systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等

System V init 命令systemd 命令作用
chkconfig foo onsystemctl enable foo.service开机自动启动
chkconfig foo offsystemctl disable foo.service开机不自启
chkconfig foosystemctl is-enabled foo.service查看特定服务是否为开机自启动
chkconfig --listsystemctl list-unit-files --type=service查看各个级别下服务的启动与禁用情况

二、必须掌握的Linux 命令

常见执行Linux 命令的格式:
命令名称 [命令参数] [命令对象]

1.查看帮助及clear命令

① man

作用:man 命令是用来查看帮助信息的
用法:man 命令名称
举例:man ls
表 3 man命令帮助信息的结构及意义

结构名称代表意义
NAME命令的名称
SYNOPSIS参数的使用方法
DESCRIPTION介绍说明
EXAMPLES演示
OVERVIEW概述
DEFAULTS默认功能
OPTIONS具体的可用选项
ENVIRONMENT环境变量
FILES用到的文件
SEE ALSO相关资料
HISTORY维护历史与联系方式

② 命令 [–help/-h/–h]

例如:查看man命令的帮助信息

man --help
man -h

③ clear 命令

作用:用于清空屏幕缓冲区内容
格式:clear

2.常用系统工作命令

① echo 命令

作用:echo命令用于在终端输出字符串或变量值
格式:echo [字符串|$变量]
例如:打印SHELL变量的值

echo $SHELL
#输出结果:/bin/bash

② date 命令

作用:显示及更改系统的时间或日期
格式:date [选项] [+指定的格式]

表 4 date 命令的参数和作用

参数作用
%t跳格【tab键】
%H小时(00~23)
%I小时(00~12)
%M分钟(00~59)
%S秒 (00~59)
%j一年中的第几天

例如:按照 “年-月-日 小时:分钟:秒” 的格式查看系统时间

date "+%Y-%m-%d %H:%M:%S"
#输出结果:2019-07-12 16:29:12

将系统时间设置为2019年7月1日8点30分的命令

date -s "20190701 8:30:00"

③ reboot 命令

作用:用于重启系统
格式:reboot

reboot

④ poweroff / shutdown 命令

作用:用于关闭系统
格式:poweroff / shutdown [-t secs] time [告警信息]
-t secs 送出警告信息和关机信号之间要延迟多少秒
time 设置多久时间后执行shutdown命令,立即关机用now
例如:设置5分钟后关机

shutdown -t 10 -h +5 'System will shutdown after 5 minutes'

⑤ wget 命令

作用:下载网络文件
格式:wget 【参数】下载地址

表 5 wget命令的参数及作用

参数作用
-b后台下载
-P下载到指定目录
-t最大尝试次数
-c断点续传
-p下载页面内所有资源
-r递归下载
wget https://blog.csdn.net/laochi5

⑥ ps 命令

作用:用于查看系统进程
格式:ps [参数]

表 6 ps命令的参数及作用

参数作用
-a显示所有进程(包括其他用户的进程)
-u用户及其他详细信息
-x显示没有控制终端的进程

例如:

ps -aux      #using BSD syntax
ps -ef       #using standard syntax

⑦ top 命令

作用:用于动态监听进程活动与系统负载等信息
格式:top

⑧ pidof 命令

作用:用于查询某个指定服务进程的PID
格式:pidof [参数]
例如:查询sshd服务的pid

pidof sshd

⑨ kill 命令

作用:用于终止某个指定PID的服务进程
格式:kill [参数] [进程PID]
例如:

kill -l  # 查看系统信号
kill 2156 # 终止 PID为2156的进程

⑩ killall 命令

作用:用来终止某个指定名称的服务所对应的全部进程
格式:killall [参数] [进程名称]
例如:终止 httpd 服务程序

killall httpd

⑪ source 命令

作用:让修改后的配置文件立即生效
格式:source 配置文件路径
例如:让/etc/profile文件的修改生效

source /etc/profile 

3.系统状态监测命令

① ifconfig / ip addr 命令

作用:用于获取网卡配置与网络状态等信息类似于Windows上的ipconfig
格式:ifconfig [网络设备] [参数] / ip addr

ifconfig

② uname 命令

作用:用于查看系统内核和系统版本等信息
格式:uname [参数] 一般用-a

uname -a

③ uptime 命令

作用:用于查看系统的负载信息
格式:uptime

uptime

④ free 命令

作用:用于显示当前系统内存使用情况
格式:free [参数] 一般用-h

free -h

⑤ who 命令

作用:用于查看当前登录主机的用户终端信息
格式:who [参数]

who

⑥ last 命令

作用:用于查看系统的登录记录
格式:last [参数]

last

该命令是从日志文件中读取登录记录

⑦ history 命令

作用: 用于显示历史执行过的命令
格式:history [参数] 一般使用-c清空历史记录

history 

⑧ sosreport 命令

作用:用于收集系统配置和架构信息并输出诊断文档
格式:sosreport

sosreport

⑨ netstat 命令

作用:查看网络(端口)使用状态
格式:netstat 【选项】
例如:查看3690端口是否有程序在使用

netstat -anp | grep 3690 

⑩ hostname 命令

作用:用于查看或临时修改主机名称
格式:hostname [选项]
例如:

hostname # 查看当前主机名
hostname newname #将主机名更改为newname,重启失效
hostname -i #查看主机ip地址(读取/etc/hosts文件)

4.工作目录切换命令

① pwd 命令

作用:用于显示用户当前所处的工作目录
格式:pwd [选项]

② cd 命令

作用: 用于切换工作路径
格式: cd [目录名称]
例如:切换到用户家目录

cd ~

③ ls 命令

作用:用于显示目录下文件信息
格式: ls [选项] [文件]
例如:显示当前路径下所有文件及其详细信息

ls -al

5. 文本文件编辑命令

① cat / tac命令

作用:用于查看纯文本文件(内容较少)
格式:cat /tac [选项] 文件
其中cat为正向顺序打印文件内容,而tac为逆向打印。

② more / less 命令

作用:用于查看纯文本文件(内容较多)
格式:more / less [选项] 文件

③ head 命令

作用:用于查看纯文件文件前N行
格式:head [选项] 文本
例如:查看文件前20行内容

head -n 20 纯文本文件

④ tail 命令

作用:用于查看纯文本文件后N行或持续刷新内容(多为日志文件)
格式:tail [选项] 文件
例如:查看文件后20行

tail -n 20 纯文本文件

查看最新文件内容

tail -f 文件名(多为日志文件)

⑤ tr 命令

作用:用于替换文本文件中的字符
格式:tr [原始字符] [目标字符]
例如:将文件中所有小写字符串替换为大写

cat 文件名 | tr [a-z] [A-Z]
#替换原文件内容太危险所以一般配合cat(more)等命令使用

⑥ wc 命令

作用:用于统计指定文本的字数、行数或字节数
格式:wc [参数] 文本

表 7 wc 命令的参数及作用

参数作用
-l显示行数
-w显示单词数
-c显示字节数

⑦ cut 命令

作用:用于按“列”提取文本字符
格式:cut [参数] 文本
例如:读取passwd文件中的用户名信息,提取以冒号为间隔符的第一列内容

cut -d: -f1 /etc/passwd 
#-d用于指定间隔符
#-f用于指定查看列数

⑧ diff 命令

作用:用于比较多个文本文件的差异
格式:diff [参数] 文件 一般用-c查看文件内容具体的不同
例如:判断两个文件是否相同

diff --brief a.txt b.txt

⑨ paste 命令

作用:用于合并多个文件
格式:paste [选项] 文件1 文件2 … 文件n

表 7-2 paste 命令的参数及作用

参数作用
-d指定分隔符
-s将每个文件合并成行
-使用标准输入

例如:
文件1内容:
A
B
C
文件2内容:
1
2
3

paste 1 2 
结果如下:
A 1
B 2
C 3
paste -d: 1 2
结果如下:
A:1
B:2
C:3
paste -s 1 2
结果如下:
A B C
1 2 3

以每行3列格式显示/etc目录列表

ls /etc | paste  - - - 

⑩ nl 命令

作用:用于为输出的每行添加行号
格式:nl 文件

nl /root/1.sh

6.文件目录管理命令

① touch 命令

作用:用于创建空白文件或设置文件的时间
格式:touch [选项] 文件

表 8 touch 命令的参数及作用

参数作用
-a仅修改“读取时间(atime)”
-m仅修改“修改时间(mtime)”
-d同时修改atime和mtime

② mkdir 命令

作用:用于创建空白的目录
格式:mkdir [选项] 目录 一般使用-p递归创建

③ cp / scp命令

cp命令:
作用:用于复制文件或目录
格式:cp [选项] 源文件 目标文件
scp命令:
作用:用于远程拷贝
格式:scp 源文件 目标文件
远程文件目录写法:
用户名@ip地址或者域名或者主机名:服务器上的文件路径

表 9 cp 命令的参数及作用

参数作用
-p保留原文件的属性
-d保留原链接文件的属性
-r递归复制
-i若目标文件存在则询问是否覆盖
-a相当于-pdr

④ mv 命令

作用:用于剪切文件或重命名文件
格式:mv [选项] 源文件 [目标文件名|目标路径]

⑤ rm 命令

作用:用于删除文件或目录
格式:rm [选项] 文件
例如:强制删除文件a.txt

rm -rf a.txt

⑥ dd 命令

作用:用于按照指定大小和数据块来复制文件或转换文件
格式:dd 【参数】

表 10 dd 命令的参数及作用

参数作用
if输入的文件名称
of输出的文件名称
bs设置“块”大小
count设置“块”的个数

例如:从/dev/zero设备取大小为500MB的数据块保存名为file_500的文件

dd if=/dev/zero of=file_500 count=1 bs=500M

利用dd命令压制光盘镜像文件

dd if=/dev/cdrom of=1.iso
#将文件目录/dev/cdrom下的所有文件压制成1.iso镜像文件

⑦ file 命令

作用:用于查看文件的类型
格式:file 文件名

7.搜索与压缩命令

① grep 命令

作用:用于在文本中执行关键词搜索
格式:grep [选项] [查找内容] [查找范围]

表 11 grep 命令的参数及作用

参数作用
-b用来显示匹配位置
-c显示匹配行数量
-i不区分大小写
-l显示首次匹配的行(文件)
-n显示行号
-v只显示不包含关键词的行
-x显示严格匹配的行

例如:查看文本中非注释行

cat 文件名 |grep -v "^#"

② find 命令

作用:用于按照指定条件来查找文件
格式:find [查找路径] 寻找条件 操作

表 12 find 命令的参数及作用

参数作用
-name匹配名称
-perm匹配权限
-user/nouser匹配所有者/无所有者的文件
-group/nogroup匹配匹配所有组/无所有组的文件
-a/m/ctime -n +n匹配访问文件/修改文件内容/修改文件权限的时间(-n指n天内,+n指n天前)
-newer f1 !f2匹配比文件f1新比文件f2旧的文件
- -type b/d/c/p/l/f匹配文件类型(块设备/目录/字符设备/管道/链接文件/文本文件)
-size匹配文件的大小(小/大于100KB用:-/+100k表示)
-prune匹配时忽略某个目录
-empty匹配大小为0的目录或文件
-path匹配路径
-exec 命令 {} \;对查找后的文件执行操作(-ok会询问用户是否需要执行该命令)

例如:

#利用find查看文件数
find . -type f -print | wc -l
#查找只读文件
find / -perm /u=r
#查找可执行文件
find / -perm /a=x
#查找权限为777的文件并将权限改为775
find / -type d -perm 777 -print -exec chmod 775 {} \;
#查找并删除文件(单个或多个)
find / -type f -name "test.c" -exec rm -f {} \;
find / -type f -name "*.c" -exec rm -f {} \; 

③ whereis 命令

作用:用于查看文件的位置。一般用于搜索软件安装目录
格式:whereis 文件名/软件名称
例如:查看python的相关文件路径

whereis python
#执行结果:
python: /usr/bin/python2.6 /usr/bin/python /usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6 /usr/share/man/man1/python.1.gz

④(解)压缩命令

tar 命令:
作用:用于对文件进行打包压缩或解压
格式:tar [选项] 文件

表 13 tar 命令的参数及作用

参数作用
-c创建压缩文件
-x解压缩文件
-t查看压缩文件内容
-z用gzip压缩或解压
-j用bzip2压缩或解压
-v显示压缩或解压过程
-f目标文件名(该参数必须放在最后面)
-p保留原文件的权限于属性
-P使用绝对路径来压缩
-C指定解压目录

例如:将/etc目录压缩成gzip格式

tar -zvcf etc.tar.gz /etc

其实在shell命令行下可以使用的文件(解)压缩工具有gzip、bzip2和zip等

表 14 其他常用解压缩工具

文件类型压缩工具 / 解压工具
.gzgzip / gunzip
.bz2bzip2 / bunzip2
.zipzip / unzip

8.用户与文件权限命令

① useradd 命令

作用:用于创建新的用户
格式:useradd [选项] 用户名
表 15 useradd 命令的参数及作用

参数作用
-d指定用户的家目录
-e账户的到期时间,格式为YYYY-MM-DD
-u指定用户的默认UID
-g指定用户组
-G指定一个或多个扩展用户组
-N不创建于用户同名的基本用户组
-s指定用户默认的shell解释器

② groupadd 命令

作用:用于创建新的用户组
格式:groupadd [选项] 群组名

③ usermod 命令

作用:修改用户的属性
格式:usermod [选项] 用户名
表 16 usermod 命令的参数及作用

参数作用
-c填写用户的备注信息
-d -m可重新指定用户家目录并把数据转移过去
-e账户的到期时间,格式为YYYY-MM-DD
-g变更用户组
-G变更扩展用户组
-L锁定用户
-U解锁用户
-s变更默认终端
-u修改用户UID

④ passwd 命令

作用:用于修改用户密码、过期时间、认证信息等
格式:passwd 【选项】[用户名]
表 17 passwd 命令的参数及作用

参数作用
-l锁定用户,禁止登陆
-u解锁用户,允许登陆
- -stdin允许通过标准输入修改用户密码
-d使该用户可用空密码登陆
-e强制用户在下次登陆时修改密码
-S显示用户的密码是否被锁定以及显示加密算法

⑤ userdel 命令

作用:用于删除用户
格式:userdel 【选项】用户名
表 18 userdel 命令的参数及作用

参数作用
-f强制删除用户
-r同时删除用户及用户家目录

⑥ groupdel 命令

作用:用于删除用户组
格式:groupdel 【选项】用户名
注意事项:

  • 不能移除现有用户的主组。在移除此组之前,必须先移除此用户。
  • 需要手动检查所有文件系统,以确保没有遗留的属于此组的文件。

⑦ chmod 命令

作用:给用户赋权限
格式:chmod 权限 文件

⑧ chown 命令

作用:将某个目录的所有权改为某个用户
格式:chown 用户 目录
例如:将/data目录的所有权交给bow用户

chown bow /data   

⑨ su 命令

作用:切换用户
格式:su 用户名 (su - 用户名:完全切换即变更环境变量)

⑩ sudo 命令

作用:用于给普通用户提供额外的权限完成原本管理员才能完成的任务
格式:sudo 【参数】命令名称
表 19 sudo 命令的参数及作用

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u 用户名 / UID值以指定用户身份执行命令
-k清空密码的有效时间,下次执行sudo时需要验证
-b后台执行指定命令
-p更改询问密码的提示语

9. 字符串处理命令

常用字符串截取和处理命令有: cut、printf、awk、sed、sort、wc
cut 和 wc 在上面已经介绍了就不重复说明了 。

① printf 命令

格式:printf ‘输出类型 输出格式’ 输出内容

表 20 printf 命令的输出参数及作用

参数作用
%ns输出字符串。n是数字,指代输出几个字符
%ni输出整数。n是数字,指代输出几个数字
%m.nf输出m位数,n位小数
\a输出警告声音
\b输出退格键,也就是BackSpace键
\f消除屏幕
\n换行
\r回撤
\t水平制表符
\v垂直制表符

例如:

printf '%s %s %s\n' 1 2 3 4 5 6  #表示每三个位一组输出,并加换行符
printf '%s\t%s\t%s\t' $(cat a.txt)  #表示以4列的形式输出

② awk 命令

格式: awk ‘条件1{动作1}条件2{动作2}…’ 文件名
例如:

awk '{printf $2 "\t" $6 "\n"}' a.txt  #输出文件a.txt的第2列和第6列
awk '{print $1}' hello.c #打印hello.c文件所有行的第一个字段,默认字段的分隔符为空格或制表符

③ sort 命令

格式:sort【选项】文件 说明:动作必须用引号引起来

表 21 sort 命令的输出参数及作用

参数作用
-m若指定文件已排序则合并文件
-c检查文件是否已排序
-u去除重复数据
-o将排序输出写入文件
-d按字典顺序排序
-f大小写字母同等对待
-M作为月份比较
-r逆序输出
-b忽略空白
-t指定字符作为分隔符
-n按数值大小排序
-k n,m按照指定的字段范围排序。从第n字段开始,m字段结束(没有m表示到文尾)

例如:将排序结果输出到原文件中

sort -nr number -o number        # number为文件名

按月份排序

sort -n -k  2 -t  '-' date
# -t<分隔符> 指定分隔字符 -k选择哪个区间进行排序 date为文件名

④ sed 命令

格式:sed [选项] ‘[动作]’ 文件名 说明:动作必须用引号引起来

表 22 sed 命令的输出参数及作用

参数作用
-n把处理结果输出到屏幕(不修改原文件)
-e允许多条sed命令,每条以分号隔开
-i修改原文件内容

表 23 sed 命令的动作及说明

动作作用
a\在当前行后添加一行或多行内容。多行行末尾需要加"\"
c\用c后面的字符替换原数据
i\在当前位置插入一行或多行
d删除指定的行
p输出指定的行
s字符串替换,格式为"行范围 s/旧字符串/新字符串/g"

例如:

sed '2p' a.txt  #输出第2行后,又把所有内容输出一遍
sed -n '2p' a.txt  #只输出第二行
sed '2,4d' a.txt  #删除第2到4行,只删除屏幕输出,不会更改文件本身的内容
sed '2a hello' a.txt  #在第二行插入一行 hello
sed '2i hello' a.txt  #在第二行前插入多行 hello 一行 
sed '2c no person' a.txt  #用no person 替换第二行
sed '4s/99/55/g' a.txt  #把第4行的99替换为55
sed -i '4s/99/55/g' a.txt  #把第4行的99替换为55,修改的是原文件而不是屏幕输出
sed -i 's/99/55/g' a.txt  #s前不加行号时表示替换整个文件中匹配的字符串
sed -e 's/Liming//g;s/Gao//g' a.txt  #-e表示允许多个条件执行,把Liming替换为空,把Gao替换为空

⑤ echo 中字符截取

假设有变量 var=http://www.google.com/test.htm
1、 # 号截取,删除左边字符,保留右边字符。

echo ${var#*//}

其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.google.com/test.htm

2、 ## 号截取,删除左边字符,保留右边字符。

echo ${var##*/}

##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.google.com/
结果是 test.htm

3、 %号截取,删除右边字符,保留左边字符

echo ${var%/*}

%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.google.com

4、 %% 号截取,删除右边字符,保留左边字符

echo ${var%%/*}

%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:

5、 从左边第几个字符开始,及字符的个数

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:

6、 从左边第几个字符开始,一直到结束。

echo ${var:7}

其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.google.com/test.htm

7、 从右边第几个字符开始,及字符的个数

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:test

8、 从右边第几个字符开始,一直到结束。

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。
结果是:test.htm
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

三、存储与磁盘命令

① mount 命令

作用:用于挂载文件系统
格式: mount 文件系统 挂载目录
表 24 mount 命令的参数及作用

参数作用
-a挂载所有在/etc/fstab中定义的文件系统
-t指定文件系统的类型

例如:把设备/dev/sdb2挂载到/backup 目录

mount /dev/sdb2 /backup

② umount 命令

作用:用于卸载已挂载的设备文件
格式:umount 【挂载点/设备文件】
例如:卸载 /dev/sdb2

umount /dev/sdb2

③ fdisk 命令

该命令为交互式命令,可用动态调整
作用:用于管理磁盘分区
格式:fdisk [磁盘名称]
表 24 fdisk 命令的参数及作用

参数作用
m查看全部可用参数
n添加新的分区
d删除某个分区的信息
l列出所有可用的分区类型
t改变某个分区的类型
p查看分区信息
w保存退出
q不保存退出

④ du 命令

作用:用于查看文件数据占用量
格式:du [选项] 【文件】
例如:查看/etc 目录占用空间大小

du -sh /etc

⑤ df 命令

作用:用来检查文件系统的磁盘空间占用情况
格式:df [选项] [文件]

表 25 df 命令的参数及作用

参数作用
-a显示所有的文件系统,包括虚拟文件系统
-h以人们易读的GB、MB、KB等格式显示
-H和-h参数一样,但是1k=1000
-i不用硬盘容量,而是以inode的数量来显示
-k以KB的容量显示
-m以MB的容量显示
-l只显示本地文件系统
-t只显示指定类型的文件系统
-T显示文件系统类型
-x不显示指定类型的文件系统。

例如:

df /bin/ls /home /usr/  #指定多个文件或文件夹
df -a    #包括虚拟文件系统
df -B 1k    #1k为单位
df -h  #以人们易读的方式显示
df -t ext3 #只显示类型为ext3的文件系统

⑥ ln 命令

作用:用于创建链接文件
格式:ln [选项] 目标
表 26 ln 命令的参数及作用

参数作用
-s创建符号链接,没有该参数默认创建硬链接
-f强制创建文件或目录的链接
-i覆盖前询问
-v显示创建过程

四、 其他命令

① curl 命令

作用:打开一个网址
格式:curl 网址

curl www.baidu.com

② ping 命令

作用: 用于测试与对方主机的网络连通性
格式:ping [选项] [ip地址/网址]

ping -c 3 -i 0.2 -W 3 www.baidu.com
#-c表示尝试次数 -i表示每个数据包的发送间隔 -W表示等待超时时间

③ gzexe 命令

作用:用于加密原shell脚本文件
格式:gzexe shell脚本文件

gzexe 1.sh   #1.sh为shell脚本文件

④ read 命令

作用:用于读取用户输入
格式:read [选项] 变量名(默认变量名为REPLY)
例如:读取用户输入,并将内容保存到变量PASSWD中

read -p "请输入密码:" PASSWD  #-p 表示输出提示信息
read -p "请输入密码:" -s PASSWD #-s 表示隐藏用户输入内容 
read -r line # 允许输入包含反斜杠
read -t 3  # 指定读取等待时间为3秒

⑤ echo 命令的补充

表 27 echo 命令常用的转义字符

转义字符作用
反斜杠使其后面的一个变量变成单纯字符
单引号转义其中所有变量为单纯字符串
双引号保留其中的变量属性,不做转义处理
反引号将内容作为命令执行并返回结果

例如:

PRICE=5 #声明一个变量PRICE
echo "Price is \$$PRICE" # 将第一$符号以字符串的形式输出
echo `uname -a`

表 28 echo 命令的参数及作用

参数作用
-n不换行输出
-e开启反斜杠转义
-E禁用反斜杠转义(默认)

例如:打印有色字体

echo -e "\033[1;30m I love you!\033[0m"
# 1的位置代表背景色, 30的位置是代表字体颜色,其中/033也可以用/e代替

表 29 echo 中转义字符及作用

转义字符作用
\033[0m关闭所有属性
\033[1m设置高亮度
\033[4m下划线
\033[5m闪烁
\033[7m反显
\033[8m消隐
\033[30m ~ \33[37m设置前景色
\033[40m ~ \33[47m设置背景色
\033[nA光标上移n行
\033[nB光标下移n行
\033[nC光标右移n行
\033[nD光标左移n行
\033[y;xH设置光标位置
\033[2J清屏
\033[K清除从光标到行尾的内容
\033[s保存光标位置
\033[u恢复光标位置
\033[?25l隐藏光标
\033[?25h显示光标

⑥ trap 命令

作用:用于指定在接收到信号后将要采取的动作
格式: trap [-pl] ‘接受信号后执行的命令’ 信号名称(或值)
例如:

trap 'echo -e "\n\033[37;31;5m安装已被中断\033[39;49;0m";read -p "输入任意键继续:"' 2
# 当接受到“2”信号时执行echo以及read命令,一般用于保证程序正常运行
# 单(双)引号里面可以为多个命令,但必须以分号隔开,另外2为SIGINT(程序终止信号)一般由Ctrl+C键触发,trap捕捉到该信号会执行trap中的命令并不会终止程序
trap "exit 1" HUP INT PIPE QUIT TERM
# 表示当shell收到HUP INT PIPE QUIT TERM这几个命令时,当前执行的程序会读取参数“exit 1”,并将它作为命令执行。

参数说明:

  • 如果命令项是空字符串则指定的信号都会被shell和它所调用的命令忽略;
  • 如果有-p选项而没有提供命令项则会打印所有与指定信号相关联的trap命令;
  • 如果没有提供任何参数或者仅有-p选项,trap命令将会打印与每一个信号有关联的命令的列表;
  • 另外 -l 的作用是让shell打印一个命令名称和其相对应的编号的列表。

五、信号及快捷键

1. 信号

信号的分类:

  • 不可靠信号:(1 - 31) 会出现信号丢失,非实时信号
  • 可靠信号:(34 - 64) 不会出现信号丢失 ,实时信号

表 30 系统信号及说明

系统信号说明
1) SIGHUP终端的控制进程结束,通知session内的各个作业,脱离关系
2) SIGINT程序终止信号(Ctrl+c)
3) SIGQUIT和2号信号类似(Ctrl+\),但产生core文件
4) SIGILL执行了非法指令,可执行文件本身出现错误
5) SIGTRAP有断点指令或其他trap指令产生,有debugger使用
6) SIGABRT调用abort函数生成的信号
7) SIGBUS非法地址(内存地址对齐出错)
8) SIGFPE致命的算术错误(浮点数运算,溢出,及除数为0 错误)
9) SIGKILL用来立即结束程序的运行(不能为阻塞,处理,忽略)
10) SIGUSR1用户使用
11) SIGSEGV访问内存错误
12) SIGUSR2用户使用
13) SIGPIPE管道破裂
14) SIGALRM时钟定时信号
15) SIGTERM程序结束信号(可被阻塞,处理)
16) SIGSTKFLT协处理器栈堆错误
17) SIGCHLD子进程结束,父进程收到这个信号并进行处理,否则进程僵住
18) SIGCONT让一个停止的进程继续执行(不能被阻塞)
19) SIGSTOP让一个进程停止执行(不能被阻塞,处理,忽略)
20) SIGTSTP停止进程的运行(可以被处理和忽略)
21) SIGTTIN当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行.
22) SIGTTOU类似SIGTTIN,但在写终端时收到
23) SIGURG有紧急数据或者out-of-band 数据到达socket时产生
24) SIGXCPU超过CPU资源限定(可改变)
25) SIGXFSZ当进程企图扩大文件以至于超过文件大小资源限制
26) SIGVTALRM虚拟时钟信号(计算的是该进程占用的CPU时间)
27) SIGPROF时钟信号(进程用的CPU时间及系统调用时间)
28) SIGWINCH窗口大小改变时发出
29) SIGIO文件描述符准备就绪,可以进行读写操作
30) SIGPWRpower failure
31) SIGSYS非法的系统调用

实时信号:

34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3
38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+7
42) SIGRTMIN+843) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+11
46) SIGRTMIN+1247) SIGRTMIN+1348) SIGRTMIN+1449) SIGRTMIN+15
50) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-1253) SIGRTMAX-11
54) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7
58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-3
62) SIGRTMAX-263) SIGRTMAX-164) SIGRTMAX

2. 常用快捷键

表 31 常用快捷键及说明

快捷键产生信号及作用说明
ctrl+c发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行
ctrl+z发送 SIGTSTP 信号给前台进程组中的所有进程,挂起进程而并非结束进程
ctrl+d特殊的二进制值,表示 EOF,作用相当于在终端中输入exit后回车
ctrl+/发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件
ctrl+s中断控制台输出
ctrl+q恢复控制台输出
ctrl+l清屏

其实,控制字符都是可以通过stty命令更改的,可在终端中输入命令"stty -a"查看终端配置
关于挂起和恢复:
用户可以使用使用fg/bg操作恢复执行前台或后台的进程。fg命令在前台恢复执行被挂起的进程,此时可以使用ctrl+z再次挂起该进程,bg命令在后台恢复执行被挂起的进程,而此时将无法使用ctrl+z再次挂起该进程;
挂起的常用应用:
正在使用vi编辑一个文件时,需要执行shell命令查询一些需要的信息,可以使用ctrl+z挂起vi,等执行完shell命令后再使用fg恢复vi继续编辑你的文件(当然,也可以在vi中使用 !command 方式执行shell命令)

六、环境变量及相关命令

环境变量是用来定义系统运行环境参数的,比如用户的家目录、邮件存放位置等
表 32 常用变量及作用

变量名称作用
HOME用户的主目录
shell用户使用shell解释器的名称
HISTSIZE输出的历史命令记录条数
HISTFILESIZE保存的历史命令记录条数
MAIL邮件保存地址
LANG系统语言
PATH定义解释器搜索用户执行命令的路径
EDITOR用户默认的文本编辑器

命令在linux中的执行

  1. 第一步:判断用户是否以绝对/相对路径的方式输入命令(如:/bin/ls)如果该路径下有该命令则直接执行,没有则继续第二步。
  2. 第二步:判断用户输入的命令是否是用户自定义命令,举例说明一下:当用户自定义一个cp命令(命令内容为cd /root)那么cp命令就是“cd /root” 并非“复制”,确定了命令内容就会继续第三步。
  3. 第三步:bash解释器会判断用户输入的是内部命令还是外部命令,内部命令会直接执行,外部命令则继续第四步。
  4. 第四步:系统在多个路径查找用户输入的命令文件,而定义这些路径的变量就是 PATH,然后bash解释器会在这些路径里面逐个查找,找到就会执行没有找到就不会执行。所以外部命令的命令文件路径要写进PATH变量里,并且每个路径值以冒号间隔

① alias 命令

作用:用来创建用户自定义命令的命令
格式:alias 别名=命令
例如:

alias my_rm=rm 
alias qq='run qq.bin'
alise a='sqlplus / as sysdba'

② unalias 命令

作用:取消用户自定义命令的命令
格式:unalias 用户自定义命令
例如:

unalias rm  #一般为了防止用户误删文件rm命令其实是rm -i 的别名,取消掉后就不会询问用户是否删除

③ export 命令

作用:用于将变量全局化便于其他用户使用
格式:export 变量名
例如:

WORK=/home/work  #声明一个变量保存work路径
export WORK  #将变量WORK全局化

④ which 命令

作用:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
格式:which 命令/可执行文件
例如:

which cd  #查看cd命令的命令文件位置
which which #查看which命令的命令文件位置
#命令执行结果(which命令是一个“别名命令”):
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
	/usr/bin/which

七、计划任务命令

① at 命令

作用:用于制定一次性计划任务
格式:at 时间
例如:在23:00关闭计算机

at 23:00
at > shutdown -h now 
# ctrl+D结束编写计划任务
另外可以使用管道符编写
echo "shutdown -h now" | at 23:00 

查看和删除计划:查看:at -l 删除:atrm 计划任务ID

② crontab 命令

crontab命令是调用系统默认启动的crond服务来创建计划任务,与at命令的区别是它可以创建长期(周期)计划任务
表 33 crontab 的参数及作用

参数作用
-e创建或编辑计划任务
-l查看计划任务
-r删除计划任务
-u(管理员)编辑其他用户计划任务

计划任务文档的书写格式:分 时 日 月 星期 命令
例如:每周一、周五的5点打包/root目录

0 5 * * 1,5 /usr/bin/tar -zvcf backup.tar.gz /root

计划任务的特别说明:

  • 命令一定要用绝对路径,例如tar命令:/usr/bin/tar
  • 用#号开头添加注释信息
  • 计划任务中“分”字段必须有值,不能为空或是星号
  • “日”与“星期”字段不能同时使用,否则会发生冲突

另外:

  • 逗号(,):表示多个时间段,例如5,7,10月:5,7,10
  • 减号(-):表示一段连续的时间周期,例如周一到周五:1-5
  • 除号(/):表示时间间隔,例如每隔两分钟的写法:*/2

八、重定向命令

重定向包括 输入重定向输出重定向
简单来说,输入重定向就是把文件内容导入到命令中;输出重定向就是把原本要输出到屏幕的内容写入文件中。
重定向分为3中:

  • 标准输入重定向(0):默认从键盘输入,也可以从文件或命令中输入
  • 标准输出重定向(1):默认输出到屏幕
  • 错误输出重定向(2):默认输出到屏幕

表 34 输入重定向中用到的符号及作用

符号作用
命令 < 文件将文件作为命令的标准输入
命令 << 终止符从标准输入中读入,直到遇到终止符停止
命令 < 文件1 > 文件2将文件1作为命令的标准输入并将标准输出到文件2

表 35 输出重定向中用到的符号及作用

符号作用
命令 > 文件将标准输出重定向到文件(清空)
命令 >> 文件将标准输出重定向到文件(追加)
命令 2> 文件将错误输出重定向到文件(清空)
命令 2>> 文件将错误输出重定向到文件(追加)
命令 >> 文件 2> &1 或 命令 &>> 文件将标准输出和错误输出共同写入文件(追加)

例如:
1.统计文件内容行数

wc -l < 1.txt
相当于:
cat 1.txt | wc -l

2.利用重定向向文件写入内容:

#清空1.txt文件的内容后将“linux常用命令”写入1.txt
echo "linux常用命令" > 1.txt
#在1.txt文件内容后面追加“linux常用命令”
echo "linux常用命令" >> 1.txt
#将错误信息写入1.log文件(假设文件 777.txt 不存在)
ls -l 777.txt 2>> 1.log #777.txt不存在,那么ls -l 命令就会报错

3.利用重定向实现切换用户去执行命令

su - root 
systemctl disable firewalld
su - oracle <<EOF
lsnrctl start
sqlplus / as sysdba <<!
startup
exit
!
sqlplus -S scott/scott<<A
set heading off
set verify off
set pagesize 100
set linesize 500
select * from emp;
exit
A
EOF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦陀无情花有意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值