文章目录
- 1.sudo !!
- 2.mtr 命令
- 3.nl 命令
- 4.shulf 和tree 、pstree
- tree命令
- 5.last 命令
- 6.curl ifconfig.me
- 7.lsof -i:端口号
- 8.cut 命令
- 9.seq 命令
- 11.关于 脚本里的一些特殊的符号的含义
- 12.sort 命令
- 13.ftp 的 get 和 put 命令的使用
- 14. 有时间要弄明白 cut 这个命令
- 15.echo $HOME 和pwd 这两个命令
- 16. locate指令 (快速定位文件路径)
- 17.stat 查看目录文件的
- 18.echo -e 处理特殊字符
- 19.使用egrep 进行两个字的过滤
- 20. grep -A-B -C的用法 ,这个是很少用到的选项
- 21. 以固定时间反复,执行某个命令,例如cat 和执行脚本等:
- 22.查看命令是不是内部命令 type 命令
1.sudo !!
这个命令是捕获系统输入的最后一条的命令
2.mtr 命令
这个命令是做网络跟踪的,今天虚拟机做不出来,改天想怎么搞啊
3.nl 命令
这个命令是查看文本文件的时候,按行号显示,跟cat -n 是一样的
4.shulf 和tree 、pstree
这个是结合ls 一起使用 ,用于目录文件,竖行显示,这个命令可以说非常少用
tree是把目录文件,按照树形显示,系统可能没有这个包需要按照这个包,才可以执行命令:
shulf 命令
[root@localhost shell]# ls | shuf
cjyh.sh
kefu.sh
fw.sh
ip.sh
js.sh
[root@localhost shell]# ls | shuf -n1 //这个是随机抽取一个文件
kefu.sh
tree命令
[root@localhost log]# yum -y install tree
[root@localhost ~]# tree
.
├── anaconda-ks.cfg
└── shell
├── cjyh.sh
├── fw.sh
├── ip.sh
├── js.sh
└── kefu.sh
pstree 这个是进程按树形结构显示,显示当前进程以及相关子进程,输出信息跟“tree”类似
[root@localhost ~]# yum -y install psmisc-22.20-15.el7.x86_64
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─abrt-watch-log
├─abrtd
├─agetty
├─atd
├─auditd───{auditd}
├─chronyd
├─crond
├─dbus-daemon───{dbus-daemon}
├─lsmd
├─lvmetad
5.last 命令
这个命令是查看上一次登录用户的历史信息。这个没拿过来通过收搜文件“/var/log/wtmp”,显示logged-i 和 logged -out 及其“tty’s”的用户列表
这命令最经常用就是统计登录用户:
last| awk ‘{S[$3]++}{for(a in S) print S[a],a}’ |sort|uniq|sort -h
参考博文:
1.last 命令的选项和具体的实例:
https://www.cnblogs.com/diantong/p/8940154.html
https://www.jb51.net/article/149313.htm
2.使用last统计系统的登录用户
https://www.cnblogs.com/ftl1012/p/last.html
6.curl ifconfig.me
这是一个查询外部网络的命令,当然还有其他好几条
Curl 纯文本格式输出:
curl icanhazip.com
curl ifconfig.me
curl curlmyip.com
curl ip.appspot.com
curl ipinfo.io/ip
curl ipecho.net/plain
curl www.trackip.net/i
curl JSON格式输出:
curl ipinfo.io/json
curl ifconfig.me/all.json
curl www.trackip.net/ip?json (有点丑陋)
以上这些都是可以都可以使用,为什么这么多,我现在也搞不清楚
参考博客:
https://my.oschina.net/epstar/blog/513186
7.lsof -i:端口号
这个命令是用于查看某一端口号的占用情况,比如 22端口的使用情况
其实跟ss -ntulp | grep 22 的命令有异曲同工之妙
[root@localhost ~]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 7579 root 3u IPv4 42501 0t0 TCP *:ssh (LISTEN)
sshd 7579 root 4u IPv6 42510 0t0 TCP *:ssh (LISTEN)
sshd 8911 root 3u IPv4 51617 0t0 TCP localhost.localdomain:ssh->192.168.159.1:59768 (ESTABLISHED)
参考博文:
1.具体的讲解
https://www.cnblogs.com/sparkbj/p/7161669.html
2命令的语法结构,选项的使用
https://www.cnblogs.com/mengfanrong/p/4619602.html
3.lsof ss netstat 的区别和实际的运用实例
http://www.361way.com/lsof-ss-netstat/4351.html
8.cut 命令
[root@localhost shell]# wc -l /etc/passwd | cut -d "" "-f1"
27 /etc/passwd
[root@localhost shell]# wc -l /etc/passwd | cut -d" " -f1
27
截取的命令,这个命令是很少用到,但是写脚本的时候,也会经常用到这个命令,可以指定看看文件的内容,
参考博客:
https://www.cnblogs.com/Spiro-K/p/6361646.html
https://www.cnblogs.com/siqi/p/3608893.html
9.seq 命令
这个命令经常用到脚本里进行数据计算 ,如下图
[root@localhost shell]# seq -w 1 10
01
02
03
04
05
06
07
08
09
10
[root@localhost shell]# seq 1 10
1
2
3
4
5
6
7
8
9
10
11.关于 脚本里的一些特殊的符号的含义
$# 是传给脚本的参数个数
$0 是脚本本身的文件名
$1 是脚本后接的第一个参数
$2 是脚本后接的第二个参数
$@ 是传给脚本的所有参数列表,"$1" “$2” “
3
"
…
"
3" … "
3"…"n”
$* 是以一个单字符串显示传给脚本的所有参数,"$1 $2 $3 … $n"
$$ 是脚本运行的当前进程ID号
$? 是最后运行命令的结束状态码,0表示没有错误,其他表示有错误
shift 造成参数变量号码偏移,第二个参数变为$1,以此类推。
12.sort 命令
sort 跟cat的命令是一样的,但是具体的选项是比较多的
是根据不的数据类型进行排序,默认是从小到大进行排序的
这个命令也是很常用,只是我自己很少用而已
这个命令经常配和uniq 一起使用 uniq 是去重的意思
这两个博文是sort 命令的详细解析和一些实例的应用:
https://www.cnblogs.com/ftl1012/p/9227263.html
https://www.cnblogs.com/zhangsubai/p/6861697.html
13.ftp 的 get 和 put 命令的使用
ftp 服务器 的get 命令是: 下载ftp服务器上的文件到本地
ftp 服务器 的put 命令是: 把本地的文件上传到ftp服务器上
当然还有其他的命令,查看一下这个目录:
https://www.jb51.net/article/124033.htm
14. 有时间要弄明白 cut 这个命令
15.echo $HOME 和pwd 这两个命令
pwd 是查看当前的目录
echo $HOME 是查看当前的使用账户(但是HOME必须是大写,小写无效)
[root@localhost ~]# echo $home
[root@localhost ~]# echo $HOME
/root
16. locate指令 (快速定位文件路径)
[root@king ~]# ls
anaconda-ks.cfg shell tang
[root@king ~]# locate shell
/etc/shells
/root/shell
/root/shell/cjyh.sh
/root/shell/fw.sh
/root/shell/ip.sh
/root/shell/js.sh
/root/shell/kefu.sh
/root/shell/scyh.sh
/root/shell/yhtj.sh
/root/shell/yhtj2.sh
/usr/bin/git-shell
/usr/lib/firewalld/services/kshell.xml
可以把所有关于shell的当前用户,当前目录下所有的shell 目录都给指定出来
17.stat 查看目录文件的
现网炒作命令
[root@king ~]# stat -c %Y shell
1548406055
- 命令解释:
-c 是以固定格式输入 %Y 最后一次修改,是以秒为单位
参考的博文:
https://blog.csdn.net/pointer_y/article/details/54347968
https://www.cnblogs.com/linux-super-meng/p/3812695.html
https://blog.csdn.net/yexiangcsdn/article/details/81012732
18.echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
参考博客:
https://blog.csdn.net/u012516524/article/details/84645830
http://www.zsythink.net/archives/96/
https://blog.csdn.net/sanbingyutuoniao123/article/details/72597274
19.使用egrep 进行两个字的过滤
[root@king ~]# ping -c 3 192.168.159.11
PING 192.168.159.11 (192.168.159.11) 56(84) bytes of data.
64 bytes from 192.168.159.11: icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from 192.168.159.11: icmp_seq=2 ttl=64 time=0.100 ms
64 bytes from 192.168.159.11: icmp_seq=3 ttl=64 time=0.098 ms
--- 192.168.159.11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.037/0.078/0.100/0.030 ms
[root@king ~]# ping -c 3 192.168.159.11 |egrep '%|rtt min'
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.046/0.073/0.116/0.030 ms
grep 和egrep 都是对文本文件进行过滤,对目录没有效。
查看grep 和egrep 的区别:
https://blog.csdn.net/qq_41201816/article/details/80767308
https://www.cnblogs.com/ftl1012/p/9250684.html
20. grep -A-B -C的用法 ,这个是很少用到的选项
- 实际生产环境下的,提取日志信息
zcat error.log.2019-02-19.bak.gz|grep -A 20 '2019-02-19 15'>20190220.txt
把过滤的日志信息,重定向到一个文件里
下面举几个例子
- grep -A1 keyword filename
找出filename中带有keyword的行,输出中除显示该行外,还显示之后的一行(After 1 or n)
2. grep -B1 keyword filename
找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(Before 1 or n)
3. grep -C1 keyword filename
找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(After 1)和显示之后的一行(After 1)
总体来说,-C覆盖面最大。用它保险些。哈哈。这3个开关都是关于匹配行的上下文的(context)。
21. 以固定时间反复,执行某个命令,例如cat 和执行脚本等:
[root@king python]# watch -n 1 python3 循环语句.py
watch的 -n 参数 指定反复执行的间隙,上面表示每隔1秒就执行 这个python脚本
22.查看命令是不是内部命令 type 命令
[root@king shell进阶]# type cd
cd 是 shell 内嵌
[root@king shell进阶]# type tomcat
-bash: type: tomcat: 未找到
[root@king shell进阶]# type ls
ls 是 `ls --color=auto' 的别名
[root@king shell进阶]# type ifconfig
ifconfig 是 /usr/sbin/ifconfig
[root@king shell进阶]# type mkdir
mkdir 已被哈希 (/usr/bin/mkdir)
项目 | Value |
---|---|
: | 扩展参数列表,执行重定向操作 |
. | 读取并执行指定文件中的命令(在当前 shell 环境中) |
alias | 为指定命令定义一个别名 |
bg | 将作业以后台模式运行 |
bind | 将键盘序列绑定到一个 readline 函数或宏 |
break | 退出 for、while、select 或 until 循环 |
builtin | 执行指定的 shell 内建命令 |
caller | 返回活动子函数调用的上下文 |
cd | 将当前目录切换为指定的目录 |
command | 执行指定的命令,无需进行通常的 shell 查找 |
compgen | 为指定单词生成可能的补全匹配 |
complete | 显示指定的单词是如何补全的 |
compopt | 修改指定单词的补全选项 |
continue | 继续执行 for、while、select 或 until 循环的下一次迭代 |
declare | 声明一个变量或变量类型。 |
dirs | 显示当前存储目录的列表 |
disown | 从进程作业表中刪除指定的作业 |
echo | 将指定字符串输出到 STDOUT |
enable | 启用或禁用指定的内建shell命令 |
eval | 将指定的参数拼接成一个命令,然后执行该命令 |
exec | 用指定命令替换 shell 进程 |
exit | 强制 shell 以指定的退出状态码退出 |
export | 设置子 shell 进程可用的变量 |
fc | 从历史记录中选择命令列表 |
fg | 将作业以前台模式运行 |
getopts | 分析指定的位置参数 |
hash | 查找并记住指定命令的全路径名 |
help | 显示帮助文件 |
history | 显示命令历史记录 |
jobs | 列出活动作业 |
kill | 向指定的进程 ID(PID) 发送一个系统信号 |
let | 计算一个数学表达式中的每个参数 |
local | 在函数中创建一个作用域受限的变量 |
logout | 退出登录 shell |
mapfile | 从 STDIN 读取数据行,并将其加入索引数组 |
popd | 从目录栈中删除记录 |
printf | 使用格式化字符串显示文本 |
pushd | 向目录栈添加一个目录 |
pwd | 显示当前工作目录的路径名 |
read | 从 STDIN 读取一行数据并将其赋给一个变量 |
readarray | 从 STDIN 读取数据行并将其放入索引数组 |
readonly | 从 STDIN 读取一行数据并将其赋给一个不可修改的变量 |
return | 强制函数以某个值退出,这个值可以被调用脚本提取 |
set | 设置并显示环境变量的值和 shell 属性 |
shift | 将位置参数依次向下降一个位置 |
shopt | 打开/关闭控制 shell 可选行为的变量值 |
source | 读取并执行指定文件中的命令(在当前 shell 环境中) |
suspend | 暂停 Shell 的执行,直到收到一个 SIGCONT 信号 |
test | 基于指定条件返回退出状态码 0 或 1 |
times | 显示累计的用户和系统时间 |
trap | 如果收到了指定的系统信号,执行指定的命令 |
type | 显示指定的单词如果作为命令将会如何被解释 |
typeset | 声明一个变量或变量类型。 |
ulimit | 为系统用户设置指定的资源的上限 |
umask | 为新建的文件和目录设置默认权限 |
unalias | 刪除指定的别名 |
unset | 刪除指定的环境变量或 shell 属性 |
wait | 等待指定的进程完成,并返回退出状态码 |