Linux常用命令与shell脚本学习(linux命令和shell脚本)

  本篇文章为你整理了Linux常用命令与shell脚本学习(linux命令和shell脚本)的详细内容,包含有linux命令行与shell脚本编程大全和鸟哥的私房菜 linux命令和shell脚本 linux常用shell操作指令 linux shell命令行及脚本编程实例详解 Linux常用命令与shell脚本学习,希望能帮助你了解 Linux常用命令与shell脚本学习。

  route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1

  配置静态路由到达⽹ 络192.168.0.0/16

  
方式1,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限;

  方式2,本质是脚本自己需要执行,所以需要执行权限

  多命令处理

  在/tmp目录下创建一个test.txt文件,并在文件中写入1234567890

  

 vi batch.sh

 

  

 

  

#!/bin/bash

 

  cd /tmp

  touch test.txt

  echo "1234567890" test.txt

  

 

  shell中的变量

  常用系统变量

  $HOME
 

  $PWD
 

  $SHELL
 

  $USER

  

[root@mc ~]# echo $HOME

 

  /root

  [root@mc ~]# echo $PWD

  /root

  [root@mc ~]# echo $SHELL

  /bin/bash

  [root@mc ~]# echo $USER

  

 

  自定义变量

  定义变量:变量=值 等号两边不能留有空格

  撤销变量:unset 变量

  输出变量:echo $变量

  声明静态变量: readonly 变量,注意:不能unset

  变量定义规则

  变量名称可以由字母,数字和下划线组成,不能以数字开头,环境变量名建议大写

  等号两侧不能有空格

  在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

  变量的值如果有空格,需要使用双引号或单引号括起来

  可把变量提升为全局变量,可供其他shell程序使用

  

export 变量

 

  

 

  

#!/bin/bash

 

  echo "helloworld!!!!"

  echo $A

  

 

  $n (描述:n为数字,$0代表脚本名称,10以内参数用$1-9 表示 , 10以上的需要用大括号包含 ,9表示,10以上的需要用大括号包含,9表示,10以上的需要用大括号包含,{10})

  

#!/bin/bash

 

  echo "$0 $1 $2 $3"

  

 

  $# (功能描述:获取所有输入参数个数,常用于循环)

  

#!/bin/bash

 

  echo "$0 $1 $2 $3"

  echo $#

  

 

  $* 和$@

  $* (描述:代表命令行中所有的参数,把所有参数看成一个整体)

  $@ (描述:也代表命令行中所有的参数,不过把每个参数区分对待)

  

#!/bin/bash

 

  echo "$0 $1 $2 $3"

  echo $#

  echo $*

  echo $@

  

 

  $? (描述:最后一次执行命令的状态,0:正确执行)

  $((运算式)) 或 $[运算式]

  expr +,-,*,/,% 加减乘除取余

  expr运算符间要有空格

  
(2)if后要有空格
 

  case 语句

  

#!/bin/bash

 

  case $1 in

   echo "成功"

   echo "失败"

   echo "未知"

   echo "默认"

  

 

  注意事项:

  case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

  双分号“;;”表示命令序列结束,相当于java中的break。

  最后的“*)”表示默认模式,相当于java中的default。

  for循环

  从1加到100

  

#!/bin/bash

 

  for((i=1;i =100;i++))

   s=$[$s + $i]

  echo $s

  

 

  打印所有输入参数

  

#!/bin/bash

 

  for i in $*

   echo $i

  

 

  比较$*和$@区别

  $*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。

  

#!/bin/bash

 

  for i in $*

   echo "* $i "

  for j in $@

   echo "@ $j"

  

 

  当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。

  

#!/bin/bash

 

  for i in "$*"

  #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次

   echo "* $i"

   done

  for j in "$@"

  #$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次

   echo "@ $j"

  

 

  WHILE循环

  从1加到100

  

#!/bin/bash

 

  while [ $i -le 100 ]

   s=$[$s + $i]

   i=$[$i + 1]

  echo $s

  

 

  read读取控制台输入

  

read(选项)(参数)

 

  

 

  -p:指定读取值时的提示符;
 

  -t:指定读取值时等待的时间(秒)。
 

  参数
 

  变量:指定读取值的变量名

  提示7秒内,读取控制台输入的名称

  

#!/bin/bash

 

  read -t 7 -p "7秒内输入名称:" NAME

  echo $NAME

  

 

  basename基本语法

  basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

  选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

  

