Linux简单介绍(基本涵盖日常使用到的各种shell知识点)

在这里插入图片描述

文章目录

shell基础认知

1. shell语言

shell是一种脚本语言,编写完源码后不用编译,直接运行源码即可

2. 脚本执行方式

  1. ./test.sh 或者 sh test.sh ,这种执行方式都会重新打开一个子shell执行,脚本里面的变量不能立即生效,需要重新登录才可以
  2. source test.sh 这种执行方式是在原shell执行,变量会立即生效(source也可以简写为.)

3. 快捷键

Ctrl + a : 光标移动到最前面
Ctrl + e : 光标移动到最前面
Ctrl + u : 删除光标前面的命令
Ctrl + k : 删除光标后面的命令

4. 通配符

$? 最后运行命令的结束代码(返回值),0表示没有错误,其他任何值都表示有错误
$# 传给脚本的参数个数
$0 脚本本身的名字
$1 传给shell脚本的第一个参数
$2 传给shell脚本的第二个参数
$@ 传给shell脚本的所有参数列表

5. 命令后跟的选项

在这里插入图片描述
-e 存在
-d 目录
-f 文件
-L 符号链接
-r -w -x 可读可写可执行
-s 文件长度不为零
->, -h 软连接,相当于快捷方式

6. 逻辑运算 && ||

7. 算术运算(equal,great,less)

-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-lt 小于等于

8. 目录或文件意义

/etc/passwd 各个用户用的shell
~/.bash_history 登录用户命令历史
~/.bashrc bash的配置文件,可以在这里设置工作目录和命令别名,仅对当前登录用户有效
/etc/profile 变量永久有效

