【人机交互接口Bash】

人机交互接口Bash

一. 什么是Bash shell

Bash shell 是一个命令解释器,主要负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给内核,由内核驱动硬件,最终将处理后的结果输出至Bash shell 屏幕终端。

二.Bash Shell能干什么?

使用Shell实现对linux系统的大部分管理:
1.文件管理
2.权限管理
3.用户管理
4.磁盘管理
5.网络管理
6.软件管理
7.服务管理
8.等等

三.如何使用Bash Shell

单条命令——低效率——适合少量的工作
shell脚本——高效率——适合重复性的工作

[root@localhost ~]# cat useradd.sh 
#!/bin/bash
#********************************************************************
#Author:	ZhaoJie
#QQ:		631455878
#Date:		2021-11-24
#FileName:	useradd.sh
#URL;		https://www.zhaojie.com
#Description:	The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
for i in {1..100}
	do
		useradd zhaojie-$i
		echo "zhaojie-$i" is create ok..
	done

四.Bash Shell提示符

[root@localhost ~]#
root:当前登录Shell的用户名称
@localhost:当前系统主机名称
~:当前所在的工作目录
#:管理员提示符($:普通用户提示符)

五:Bash Shell基础语法

bash shell命令行,为用户提供命令输入,然后将执行的结果返回给用户
命令:command
选项:options
参数:parameters
例:

ls				命令
ls -a			命令+选项
ls -a /home/	命令+选项+参数

六. Bash Shell基本特性

补全功能tab

1.命令补全:当王金命令时,可以通过tab进行补全
2.目录补全:当需要查找文件目录层级较多时,可以通过tab快速补全,并减少出错
例:

#查看IP时忘记具体命令
[root@localhost ~]# ifco
#按下Tab键会自动补全
[root@localhost ~]# ifconfig 

#按两下Tab键列出所有if开头的命令
[root@localhost ~]# if
if         ifcfg      ifconfig   ifdown     ifenslave  ifstat     ifup

#使用Tab键进行目录补全,如果路径错误则无法补全
[root@localhost ~]# ls /etc/sysconfig/network-scripts/

七.常用快捷键Carl

1.Cart + a:光标跳转至正在输入的命令行行首
2.Cart + e:光标跳转至正在输入的命令行尾部
3.Cart + k:删除从光标到行末的所有字符
4.Cart + u:删除从光标到行首的所有字符
5.Cart + c:终止前台运行的程序
6.Cart + d:在shell中,表示推出当前shell
7.Cart + l:清屏
8.Cart + r:搜索历史命令,利用关键字

八.历史记录History

可用于追溯之前执行过什么命令,造成的故障
1.使用双!!可执行上一条执行过的命令

[root@localhost ~]# cd /etc/
[root@localhost etc]# !!
cd /etc/

2.输入!6,执行history命令历史中的第6行命令

[root@localhost etc]# !6
ifconfig

3.使用!cat,调用history命令历史最近一次执行过的cat命令

[root@localhost etc]# !cat
cat useradd.sh 
cat: useradd.sh: No such file or directory

九.命令别名alias

命令别名将用户经常使用的复杂命令简单化,可以用alias别名名称='命令’创建属于自己的命令别名,若要取消一个命令别名,则是用unalias别名名称
1.定义临时别名,wk为查看ens160网卡别名

[root@localhost ~]# alias wk = 'ifconfig'
[root@localhost ~]# wk

2.永久生效,/etc/bashrc

[root@localhost etc]# echo "alias ifconfig = 'ifconfig ens160'" >> /etc/bashrc 

3.如果定义命令本身,执行结果是什么?

[root@localhost ~]# alias ifconfig = 'ifconfig'
#绝对路径执行,调用命令本身
[root@localhost ~]# /sbin/ifconfig

#通过\转义字符,调用命令本身
[root@localhost ~]# \ifconfig

4.取消别名

[root@localhost ~]# unalias ifconfig

十.帮助手册help

1.命令: --help 帮助

用法: ls [OPTION]... [FILE]...
[root@localhost etc]# ls --help

2.命令man手册

#查看ls命令的手册
man ls

3.linux命令大全url传送门
linux命令手册:
Linux命令大全

十一.linux文件管理

linux目录结构

【人机交互接口Bash】

命令相关目录/bin

存放命令相关的目录**

/bin: 普通用户使用的命令	/bin/ls,/bin/date
/sbin:管理员使用的命令	/sbin/service

用户家相关目录

存放用户相关数据的家目录

/home: 普通用户的家目录	/home/username,
/root:超级管理员root的家目录,普通用户无权限操作

系统文件目录/usr

存放系统相关文件的目录

/usr		相当于C:\windows
/usr/local	软件安装的目录,相当于C:\Program
/usr/bin	普通用户使用的应用程序
/usr/sbin	管理员使用的应用程序
/usr/lib	库文件	Glibc 32bit
/usr/lib54	库文件	Glibc 32bit

系统启动目录/boot

存放系统时内核与grub引导菜单

