• linux常用命令


    修改/etc/inittab文件中initdefault参数可以修改默认启动图形化界面还是文本界面,3为默认进入文本界面,5为默认进入图形化界面。

    Init 6

    Shutdown –r now 立刻重启

    Shutdown –r 延迟分钟数 延迟多长时间重启

    关机

    Halt

    Init 0

    Shutdown –h now

    #是root用户

    $是普通用户

    增加用户,并改密码

    useradd liuwu

    Passwd liuwu

    删除用户

    Userdel –r liuwu

    切换用户

    su

    用法: su root 或者 su - root

    这两者的区别是su root不会重新加载切换用户的用户变量,su - root会重新加载用户的用户变量

    重启、启动、停止网络命令

    service network restart/start/stop

    vi命令

    • 光标定位

    M 移动光标到页面中央

    L移动光标到页面尾处

    H移动光标到页面开始处

    Ctrl+f向后翻页

    Ctrl+b向前翻页

    0移动光标到行首

    $移动光标到行尾

    /:从上往下开始查找 n下一个  N上一个

    ?:从下往上开始查找

    • 撤销和重复

    u复原前一个动作-撤销

    . 重复前一个动作-重复

    • 复制 粘贴 删除

    nyy  复制光标所在的向下n行内容

    yw复制光标后的单词,以空格为分界

    p在光标处粘贴复制的内容

    ndd删除光标所在向下n行的内容

    ctrl + d:往下翻半屏内容

    ctrl + u:往上翻半屏内容

    shift + g:到文件末尾

    r:替换当前位置字符

    x:删除当前位置字符

    dd:删除整行

    set number:显示行号

    • 复制 粘贴 删除

    set nonu:取消显示行号

    :1,3y 复制第一行到第三行

    :1,3d 删除第一行到第三行

    :1,3s/str/str_new/g 替换第一行到第三行中的字符串(一行中所有)

    :1,3s/str/str_new    替换第一行到第三行中的字符串第一个字符

    :1,3 g/str /d 删除第一行到第三行中含有这个字符串的行

    %全部,:%d全部删

    :%s/str/str_new/g 替换所有

    • 搜索字符串

    输入/+要查找的字符串 /bestest

    按n键重新查找下一个

    N查找上一个

    • 退出vi

    q 退出vi

    q! 不保存退出

    wq 保存退出

    e!不保存修改的文件

    w 保存

    !强制,后面加叹号的话表示强制

    Uname –a 查看系统版本

    Df –lh 显示硬盘多大地方

    netstat -nlpt|grep 80 查端口号有没有被占用

    |wc –l

    ps -ef|grep mysql  查找所有进程,在结果中查找mysql,如果没有mysql还会显示一个grep的进程

    ps -ef|grep mysql –v prep 这样排除了grep

     

    • head:显示文件的开头至标准输出中

    用法:head [参数]... [文件]...

    主要参数:

    -n<行数> 显示的行数

    • tail:查看文件末尾内容

    用法:tail [参数] [文件]

    主要参数:-f 动态读取

    动态查看日志 tail -f err.log

    查看末尾10行日志 tail -10 err.log

    动态查看末尾5行日志 tail -5f err.log

    • wc:统计指定文件中的行数、字节数、字数,并将统计结果显示输出

    用法:wc [选项] [文件]

    主要参数:

    -c 统计字节数。

    -l 统计行数。

    -m 统计字符数。这个标志不能与 -c 标志一起使用。

    -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

    -L 打印最长行的长度。

    -help 显示帮助信息

    可以不加任何参数使用

    grep -c “foo” a.txt

    ps -ef|grep httpd |grep -v "grep"

    find / -name besttest

    AWK实战

    • 匹配文件出现内容的行

    awk ‘/Exception/ {print NR} ‘catalina.out

    • 查询tomcat进程号

    ps -ef|grep tomcat |grep -v "grep" |awk '{print $2}‘

    • 输出apache日志中的访问ip地址、访问路径和状态码

    awk '{print "ip=="$1,"path=="$7,"code=="$9}' /opt/lampp/logs/access_log

    • 将成绩不及格的学生名称输出

    awk '{if($2>60){}else{print $1}}' soce.txt

    • 将mysql的进程号写到mysql.pid这个文件中

    ps -ef|grep mysql|grep -v "grep"|awk '{print $2 > "mysql.pid"}'

    • Shell 支持自定义变量

    定义变量时,变量名不加美元符号($)

    name='besttest'

    注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样,同时还得遵循以下规则:

    首个字符必须为字母(a-z,A-Z)。

    中间不能有空格,可以使用下划线(_)。

    不能使用标点符号。

    不能使用bash里的关键字(可用help命令查看保留关键字)。

    使用变量,使用变量时前面加上一个美元符号($)或者${name},即可

    echo ${name}

    变量

    含义

    $$

    当前Shell进程ID,就是这个脚本的pid

    $0

    当前文件名

    $n

    取传递给脚本的参数,n是一个数字,n是几就取第几个参数

    $#

    取参数的个数

    $@

    取所有参数,被双引号(" ")包含时,与 $* 稍有不同

    $*

    取所有参数

    $?

    最后命令的退出状态,0表示没有错误,其他任何值表明有错误

    + - * / % 分别对应加、减、乘、除、取余

    只需将特定的算术表达式用“$((” 和“))” 括起来,例如:

    a=$((4-2))  a的值为2

    a=10

    b=2

    echo $(($a+$b))

    echo $(($a-$b))

    echo $(($a*$b))

    echo $(($a/$b))

    echo $(($a%$b))

    运算符

    说明

    举例

    -eq

    检测两个数是否相等,相等返回 true。

    [ $a -eq $b ]

    -ne

    检测两个数是否相等,不相等返回 true。

    [ $a -ne $b ]

    -gt

    检测左边的数是否大于右边的,如果是,则返回 true。

    [ $a -gt $b ]

    -lt

    检测左边的数是否小于右边的,如果是,则返回 true。

    [ $a -lt $b ]

    -ge

    检测左边的数是否大等于右边的,如果是,则返回 true。

    [ $a -ge $b ] 

    -le

    检测左边的数是否小于等于右边的,如果是,则返回 true。

    [ $a -le $b ]

    操作符

    说明

    举例

    -d file

    检测文件是否是目录,如果是,则返回 true。

    [ -d $file ] 返回 false。

    -f file

    检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。

    [ -f $file ] 返回 true。

    -r file

    检测文件是否可读,如果是,则返回 true。

    [ -r $file ] 返回 true。

    -w file

    检测文件是否可写,如果是,则返回 true。

    [ -w $file ] 返回 true。

    -x file

    检测文件是否可执行,如果是,则返回 true。

    [ -x $file ] 返回 true。

    -s file

    检测文件是否为空(文件大小是否大于0),不为空返回 true。

    [ -s $file ] 返回 true。

    -e file

    检测文件(包括目录)是否存在,如果是,则返回 true。

    [ -e $file ] 返回 true。

    定义数组

    在Shell中,用括号来表示数组,数组元素用“空格”符号分隔开,不像其他语言中用逗号分隔,shell中只支持一维数组,数组的下标可以不连续。

    例如:

    array = (value1 value2 … )

    array = (value

    value1

              value2)

    也可以通过下标赋值的方式来定义一个数组

    list[0]=1

    list[8]=9

    数组的取值方式:

    ${array_name[index]}

    ${list[0]}

    使用@ 或 * 可以获取数组中的所有元素,例如

    ${list[*]}

    ${list[@]}

    获取数组长度的方法与获取字符串长度的方法相同,使用#,例如:

    len = ${#list[*]}

    • if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句:
      • if ... fi 语句;
      • if ... else ... fi 语句;
      •       if ... elif ... else ... fi 语句。
      • if ... else 语句的语法:
        • if [ expression ]

    then Statement(s)

    else

    Statement(s)

    Fi

    if ... elif…else…fi 语句的语法:

    if [ expression ]

    then Statement(s)

    elif [expression ]

    then

    Statement(s)

    else

     Statement(s)

    fi

    用if来写一个简单的小脚本

    判断一个脚本是否有执行权限,如果没有的话,给它加上可以执行的权限,如果没有这个脚本的话,创建一个

    #!/bin/bash

       file='/root/my.sh'

       if [ -x $file ]

       then

              echo $file

                     else

              touch $file

       chmod +x $file

       fi

    用case esac来写一个简单的小脚本    

    根据输入的参数来判断,输入r的话执行一个脚本,输入c的话创建一个脚本,输入d的话删除这个脚本,输入其他的都执行这个脚本

    #!/bin/bash

    num=$1

    case $num in

    x)

      chmod +x my.sh

     ;;

     d)

      rm -rf my.sh

     ;;

     c)

      touch my.sh

     ;;

     *)

      bash my.sh

     ;;

    esac

    做一个小练习,用for和if,遍历/root目录下的所有文件,打印出来可执行的文件

    #!/bin/bash

    path='/root'

    for file in $path/*

    do

    if [ -x $file -a -f $file ]

    then

    echo $file

    fi

    done

    做一个小练习,用while写一个计算累加和的脚本,输入一个数字,算它的累加和。

    #!/bin/bash

    num=$1

    i=0

    sum=0

    while [ $i -le $num ]

    do

      sum=$(($sum+$i))

      i=$(($i+1))

    done

    echo "$sum"

    做一个小练习,写一个函数,功能是显示一个目录下以.sh结尾的文件

    #!/bin/bash

    function showsh()

    {

        for file in $1/*.sh

        do

        echo $file

        done

    }

    showsh $1

    find –name ‘*.sh’

  • 相关阅读:
    【力扣 077】451. 根据字符出现频率排序
    【力扣 072】1696. 跳跃游戏 VI
    【力扣 075】409. 最长回文串
    【力扣 078】387. 字符串中的第一个唯一字符
    日志切面接口和方法demo
    fastjson不出网代码利用
    随机生成指定长度的字符串
    C#内插字符串,格式化字符串
    C#,如何分别在x64和x86平台上加载同一个名称的原生dll
    软件体系结构——习题
  • 原文地址:https://www.cnblogs.com/xiaojinniu425/p/6216220.html
Copyright © 2020-2023  润新知