学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记相关的知识,希望对你有一定的参考价值。
1.在/etc/profile.d/env.sh中写入的配置信息不需要#!/bin/bash2.cmd='hostname' #cmd 执行cmd所指向的命令 hostname
3.[[ ]] 支持扩展正则表达式,[[ == *i* ]] 匹配包含i的字符串 man bash 查找[[,要使用转义字符 pattern matching
4.cmd1 || cmd2 && cmd3 逻辑判断说明
cmd2 is always true
cmd1 true cmd2 不执行,cmd3 执行
cmd1 false cmd2 执行,cmd3 不执行
cmd1 && cmd2 || cmd3
cmd2 is always true
cmd1 is true cmd2 执行,cmd3 不执行
cmd1 is false cmd2不执行,cmd3 执行
5.read x y z << 'i j k' 使用文件赋值需要使用空格分隔
read x y z < f1
6.补充正则表达式 yes or No
[[ $ANS =~ ^[Yy]+([Ee][Ss])?$ ]] && echo "yes"
[[ $ANS =~ ^[Nn]+[Oo]?$ ]] && echo "No"
7.source . 运行脚本在当前的shell中运行,用于导入脚本中的变量导入当前shell
8.脚本中不支持别名的使用,一般不在脚本中使用别名
9.全局配置和局部配置中的通用文件:~/.bashrc, etc/bashrc, /etc/profile.d/*.sh
全局用户配置文件(执行顺序):/etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc
局部用户配置文件(执行顺序): ~/.bashrc, /etc/bashrc, /etc/profile.d/*.sh
10.~/bash_logout 配置文件可以用来退出删除文件等等,如添加rm -rf /tmp/*
11.$-符号在/etc/profile 中有用到
h: hashall ,hash所有外部命令的 set +h 将h选项关闭
i: 包含i说明当前shell是一个交互式的shell
m: 监控模式,可以控制进程的启动、停止,前台执行和后台执行
B: 大括号扩展
H: 展开历史命令,可使用!!,!n 等
12.新添加的PATH变量的尽量放到前面,防止新添加变量与PATH中自带的命令有冲突
13.只有bash中使用.或source来读取变量,如vimrc 是自动调用,不需要。
14./var/lib/mlocate/mlocate.db 可以通过该数据库文件的时间来判断数据库的更新时间,如果需要更新可以使用 updatedb
15.locate -r "^/etc/.*\.conf$" 可以指定路径,匹配的是全路径的结尾包含.conf所有的文件
16.find /data --maxdepth 3 --mindepth 3 -name f1 指定只在第三级目录中的f1文件
find /data -name "*f1*" 通配符而不是正则表达式,注意要加双引号
find 搜索节点编号可以查找相同 硬链接
find /home -user wang -ls 长格式
find /home -user wang -name "*.sh" -ls 并且关系(等价于-a选项,默认是并且关系)
17.systemctl restart sshd 重启sshd
18.pdf 实验
19.空文件占用inode 可以考虑查找后删除, # find / -type f -empty 查找空文件
20.mspaint 画图(windows中)
21.find中的括号要使用转义 防止当成子shell执行如:find /tmp \(-not -user root -a -not -name "f*"\) -ls
22.find -prune 去除某个目录搜索
# find /etc -path '/etc/sane.d' -a -prune -o name "*.conf"
23.find -perm -666 110 110 为位有没有权限, 至少有rw权限,777包含在内
find -perm /002 或者关系 检查权限 0 不检查 1检查 /并集 -交集
+ 和/ 的含义相同 一个6版本 一个7版本
24. -delete 不提示 慎用 -ls
25.find -name "f*" -ok rm {} \; 有提示 -exec 不提示
26.find .. mv {} {}.bak \; 改名
...cp {} {}.orig \;
27.find / -size +10M -exec mv {} /data{}
28.xagrs -0 切割成换行 参数在一行需要分行 -n2 两个一组传递给touch
29.echo f{1..10000}|xargs -n1 touch 每行一个参数,一个一个传递给touch
30.-n 控制一次传多少参数 xargs -n2 将以空格分隔的一行内容以2个一组独立分行,用于无法接受太多参数的情况
31.compress file 直接压缩
32.compress -c f > file.z
33.zcat m.z > mm
34.压缩工具要查看后缀名,对于压缩后的文件如果删除或者修改后缀名将无法解压缩
35.压缩文件不需要指定后缀名,系统会自动添加响应的后缀名
36.tar -zcpvf data.tar.gz /data
37.xvf 不看后缀统统可以解压缩,xz bz2 gz
38.tar -T -X 使用的是文件列表
39.cat 可以合并使用split -b 1M -d mybackup.tar.gz mybackup-parts分割的文件
cat mybackup-parts > mybackup.tar.gz
40.cpio 压缩文件和解压缩文件、查看文件需要使用重定向符号(cpio命令是通过重定向的方式将文件进行打包备份)
如: cpio -tv < /boot/initramfs-3.10.0-514.el7.x86_64.img 查看该cpio压缩文件里的文件内容
cpio -idv < /boot/initramfs-3.10.0-514.el7.x86_64.img
find ./kernel | cpio -ov kernel.cpio 使用find查找目录中的所有文件并压缩
41.sed -n 关闭模式空间的默认打印
42.pattern 正则表达式 除 [[]] ==
43.sed -n '/root/p' /etc/passwd
sed -n '$p'
44.sed 支持正则表达式 扩张正则表达式
45.sed -n -e '2p' -e '6p' f1
46.sed '2d' f1 sed '2!d' 除了第二行全删,模式匹配的后面为取反号
47.模式空间单行处理,默认打印输出
48.sed -n '/root/=' /etc/passwd =加行号
$= 就是文件的最后一行
49.sed '2,5a=====' f1 追加
50.sed -i.bak '**' ... 修改前加备份 好用
51.单双引号有冲突是 区分开就可以
52.sed '2,5a\ ====' 斜线便是开始 后面是附加的内容 注意有空格
53.sed '2,5c\ ====' 代替
54.sed '2w f2' f1 符合条件的行保存至f2 r是读入
55.sed 没有地址默认全文档
56.sed 支持正则表达式 也支持后向引用
57.sed -r 's/(.*)/\1magedu/' /etc/passwd
58.sed -r 's/(.*)/magedu\1/' /etc/passwd
59.sed -r '[email protected]/(bin/bash)[email protected]/s\[email protected]' /etc/passwd
60.sed -r 's/(quiet)"$/\1 xyz' /etc/default/grub
61.sed -r '/GRUB_CMDLINE_LINUX/s/"$/ xyz"/' /etc/default/grub
62.ip地址替换 ifconfig ens33 2!d;[email protected] 直接处理第2行 全行替换某一个,去除行中内容
63.sed -r 's/(.*\/)([^/]+\/?$)/\2/' echo "/etc/sysconfig/network"
64.&引用前面的字符串
65.去除ifconfig ens33的ip地址
ifconfig ens33 |sed -n '2p' | sed -r 's/.*inet (.*)( netmask.*)/\1/'
ifconfig ens33 |sed -n '2p' | sed -r 's/.*inet //' | sed -r 's/ netmask.*//'
ifconfig ens33 |sed -r '2!d;s/.*inet (.*) net.*/\1/' 2!d 除了第2行的其余的行全部删除
66.取出某一行的文本内容可以使用
sed -n '2p' /etc/passwd 只打印第2行的内容
sed '2!d' /etc/passwd 除了第2行的内容全部删除
67.取出路径中的dirname : echo "/etc/sysconfig/network/" | sed -r '[email protected](.*/)((.+/?)+)[email protected]\[email protected]'
取出路径中的basename: echo "/etc/sysconfig/network/" | sed -r '[email protected](.*/)((.+/?)+)[email protected]\[email protected]'
68.只打印文本的最后一行 #sed -n '$p' /etc/passwd
打印包含root的行 # sed -n '/root/p' /etc/passwd
打印以root开头的行 # sed -n '/^root/p' /etc/passwd
打印以root开头的行至sync开头行之间的所有行: sed -n '/^root/,/^sync/p' /etc/passwd
打印奇数行: # echo {1..10} | xargs -n1 | sed -n '1~2p' 打印奇数行 (xargs的 -n1 表示一行输出的以空格分隔的行转换成回车,并且每行一个)
打印偶数行: # echo {1..10} | xargs -n1 | sed -n '2~2p' 打印偶数行
输出符合条件的行至某文件: sed -n '/^root/,/^sync/w /tmp/part.txt' /etc/passwd
打印出文件的空行的行号: sed -n '/^$/=' /etc/rc.d/init.d/functions
69.sed 在使用追加、插入、修改的时候如果要加入空格记得使用\ 转义
sed '1,2a\ ' /etc/passwd 追加是在所在行的行下追加
sed '1,2c\HHHHHHHHH' /etc/passwd 将第一行和第二行 以HHHHHHHH 来替换
sed '1,2iaaaaaaaaa' /etc/passwd 将aaaaaaaaa 插入至所在行的行前
70.sed -i.bak '/^$/d' test 删除test文件中的空白行,并使用-i.bak做原始文件的备份并修改原文件
71.nl /etc/passwd |sed '2,5d' 将/etc/passwd 添加行号后,再删除2到5行
72.sed -n '/^root/s/^root/&er/p' /etc/passwd 搜索文件中的root开头的行,并将第一个root转换为rooter
sed -n '/^root/s/root/&er/gp' /etc/passwd 修改该行中所有的root为rooter 注意打印的时候要用gp
73.sed -e 's/root/HHHH/g' -e 's/sbin/GGGGG/g' /etc/passwd
sed -n -e 's/root/HHHH/gp' -e 's/sbin/GGGGG/gp' /etc/passwd 注意使用gp 和是用 -e
74.locate的数据库文件位置: /var/lib/mlocate/mlocate.db
75.find 命令默认是递归查找的,所以不需要添加*
76.交互式登录:
1.直接通过终端输入账户密码登录
2.使用su - username 切换的用户
执行顺序: /etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc
非交互式登录:
1.图形化窗口打开的终端
2.执行脚本
3.su usernma的部分切换
执行顺序: ~/.bashrc /etc/bashrc, /etc/profile.d/*.sh
77. [[email protected] boot]# file initramfs-3.10.0-514.el7.x86_64.img
initramfs-3.10.0-514.el7.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
查看cpio压缩后里面文件内容: # cpio -tv < /boot/initramfs-3.10.0-514.el7.x86_64.img
78.find中的时间-n 表示的是n天以内, +n 表示的n天以前
79.正则表达式使用^号来锚定行首,使用[^] 来排除[]之内的任意字符,在通配符中只有排除任意字符的使用,正则表达式大部分情况下是用来查找文本内容的,
可以通过^锚定行首内容并通过正则表达式对所找到的行进行字符的查找,常用到正则表达式的命令有 grep sed [[ =~ ]] vim中 find,其余的ls 使用的是通配符,在[[ == ]]中也可以使用通配符,在[[ =~ ]] 中使用的是扩展的正则表达式,sed可以指定-r选项来使用扩展的正则表达式,find 需要使用-regex 来使用正则表达式,如果为给出,则使用的是文件的通配符
80.查找以.conf结尾的文件 #locate "\.conf$" 注意要转义,因为.在正则表达式中为单个任意字符,需要转义成普通字符,也可以写成 # locate -r '[.]conf$',在[]中的.不需要转义
以上是关于学习笔记的主要内容,如果未能解决你的问题,请参考以下文章