9. 规则

  1. 显示变量a: echo $a 或 echo ${a}
  2. echo `echo KaTeX parse error: Expected group as argument to '\`' at position 7: MAIL\` ̲反单引号用来包含命令,也可以使…()
  3. “” 双引号内的变量保持原有特性,而’'单引号内的变量仅是纯文本

10. vim

  1. vim分为三种模式:一般模式,编辑模式,命令行模式;
    一般模式键入a、i、o可以进入编辑模式,按Esc回到一般模式;
    一般模式键入:可以进入命令行模式,按Esc回到一般模式;
    编辑模式和命令行模式不互通。
  2. 一般操作:
    vim haha.sh 或者vi haha.sh
    按i进入编辑模式编辑文件,按Esc进入一般模式,
    按:进入命令行模式键入wq保存文件内容并退出vim。
  3. 命令
    ! 强制
    w 写入
    :set nu 设置行号
    / 搜索文本内容

shell脚本常规内容解释

1. set -ex

-e 脚本中的命令一旦运行失败就终止脚本的执行
-x 用于显示命令及其执行结果

2. set -o pipefail

设置这个选项之后,包含管道命令的语句的返回值,会变成最后一个返回非零的管道命令的返回值,
即返回语句中最后一个非零返回值(错误值)

3. basepath = $(cd `dirname $0`; pwd) 打印脚本所在目录

dirname 若后面跟文件则显示文件所在目录,后面跟目录则显示父目录
$0 文件名

4. grep -v grep 去掉grep本身的进程行

5. tail -100f haha.log | grep “error” -3

-3 表示上下各多两行

6. 登录服务器:ssh root@ip

7. 从远程ip拷贝到本地:scp -r root@ip:/opt/* /opt/haha/

-r 表示递归拷贝,也就是子目录下的内容也会copy

8. haha.sh restart/stop/start

shell常用命令

1. 连接测试telnet ping curl

telnet ip port  查看程序是否启动正常
ping ip 通则有公网权限
curl 127.0.0.1:8080/ShowMonitor 查看slb中各节点的状态
curl --request GET 'http://10.38.239.252:8888/hehe/index.html'
curl -k https://ip:port/ 发送请求(-k是https请求要求的选项)

2. netstat -nap | grep pid 根据进程查端口

3. netstat -tunlp | grep port 根据端口查进程

4. 查看磁盘空间情况

du -h --max-depth=10 /opt/xinliushijian/ awk '{if($1 ~ /M1){split($1,arr,"M")};if(($1~/G/) || ($1 ~ /M/ && arr[1] > 200)){printf "%-10s %s\n", $1, $2}}' | sort -n -r
find / -size +500M -exec du -h {} \;

5. 查找文件

find /home/xinliushijian/logs/ -type f -iname "*haha*"
# 一周以外的都会删除,rm前不能使用管道符,{}存放find的参数,exec要以";"结尾,\是转义
find /home/xinliushijian/logs/ -type f -mtime +7 -exec rm -f {} \;

6. 抓包tcpdump(必须是root用户,且是http请求,因为https是密文,抓包没有意义)

yum install tcpdump
tcpdump -i any port 8282 -S0 -w aaa.cap 
strings aaa.cap > aaa.txt

7. type ls 查看命令类型(是否为内置命令)

8. echo $PATH($MAIL, $HOEM, $PWD) 打印系统变量

9. set 设置变量 unset 取消变量

10. bash 进入子shell

11. exit 退出程序

12. export 将变量设置为环境变量,但仅本次登录有效

13. env 各种环境

14. locale 语系变量

15. iconv -f big5 -t utf8 filename 转换编码

16. cat /etc/shells 查看可使用的shell

17. systemctl start haveged 启动haveged(随机数生成器)

systemctl status haveged 查看服务状态
systemctl list-unit-files 列出所有服务

18. zip -q -r haha.zip * 将本文件夹下的所有文件和子目录一并压缩为haha.zip文件

-q (quiet) 不显示执行过程
-r 递归文件、子目录一并处理

19. tar -xzvf a.tar.gz 解压

20. tar -czvf abc.tar.gz a.tet b.txt c.txt 一并压缩

21. awk 文本分析工具,主要用于单行数据分成数个字段来处理的场景

22. sed (stream editor, 流编辑器)

默认对源文件不会改变(当然也可以改变)仅对模式空间中的数据做处理,常对文件以行为单位进行处理

23. cp -r a b 将a目录下的文件和子目录copy到b目录中

24. df -h 查看各个挂载点的磁盘空间使用情况

25. du -h 查看目录的磁盘空间使用情况

26. stat 文件/目录 显示文件/目录的inode节点保存的信息(元信息)

27. df -i/h inode信息,h代表human可读性

28. ldd /opt/xinliushijian/java 列出java的动态链接依赖

29. nl 显示文件的同时列出行号

30. nl wang.sh | sed ‘2,4d’ 删除文件的2-5行

31. hostname 主机名

32. /sbin/ifconfig 网卡指令,查看ip地址,inet位置

33. sed -i ‘$a #haha’ wang.sh

直接修改文件内容,在最后一行加上#haha,如果不加-i,则只是在屏幕输出,而不会改变文件内容

34. grep -E 等价于eprep,表示使用扩展正则表达式

35. typeset -i a=8 设置变量为整数

36. info 命令的详细介绍

37. more less head tail cat tac 展示命令

38. chown -R root:root haha.sh 改变文件的属主、属组归属

39. chmod 700 haha.sh 改变文件权限

40. chattr lsattr 文件隐藏属性

chattr +i 作用于目录,目录下的文件不能新增、删除文件,只能修改文件(内容可以修改),作用于文件,文件内容不能删除、新增和修改
chattr +a 作用于目录,目录下的文件不能删除、修改文件,只能新增文件,作用于文件,文件内容不能删除、修改,只能新增
chattr -i -a 减去权限
mv用于移动或重命名文件,rename也可以重命名,touch 用于创建文件,vi 也可以生成不存在的文件,chmod是修改属主、数组、其他人员对文件的权限,而chattr更加底层地控制文件的增删改属性。

41. ls -l | grep “^-” | wc -l 查看当前目录下的文件数量

42. ll --block -size=m 以mb打印

43 crontab -l 展示定时任务 crontab -e 编辑定时任务

0 0 6 * * ?* 每天6点执行 (秒 分 时 日 月 周 年)
*/1 * * * * source ~/.profile && /opt/xinliushijian/haha.sh > /dev/null 2>&1

44. awk ‘{print $2}’ $filename 一行一行得读取指定的文件,以空格为分隔符,打印第二个字段

45. xargs kill -9 把参数杀死 9代表9号信息SIGKILL,杀死进程信号

46. unask 文件默认权限

默认权限 = 7777 - umask

47. SUID SGID SBIT

chmod 4744 filename 是不是对第一个4感到奇怪
rwsr-xr-x 是不是对s感到奇怪
其实它们指得就是SUID=4 SGID=2 SBIT=1

  • SUID
    • 仅对二进制程序有效
    • 执行者对该程序具有x的可执行权限
    • 该权限只发生在执行过程中
    • 执行者拥有属主owner的权限
  • SGID
    • 仅对二进制程序有效
    • 执行者对该程序具有x的可执行权限
    • 执行者拥有属组的权限
  • SBIT
    • 仅对目录有效
    • 执行者对目录有wx的权限
    • 在该目录下新增的文件和目录,只有自己和root可以删除

48. 查看/改变文件时间

# 最近访问时间(Access):cat、less等查看文件后,该时间改变
# 最近更改时间(Modify):vim修改文件内容后,三个时间都改变
# 最近改动时间(Change):chmod修改文件权限或属性后,该时间改变
stat 3.log  //查看某个文件的状态
stat *   //查看这个目录下所有文件及文件夹的状态(不递归)
ll --time=atime  //查看访问时间
ll --time=ctime  //查看改动时间
touch -d “2021-01-02 09:32:213.log //同时修改文件的访问时间和修改时间
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值