shell入门基础&常见命令及用法

shell

shell是一个命令解释器,实际是一个程序,/bin/bash,linux中所有的命令都由它来解释,有自己的语法

shell脚本

以.sh结尾

shell语法+linux命令

注释:

单行注释 :
#

多行注释 :
:<<c   c

shell执行方式

bash /path/to/script-name  或   /bin/bash /path/to/script-name    (强烈推荐使用)

/path/to/script-name   或  ./script-name    (当前路径下执行脚本)

source script-name  或  . script-name    (注意“.“点号后面有空格)

前两种执行时,都会开启新的进程执行脚本

source不会开启新的进程

使用source时,可以与当前终端共享进程,共享变量(重点)

变量

1、name=itcast

2、name=‘itcast
$age‘  不会解析里面的遍历

3、name=”itcast
$age“ 解析变量后,再拼接成新的字符串

命令变量

1、name=`ls`

2、name=$(ls)

括号里必须是linux命令,把命令执行的结果记录给变量

全局变量

方法一:

变量名=值

export 变量

方法二:(最常用)

export 变量名=值

如果是在终端中定义全局变量,作用范围是当前终端及子进程

如果想要自己定义的全局变量在跟系统的全局变量一样在所有环境都有效,需要在~/.bashrc或/etc/profile文件中定义:

修改~/.bashrc后,直接打开新的终端,定义的全局变量就生效了,此方式只对当前用户有效

修改/etc/profile时,需要重启操作系统,定义的全局变量才生效,此方式对所有用户有效

上面两种方式在修改文件后,如果想让全局变量在当前终端生效,需要执行命令source ~/.bashrc或source /etc/profile

查看变量

标准使用方式:"${变量名}"

内置

$0  获取当前执行的shell脚本文件名

$$  获取执行shell脚本的进程号

$n  获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来${10}

$#  获取当前shell命令行中参数的总个数

$?  获取执行上一个指令的返回值(0为成功,非0为失败)

$?:上一条命令是执行一个文件,返回的结果是文件中的最后一条命令

默认值

1、

变量a如果有内容,那么就输出a的变量值

? 变量a如果没有内容,那么就输出默认的内容

? 格式:

???? ${变量名:-默认值}

2、

无论变量a是否有内容,都输出默认值

? 格式:

????${变量名+默认值}

测试语句

等号左右必须有空格,中括号左右必须有空格

test a = 1

[ a = 1 ]

逻辑表达式

&&符号

命令1
&& 命令2

如果命令1执行成功,那么执行命令2

如果命令1执行失败,那么不执行命令2

||符号

命令1 || 命令2

1 如果命令1执行成功,那么不执行命令2

2 如果命令1执行失败,那么执行命令2

文件表达式

判断是否是可执行文件

[ -f abc ] && [ -x abc
]

计算表达式

a=$((a+1))

let a=a+1

重定向

命令>文件

命令返回的结果又正确和错误两种,1代表正确,2代表错误

bash chongdingxiang.sh
>/dev/null 2>&1 &

把正确的和错误的结果都输出到黑洞文件,而且命令在后台执行

linux四剑客

grep

grep -nr 关键字 .

find

find . -name
"*sh"

sed

  行编辑工具

-i 真正的修改

s:替换

a:追加

i:插入

d:删除

sed -i "s#sed#SED#g"
sed.txt

每一行找到sed,把所有的替换为SED

sed -i
"2s#SED#sed#2" sed.txt

第二行的第二个SED替换为sed

sed -i "1,4a\hello2"
sed.txt

在1到4行的每一行后追加一行内容

sed -i "1i\hello3"
sed.txt

在第1行前插入一行

sed -i "2d" sed.txt

删除第2行

awk

分析工具,按行处理

awk
‘BEGIN{FS=":";OFS="--"} {print $2,$NF}‘ awk2.txt

默认按照空格或tab键拆分数据,通过OFS指定输出时的分隔符

流程控制

  

  if语句

if [ 条件
]

then

指令1

elif [ 条件2
]

then

指令2

else

指令3

fi

#!/bin/bash

read -p "请输入性别:" sex
if [ "$sex" == "nan" ]
then
echo "输入的是男"
fi

  case语句

#!/bin/bash

case "$1" in
        "start")
        echo "启动"
        ;;
     "stop")
         echo "停止"
        ;;
     "restart")
         echo "重启"
         ;;
         *)
         echo "。。。。"
         ;;
esac

  for循环

遍历文件夹

#!/bin/bash

