• 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’

  • 相关阅读:
    Java的静态块与实例块(转)
    Programming Ability Test学习 1031. Hello World for U (20)
    Programming Ability Test学习 1011. World Cup Betting (20)
    Programming Ability Test学习 1027. Colors in Mars (20)
    Programming Ability Test学习 1064. Complete Binary Search Tree (30)
    Programming Ability Test学习 1008. Elevator (20)
    【maven详解-生命周期】Maven的生命周期和插件
    【maven详解-插件】maven插件学习之源码插件Source Xref
    $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
    你还没真的努力过,就轻易输给了懒惰
  • 原文地址:https://www.cnblogs.com/xiaojinniu425/p/6216220.html
Copyright © 2020-2023  润新知