# 1. 基础命令

# 1. ls 命令(查看当前目录文件)

这里我创建一个 .2021cyb 的隐藏文件,利用 ls -all 查看文件和执行权限

# 2. chmod 命令(修改权限)

在上面利用 ls 命令查看文件 .2021cyb 的权限(d 表示文件夹,拥有者 rwx;组群 r-x;其他 r-x), 改变组群权限为 可读可写 ,其他权限为 可执行

chmod 761 .2021cyb

权限:

4 对应 r;2 对应 w;1 对应 x(也就是二进制 100,010,001)

# 3. cd 命令(更改当前目录)

进入前面创建的文件 cd .2021cyb

从该目录进入其他目录 (从根目录进入)

返回上一次目录 cd -

返回上级目录 cd ..

# 4.mkdir(创建目录)

创建一个 cumt 目录

# 5. rmdir (删除空目录)

# 6.touch (可以创建文件)

创建一个 cumt 文件

touch cumt

这里发现是权限最前面的符号为 - (不是 d), 也证明是个文件

# 7.rm 命令 (删除文件)

  • -r : 递归删除,删除目录,在删除这一目录前会事先删除目录中的内容(避免删除了目录而使目录中的文件无处存放的问题)
  • i : 交互删除,为每一个删除操作询问一次删除确认
  • f : 强制删除,忽视不存在的文件,无视任何的确认提示

这里递归删除创建的 .2021cyb 目录(里面有 cumt 文件)

删除前:

删除后:

# 8. 查看文件内容 (cat more less)

这里放入一个长度超过一屏的脚本,分别利用 cat、more、less 命令查看

1.cat (cat 是一次性显示整个文件的内容)

2.more (more 会以一页一页的显示方便使用者逐页阅读,按空格键(space)就往下一页显示,按 b 键就会往回(back)一页)

3.less(less 时,就可以使用方向键 等按键的功能来往前往后翻看文件)

# 9.find 命令(查找文件 可以查询被修改的文件)

返回到根目录下,查找刚刚的 babyheap.py 文件

用 find 命令可以查询被修改的文件

find / -cmin -60 //查找在 n 分钟内状态发生变化的文件(例如权限)
find / -mmin -60 //查找过去一小时改变的文件
find / -amin -60 //查找过去一小时访问的文件

查找过去一小时改变的文件:

# 10. 文件压缩与解压

压缩:

	zip 压缩文件名 源文件           //压缩文件
zip -r 压缩文件名 源目录(***/)  //压缩目录

gzip 源文件                    //压缩为.gz格式,源文件会消失

解压:

	unzip 压缩文件                 // 解压缩文件

gunzip 压缩文件                 //解压缩文件

# 11.netstat(端口查看)

    -a 表示所有
    -n 不查询dns
    -t 表示tcp协议
    -u 表示udp协议
    -p 查询占用的查询
    -i 查询正在监听的查询

查询 netstat -ntupl

# 12.ps 命令(进程查询)

a 显示现行终端机上所有进程,包括其他用户进程
U 以用户为主的格式来显示进程状况
x 显示所有进程
A 显示所有进程
f 做一个更完整的输出

执行 ps aux (以用户为主的格式来显示所有进程)

# 13.kill 命令(终止进程)

这里再开启一个终端执行 vim babyheap.py , 然后终止该进程

kill -15 pid(默认) //大部分进程先释放资源,再停止
kill -9  pid    //exit信号不会被阻塞,所以kill能顺利杀掉进程

# 14.tail 命令 (加参数可以动态读取正在变化的文件【比如读取不断写入的日志】)

tail -f [file_name] //动态读取文件内容
tail -n行数 [file_name] //显示文件尾部n行的内容
tail -c字节数 [file_name] //显示文件尾部C个字节的内容

执行 tail -f babyheap.py (利用 echo 命令输入内容)

# 15.echo 命令(输出,传递给 echo 的参数被打印到 标准输出 中)

执行命令 echo `date`

# 16. c++filt 命令

cfilt 的作用就是还原函数名字,它可以帮我们查找动态链接库中缺少的函数,还原崩溃堆栈中一大串的函数名字母等等 (在 C 中, 是允许函数重载的, 也就引出了编译器的 name mangling 机制)

这里查看一个 ida 反汇编出来的函数

执行 c++filt 命令

看到还原成了我们可以识别的函数名字

# 2.shell 编程

# 1. 功能:

多人抽签游戏,对于输入的不同名字,产生一个随机数

具体功能:

  1. 输入人名,产生 0-99 之间的数字
  2. 重复输入相同的名字,产生的数字与之前相同
  3. 前面出现过的数字后面不能再次出现
  4. 将名字和产生的数字记录到一个文件内
  5. 脚本不会自己停止

# 2. 代码 (命名为 cyb.sh ):

l
creat_number()
{
        ## 产生已经出现过的数字,需要再次生成随机数,利用 while 脚本来实现
	while :
	do
            ## 产生一个 1-99 之间的随机数
		nu=$[$RANDOM%99+1]
            ##n 为数字出现的次数
		n=`awk -F ':' -v NUMBER=$nu '$2==NUMBER'  /home/vvwwv/Public/name.log|wc -l`
		if [ $n -gt 0 ]
		then
			continue
		else
			echo $nu
			break
		fi
	done
}
while :
do
        ## 进行交互输入名字
	read -p "Please input your name:" name
	if [ ! -f /home/vvwwv/Public/name.log ]
	then
            ## 文件里为空时为第一次执行脚本,之间打印数字
		number=$[$RANDOM%99+1]
		echo "Your number is: $number"
		echo "$name:$name" > /home/vvwwv/Public/name.log
	else
            ## 名字重复出现
		n=`awk -F ':' -v NAME=$name '$1 == NAME' /home/vvwwv/Public/name.log|wc -l`
		if [ $n -gt 0 ]
		then
			echo "The name already exist."
			awk -F ':' -v NAME=$name '$1 == NAME' /home/vvwwv/Public/name.log
			continue
		else
			number=`creat_number`
		fi
                ## 将名字和数字存入 name.log 中
		echo "Your number is: $number"
		echo "$name:$number" >> /home/vvwwv/Public/name.log
	fi
done

# 3. 运行:

执行 cyb.sh

输入 aaa ; bbb ; ccc

查看 name.log 文件

再次输入 aaa ,提示说明名字已经存在

# 3. 在 Linux 下搭建 Apache 服务器

# 1. 安装 Apache

sudo yum install httpd

# 2. 启动 Apache 服务

sudo systemctl start httpd.service

# 3. 将 Apache 服务设置为开启自启动

sudo systemctl enable httpd.service

# 4. 创建网站目录

创建一个网站目录来存放网页文件

sudo mkdir /var/www/html/vvwwv

看见已经产生了目录

# 5. 进行 ip 配置

1. 查看本机 ip(这里我的虚拟机的网站配置是桥接模式)

2. 设置子接口 ip 地址

# 6. 编辑配置文件

vim /etc/httpd/conf/httpd.conf

# 7. 测试是否成功

浏览器访问本机 ip 地址

创建一个测试页面用于查看是否成功搭建了 Web 服务器

echo "Hello World">/var/www/html/vvwwv/index.html

使用该命令时,发现没有权限,尽管加上 sudo 也不行,所以使用 root 账户执行该命令

可以发现确实创建并且写入了内容

重启 httpd 服务

浏览器访问子接口 ip

测试成功

# 4. 个人网页

【基于 js 和 html 使用了一些 css3 的效果(利用 css3 判断屏幕)】

文件: