Linux的试金石
本篇文章以VMware Workstation Pro 下的 Ubuntu.18.0.4虚拟机为主
初次作文,若有纰漏,欢迎来稿
Linux命令
不同于Windows系统,Linux系统可以借助中断(Terminal)来执行一些命令来方便初学者对Linux系统的了解和掌握。
网络基础命令
-
发送邮件 write 和 mail命令
在 进行服务器管理和运营维护时,需要时刻保证服务器的正常运行,一旦发生故障,可以通过邮件进行通知,可以及时,这两个命令的区别是write 只能 给在线用户发邮件消息,而mail可以给无论是否在线的用户发邮件消息。命令格式是
#!/bin/bash write email_name "message" # send messages to users write all "message" ########################## #!/bin/bash mail host_name "message" #@brief: "mail" : sudo apt-get install mailutils # 查看 邮箱里 可读的邮件 flag=$(email list) ? flag # 当 邮件未读 flag显示 1 ,反之显示0
-
检测网络的状态 ping 和 netstat
熟悉 Windows 系统 ,ping 和 netstat命令 应该不陌生,这两个命令 用来 检测网络的通断, ping命令 主要是进行四个连接检测,分析网络的丢包的百分比,而netstat 命令可以列出现在所进行的网络服务的具体信息。
ping ip_address or domain_name # ping 命令 可以对 ip_address 或者 domain_name,域名可以通过DNS可以解析域名为ip地址进行处理。 ping -t # 可以实时监控网络状况,可以将其转为后台工作<Ctrl + Z>,或 <Ctrl + C> 停止当前命令的执行 ping -c period_time # ping 可以每个period_time对网络进行一次检查 ########################################## netstat | grep UDP or TCP # 可以 将 繁多的 网络信息里 关于 UDP 或者 TCP 的具体信息。
终端历史记录命令history
每个服务器终端都记录有常用的历史记录,默认最大1000多条记录,不建议随意删除历史记录可以将服务器的历史记录作以留存,如果有hacker入侵删除历史记录,可以察觉出历史记录被删改,同时要修改最大的历史记录留存数量要修改
/etc/profile
进行修改,同时重启才能生效或者用’source '命令来导入配置文件的修改。
history -c
# 清除命令
history -w
# 将 历史记录 写入 当前用户家目录下的*.bash_history*
history
# 列出 所有的历史记录命令,!n 表示执行第n条命令。
设置别名alias
Linux 有些常用的命令记起来比较繁琐,使用比较频繁,因而设置比较好记得别名会更有利于开发的效率。
# 举个栗子 ls -l 可以 以 'll'为别名
alias
# 该命令会列出所有的别名
alias ll ls -l
# 同时 如果想要取消别名
unalias ll ls -l
Tips:
同时Linux 有许多快捷键也能便于开发者更好地开发。eg.Ctrl + L
是清除终端屏幕,类似Windows里的cls
命令,同时删除或者剪切要用
Ctrl + U
,而不是Ctrl + X
输出输入重定向’>>、2 >> 、&>>’
为了方便开发,除了管道符
|
,Linux还提供了输出输入重定向功能,方便存储命令的运行结果,并根据结果做出相应的操作来完善。
# 如果将 命令执行的错误信息写入文件里,要在命令后加入 '2',前提filename.out 文件不存在
[ -e filename.out] 2 >> .bash_err_log
# 而 '&>>' 会将命令的错误信息和正确信息都写入文件
[ -e filename.out] ; netstat | grep UDP &>> .bash_res_log
命令的执行顺序
-
;
无逻辑关系 ;dd
用于磁盘拷贝 ,无论前者是否正确 -
&&
两命令存在逻辑关系 需要前者正确执行才能执行后一项命令
command && echo yes||echo no
ps
. 此句可以判断命令是否正确 -
管道
|
netstat -an | grep -n --color=auto ESTABLISHED
-n 显示行号
–color=auto 对查找词显示突出颜色
-
通配符
?
替代 一个任意字符#
代替 匹配0个或任意多个字符
[…] 匹配中括号内部任意一个字符
[-] eg.[a-z]
[^] 逻辑非[^0-9]
非数字 -
特殊符号
echo `date` === echo $(date)
单引号类似照妖镜 能无视一切法术
双引号可以输出特殊符号后的值
-
变量
用户自定义变量 variables-
命名规则
- 不能用 数字 开头
- 都是 字符串型
- 等号前后 不能有空格
- 环境变量 建议大写
-
变量类型
-
位置参数变量 只能改值
-
预定义变量 与 位置参数变量 是一种约束的变量
ps.变量可以叠加 -
环境变量
#
环境变量 的 作用域不同
#
如何 设定环境变量
export ...
要注意的是 环境变量 在 子 shell 中也可以使用
-
-
-
具体事项
#
如何 创建子 shell ?
bash 或者 csh 进行创建 ,同时 可以 用 进程树来确定 shell 的父子关系,当然若要 退出 子 shell 可以用 exit 进行退出#
set 查看 环境内的 全部变量#
unset variables 可以销毁变量#
$PATH 包含内部的命令的路径 -
修改参数
echo $PS1
\[\033]0;\$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n\$
ps. 查看参数
$*
将参数 看成一个整体 循环中 只会循环一次
$@
将参数 区分对待 有几个参数循环几次
$#
只表示参数的个数
$?
上一次命令的执行情况 ,返回0 则命令正确执行,返回其他值则命令未正确执行
$$
显示当前命令的PID 号
$!
最后一个后台执行进程的PID号
- 其余 命令
read -t “时间数” -p "提示信息" -s "将输入隐藏" -n "限制字符数"
declare -p 显示指定变量被声明的类型
- 给变量设定类型属性
+ 取消变量的类型属性
-i 将变量声明为整数型
-x 将变量声明为环境变量
source
配置文件 or.
配置文件
- 正则 与 通配符的区别:
-
正则是匹配文件中的符合条件的字符串,
grep、awk、sed 可以支持正则表达式 -
通配符 是 匹配符合条件的文件名 且通配符是完全匹配,不同于正则的包含匹配 ls find cp 等命令不支持正则表达式
-
同时要明确 grep “aa*” file 是要列出 至少 一个a的所在行
-
grep -n “^$” file 取空行,^ 行首 $ 行尾
-
同时 [^]表示范围以外的值
-
string{n} 指 前面字符恰好出现n次
-
string{m,n} 至少 m次 ,最多n次
-
string{n,} 出现不少于n 次
-
grep 提取符合条件的行 cut 提取符合条件的列
cut -f 列号 -d 分隔符
默认分隔符是“Tab” ,若存在 不同的分隔符 切割 需要用 awk -
printf ‘输出类型输出格式’ 输出内容
若想输出 文件内的内容 要 分步执行
printf ‘%s’ $(cat filename)
但是 相比于 cat 输出不是有一定格式的
其中 awk 命令输出 中 支持 print 和 printf命令
print 默认会在输出后自动加入换行符
printf 是标准格式输出 不会自动加入换行符 -
写在最后
Linux的学习之路还很漫长,需要我们脚踏实地去勤动手,多动脑来总结我们所学习过的知识。