关于linux脚本编程的一些笔记

来源:互联网 发布:matlab定义字符串数组 编辑:程序博客网 时间:2024/06/12 01:06

添加环境变量 export PATH="$PATH:/home/user/bin";

echo中可以使用彩色输出,彩色文字为 \e[31 etc   彩色背景为彩色文字加10;

cat /pro/$PID/environ 可以查看运行时的环境变量;

pgrep 命令可以查看PID;

${#变量}  可以用于获取变量长度;

在数学运算时,let (()) [] 可以执行基本算数操作。

result=$((a+5))

let result=a+b  当使用let时不需要使用$

使用bc 

echo “4 * 0.56” | bc

 设置小数精度 添加 scale=

 设置数制 添加 obase= ibase=

使用 会先清空文件

1> 标准输出 2>标准错误

Linux 重定向 

利用后台作用使用 &>&>>

利用文件描述符 B>&A 或者 B>>&B 将文件描述符B重定向到A

使用exec命令可以自定义文件描述符

$ exec 3<input.txt  使用文件描述符3打开读取文件

数组 a={1 2 3 4}

定义关联数组 $a={[index1]=call [index2]=xall}

使用别名 alias

获取终端信息

$IFS 定界符

可以用逻辑运算符 [ condition ] && action  如果condition 为真 则执行action

[ condition ] || action 如果condition 为假 则执行action

-gt >

-lt <

-ge >=

-le <=

-eq ==

-ne !=

-a 

-o 

cat 不仅可以从读取文件并拼接数据,还能过从标准输入中进行读取

录制与回放终端会话

$script -t 2> timing.log -a output.session

两个配置文件,timing.log储存时序信息,output.session储存命令输入信息

$scriptreplay timing.log output.session 回放操作

 可以用作广播视频会话

 打开两个终端,terminal1terminal2 

1中输入 $ mkfifo scriptfifo

2中输入 $ cat scriptfifo

返回输入 

$ script -f scriptfifo

$开始做事情了!!!

$exit

使用cat可以回放,同时也可以实时播放!

Find 命令

$find base_path 当前目录下所有文件

 find . -print 打印匹配文件的文件名(路径)

$ find /home/slynux -name “*.txt” -print

使用 -iname 时忽略大小写

匹配多个条件中一个使用OR 

$find . \( -name “*txt” -o -name “*.pdf”\) -print

-path 用路径名进行匹配 

-regex用正则表达式进行匹配

-type 搜索文件类型

$ find . -type f -name “*.swp” -delete 删除当前目录下的所有.swp文件

$find . -type f -name “*.php” ! -perm 644 -print

将多行输入转换成单行输出


将单行输入转换成多行输出

$cat kk.txt | xargs -n 3

 xargs -d . 定制分界符

Xargs 可以将包含参数的文件传递给一个命令

INPUT | xargs -n X 每次执行传递X个参数

$find . -type f -name “*.c” -print0 | xargs -0 wc -l

$cat files.txt | ( while read arg; do cat $arg; done  ) 运用子shell读取参数

Tr 只能通过stdin 而无法通过命令行参数来接受输入

Tr [option] set1 set2

$echo “HELLO WORLD!” | tr “A-Z” “a-z” A-Z 与 a-z是集合

通过tr中使用集合该脸,我们可以将字符从一个集合映射到另一个集合,可以对数字进行加密和解密

$echo 12345 | tr ‘0-9’ ‘9876543210’

$echo 87654 | ///

 tr -d 用于删除

 

校验和与核实

Md5sumsha1sum

$md5sum filename

得到一串16进制串

将输出的校验和重定向到一个文件,然后用MD5文件核实数据的完整性:

$md5sum filename > filename_sum.md5

$md5sum -c file_sum.md5 校验数据完整性

Sha1sum 与 md5sum 非常相似 校验文件后缀变为.sha1

Sort -n 按数字排序

Sort -r 逆序排序

Unique 消除重复内容

随机文件命名与随机数

最适合储存临时数据的地方时/tmp 该目录中内容重启后会被清空

Temp_files=$(tempfile) 为变量temp_file 赋予了一个临时文件名

Temp_file=”/tmp/file-$RANDOM”

如果不使用tempile语法 可以 

Temp_file=”/tmp/var.$$”  .$$后缀会被扩展为当前脚本的进程ID

分割文件和数据

$dd if=/dev/zero bs=100k count=1 of=data.file

上面指令会创建一个大小为100KB的文件 且内容全部是0

$split -b 10k data.file

$ls

拼写检查 aspell 作用时拼写检查

在目录/usr/share/dict 

两个脚本 aspellcheek.shcheckword.sh 用于查找单词

更改所有权 

$chown user.group filename

设置粘滞位

它是一种应用与目录的权限类型,通过设置粘滞位可以使得只有目录的所有者才能删除目录中的文件

Chmod a+t directory_name

Chattr 将文件设置为不可修改。

Chattr +i file

创建符号链接 ln -s target symbolic_link_name

 脚本filestat.sh 

Declare -A statarray 申明了一个数组

While read line;

Do something

Done< filename  file重定向输入的方式将临时文件中的数据传递给while循环

生成ISO镜像

Dd if=/dev/cdrom of=image.iso

查找文件差异并进行修补

Diff

只列出目录的方法

Ls -d */

在命令行中用pushdpopd快速定位

它的实现基于栈结构,每次pushd的地址压入栈,popd的地址压出栈

为了压入并切换路径

$pushd /var/www

Grep match_pattern filename

Grep -E 使用正则表达式 等同于 egrep

$grep “text” . -R -n .(当前目录)递归查找文档

--include *.{c,cpp} 包括

--exclude “README” 排除

Sed 一个用法是文本替换

$sed ‘s/pattern/replace_string/’  file

$cat file | sed ‘s/pattern/replace_string/’ file

-i 用替换结果替换原文件

$sed ‘/^$/d’ file 移除空白行

/pattern/d 会移除匹配样式的行

 

Awk被用来设计数据流。

Awk ‘ BEGIN{ print “start” } pattern { command } END{ print “end” }’ file

Awk命令通常由三部分组成,BEGIN语句快 END语句块,和能够使用模式匹配的通用语句块/3部分时可选的。

1) 执行BEGIN 语句块的语句

2) 从文件或者stdin读取一行,然后执行pattern 重复这个过程知道文件被全部读取完毕

3) 当读至输入流的末尾时,执行END语句块

-v 将外部值传递给awk

-F “delimiter” 来指明一个定界符

awk中读取命令输出

“command” | getline output ;

$echo | awk {}

对文件中的行 单词 字符进行迭代

While read line;

Do

Echo $line;

Done<file.txt

使用子shell 

$cat file.txt | ( while read line; do echo $line;done )

迭代一行中的每一个单词

For word in $line;

Do 

Echo $word;

Done

$ls -l | awk ‘{ print $1” : “ $8 }’

打印M行到N行的所有文本

Awk ‘NR==M,NR==N’ filename

$seq 5 | tac

网站下载 

Wget 是一个用于文件下载的命令行工具 

wget可以下载网页和远程文件

Wget URL

Wget URL1 URL2 ...

可以根据URLwget 下载文件

通常下载的文件名和URL的文件名一样,下载信息和进度保存到stdout

-O可以制定输出文件名 如果同名,会将同名文件清空,将新文件写入

可以-o指定一个日志文件

$wget ftp:...... -O dimmm.file -o log

-t 指定重试的次数

下载限速 --limit-rate

$wget --limit-rate 20k URL

断点续传

$wget -c URL

cURL下载

$curl URL > index.html

wget不同 curl将下载数据写到标准输出,所以需要重定向的文件

复制或镜像整个网站

Wget有一个选项可以使其像爬虫一样以递归的方式收集网上所有的URL链接,这样可以下载一个网站的所有页面

,并逐个下载 --mirror

$wget --mirror exampledomain.com

或者$wget -r -N -l DEPTH URL

$wget --user username --password pass URL

网页手动输入密码 --ask-password

从命令行访问Gmail

Ifconfig 用于显示网络接口 子网掩码等详细信息

Host nslookup 用于DNS查找

Route 路由表



0 0