【2024版】最新shell安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了_shell教程

  
\[ -a FILE \]  如果 FILE 存在则为真。    
\[ -b FILE \]  如果 FILE 存在且是一个块特殊文件则为真。    
\[ -c FILE \]  如果 FILE 存在且是一个字特殊文件则为真。    
\[ -d FILE \]  如果 FILE 存在且是一个目录则为真。    
\[ -e FILE \]  如果 FILE 存在则为真。    
\[ -f FILE \]  如果 FILE 存在且是一个普通文件则为真。    
\[ -g FILE \] 如果 FILE 存在且已经设置了SGID则为真。

 \[ -h FILE \]  如果 FILE 存在且是一个符号连接则为真。    
\[ -k FILE \]  如果 FILE 存在且已经设置了粘制位则为真。    
\[ -p FILE \]  如果 FILE 存在且是一个名字管道(F如果O)则为真。    
\[ -r FILE \]  如果 FILE 存在且是可读的则为真。    
\[ -s FILE \]  如果 FILE 存在且大小不为0则为真。    
\[ -t FD \]  如果文件描述符 FD 打开且指向一个终端则为真。    
\[ -u FILE \]  如果 FILE 存在且设置了SUID (set user ID)则为真。    
\[ -w FILE \]  如果 FILE 如果 FILE 存在且是可写的则为真。    
\[ -x FILE \]  如果 FILE 存在且是可执行的则为真。    
\[ -O FILE \]  如果 FILE 存在且属有效用户ID则为真。    
\[ -G FILE \]  如果 FILE 存在且属有效用户组则为真。    
\[ -L FILE \]  如果 FILE 存在且是一个符号连接则为真。    
\[ -N FILE \]  如果 FILE 存在 and has been mod如果ied since it was last read则为真。    
\[ -S FILE \]  如果 FILE 存在且是一个套接字则为真。    
\[ FILE1 -nt FILE2 \]  如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。    
\[ FILE1 -ot FILE2 \]  如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。    
\[ FILE1 -ef FILE2 \]  如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。    
\[ -o OPTIONNAME \]  如果 shell选项 “OPTIONNAME” 开启则为真。    
\[ -z STRING \]  “STRING” 的长度为零则为真。    
\[ -n STRING \] or \[ STRING \]  “STRING” 的长度为非零 non-zero则为真。    
\[ STRING1 == STRING2 \]  如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。    
\[ STRING1 != STRING2 \]  如果字符串不相等则为真。   
\[ STRING1 < STRING2 \]  如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。    
\[ STRING1 > STRING2 \]  如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。    
\[ ARG1 OP ARG2 \] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.

字符串判断
  
str1 = str2      当两个串有相同内容、长度时为真   
str1 != str2      当串str1和str2不等时为真   
\-n str1        当串的长度大于0时为真(串非空)   
\-z str1        当串的长度为0时为真(空串)   
str1           当串str1为非空时为真  


数字的判断
int1 -eq int2    两数相等为真   
int1 -ne int2    两数不等为真   
int1 -gt int2    int1大于int2为真   
int1 -ge int2    int1大于等于int2为真   
int1 -lt int2    int1小于int2为真   
int1 -le int2    int1小于等于int2为真  


文件的判断
  
\-r file     用户可读为真   
\-w file     用户可写为真   
\-x file     用户可执行为真   
\-f file     文件为正规文件为真   
\-d file     文件为目录为真   
\-c file     文件为字符特殊文件为真   
\-b file     文件为块特殊文件为真   
\-s file     文件大小非0时为真   
\-t file     当文件描述符(默认为1)指定的设备为终端时为真  


复杂逻辑判断
  
\-a         与   
\-o        或   
!        非  


统计一个文件的中所有的error的占比
  
awk '/error/{err++}END{print err,NR,err/NR\*100&quot;%&quot; }' &lt; xxx.txt 12  


关联数组访问问题
a.txt和b.txt两个文件相同的两个字段(id|money),输出a和b文件中相同id并且b文件money值大的一行
  
cat &gt;&gt;a.txt &lt;&lt;EOF  
  
1|13|35|57|79|9  
  
ROF  


  
cat &gt;&gt;b.txt&lt;&lt;EOF  
  
1|12|23|304|45|56|67|708|89|910|10  
  
EOF  


  
awk -F '|' 'BEGIN{ while(getline &lt; &quot;a.txt&quot;) { user\_map\[$1\] = $2; } }{  
  
if ($1 in user\_map) {if  (user\_map\[$1\] &lt; $2) print $0; }}' b.txt  


注意:如果a.txt不存在,getline会返回-1,导致死循环。我以前曾经碰上过因为这个原因导致程序挂死,所以特别提出来让大家注意

tomcat并发数
  
netstat -an|grep 10050|awk '{count\[$6\]++} END{for (i in count) print(i,count\[i\])'  


sed

sed功能

  
Sed是Strem Editor(流编辑器)缩写,是操作、过滤和转换文本内容的强大工具。常用功能有增删改查,过滤,取行。  
  


