linux学习笔记之shell

Linux学习笔记之shell

1,  shell的作用

shell为命令解释器,它介于操作系统内核和用户之间,负责解释命令。大部分Linux中默认的shellbash shell。用户的登录shell记录在用户的密码文件中/etc/passwd中的最后一个字段。用#usermod –s shell程序路径 用户名更改用户的shell或者直接在用户密码文件中更改。注意,如果不想让某用户登录系统,可以更改该字段为nologin

2,  shell的输入与输出

shell的脚本中,可以使用标准输入,缺省为键盘,也可以指定一个文件。输出缺省为屏幕输出,也可以将结果输入到文件中。

使用命令输出#echo

echo string   /c不换行

                /f进纸

                /t跳格

                /n换行

echo –n 禁止输入后换行

-e  是转义符生效。

   使用命令输入#read

   Read variable varible2 ….

   使用read命令指定变量,系统将说有的输入再赋值给改变量,直到遇到回车或者文件结束符。

例如:#read NAME                          定义一个变量NAME

      Hello                                 将字符串Hello赋值给变量NAME

      #echo $NAME                         echo将变量NAME的值输出

      Hello                                 NAME的值Hello被输出

  管道命令符“|”的使用

管道命令符用语吧一个命令的输出传递给另一个命令作为输入。格式为:命令|命令

例如:#ls | grep guatel.doc 在列出的文件中查找guatel.doc这个文件。

 

标准输入,输出和错误。

其中0代表标准输入,缺省为键盘,也可以是文件和命令

1代表标准输出,缺省为屏幕,也可以是文件

2代表标准错误。缺省时屏幕,也可以是文件

文件的重定向

在执行命令时,可以指定输入,输出和错误。要实现这一点要使用文件重定向。常用的文件重定向命令

Command > filename             把输出重定向到新文件

Command >>filename             把输出重定向到文件(追加)

Command 1>filename              把输出重定向到文件中(覆盖)

Command >filename 2>&1          把输出和错误一起定义到文件中

Command 2>filename               把错误定向到文件中

Command 2>>filename             把错误追加到文件

Command >>filename 2>&1          把输出和错误一起追加到文件中

Command <filename >filename2        把文件1作为输入,以文件2作为输出

Command <filename                把文件1作为输入

Command <delimiter              从标准输入中读入,知道遇到delimiter分解符

Command <&m                  把文件描述符作为输入

Command >&m                   把输出重定向到文件描述符m

Command <&-                      关闭标准输入

 

 

Shell中条件判断符的使用

&&命令,只有在左边命令返回真的时候右边的命令才能被执行。

例如:#mv /app/bin  /apps/bin   && rm –r /apps/bin

||命令 ,只有左边命令未执行成功,那么就执行后面的命令。

例如:#cp wp.txt cpps.txt || echo “copy failed”

 

 

环境和shell变量

变量可以定制用户本身的工作环境,也可以保存一些有用的信息,还可以保存一些临时的信息。

 

用户自定义变量,只在用户自己定义和修改

环境变量,系统维护,用于设置用户的工作环境

预定义变量,bash中的特殊变量,不能直接修改

位置变量,通过命令行给程序传递参数

 

用户自定义变量。#变量名=变量值定义        例如#A=12

环境变量,常见的有$USER(用户名),$LOGNAME(主机名)$UID(用户ID,$SHELL(当前的shell$HOME(用户家目录)$PWD(绝对路径)$PATH(可执行命令的路径)$EDITOR(默认的编辑器)。全局环境变量的配置文件在/etc/profile中,用户自己的环境变量在~/.bash_profile中。可以用命令#set来查看系统的环境变量的设置情况

 

预定义的变量

$0:当前执行的进程名字

$$:当前执行的shellPID

$?:上一条命令是否执行成功,如果为0则成功,非0则失败

 

 

位置变量

$n :n代表变量的位置

例如#./touchfile file1 file2 file3           file1就是$1意味着它是第一个参数,其他同理依次为$2$3

 

作业,编写一个简单的shell脚本输出hello

#vim zuoye

在文件中添加代码

#!/bin/bash                            表示使用bin下面的bash进行编译

#this is my zuoye

Echo “hello”

保存退出。

#chmod a+x zuoye          给文件添加执行权限

#./zuoye                  执行shell文件

 

Shell中的控制语句

 

1.条件判断语句if

在进行if语句的学习之前我们得要了解一些条件判断的参数             

参数

返回值

意义

-e filename

True

文件存在

-f filename

True

文件存在并且是一般文件

-d directoryname

True

文件为目录

-w filename

True

文件存在并且可写

-r filename

True

文件存在并且只读

-x filename

True

文件存在并且可执行

-s filename

True

文件不为空

-b filename

True

文件未特殊块

-L filename

True

文件为连接

-O filename

True

文件属于当前用户

-G filename

True

文件输入当前组

File1 –ot file2

True

文件1比文件2

File –nt file2

True

文件1比文件2

Int1 –eq int 2

True

Int1 大于int2

Int1 –ge int2

True

Int1大于或等于int2

Int1 –gt int2

True

Int1大于int2

Int1 –le int2

True

Int1小于等于int2

Int1 –lt int2

True

Int1 小于int2

Int –ne int2

True

Int1不等于int2

 If条件语句的格式

if  条件判断                     例如:if  [ $int –eq 90 ]

then                                   then

结果                                  echo “yes,$int = 90”

else                                   else

结果                                  echo “no,$int != 90”

fi                                     fi

 

 

2,循环语句for

For的格式:

for  loop in  取值范围           例如:for loop in {12356}

do                                   do

命令                                 $loop=`expr $loop + 1`

Done                                 done

While语句的格式:

While 条件

Do

结果

Done

 

3,  分支语句case

Case 变量值 in

 模式1 命令;;

模式2 命令;;

* 命令;;

Esac

 

4,  until循环

until 条件                         直到满足条件才执行

do

命令

Done

 

5,  breakcontinue语句的区别

两者都用于控制循环的,break直接跳出了整个循环,而continue跳出当前的循环重新判断执行下一次循环。

 

本文出自 “一直奔跑在路上” 博客,转载请与作者联系!

你可能感兴趣的:(linux,shell,职场,学习笔记,休闲)