# 用法一

 

  [root@mc datas]# basename /root/datas/read.sh

  read.sh

  # 用法二

  [root@mc datas]# basename /root/datas/read.sh .sh

  

 

  dirname基本语法

  dirname 文件绝对路径(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

  

[root@mc datas]# dirname /root/datas/read.sh

 

  /root/datas

  

 

  自定义函数

  

[ function ] funname[()]

 

   Action;

   [return int;]

  funname

  

 

  必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。

  函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)

  


 

 

  sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

  sed [选项参数] ‘command’ filename

  选项参数说明

  


 

 

  删除cut.txt文件所有包含wo的行

  

 sed /wo/d cut.txt 

 

  

 

  将cut.txt文件中wo替换为ni

  

 sed s/wo/ni/g cut.txt 

 

  

 

  注意:‘g’表示global,全部替换

  将cut.txt文件中的第二行删除并将wo替换为ni

  

sed -e 2d -e s/wo/ni/g cut.txt 

 

  

 

  一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

  awk [选项参数] ‘pattern1{action1} pattern2{action2}...’ filename
 

  pattern:表示AWK在数据中查找的内容,就是匹配模式
 

  action:在找到匹配内容时所执行的一系列命令

  选项参数说明

  
只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"dahaige,/bin/zuishuai"。

  

 awk -F : BEGIN{print "user, shell"} {print $1","$7} END{print "dahaige,/bin/zuishuai"} passwd

 

  

 

  注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。

  将passwd文件中的用户id增加数值1并输出

  

awk -v i=1 -F: {print $3+i} passwd

 

  

 

  awk的内置变量

  


awk -F: {print "filename:" FILENAME ", linenumber:" NR ",columns:" NF} passwd 

 

  

 

  

ifconfig eth0 grep "inet" awk -F t {print $2} awk -F " " {print $1}

 

  

 

  查询cut.txt中空行所在的行号

  

awk /^$/{print NR} sed.txt

 

  

 

  sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

  sort(选项)(参数)

  


 

 

  vim常用快捷键

  
 

  查看大图

  grep常见用法

  

ls grep logs

 

  

 

  查找文件(字符串)

  

 ls grep "for"

 

  

 

  

# 查找wo

 

  grep wo cut.txt

  # 查找空格

  grep " " cut.txt

  

 

  查找多个字符串

  

grep -e wo -e zhen cut.txt

 

  

 

  搜索包含两个连续的“d”字母的字符串

  

egrep -E d\{2} cut.txt 

 

  grep -E d\{2} cut.txt

  

 

  []括号用于匹配一组字符中的任何一个。

  

grep "[1358]" cut.txt 

 

  

 

  [-]括号可用于指定数字或字母字符范围

  

 grep "[6-9]" cut.txt 

 

  

 

  ^脱字符号用于搜索只出现在行的开头的模式

  

grep ^d cut.txt 

 

  

 

  带方括号的脱字符号用于从搜索模式中排除字符

  

grep "[^6-9]" cut.txt

 

  

 

  $符号用于搜索只出现在行的末尾的模式

  

grep "9$" cut.txt

 

  

 

  ** or条件**

  

grep -E 89 cut.txt

 

  egrep 89 cut.txt

  

 

  忽略大小写 -i

  

 grep -i dong cut.txt

 

  

 

  搜索时区分大小写

  如果我们要搜索一个字符串,其中第一个可以是大写或小写,但字符串的其余部分应该是小写怎么办?在这种情况下,无法使用-i 忽略大小写,所以一种简单的方法是使用方括号。

  

grep [Dd]ong cut.txt 

 

  

 

  带行号 -n

  

 grep -n wo cut.txt

 

  

 

  输出前后行 -C

  输出之前行-B

  输出之后行-A

  

grep -A 1 la cut.txt 

 

  grep -B 1 la cut.txt

  grep -C 1 la cut.txt

  

 

  对结果排序

  

grep "[6-9]" cut.txt sort

 

  

 

  多文件查找-l与-L

  

# 包含使用-l

 

  grep -l bash *.sh

  # 不包含使用-L

  grep -L bash *.sh

  

 

  通过使用 和 来准确匹配到了 bin 这个词

  

grep "\ bin\ " /etc/passwd

 

  

 

  以上就是Linux常用命令与shell脚本学习(linux命令和shell脚本)的详细内容,想要了解更多 Linux常用命令与shell脚本学习的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: