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

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

添加环境变量 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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被螃蟹夹了肿了怎么办 吃了死了的螃蟹怎么办 被沙漠蝎子咬到怎么办 明台手表掉了怎么办 如果撞了豪车怎么办 车子陷到泥巴里怎么办 乳房一生气就疼怎么办 4s屏幕不显示怎么办 雷神红蜘蛛掉漆怎么办 桔子树根部霉了怎么办 电脑u盘被禁用怎么办 机房u盘限制了怎么办 蜘蛛爬到人身上怎么办 房间里有蛐蛐叫怎么办 养的雨林蝎跑了怎么办 多肉长得太高了怎么办 手被蝎子咬了怎么办 被蝎子蛰住了怎么办 小孩被蝎子蜇了怎么办 孕妇被蝎子蛰了怎么办 怀孕被蝎子蜇了怎么办 孩子被蝎子蛰了怎么办 手被蝎子蛰了怎么办 被东亚钳蝎蛰了怎么办 孕37周羊水过多怎么办 孕38周羊水过多怎么办 孕39周羊水过多怎么办 生完孩子腿关节疼怎么办 手指上长了倒刺怎么办 肥肉吃多了恶心怎么办 大便粘稠怎么回事还便秘怎么办 狗狗大便次数多怎么办 宝宝拉白色稀便怎么办 5个月宝宝流鼻涕怎么办 5个月婴儿流鼻涕怎么办 五个月宝宝流鼻涕鼻塞怎么办 4个月宝宝流鼻涕怎么办 大便经常是稀的怎么办 拉黑色的稀大便怎么办 孕晚期半夜饿了怎么办 肠胃不好大便不成型怎么办