Linux的试金石_Linux再探索

Linux的试金石

本篇文章以VMware Workstation Pro 下的 Ubuntu.18.0.4虚拟机为主
初次作文,若有纰漏,欢迎来稿

Linux再探索

  • Linux的试金石
    • Linux命令
      • 网络基础命令
      • 终端历史记录命令history
      • 设置别名alias
      • 输出输入重定向'>>、2 >> 、&>>'
      • 命令的执行顺序
    • 写在最后

Linux命令

不同于Windows系统,Linux系统可以借助中断(Terminal)来执行一些命令来方便初学者对Linux系统的了解和掌握。

网络基础命令

  1. 发送邮件 writemail命令

    在 进行服务器管理和运营维护时,需要时刻保证服务器的正常运行,一旦发生故障,可以通过邮件进行通知,可以及时,这两个命令的区别是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
    
  2. 检测网络的状态 pingnetstat

    熟悉 Windows 系统 ,pingnetstat命令 应该不陌生,这两个命令 用来 检测网络的通断, ping命令 主要是进行四个连接检测,分析网络的丢包的百分比,而netstat 命令可以列出现在所进行的网络服务的具体信息。

     ping ip_address or domain_name
     # ping 命令 可以对 ip_address 或者 domain_name,域名可以通过DNS可以解析域名为ip地址进行处理。
     ping -t 
     # 可以实时监控网络状况,可以将其转为后台工作,或  停止当前命令的执行
     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

命令的执行顺序

  1. ;无逻辑关系 ;dd用于磁盘拷贝 ,无论前者是否正确

  2. &&两命令存在逻辑关系 需要前者正确执行才能执行后一项命令
    command && echo yes||echo no
    ps. 此句可以判断命令是否正确

  3. 管道 |
    netstat -an | grep -n --color=auto ESTABLISHED

-n 显示行号
–color=auto 对查找词显示突出颜色

  1. 通配符

    ?替代 一个任意字符

    #代替 匹配0个或任意多个字符
    […] 匹配中括号内部任意一个字符
    [-] eg.[a-z]
    [^] 逻辑非 [^0-9]非数字

  2. 特殊符号
    echo `date` === echo $(date)
    单引号类似照妖镜 能无视一切法术
    双引号可以输出特殊符号后的值

  3. 变量
    用户自定义变量 variables

    1. 命名规则

      1. 不能用 数字 开头
      2. 都是 字符串型
      3. 等号前后 不能有空格
      4. 环境变量 建议大写
    2. 变量类型

      1. 位置参数变量 只能改值

      2. 预定义变量 与 位置参数变量 是一种约束的变量
        ps.变量可以叠加

      3. 环境变量

        #环境变量 的 作用域不同
        #如何 设定环境变量
        export ...
        要注意的是 环境变量 在 子 shell 中也可以使用

  4. 具体事项

    #如何 创建子 shell ?
    bash 或者 csh 进行创建 ,同时 可以 用 进程树来确定 shell 的父子关系,当然若要 退出 子 shell 可以用 exit 进行退出

    #set 查看 环境内的 全部变量

    #unset variables 可以销毁变量

    #$PATH 包含内部的命令的路径

  5. 修改参数

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号

  1. 其余 命令
    read -t “时间数” -p "提示信息" -s "将输入隐藏" -n "限制字符数"
    declare -p 显示指定变量被声明的类型

- 给变量设定类型属性
+ 取消变量的类型属性
-i 将变量声明为整数型
-x 将变量声明为环境变量
source配置文件 or .配置文件

  1. 正则 与 通配符的区别:
    1. 正则是匹配文件中的符合条件的字符串,
      grep、awk、sed 可以支持正则表达式

    2. 通配符 是 匹配符合条件的文件名 且通配符是完全匹配,不同于正则的包含匹配 ls find cp 等命令不支持正则表达式

    3. 同时要明确 grep “aa*” file 是要列出 至少 一个a的所在行

    4. grep -n “^$” file 取空行,^ 行首 $ 行尾

    5. 同时 [^]表示范围以外的值

    6. string{n} 指 前面字符恰好出现n次

    7. string{m,n} 至少 m次 ,最多n次

    8. string{n,} 出现不少于n 次

    9. grep 提取符合条件的行 cut 提取符合条件的列
      cut -f 列号 -d 分隔符
      默认分隔符是“Tab” ,若存在 不同的分隔符 切割 需要用 awk

    10. printf ‘输出类型输出格式’ 输出内容

    若想输出 文件内的内容 要 分步执行
    printf ‘%s’ $(cat filename)
    但是 相比于 cat 输出不是有一定格式的
    其中 awk 命令输出 中 支持 print 和 printf命令
    print 默认会在输出后自动加入换行符
    printf 是标准格式输出 不会自动加入换行符

写在最后

Linux的学习之路还很漫长,需要我们脚踏实地去勤动手,多动脑来总结我们所学习过的知识。

你可能感兴趣的:(linux)