mkdir ../bak
for file  in $(ls)
do
    # echo "file: $file"
    cp "$file" ../bak/"${file}-bak"
done

   seq命令

#!/bin/bash

for num in $(seq 5)
do
     echo "num: $num"
done

   while循环

#!/bin/bash

count=1
while [ $count -lt 5 ]
do
     echo "count: $count"
     let count=count+1
done

   until循环

#!/bin/bash

count=1
until [ $count -ge 5 ]
do
     echo "count: $count"
     let count=count+1
done

  函数

#!/bin/bash

echo "jiaoben : $1,$2,$3"
dayin(){
if [ $# = 3 ]
then

echo "hanshu : $1,$2,$3"
else
     echo "需要3个参数"
fi
}

#dayin  e f g
dayin  $1 $2 $3

    使用source执行脚本,脚本中定义的变量和函数都能在当前终端调用

让root用户能够使用python虚拟环境

export
WORKON_HOME=/home/python/.virtualenvs/

source /usr/local/bin/virtualenvwrapper.sh

原文地址:https://www.cnblogs.com/longguoliang/p/9477414.html

时间: 2024-10-07 10:12:28

shell入门基础&常见命令及用法的相关文章

shell 入门基础三

    linux shell 编程 1什么是bash shell 变量 shell变量可分为两类: 局部变量和环境变量. 局部变量只在创建它们的shell中可用.而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用.有些变量是用户创建的,其他的则是专用shell变量.变量名必须以字母或下划线字符开头.其余的字符可以是字母.数字(0~9)或下划线字符.任何其他的字符都标志着变量名的终止.名字是大小写敏感的.给变量赋值时,等号周围不能有任何空白符.为了给变量赋空值,可以在等号后跟一

shell 入门基础一

1,man命令是一个帮助我们,快速掌握某个命令的使用方法的命令,当然前提时我们安装了man命令模块,man命令的用法,man command,后面跟自己不了解的命令,如果你的系统没有安装,先执行命令,yum install man* 安装 2,cd命令,cd命令时linux目录下,切换路径的命令,主要用法是用来浏览文件系统,和遍历目录所需. 用法(一)cd  绝对路径 例如cd /etc/profile.d,cd /home等等 用法(二)cd  相对路径 例如cd ../ 上一级目录 cd .

Linux shell入门基础(六)

六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行的角色是不一样的: #shell scripts(UNIX Like系统的原则有一条:程序越短越好) #bash csh tcsh ksh #which startx(查看文件的路径) /usr/X11R6/bin/startx #vi `which startx` #!/bin/sh …… #vi

shell编程基础-find命令

Linux中find常见用法示例find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数: path: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录. -print: find命令将匹配的文件输出到标准输出. -exec: find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' { } \;,注意{ }和\:之间的空格.

shell编程基础-sed命令

linux之sed用法sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上.但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来.  

linux下shell脚本中sed命令的用法

先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> test.sql #将test.sql文件中的每一行最后的符号“,”删除 sed -i 's/,$//g' test.sql #在test.sql文件中每行的开头添加左括号“(” sed -i 's/^/(&/g' test.sql #在test.sql文件中每一行的末尾添右括号“)” sed -i 's

shell 入门基础

一. Shell变量 1. 变量可分为两类: 环境变量(全局变量) 和 局部变量 . 环境变量 : 所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器.shell脚本和各类应用 . 环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置 /etc/bashrc./etc/profile文件或者/etc/profile.d/ 中定义 . 将环境变量放入profile文件中 , 每次用户登录时这些变量值都将被初始化

Linux shell入门基础(八)

八.shell脚本sed&awk 01.sed的使用 流编辑器-Steam Editor #ed /etc/passwd 1,10p …… 1s/root/byf/p(替换root为byf) #sed -e 's/root/byf/g' /etc/passwd (功能同上) 只是显示出来的内容更改 #sed -e 's/root/byf/g' /etc/passwd > /tmp/a #cp /tmp/a /etc/passwd #sed -n -e '/\<byf\>/p(打印

Shell入门基础

Shell的Helloworld #!/bin/bash echo "helloworld taosir" 执行方式 方式一:用 bash 或 sh 的相对或绝对路径(不用赋予脚本+x权限) bash 文件相对或绝对地址 sh 文件相对或绝对地址 方式二:采用输入脚本脚本的绝对路径或相对路径(必须具有可操作权限+x)赋予脚本文件+x权限 chmod 777 文件名 注意: 第一种方式本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限 第二中方式本质是脚本需要自己执行,所以需要