Linux Shell 基础知识(一)
1. 本文知识结构

2. shell 基础知识
2.1 shell 简单介绍
GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + T 即可打开 Linux Terminal 。
/etc/passwd 文件包含所有系统用户账户列表以及每个用户的基本配置信息,从该文件中可以找到各用户使用的默认 shell 程序。
大多数 Linux 发行版自带用以查找 shell 命令以及其他 GNU 工具信息的在线手册。man 命令常用于访问存储在 Linux 系统上的手册页面。 man man 命令可用来查看手册页相关的手册页。如果存在不记得命令名的情况,可用 man -k keyword 命令来查找与 keyword 相关的命令,譬如 man -k terminal 即为查找与终端相关的命令。
手册页不是唯一的参考资料,另外还有 info 页面信息,执行 info info 可了解 info 页面的相关内容。另外,大多数命令都可通过 -help 或 --help 命令获取帮助信息,譬如 help help。
2.2 linux 文件系统
不同于 Windows 为每个物理磁盘驱动器分配一个盘符,Linux 在获取路径时不涉及到驱动器盘符,其文件存储在虚拟目录(virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。
Linux PC 上安装的第一块一盘称为根驱动器,根驱动器包含了虚拟目录的核心,其他目录都是由此开始构建的。Linux 在根驱动器上创建一些挂载点(mount point),这些挂载点是虚拟目录中用于分配额外存储设备的目录,通过把文件和目录挂载到挂载点目录中,实现另一驱动器与根驱动器的协同存储文件。通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中。

常见的 Linux 顶层虚拟目录名及其内容见下表:
| 目录 | 用途 |
|---|---|
| / | 虚拟目录的根目录,通常不会在此存储文件 |
| /bin | 二进制目录,存放了用户级的GNU工具 |
| /boot | 启动目录,存放启动文件 |
| /dev | 设备目录,Linux在这里创建设备节点 |
| /etc | 系统配置文件目录 |
| /home | 主目录,Linux在这里创建用户目录 |
| /lib | 库目录,存放系统和应用程序的库文件 |
| /media | 媒体目录,可移动媒体设备的常用挂载点 |
| /mnt | 挂载目录,另一可移动媒体设备的常用挂载点 |
| /opt | 可选目录,常用于存放第三方软件包和数据文件 |
| /proc | 进程目录,存放现有硬件及当前进程的相关信息 |
| /root | root用户的主目录 |
| /sbin | 系统二进制目录,存放许多GNU管理员级工具 |
| /run | 运行目录,存放系统运作时的运行时数据 |
| /srv | 服务目录,存放本地服务的相关文件 |
| /sys | 系统目录,存放系统硬件信息的相关文件 |
| /tmp | 临时目录,可以在该目录中创建和删除临时工作文件 |
| /usr | 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里 |
| /var | 可变目录,用以存放经常变化的文件,比如日志文件 |
这些常见的目录名均基于**文件系统层级标准(filesystem hierarchy standard, FHS)**。Linux 发行版大多遵循了FHS,但由于FHS偶有更新,可能存在标准未同步的情况。
绝对文件路径定义了在虚拟目录结构中该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。相对文件路径允许用户指定一个基于当前位置的目标文件路劲,它不以代表根目录的正斜线(/)开头,而是以目录名(当前工作目录下的一个子目录)或一个特殊的字符(常见的以单点符或双点符为主)开始。特殊字符的含义如下:
- 单点符( . ),表示当前目录
- 双点符( . . ),表示当前目录的父目录
2.3 常用 shell 文件命令
常用的shell 文件命令清单
| 命令 | 用途 |
|---|---|
| cd | 切换目录 |
| pwd | 显示当前工作目录 |
| ls | 显示当前目录下的文件和目录 |
| touch | 创建空文件或改变文件修改时间 |
| cp | 从源对象复制到目标对象 |
| ln | 创建符号链接或硬链接 |
| mv | 将文件和目录移动到另一个位置或重新命名 |
| rm | 删除文件或目录 |
| mkdir | 创建目录 |
| rmdir | 删除目录 |
| file | 探测文件内部,决定文件类型 |
| cat | 显示文本文件的内容 |
| more | 显示文本文件的内容,每次显示一页(分页工具) |
| less | more命令的升级版 |
| tail | 显示文件最后几行的内容 |
| head | 显示文件开头几行的内容 |
文件和目录列表操作
- 遍历目录
#切换目录
$ cd destination
#显示当前目录
$ pwd
destination 参数可以两种方式表示:绝对文件路径与相对文件路径
- 列表命令(ls)
#显示当前目录下的目录和文件
$ ls
#用正斜线(/)和(*)区分显示当前目录下的目录和文件
$ ls -F
#显示当前目录下的目录和文件(包括隐藏文件,隐藏文件以点号开头)
$ ls -a
#递归显示当前目录下的目录和文件(包含子目录下的文件)
$ ls -R
#显示长列表(包含文件的更多相关信息,时间列默认为修改时间)
$ ls -l
#查看test_file的详细信息,其中时间列为访问时间
$ ls -l --time=atime test_file
#另外,与linux常用短命令相同,它支持将多个参数结合使用,比如
$ ls -alF
- 通配符
问号( ? )代表一个字符;
星号( * )代表零个或多个字符。
文件扩展匹配(file globbing),指的是使用通配符进行模式匹配的过程。除星号、问号之外,还有更多的元字符通配符用于文件扩展匹配,比如中括号( [] )、感叹号( ! )等。
- 文件处理
#文件不存在时,创建一个空文件,文件存在时,更新文件的修改时间
$ touch test_file
#复制文件或目录
$ cp source destination
#复制文件或目录,复制时强制询问是否需要覆盖已有文件
$ cp -i source destination
#递归复制文件或目录
$ cp -R source destination
#将文件和目录移动到另一个位置或者重新命名
$ mv source destination
#将文件和目录移动到另一个位置或者重新命名,操作时强制询问
$ mv -i source destination
#删除文件(加入参数 -i 实现在删除前询问)
$ rm -i test_file
#不受提示符打扰地删除很多文件(使用前确保文件都是你想要删除的)
$ rm -f test_file*
制表键(Tab)自动补全允许你在输入文件名或目录名时按一下制表键,让shell帮忙将内容补充完整。
- 链接文件
链接文件是Linux文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文本副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法,这些虚拟的副本即链接。链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:符号链接和硬链接。
符号链接是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此内容并不相同。通过对比符号链接文件和数据文件的文件大小与inode编号均可知晓两者并非一个文件。
#为test_file创建符号链接test_file_sl
$ ln -s test_file test_file_sl
#查看可与test_file*通配的文件的inode编号
$ ls -i test_file*
硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置,但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须时间存在。
#为test_file创建硬链接test_file_hl
$ ln test_file test_file_hl
#查看可与test_file*通配的文件的inode编号
$ ls -i test_file*
注意:只能对处于同一存储媒体的文件创建硬链接。要想在不同存储媒体的文件之间创建链接,只能使用符号链接。同一个文件可以拥有多个链接,但不要创建软链接文件的软链接。混乱的链接链不仅会容易断裂,还会造成各种麻烦。
- 处理目录
#创建目录
$ mkdir new_dir
#创建多个目录及子目录
$ mkdir -p new_dir/sub_dir/under_dir
#删除目录(默认情况下,rmdir命令只能删除空目录)
$ rmdir new_dir
#删除非空目录(-i参数仅表询问,先删除目录下的文件再删除目录)
$ rm -ri new_dir
#不做提示地删除目录下的子目录及文件
$ rm -rf new_dir
#展示目录结构
$ tree new_dir
- 查看文件
#查看文件类型
$ file test_file
#查看文件内容
$ cat test_file
#查看文件内容,所有行加上行号
$ cat -n test_file
#查看文件内容,有文本行加上行号
$ cat -b test_file
#查看文件内容,不出现制表符
$ cat -T test_file
#显示文本文件内容,每次显示一页
$ more test_file
#其他显示命令less, more命令的升级版,详讯 man less
#查看文件的末尾(默认10行)
$ tail test_file
#查看文件的末尾2行
$ tail -n 2 test_file
$ tail -2 test_file
#查看文件的开头(默认10行)
$ head test_file
#查看文件的开头10行
$ head -n 10 test_file
$ head -10 test_file
3. shell 系统交互命令
3.1 管理进程
当程序运行再系统上时,我们称之为进程(process),在Linux系统中,我们可以使用 ps 命令监测进程的运行情况。
Linux系统种使用GNU ps命令支持3种不同类型的命令行参数:
- Unix风格参数,前面加单破折线
- BSD风格参数,前面不加破折线
- GNU风格的长参数,前面加双破折线
#ps 命令的基本情况(进程ID/Process ID,运行终端/TTY,进程已用的CPU时间)
$ ps
Unix风格的 ps 命令参数
| 参数 | 描述 |
|---|---|
| -A | 显示所有进程 |
| -N | 显示与指定参数不符的所有进程 |
| -a | 显示除控制进程(session leader)和无终端进程外的所有进程 |
| -d | 显示除控制进程外的所有进程 |
| -e | 显示所有进程 |
| -C cmdlist | 显示包含在cmdlist列表中的进程 |
| -G grplist | 显示组ID在grplist列表中的进程 |
| -U userlist | 显示属主的用户ID 在userlist列表中的进程 |
| -g grplist | 显示会话或组ID在grplist列表中的进程 |
| -p pidlist | 显示PID在pidlist中的进程 |
| -s sesslist | 显示会话ID在sesslist列表中的进程 |
| -t ttylist | 显示终端ID在ttylist列表中的进程 |
| -u userlist | 显示有效用户ID在userlist列表中的进程 |
| -F | 显示更多额外输出(相对-f参数而言) |
| -O format | 显示默认的输出列以及format列表指定的列 |
| -M | 显示进程的安全信息 |
| -c | 显示进程的额外调度器信息 |
| -f | 显示完整格式的输出 |
| -j | 显示任务信息 |
| -l | 显示长列表 |
| -o format | 仅显示由format指定的列 |
| -y | 不要显示进程标记(process flag,表明进程状态的标记) |
| -z | 显示安全标签(security context)信息 |
| -H | 用层级格式来显示进程(树状,用来显示父进程) |
| -n namelist | 定义了WCHAN列显示的值 |
| -w | 采用宽输出模式,不限宽度显示 |
| -L | 显示进程中的线程 |
| -V | 显示ps命令的版本号 |
扩展列信息
| 英文简称 | 列描述 |
|---|---|
| UID | 启动这些进程的用户 |
| PID | 进程的进程ID |
| PPID | 父进程的进程号 |
| C | 进程生命周期中的CPU利用率 |
| STIME | 进程启动时的系统时间 |
| TTY | 进程启动时的终端设备 |
| TIME | 运行进程需要的累计CPU时间 |
| CMD | 启动的程序名称 |
| F | 内核分配给进程的系统标记 |
| S | 进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止)。 |
| PRI | 进程的优先级(越大的数字代表越低的优先级) |
| NI | 谦让度值用来参与决定优先值 |
| ADDR | 进程的内存地址 |
| SZ | 假如进程被换出,所需交换空间的大致大小 |
| WCHAN | 进程休眠的内核函数的地址 |
GNU风格的ps命令参数
| 参数 | 描述 |
|---|---|
| --deselect | 显示所有进程,命令行中列出的进程 |
| --Group grplist | 显示组ID在grplist列表中的进程 |
| --User userlist | 显示用户ID在userlist列表中的进程 |
| --group grplist | 显示有效组ID在grplist列表中的进程 |
| --pid pidlist | 显示PID在pidlist列表中的进程 |
| --ppid pidlist | 显示父PID在pidlist列表中的进程 |
| --sid sidlist | 显示会话ID在sidlist列表中的进程 |
| --tty ttylist | 显示终端设备号在ttylist列表中的进程 |
| --user userlist | 显示有效用户ID在userlist列表中的进程 |
| --format format | 仅显示由format指定的列 |
| --context | 显示额外的安全信息 |
| --coles n | 将屏幕宽度设置为n列 |
| --columns n | 将屏幕宽度设置为n列 |
| --cumulative | 包含已停止的子进程的信息 |
| --forest | 用层级结构显示出进程和父进程之间的关系 |
| --headers | 在每页输出中都显示列的头 |
| --no-headers | 不显示列的头 |
| --lines n | 将屏幕高度设为n行 |
| --rows n | 将屏幕高度设为n排 |
| --sort order | 指定将输出按哪列排序 |
| --width n | 将屏幕宽度设为n列 |
| --help | 显示帮助信息 |
| --info | 显示调试信息 |
| --version | 显示ps命令的版本号 |
top 命令与 ps 命令像是,能够显示进程信息,但它是实时显示的。默认情况下,top 命令在启动时会按照 %CPU 值对进程排序,可以在 top 运行时使用多种交互命令重新排序。每一个交互式命令都是单字符,在 top 命令运行时键入可改变 top 的行为。键入 f 允许你选择对输出进行排序的字段,键入 d 允许你修改轮询间隔,键入 q 可以推出 top。
- 第一行:当前时间、系统的运行时间、登录的用户数以及系统的平均负载
- 第二行:进程概要信息/进程状态信息
- 第三行:CPU概要信息
- 第四行:系统物理内存状态
- 第五行:系统交换空间状态
- 最后一部分:当前运行中的进程的详细列表
| 英文简称 | 列描述 |
|---|---|
| PID | 进程的ID |
| USER | 进程属主的名字 |
| PR | 进程的优先级 |
| NI | 进程的谦让度值 |
| VIRT | 进程占用的虚拟内存总量 |
| RES | 进程占用的物理内存总量 |
| SHR | 进程与其他进程共享的内存总量 |
| S | 进程的状态(D代表可中断的休眠状态,R代表在运行状态,S代表休眠状态,T代表跟踪状态或停止状态,Z代表僵化状态) |
| %CPU | 进程使用的CPU时间比例 |
| %MEM | 进程使用的内存占可用内存的比例 |
| TIME+ | 自进程启动到目前为止的CPU时间总量 |
| COMMAND | 进程所对应的命令行名称,也就是启动的程序名 |
在 Linux 中,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应。进程如何处理信号是由开发人员通过编程来决定的
| 信号 | 名称 | 描述 |
|---|---|---|
| 1 | HUP | 挂起 |
| 2 | INT | 中断 |
| 3 | QUIT | 结束运行 |
| 9 | KILL | 无条件终止 |
| 11 | SEGV | 段错误 |
| 15 | TERM | 尽可能终止 |
| 17 | STOP | 无条件停止运行,但不终止 |
| 18 | TSTP | 停止或暂停,但继续在后台运行 |
| 19 | CONT | 在STOP或TSTP之后恢复执行 |
#要发送进程信息,你必须时进程的属主或登录为root用户
#kill命令可通过进程PID给进程发信号,默认为TERM信号
$ kill 3940
#kill命令可通过 -s 参数支持指定其他信号(用信号名或信号值)
$ kill -s HUP 3940
#要检察kill命令是否有效,可再运行 ps 命令或 top 命令,看看问题进程是否停止。
#killall命令支持通配符,可再系统负载过大而变得慢快速结束进程
$ killall http*
3.2 获取磁盘统计信息
df 命令可以方便的地查看所有已挂载的磁盘的使用情况。
du 命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。这一方法可用来快死判断系统上某个目录下是不是有超大文件。
# 查看磁盘使用情况
$ df
# 以用户易读的形式显示磁盘使用情况
$ df -h
# 显示某个目录下磁盘使用情况(具体到占用磁盘块数)
$ du
# 显示某个目录下磁盘使用情况(显示所有已列出文件总的大小)
$ du -c
# 显示某个目录下磁盘使用情况(以用户易读的形式)
$ du -h
# 显示某个目录下磁盘使用情况(显示每个输出参数的总计)
$ du -s
3.3 挂载新磁盘
Linux文件系统将所有磁盘都比购入一个虚拟目录下。在使用新的存储媒体之气那,需要把它放到虚拟目录下,即为挂载(mounting)。在图形化桌面环境里,大多数Linux发行版都能自动挂载特定类型的可移动存储媒体。
默认情况下,mount 命令会输出当前系统上挂载的设备列表。
# 手动挂在媒体设备的基本命令:
$ mount -t type device directory
#type参数指定了磁盘被格式化的文件系统类型,常见类型有 vfat,ntfs,iso9660;后面两个参数定义了了该存储设备的设备文件的位置以及挂载点在虚拟目录中的位置。
mount命令的参数
| 参数 | 描述 |
|---|---|
| -a | 挂载/etc/fstab文件中指定的所有文件系统 |
| -f | 使mount命令模拟挂载设备,但并不真的挂载 |
| -F | 与-a参数一起使用时,会同时挂载所有文件系统 |
| -v | 详细模式,将会说明挂载设备的每一步 |
| -I | 不启用任何/sbin/mount.filesystem下的文件系统帮助文件 |
| -l | 给ext2、ext3或XFS文件系统自动添加文件系统标签 |
| -n | 挂载设备,但不注册到/etc/mtab已挂载设备文件中 |
| -p num | 进行加密挂载时,从文件描述符num中获得密码短语 |
| -s | 忽略该文件系统不支持的挂载选项 |
| -r | 将设备挂载为只读的 |
| -w | 将设备挂载为可读写的 |
| -L label | 将设备按指定的label挂载 |
| -U uuid | 将设备按指定的uuid挂载 |
| -O | 和-a参数一起使用,限制命令只作用到特定的一组文件系统上 |
| -o | 给文件系统添加特定选项 |
-o参数允许挂载文件系统时添加一些以逗号分隔的额外选项,常见的有:
ro: 以只读形式挂载
rw: 以读写形式挂载
user: 允许普通用户挂载文件系统
check=none: 挂载文件系统时不进行完整性校验
loop: 挂载一个文件
从 Linux 系统上移出一个可移动设备时,不能直接从系统上移出,而应该先卸载。umount 命令支持通过设备文件或者挂载点来指定要卸载的设备。
$ umount [directory | device ]
3.4 数据处理
- 排序数据
#按指定的默认语言排序规则对文本文件中的数据行排序
$ sort test_file
#把数字识别为数值而非字符,并按值排序
$ sort -n test_file
#按月排序(Jan\Feb\Mar\Apr\...)
$ sort -M test_file
sort 命令参数
| 单破折线 | 双破折线 | 描述 |
|---|---|---|
| -b | --ignore-leading-blanks | 排序时忽略起始的空白 |
| -C | --check=quiet | 不排序,如果数据无序也不要报告 |
| -c | --check | 不排序,但检查输入数据是不是已排序,未排序的话,报告 |
| -d | --dictionary-order | 仅考虑空白和字母,不考虑特殊字符 |
| -f | --ignore-case | 默认情况下,会将大写字母排在前面;这个参数会忽略大小写 |
| -g | --general-number-sort | 按通用数值排序(跟-n不同,把值当浮点数来排序,支持科学计数法表示的值) |
| -i | --ignore-nonprinting | 载排序时忽略不可打印字符 |
| -k | --key=POS1[,POS2] | 排序从POS1位置开始,如果制定了POS2的话,到POS2位置结束 |
| -M | --month-sort | 用三字符月份名按月份排序 |
| -m | --merge | 将两个已排序数据文件合并 |
| -n | --numeric-sort | 按字符串数值来排序 |
| -o | --output=file | 将排序结果写出到指定的文件中 |
| -R | --random-sort | 按随机生成的散列表的键值排序 |
| --random-source=FILE | 指定-R参数用到的随机字节的源文件 | |
| -r | --reverse | 反序排序(升序变降序) |
| -S | --buffer-size=SIZE | 指定使用的内存大小 |
| -s | --stable | 禁用最后重排序比较 |
| -T | --temporary-directory=DIR | 指定一个位置来存储临时工作文件 |
| -t | --field-separator=SEP | 指定一个用来区分键位置的字符 |
| -u | --unique | 和-c参数一起使用时,检查严格排序;不和-c参数一起使用时,仅输出第一例相似的两行 |
| -z | --zero-terminated |
grep命令会载输入或指定的文件中查找匹配指定模式的字符的行。grep的输出就是包含了匹配模式的行。
# 基本文件查找
$ grep [options] pattern [file]
# 反向搜索
$ grep -v t file1
# 显示匹配行所在行号
$ grep -n t file1
# 统计有多少行含有匹配模式
$ grep -c t file1
# 指定多个匹配模式(满足某一个即可)
$ grep -e t -e f file1
默认情况下,grep 命令用基本的Unix风格正则表达式来匹配模式。
egrep 命令是 grep 命令的一个衍生,支持POSIX扩展正则表达式。fgrep 命令支持将匹配模式指定为用换行符分隔的一系列固定长度的字符串。
Linux文件压缩工具
| 工具 | 文件扩展名 | 描述 |
|---|---|---|
| bzip2 | .bz2 | 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码 |
| compress | .Z | 最初的Unix文件压缩工具 |
| gzip | .gz | GNU压缩工具,用Lempel-Ziv编码 |
| zip | .zip | Windows上PKZIP工具的Unix实现 |
gzip软件包是GNU项目的产物,意在编写一个能够替代原先Unix中compress工具的免费版本。其中含有以下工具:
- gzip: 压缩文件
- gzcat: 查看压缩过的文本文件内容
- gunzip: 解压文件
tar 命令是给整个目录结构创建归档文件的简便方法,是Linux中分发开源程序源码文件所采用的普遍方法。
# tar命令的格式
$ tar function [options] object1 object2 ...
tar命令的功能function
| 功能 | 长名称 | 描述 |
|---|---|---|
| -A | --concatenate | 将一个已有tar归档文件追加到另一个已有tar归档文件 |
| -c | --create | 创建一个新的tar归档文件 |
| -d | --diff | 检查归档文件和文件系统的不同之处 |
| --delete | 从已有tar归档文件中删除 | |
| -r | --append | 追加文件到已有tar归档文件末尾 |
| -t | --list | 列出已有tar归档文件的内容 |
| -u | --update | 将比tar归档文件中已有的同名文件新的文件追加到tar归档文件中 |
| -x | --extract | 从已有tar归档文件中提取文件 |
tar命令的选项options
| 选项options | 描述 |
|---|---|
| -C dir | 切换到指定目录 |
| -f file | 输出结果到文件或设备file |
| -j | 将输出重定向给bzip2命令来压缩内容 |
| -p | 保留所有文件权限 |
| -v | 在处理文件时显示文件 |
| -z | 将输出重定向给gzip命令来压缩内容 |
注意:下载了开源软件之后,经常文件名是以 .tgz 结尾的,这些是gzip压缩过的tar文件,可以用命令 tar -zxvf filename.tgz 来解压。
参考文献:Linux命令行与shell脚本编程大全(第三版) Richard Blum , Christine Bresnahan
Linux Shell 基础知识(一)的更多相关文章
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- Linux Shell基础知识
一.文件系统和安全 chmod命令 chmod命令有两种模式,一种是符号模式,用ugo执行用户,用rwx执行权限:另一种是绝对模式,用八进制不同位置的不同值来代表不同用户的不同权限. 符号模式 chm ...
- Linux Shell 基础知识(二)
1.本文知识结构 2.文件的查询与检索 2.1. cd 目录切换 找到文件/目录位置:cd 切换到上一个工作目录: cd - 切换到home目录: cd or cd ~ 显示当前路径: pwd 更改当 ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- Linux入门基础知识
注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- shell基础知识总结
1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...
随机推荐
- Vue系列:Slot 插槽的使用范例
插槽对于自定义的组件开发来说,是十分强大的功能.这篇主要做个简单梳理 插槽可以分3种: 1.简单插槽 2.具名插槽 3.作用域插槽
- android 编译突然出错,错误原因 Could not resolve com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+.
错误追根是因为微信支付依赖的错误 解决办法: 微信支付依赖版本+号改为微信支付依赖最新版本 在这里https://bintray.com/wechat-sdk-team/maven可以查看到wecha ...
- python练习题-1
1.输出正方形 x=input("请输入:") x=int(x) for i in range(0,x): if (i==0) or (i==x-1): print("* ...
- spring cloud 断路器 Hystrix
一.微服务架构中使用断路器的原因 二.代码实现 1.在Ribbon中使用短路器 1.1.引入依赖 <dependency> <groupId>org.springframewo ...
- 纯数据结构Java实现(0/11)(开篇)
为嘛要写 本来按照我的风格,其实很不喜欢去写这些细节的东西,因为笔记上直接带过了. 本来按照我的风格,如果要写,那也是直接上来就干,根本不解释这些大纲,参考依据. 本来按照我的风格,不想太显山露水,但 ...
- Linux 中如何查询端口被占用的情况
Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000,如下图 可以看到8000端口已经被轻量级文件系统转发服务lwfs ...
- js 分享一个 时钟效果
<style> *{ margin: 0; padding: 0; } #outLine{ ...
- 从 View 的四个构造方法说起
View 类的四个构造函数 写过自定义 View 的都知道,View 有四个构造函数,一般大家都知道第一个构造方法是简单的在代码中new View 的时候调用的,第二个构造方法使用最广泛,是对应的生成 ...
- windows下 ionic 打包app --以安卓版本为例
环境安装 1.nodejs 安装版本5.7,尽量不要安装太新的版本,因为可能会出现兼容性问题,一开始本人安装的是6.+的版本,后来出现问题的,马上换回5.7的,问题就不会出现了. 安装教程网上教程很多 ...
- Leetcode之深度优先搜索(DFS)专题-473. 火柴拼正方形(Matchsticks to Square)
Leetcode之深度优先搜索(DFS)专题-473. 火柴拼正方形(Matchsticks to Square) 深度优先搜索的解题详细介绍,点击 还记得童话<卖火柴的小女孩>吗?现在, ...