参数

  
\-n #取消默认输出  
\-r #使用扩展正则  
\-i #刷到磁盘  
\-e #执行多条sed指令  
\-f #指令放在文件里  


指令

  
a 追加  
i 插入  
d 删除  
c 替换指定的行  
s 替换每一行匹配到的第一个字符  
g 替换每一行的全部  
p 输出  
w 另存文件    
e 执行bash命令  
q 不继续往下读取  


流程

sed 读取文件是逐行读取处理输出

增删改查

单行增加
  
sed '2a 106,dandan,CSO' person.txt  
  
sed '2i 106,dandan,CSO' person.txt  


多行增加
  
sed '2a 106,dandan,CSOn107,bingbing,CCO' person.txt  


例子
  
Port 52113  
  
PermitRootLogin no  
  
PermitEmptyPasswords no  
  
UseDNS no  
  
GSSAPIAuthentication no  
  
  


现在想一条命令增加5行文本到第13行前(地址用逗号分隔的,n1,n2可以用数字、正则表达式、或二者的组合表示)

  
sed -ir '13 i zbcdnPort 52113nPermitRootLogin nonPermitEmptyPasswords nonUseDNS nonGSSAPIAuthentication non#####--end--#######n' /etc/ssh/sshd\_config  


其他例
  • 10{sed-commands} 对第10行操作
  • 10,20{sed-commands} 对10到20行操作,包括第10,20行
  • 10,+20{sed-commands} 对10到30(10+20)行操作,包括第10,30行
  • 1~2{sed-commands} 对1,3,5,7,……行操作
  • 10,

s

e

d

c

o

m

m

a

n

d

s

10

到最后一行

