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’

posted @ 2016-12-23 21:57  xiaojinniu425  阅读(170)  评论(0编辑  收藏  举报