linux第3天

当使用sigqueue传递信号发送额外数据时,需要设置act.sa_flags = SA_SIGINFO;

 

l  shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。

 

软硬连接 命令ln

[test@localhost shell]$ ln my.tar.gz my2.tar.gz  建立一个硬连接

[test@localhost shell]$ ln -s my.tar.gz  kjfs          建立一个软连接

 

l  shell脚本基本元素

#!/bin/bash 

 

#shell脚本

mytext="hello world"

echo $mytext;

 

注意初学者易犯错误:

1)  第一行#不是注释其他#都是注释;

2)  echo $mytextA;写错现象;

3)  写错现象#!bin/bash 忘记写bin前面的那个斜杠

4)  脚本如果没有执行权限 chmod 111 01hello.sh,如何办

5)  chmod u+x 01hello.sh  chmod u-x 01hello.sh

 

  自定义别名: alias ll = ‘ls -alh’

  ls `cat myfile.txt` –alh通过单反引号,把’cat myfile’的内容输出传给ls, 原理是单反引号里的内容当作命令,但如果不是标准命令,则前面需要一个命令去接.

后台处理 后台nohup commond &

 

 

l  管道

  把一个命令的输出作为另外一个命令的输入

  ls -l| sort;  ls | sort

  重定向<输入>输出

  与管道相关,可以改变程序运行的输入来源和输出地点

  sort< myfile.txt

  sort<myfile.txt >myfile+sort.txt

 

  本地变量在用户现有的shell生命期的脚本中使用。

  仔细思考本地变量背后的含义! echo $MYV 每登录一个终端,都会运行一个shell程序,这个本地变量,就保存在这个shell程序中;如果再新登录,将启动新的shell程序,与原来的shell不同。

 

环境变量用于所有用户进程(经常称为子进程)。

登录进程称为父进程。shell中执行的用户进程均成为子进程。不像本地变量(只用于现在的shell),环境变量可用于所有子进程,这包括编辑器、脚本和应用程序。

 

  变量替换(显示变量)

$(variablename)  显示实际值

$(variablename:+value)  若设置了variablename,则显示;否则空

$(variablename:?value)  若未设置variablename,则显示用户自定义信息valude

$(variablename:-value)  若未设置variablename,则显示其值

$(variablename:=value)  若未设置了variablename,则设置其值,并显示

 

  unset 清除变量

 

 

位置变量

#!/bin/bash

#param

echo "脚本的名字 $0"

echo "parm 1: $1

echo "parm 2: $2"

echo "parm 3: $3"

echo "parm 4: $4"

echo "parm 5: $5"

 

双引号可以解析出变量

单引号解析不了

单反引号里面的内容会当成命令输出

 

 

shell输入与输出

echo -e  -e是表示解析转义字符  

            -n是表示不换行,默认换行

 

 read语句可以从键盘或文件的某一行文本中读入信息,并将其制复制给一个变量。

  read var1 var2 ….    若只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇上第一个文件结束符或者回车。如果给了多个变量,他们按照顺序分别赋予不同的变量。shell将用空格作为变量之间的分隔符。

 

  cat myfile.txt | more 当myfile.txt比较大时,使用该命令可以设置分页符,一页一页看

 

shell是从左至右分析相应的命令

 

文件重定向

 cat file1 file2 file3 >err.out 2<&1

将标准输出,标准错误,都定向到err.out中

 

 

1、  exec命令可以用来代替当前shell;换句话说,并没有启动子shell,使用

这一命令时,任何现有环境都将被清除,并重新启动一个shell。

exec command command通常是一个shell脚本。

Eg:测试执行完该命令后,需要重新登录shell,然后export声明的变量都失效了。exec ./hello.sh 

 

2、对文件描述符进行操作时,也只有这个时,它不会覆盖你的当前的shell。

 

#!/bin/bash

#file_desc

#

exec 3<&0 0<name.txt #将标准输入保存至文件描述符3,再将name.txt放到标准输入

read line1#读取 从name.txt

read line2#读取 从name.txt

exec 0<&3 #将前面保存到文件描述符3的0号文件描述符再放到0号位置,

 

echo $line1

echo $line2

 

你可能感兴趣的:(linux第3天)