记录一下 CentO7 中常用的命令
命令:
rpm -q package-name #检查包是否被安装
rpm -qa #列出所有安装的包
shell 脚本参数 传参数$$$
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。被双引号(“ “)包含时,与 $* 稍有不同,下面将会讲到。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
Linux corn
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 需要执行的命令 |
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
sed
sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。sed是按行来处理文本内容的。在shell中,使用sed来批量修改文本内容是非常方便的。
sed
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
function:
a :新增行, a 的后面可以是字串,而这些字串会在新的一行出现(目前的下一行)
c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除行,因为是删除,所以 d 后面通常不接任何参数,直接删除地址表示的行;
i :插入行, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g 一般是替换符合条件的字符串而不是整行
一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。下面我们通过具体的例子直观的看看sed的使用方法。
>> 与 >
> : 会重写文件,如果文件里面有内容会覆盖。
> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空。
一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节)。
>> :追加文件,也就是如果文件里面有内容会把新内容追加到文件尾。
这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件。
shell 字符串
“” 与 ‘’
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号里可以有变量
双引号里可以出现转义字符
home=tj
echo "hello, ${home}"
echo 'hello, ${home}'
命令 grep
- 作用
Linux系统中grep命令是一种强大的文本搜索工具, - 它能使用正则表达式搜索文本,并把匹 配的行打印出来。
- grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
主要参数
-a或–text 不要忽略二进制的数据。
-A<显示列数>或–after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或–byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或–before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或–count 计算符合范本样式的列数。
-C<显示列数>或–context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或–directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式>或–regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或–extended-regexp 将范本样式为延伸的普通表示法来使用。
-f<范本文件>或–file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或–fixed-regexp 将范本样式视为固定字符串的列表。
-G或–basic-regexp 将范本样式视为普通的表示法来使用。
-h或–no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H或–with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
-i或–ignore-case 忽略字符大小写的差别。
-l或–file-with-matches 列出文件内容符合指定的范本样式的文件名称。
-L或–files-without-match 列出文件内容不符合指定的范本样式的文件名称。
-n或–line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或–quiet或–silent 不显示任何信息。
-r或–recursive 此参数的效果和指定“-d recurse”参数相同。
-s或–no-messages 不显示错误信息。
-v或–revert-match 反转查找。
-V或–version 显示版本信息。
-w或–word-regexp 只显示全字符合的列。如 “grep -w magic” 匹配 magic 不匹配magical
-x或–line-regexp 只显示全列符合的列。
-y 此参数的效果和指定“-i”参数相同。
举例: 查找 /etc/profile文件 去掉 空行,去掉注释行(以#开头)
grep -v ‘^$’ /etc/profile |grep -v ‘^#’
awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk:(将一行分为多个字段做处理)(重点)
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,*[-F域分隔符]*是可选的。default : 空格 * input-file(s) *是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。
last -n 5 | awk '{print $1}' # 去除最后5行 打印第一个字段(域)
$0 表示整个当前行
$1 每行第一个字段
NF 字段数量变量
NR 每行的记录号,多文件记录递增
FNR 与NR类似,不过多文件记录不递增,每个文件都从1开始
\t 制表符
\n 换行符
FS BEGIN时定义分隔符
RS 输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~ 匹配,与==相比不是精确比较
!~ 不匹配,不精确比较
== 等于,必须全部相等,精确比较
!= 不等于,精确比较
&& 逻辑与
|| 逻辑或
+ 匹配时表示1个或1个以上
/[0-9][0-9]+/ 两个或两个以上数字
/[0-9][0-9]*/ 一个或一个以上数字
FILENAME 文件名
OFS 输出字段分隔符, 默认也是空格,可以改为制表符等
ORS 输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F'[:#/]' 定义三个分隔符
curl 命令
#常见参数
-A/--user-agent <string> 设置用户代理发送给服务器,即告诉服务器浏览器为什么
-basic 使用HTTP基本验证
--tcp-nodelay 使用TCP_NODELAY选项
-e/--referer <URL> 来源网址,跳转过来的网址
--cacert <file> 指定CA证书 (SSL)
--compressed 要求返回是压缩的形势,如果文件本身为一个压缩文件,则可以下载至本地
-H/--header <line>自定义头信息传递给服务器
-I/--head 只显示响应报文首部信息
--limit-rate <rate> 设置传输速度
-u/--user <user[:password]>设置服务器的用户和密码
-0/--http1.0 使用HTTP 1.0
-o/--output 把输出写到该文件中(必须指定文件绝对路径)
-s/--silent 静默模式。不输出任何东西
举例:
#取URL返回状态码:
curl -s -m 10 -o /dev/null -w %{http_code} https://www.baidu.com
#检查一批URL的HTTP状态:
cat url.txt|while read line; do curl -I $line -m 5 --connect-timeout 5 -o /dev/null -s -w "$line "%{http_code}"\n"; done>ok.txt
linux中 /dev/null命令
/dev/null :代表空设备文件
0 :表示键盘输入(stdin)
:代表重定向到哪里,例如:echo “123” > /home/123.txt
1 :表示标准输出(stdout),系统默认值是1,所以”>/dev/null”等同于”1>/dev/null”
2 :表示标准错误(stderr)
& :表示等同于的意思,2>&1,表示2的输出重定向等同于1
#1、禁止标准输出
[root@zhoucentos log]# cat filename
wo ai wo jia
[root@zhoucentos log]# cat filename >/dev/null
#2、禁止标准错误
[root@zhoucentos log]# rm filename1
rm: 无法删除"filename1": 没有那个文件或目录
[root@zhoucentos log]# rm filename1 2>/dev/null
#3、禁止标准输出和标准错误
[root@zhoucentos log]# rm filename1
rm: 无法删除"filename1": 没有那个文件或目录
[root@zhoucentos log]# rm filename1 >/dev/null 2>&1
#4、清除文件的内容
[root@zhoucentos log]# cat filename
wo ai wo jia
[root@zhoucentos log]# cat /dev/null > filename
[root@zhoucentos log]# cat filename
command >/dev/null 2>&1 & == command 1>/dev/null 2>&1 &
#1)command:表示shell命令或者为一个可执行程序
#2)>:表示重定向到哪里
#3)/dev/null:表示Linux的空设备文件
#4)2:表示标准错误输出
#5)&1:&表示等同于的意思,2>&1,表示2的输出重定向等于于1
#6)&:表示后台执行,即这条指令执行在后台运行
#1>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
#2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
#这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
#所以可以看出” >/dev/null 2>&1 “常用来避免shell命令或者程序等运行中有内容输出。
if 判断
- 条件测试的表达式:
[ expression ] # 括号两端必须要有空格
[[ expression ]] # 括号两端必须要有空格
test expression
组合测试条件:
-a # : and
-o # : or
! # : 非
- 整数比较:
-eq # 测试两个整数是否相等
-ne # 测试两个整数是否不等
-gt # 测试一个数是否大于另一个数
-lt # 测试一个数是否小于另一个数
-ge # 大于或等于
-le # 小于或等于
# 命令间的逻辑关系
&& # 逻辑与:
# 第一个条件为假 第二个条件不用在判断,最总结果已经有
# 第一个条件为真,第二个条件必须得判断
|| # 逻辑或
- 字符串比较
== # 等于 两边要有空格
!= # 不等
> # 大于
< # 小于
- 文件测试
-z string 测试指定字符是否为空,空着真,非空为假
-n string 测试指定字符串是否为不空,空为假 非空为真
-e FILE 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试文件对当前用户是否可读
-w file 测试文件对当前用户是否可写
-x file 测试文件对当前用户是都可执行
-z 是否为空 为空则为真
-a 是否不空
iconv 命令
iconv
命令是linux
下用于文件转编码的常用命令,对于同时使用windows系统和linux系统的同学来说文件转编码也是经常遇到的操作。
# 输入/输出格式规范:
-f, --from-code=名称 #原始文本编$$码
-t, --to-code=名称 #输出编码
# 信息:
-l, --list #列举所有已知的字符集
# 输出控制:
-c #从输出中忽略无效的字符
-o, --output=FILE #输出文件
-s, --silent #关闭警告
--verbose #打印进度信息
-?, --help #给出该系统求助列表
--usage #给出简要的用法信息
-V, --version #打印程序版本号
SCP
# 本地向服务器上传文件
scp -r /path/to/file username@host:/path/to.file
# 从服务器下载文件
scp -r username@host:/path/to.file /path/to/file