/boot存放的系统启动相关的文件,例:kernel,grub(引导装载程序)

配置文件目录/etc

/etc存放系统配置文件目录,后续所有服务的配置都在这个目录中

/etc/sysconfig/network-script/ifcfg-,网络配置文件
/etc/hostname 系统主机名配置文件

设备相关目录/dev

/dev存放设备文件的目录,例:硬盘,硬盘分区,光驱…

/dev/null黑洞设备,只进不出。(类似垃圾回收站)
/dev/random生成随机数的设备
/dev/zero能源源不断的产生数据

可变的目录/var

/var,存放一些变化文件,例/var/log下的日志文件
/var/tmp,进程产生的临时文件
/tmp:系统临时目录

虚拟系统目录/proc

虚拟的文件系统(例:对应的进程停止则/proc下对应目录则会被删除)

/proc:反映当前系统正在运行进程的实时状态,类似于汽车的仪表盘

文件路径定位

绝对路径与相对路径

1:绝对路径:只要从/开始的路径,例:[root@localhost ~]# cd /etc/dhcp/
2:相对路径:相对于当前目录来说,例:[root@localhost etc]# cd ./dhcp/…/bob/a.mp3a.txt
3.:.和. .的是什么意思
一个点代表是当前目录
两个点代表的是当前目录的上层目录
小结:所谓(.)和(…)目录实际上属于相对路径的一种表现形式

路径切换命令cd

cd 绝对路径cd /etc/hostname
cd 绝对路径cd test/ab	cd .	cd ..
*****************************************************
cd		#切换目录
cd .	#代表当前目录
cd ..	#切换回当前目录的上级目录
cd -	#切换回上一次所在目录
cd ~	#切换回当前用户的家目录,注意:roo和普通用户是否有区别吗?

linux基础命令

touch文件创建

touch file						#无则创建,有则修改时间
touch file1 file2
touch /home/od/file4 file5
touch file{a,b,c}				#{}集合,等价于touch a b c
touch file{1..3}
touch file{a..c}

mkdir目录创建

选项:-v	显示详细信息
     -p	递归创建
mkdir dir1
mkdir	/home/ob/dir1	/home/ob/dir2
mkdir	-v	/home/ob/{dir3,dir4}
mkdir	-pv	/home/ob/dir5/dir6
mkdir	-pv	/home/{ob/{diu,but},boy}

tree显示目录结构

选项:-L	显示目录树的层级
tree /home	显示当前目录下的结构

[root@localhost zhaojie]# tree /tmp/ob
/tmp/ob
├── but
├── diu
└── zhaojie
    └── zzl

4 directories, 0 files

cp 文件或目录复制

选项:
	-v	详细显示命令执行的操作
	-r	递归处理目录与子目录
	-p	保留源文件或目录的属性		
cp	file	/tmp/file_copy
cp	name	/tmp/name					#不修改名称									
cp	file	/tmp/						#不修改名称							
cp	-p	file	/tmp/file_p				#保留源文件或目录的属性
cp	-r		/etc/	/tmp/				#复制目录需要使用-r参数,递归复制				
cp	-rv	/etc/hosts	/etc/hostname	/tmp#拷贝多个文件至一个目录		
cp	-rv	/etc/{hosts,hosts.bak}
cp	-rv	/etc/hosts{,-org}

mv文件移动命令

mv	file	file1					#原地移动算改名													
mv	file1	/tmp/					#移动文件至tmp目录							
mv	/tmp/file1	./					#移动tmp目录的文件至当前目录			
mv	dir/	/tmp/					#移动目录至/tmp目录下
													
touch	file{1..3}
mv	file1	file2	file3	/tmp/	#移动多个文件至同一个目录
			
mkdir	dir{1..3}
mv	dir1/	dir2/	dir3/	/tmp	#移动多个目录至通一个目录				

rm文件或目录删除

选项:
	-i:提示是否删除
	-r:递归
	-f:强制删除
	-v:详细过程
******************************************************************************************
rm	-i	file.txt							#提示删除文件						
rm	-f	file.txt							#不提示删除
******************************************************************************************
rm	-r	dir/								#提示,递归删除目录								
rm	-rf	dir/							 	#不提示,强制删除目录(慎重)
******************************************************************************************
示例1:
[root@localhost ~]# mkdir /tmp/dir
[root@localhost ~]# touch /tmp/dir/{file2,file3,.file4}rm	-f	/home/dir10/*
[root@localhost dir]# ls -a 
.  ..  file2  file3  .file4
[root@localhost ~]# rm -f /tmp/dir/*	(不包括隐藏文件)
[root@localhost dir]# ls -a
.  ..  .file4
******************************************************************************************
示例2:	
[root@localhost ~]# touch /tmp/bir/file{1..10}
[root@localhost ~]# touch /tmp/bir {1..10}.pdf
[root@localhost bir]# ls
10.pdf  2.pdf  4.pdf  6.pdf  8.pdf  file1   file2  file4  file6  file8
1.pdf   3.pdf  5.pdf  7.pdf  9.pdf  file10  file3  file5  file7  file9