(

{sed-commands} 对10到最后一行(

sed−commands对10到最后一行(代表最后一行)操作,包括第10行

  • /oldboy/{sed-commands} 对匹配oldboy的行操作
  • /oldboy/,/Alex/{sed-commands} 对匹配oldboy的行到匹配Alex的行操作

*

  • /oldboy/,${sed-commands} 对匹配oldboy的行到最后一行操作
  • /oldboy/,10{sed-commands} 对匹配oldboy的行到第10行操作,注意:如果前10行没有匹配到oldboy,sed软件会显示10行以后的匹配oldboy的行,如果有1,/Alex/{sed-commands} 对第1行到匹配Alex的行操作

*

  • /oldboy/,+2{sed-commands} 对匹配oldboy的行到其后的2行操作
删除
删除指定的行
  • sed ‘d’ person.txt #删除全部
  • sed ‘2d’ person.txt #删除第二行
  • sed ‘2,5d’ person.txt #删除2到5行
  • sed ‘3,$d’ person.txt #删除3到结尾
  • sed ‘1~2d’ person.txt #删除1,3,5行
  • sed ‘1,+2d’ person.txt #删除1,2,3
  • sed ‘/zhangyao/d’ person.txt #删除匹配的zhangyao行
  • sed ‘/oldboy/,/Alex/d’ person.txt #删除匹配oldboy到Alex行
  • sed ‘/oldboy/,3d’ person.txt #删除从匹配oldboy的3行
打印文件内容但不包含oldboy
  
sed '/oldboy/d' person.txt #删除包含"oldboy"的行  


更改
按行替换c 用新行取代旧行
  
sed '2c 106,dandan,CSO' person.txt #替换第2行的内容  


文本替换s:单独使用,将每一行中第一处匹配的字符串进行替换
  • g:每一行进行全部替换
  • -i:修改文件内容
sed软件替换模型(方框▇被替换成三角▲)
  
sed -i 's/▇/▲/g' oldboy.log  
  
sed -i 's#▇#▲#g' oldboy.log

指定行修改配置文件

指定行精确修改配置文件,这样可以防止修改多了地方。

  
sed '3s#0#9#' person.txt

变量替换
  
x=a  
  
y=b  
  
echo $x $y  
  
sed s#$x#$y#g test.txt

分组替换( )和1的使用说明

sed软件的( )的功能可以记住正则表达式的一部分,其中,1为第一个记住的模式即第一个小括号中的匹配内容,2第二记住的模式,即第二个小括号中的匹配内容,sed最多可以记住9个。

例:echo I am oldboy teacher.如果想保留这一行的单词oldboy,删除剩下的部分,使用圆括号标记想保留的部分。
  
echo I am oldboy teacher. |sed 's#^.\*am (\[a-z\].\*) tea.\*$#1#g'  
echo I am oldboy teacher. |sed -r 's#^.\*am (\[a-z\].\*) tea.\*$#1#g'  
echo I am oldboy teacher. |sed -r 's#I (.\*) (.\*) teacher.#12#g'

命令说明

思路:用oldboy字符替换I am oldboy teacher.

下面解释用□代替空格

  
^.\*am□ –>这句的意思是以任意字符开头到am□为止,匹配文件中的I am□字符串;  
(\[a-z\].\*)□–>这句的外壳就是括号(),里面的\[a-z\]表示匹配26个字母的任何一个,\[a-z\].\*合起来就是匹配任意多个字符,本题来说就是匹配oldboy字符串,由于oldboy字符串是需要保留的,因此用括号括起来匹配,后面通过1来取oldboy字符串。  
□tea.\*$–>表示以空格tea起始,任意字符结尾,实际就是匹配oldboy字符串后,紧接着的字符串□teacher.;  
后面被替换的内容中的1就是取前面的括号里的内容了,也就是我们要的oldboy字符串。  
()是扩展正则表达式的元字符,sed软件默认识别基本正则表达式,想要使用扩展正则需要使用转义,即()。  
sed使用-r选项则可以识别扩展正则表达式,此时使用()反而会出错。  


#####系统开机启动项优化

  
chkconfig --list|grep "3:on"|grep -vE "sshd|crond|network|rsyslog|sysstat"|awk '{print $1}'|sed -r 's#^(.\*)#chkconfig 1 off#g'|bash  
  
chkconfig --list|grep "3:on"

特殊符号&代表被替换的内容#→将1到3行的C替换为–C–
  
sed '1,3s#C#--&--#g' person.txt         #→此处&等于C

批量重命名文件
  
for i in \`seq 5\`;do touch stu\_102999\_${i}\_finished.jpg;done  
  
ls |sed -r 's/(.\*)\_finished(.\*)/mv & 1\_finish2/e'

p 输出指定内容,但默认会输出2次匹配的结果,因此使用n取消默认输出

按行查询
  
sed '2p' person.txt  
sed -n '2p' person.txt  
sed -n '2,3p' person.txt  
sed -n '1~2p' person.txt  
sed -n 'p' person.txt

按字符串查询
  
sed -n '/CTO/p' person.txt  
  
sed -n '/CTO/,/CFO/p' person.txt

混合查询
  
sed -n '2,/CFO/p' person.txt  
  
sed -n '/feixue/,2p' person.txt

特殊情况,前两行没有匹配到feixue,就向后匹配,如果匹配到feixue就打印此行

其他功能
备份功能
  
sed -i.bak '$a 1111111111' xxx.txt  


备份xxx.txt文件为xxx.txt.bak,修改源文件,最后一行添加111111111

另存功能
  
sed 's/sb/SB/g w new.txt' xxx.txt  


把sb替换成SB的整行输出到new.txt中

大小写转换
  
L    #全部转换成小写  
l     #单个转换成小写  
U   #全部转换成大写  
u    #单个转换成大写  
E    #需要和U和L一起使用,关闭U和L的功能  
sed -r 's/(.\*),(.\*),(.\*)/L3,E1,U2/g' xxx.txt

执行多条sed指令
  
sed -e '3,$d' -e 's#10#01#g' xxx.txt  
  
sed '3,$d; s#10#01#g' xxx.txt

打印不可见字符l
  
sed -n 'l' xxx.txt

abc替换ABC(一一对应)
  
tr 'abc' 'ABC' xxx.txt  
  
sed 'y#abc#ABC#' xxx.txt  


可以操作多个文件
  
sed 'y#abc#ABC#' xxx.txt 222.txt  


模拟其他命令
创建svn库的时候自动取消#号和修改路径

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EFI shell是一种基于策略的引导环境,它常用于引导和安装操作系统,包括Linux。以下是使用EFI shell安装Linux的步骤: 1. 首先,确保计算机的引导方式设置为UEFI模式,而不是传统的BIOS模式。可以通过进入计算机的BIOS设置界面进行更改。 2. 将Linux安装介质,如USB闪存驱动器或光盘,插入计算机。 3. 启动计算机并进入UEFI固件设置界面。根据计算机品牌和型号,可能需要按下特定的按键,如F2、F8或Delete键,以进入设置界面。 4. 在UEFI设置界面中,找到启动选项,并选择EFI shell作为启动设备。保存更改并退出设置界面。 5. 计算机将重启并进入EFI shell环境。在EFI shell命令提示符下,可以使用一系列的命令进行安装。 6. 首先,使用"ls"命令列出可用的设备和分区。确定USB闪存驱动器的名称,例如"fs0"或"fs1"。 7. 使用"cd"命令切换到USB闪存驱动器的根目录。例如,输入"cd fs0:"。 8. 使用"ls"命令确认你是否进入了正确的设备和分区,并查找Linux安装器的位置。 9. 输入Linux安装器的名称,并按回车键执行。安装程序将启动。 10. 按照Linux安装程序的提示,选择安装选项、分区设置等。根据个人需求进行配置。 11. 完成安装后,重新启动计算机。现在,你的计算机应该能够引导到刚刚安装Linux系统。 这是使用EFI shell安装Linux的基本步骤。具体的命令和步骤可能会因计算机型号和Linux发行的不同而有所差异。在安装过程中,请确保仔细阅读安装程序的文档和提示,以避免意外损失数据或操作系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值