美文网首页
【linux】shell 脚本相关知识

【linux】shell 脚本相关知识

作者: 鸦言 | 来源:发表于2020-07-15 19:38 被阅读0次

基础知识

!:记录命令历史

tab:命令补全

alias:将长指令赋予别名,方便调用。

管道符(|):把前面的命令运行的结果丢给后面的命令

Ctrl + z:暂停一个进程

fg:回复暂停的命令

bg:是暂停的命令后台运行

Ctrl + c:终止一个进程

[ ]:如果是数字的话就用[0-9]这样的形式,当然有时候也可以用这样的形式[15]即只含有1或者5,注意,它不会认为是15。如果要过滤出数字以及大小写字母则要这样写[0-9a-zA-Z]。另外[ ]还有一种形式,就是[^字符] 表示除[ ]内的字符之外的字符。

通配符:

  1. “*” 匹配零个或多个字符
  2. “?” 匹配一个字符
  3. “#” 注释掉后面的内容
  4. “\” 转义字符
  5. “|” 管道符,文档操作等,将前面命令的结果丢给后面的命令
  6. “$” 变量前面的标识符
  7. “!” 上条命令中最后一个 “东西” 赋值给 “!

字符串的操作

grep:过滤一个或多个字符

筛选出含有 root 的行:

cat /etc/passwd |grep root

root:x:0:0:root:/root:/bin/bash

cut:截取一段字符

cut -d “分隔字符” [-cf] n 这里的n是数字

-d :后面跟分隔字符,分隔字符要用双引号括起来
-c :后面接的是第几个字符
-f :后面接的是第几个区块

每一行都根据 “:” 分割,每行输出第一段:

cat /etc/passwd |cut -d ":" -f 1

root
daemon
bin
sys
sync
games
man
lp
mail

sort:用做排序

sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2
-t 分隔符:作用跟cut的-d一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

取前五行,排序:

head -n5 /etc/passwd |sort

bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin

取前五行,按:分割后按第 3 块排序:

head -n5 /etc/passwd |sort -t: -k3n

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

下图:取前五行,按:分割后按第 3 块反向排序

head -n5 /etc/passwd |sort -t: -k3nr

sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash

wc:统计文档的行数、字符数、词数,常用的选项为:

-l :统计行数
-m :统计字符数
-w :统计词数

利用echo和“>”构建一个文本文件:

echo "hello world" >123.txt
cat 123.txt
hello world
echo "hello2 world2" >123.txt
cat 123.txt
hello2 world2
echo "hello world" >>123.txt
echo "hello3 world3" >>123.txt
cat 123.txt
hello2 world2
hello world
hello3 world3

分别对:行、字符和词 计数

cat 123.txt |wc -l
3
cat 123.txt |wc -m
40
cat 123.txt |wc -w

uniq:相邻行重复数据进行去重处理

-c :统计重复的行数,并把行数写在前面

tee :

后跟文件名,类似与重定向”>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。

tr :替换字符,常用来处理文档中出现的特殊符号

如DOS文档中出现的^M符号。常用的选项有两个:
-d :删除某个字符,-d 后面跟要删除的字符
-s :把重复的字符去掉
最常用的就是把小写变大写: tr ‘[a-z]’ ‘[A-Z]’

cat 123.txt |tr '[a-z]' '[A-Z]'

HELLO2 WORLD2
HELLO WORLD
HELLO WORLD
HELLO3 WORLD3
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO3 WORLD3
HELLO2 WORLD2

split :切割文档,常用选项

-b :依据大小来分割文档,单位为byte

;:在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个”;”了。

~:用户的家目录,如果是root则是 /root ,普通用户则是 /home/username

~# cd ..
/# cd ~
:~# 

& :如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况。

使用jobs可以查看当前shell中后台执行的任务。用fg可以调到前台执行。这里的sleep命令就是休眠的意思,后面跟数字,单位为秒,常用语循环的shell脚本中。

. >, >>, 2>, 2>>:

前面讲过重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和 2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>。

[ ]:中括号,中间为字符组合,代表中间字符中的任意一个

&& 与 与 ||

使用”;”时,不管command1是否执行成功都会执行command2;使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。

相关文章

  • Shell入门笔记

    Shell脚本:Linux Shell脚本学习指南菜鸟教程 - Shell教程Linux入门 - Shell脚本是...

  • 【linux】shell 脚本相关知识

    基础知识 !:记录命令历史 tab:命令补全 alias:将长指令赋予别名,方便调用。 管道符(|):把前面的命令...

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Linux 教程

    本系列文章介绍使用 Linux 操作系统的相关命令和操作,纯属个人积累,欢迎参考。 Shell 脚本 Shell ...

  • shell脚本学习材料

    本着对linux和shell脚本的极大兴趣,我看了不少shell脚本相关的书和文章,也有了很多学习心得, 回首自己...

  • 17. Interview-Linux

    1 用过哪些Linux命令? 2 写过shell脚本吗?shell脚本基本格式? 3 Linux I/O读写方式 ...

  • 指令随笔

    linux 修改shell脚本的编码 在window下编写的shell脚本编码为dos,在linux环境下不能直接...

  • shell脚本

    1)什么是shell脚本 文档: http://www.runoob.com/linux/linux-shell....

  • 自动化脚本实践(Shell + Expect)

    Linux Shell脚本入门: Linux awk 命令 | 菜鸟教程 Shell 教程 | 菜鸟教程 lin...

  • 使用 SHC 加密 Shell 脚本

    如何在Linux环境中加密shell脚本?shell脚本包含密码,不希望其他具有执行权限的人查看shell脚本并获...

网友评论

      本文标题:【linux】shell 脚本相关知识

      本文链接:https://www.haomeiwen.com/subject/rlcvcktx.html