[root@localhost ~]# rm -rf /tmp/dir file*
[root@localhost bir]# rm -rf /tmp/dir *.pdf

文件查看类命令

cat命令

cat: 查看文件的所有内容(少量的文件)

[root@localhost bir]# cat pass (正常查看文件方式)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

[root@localhost bir]# cat -n pass (-n:显示文件有多少行)
     1	root:x:0:0:root:/root:/bin/bash
     2	bin:x:1:1:bin:/bin:/sbin/nologin

[root@localhost bir]# cat -A pass (查看文件的特殊符号,例:文件存在Tab键)
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$

[root@localhost bir]# tac pass (倒序查看文件)
zhaojie-8:x:1040:1040::/home/zhaojie-8:/bin/bash
zhaojie-7:x:1039:1039::/home/zhaojie-7:/bin/bash

less与more命令

查看内容较多的文件;

示例:
[root@localhost bir]# less /tmp/bir/pass			#使用光标上下进行查看,空格进行翻页,q退出
******************************************************************************************
[root@localhost bir]# more /tmp/bir/pass			#使用回车上下进行查看,空格进行翻页,q退出

head与tail命令

[root@localhost bir]# head pass			#查看头部内容,默认前10行
[root@localhost bir]# head -n 3 pass	#使用-n指定,查看头部3行
******************************************************************************************
[root@localhost bir]# tail pass			#查看尾部内容,默认尾部10行
[root@localhost bir]# tail -3 pass		 
[root@localhost bir]# tail -f pass		#查看文件尾部的变化情况
#	-f  =  tailf命令

grep过滤数据

grep:过滤文件内容
	-v: 取反
	-E: 搜索多个条件
	-c: count统计
******************************************************************************************	
[root@localhost bir]# grep "^root" pass				#匹配以root开头的行
root:x:0:0:root:/root:/bin/bash

[root@localhost bir]# grep "bash$" pass				#匹配以bash结尾的行
root:x:0:0:root:/root:/bin/bash

[root@localhost bir]# grep -v "ftp" pass			#匹配除“ftp”的内容,并进行打印

[root@localhost bir]# grep -i "ftp" pass			#忽略大小写匹配
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

wget命令

安装命令:[root@localhost bir]# yum install -y wget
下载文件:[root@localhost bir]# wget http://mirrors.aliyun.com/repo/Centos-7.repo

rz与sz命令

rz:上传
sz:下载
安装命令:[root@localhost bir]# yum install -y lrzsz 
	rz:只能上传文件,不支持上传文件夹
	sz:只能下载文件,不支持下载文件夹
注意: 仅支持文件,不支持目录,同时不支持单个文件超过4g,不支持断电续传

curl命令

#仅仅查看url地址的文件内容
[root@localhost bir]# curl http://mirrors.aliyun.com/repo/Centos-7.repo

两种下载:
[root@localhost bir]# wget http://cdn.51yip.com/images/logo.png

[root@localhost bir]# curl http://cdn.51yip.com/images/logo.png

字符处理类命令

sort命令

对一个无序的文本文件进行数据的排序

sort [OPTION]... [FILE]...```
选项:
	-r:倒序
	-n:按数字排序
	-t:指定分割符
	-k:指定第几列
	示例:创建一个文件,写入无规律内容
[root@localhost tmp]# cat test.txt 
5
2
7
9
4
6
8
1
#进行排序
[root@localhost tmp]# sort test.txt 
1
2
4
5
6
7
8
9

uniq命令

如果文件中有多行完全相同的内容,希望能删除重复的行,同时还可以统计出完全相同的行出现过的总次数

uniq [OPTION]... [INPUT	[OUTPUT]]
选项:
	-c	计算重复的行
 #创建一个文件	
[root@localhost tmp]# cat test.txt
1
a
a
1
5
6
7
3
3
#uniq需要和sort一起使用,先用sort命令排序,让重复内容连续在一起
[root@localhost tmp]# sort test.txt 
1
1
3
3
5
6
7
a
a
#使用uniq去除相邻重复的行
[root@localhost tmp]# sort test.txt |uniq
1
3
5
6
7
a
#统计重复次数
[root@localhost tmp]# sort test.txt |uniq -c
      2 1
      2 3
      1 5
      1 6
      1 7
      2 a

wc命令

wc [OPTION]... [FILE]...
选项:
	-l	显示文件行数
	-c	显示文件字节
	-w	显示文件单词
[root@localhost bir]# wc -l /etc/fstab 				#统计pass文件有多少行
63 pass
[root@localhost bir]# wc -l /etc/services			#统计/etc/services文件行号

扩展:统计文件行号的方法
grep -n	".*" /etc/services | tail -1
cat -n /etc/services | tail -1
awk '{print	NR	$0}' /etc/services | tail -1
grep+wc: 用到了管道技术; 将前者执行命令的结果,通过管道传递给后者命令的输入;
上一篇:软件测试学习笔记——shell基础


下一篇:nivek靶场-vulnhub