# 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. 功能:
多人抽签游戏,对于输入的不同名字,产生一个随机数
具体功能:
- 输入人名,产生 0-99 之间的数字
- 重复输入相同的名字,产生的数字与之前相同
- 前面出现过的数字后面不能再次出现
- 将名字和产生的数字记录到一个文件内
- 脚本不会自己停止
# 2. 代码 (命名为 cyb.sh
):
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 判断屏幕)】
文件: