查找类
-
find
find命令可以用于查找文件目录,同时还支持在查找之后执行命令,该命令的原理是在硬盘当中进行查找所以相对的速度会比较慢但是准确性比较好
参数
name
:按文件名或目录名进行查找
user
:按文件或目录所属用户进行查找
perm
:按文件或目录的权限进行查找
d
:指定查找的深度
size
:指定查找文件或目录的大小
type
:指定查找的类型
d:目录
f:文件
exec
:用于查找之后执行命令
演示
find / -name shell.exe
表示查找根下名称为shell.exe的文件或目录┌──(root💀kali)-[~] └─# find / -name shell.exe /root/shell.exe
find / -name kali-njh -type d
查找根下名为kali-njh的目录┌──(root💀kali)-[~] └─# find / -name kali-njh -type d /media/kali-njh /var/lib/lightdm/data/kali-njh /home/kali-njh
find / -perm 4755 -type f
查看根下权限为4755的文件┌──(root💀kali)-[~] └─# find / -perm 4755 -type f /usr/lib/mysql/plugin/auth_pam_tool_dir/auth_pam_tool /usr/lib/openssh/ssh-keysign /usr/libexec/polkit-agent-helper-1 /usr/bin/mount /usr/bin/chsh /usr/bin/ntfs-3g /usr/bin/umount /usr/bin/passwd /usr/bin/newgrp /usr/bin/chfn /usr/bin/pkexec /usr/bin/su /usr/bin/fusermount3 /usr/bin/sudo /usr/bin/gpasswd /usr/bin/vmware-user-suid-wrapper /usr/sbin/mount.nfs /usr/sbin/mount.cifs find: ‘/proc/7725/task/7725/fdinfo/5’: 没有那个文件或目录 find: ‘/proc/7725/fdinfo/6’: 没有那个文件或目录
find / -name shel.exe -type f -exec rm -f {} \
查找根下名为shell.exe的文件然后将其删除大括号表示的是前面查询出来的内容,\表示结束,可以看到shell.exe已经被删除了┌──(root💀kali)-[~] └─# ls 公共 视频 文档 音乐 ip_forward~ ip.txt p6.dic shell1.exe shy.exe 模板 图片 下载 桌面 ip_forwarz~ nmap_sn rockyou.txt shell.exe u6.dic ┌──(root💀kali)-[~] └─# find / -name shell.exe -type f -exec rm {} \; ┌──(root💀kali)-[~] └─# ls 公共 视频 文档 音乐 ip_forward~ ip.txt p6.dic shell1.exe u6.dic 模板 图片 下载 桌面 ip_forwarz~ nmap_sn rockyou.txt shy.exe
-
locate
作用和find差不多只不过该参数是在
/var/lib/mlocate/mlocate.db
这个数据库当中去进行查找,这里面存储的是最近的文件和目录信息,比起在硬盘进行查找的话速度上面会快很多。但是准确性也会下降因为这个数据库是默认一天更新一次,也就是说如果我们在前一刻创建或删除了一个文件的话,使用这个命令查询的信息就会不太准确,但是也可以使用命令updatedb
对该数据库进行更新参数
-l
:限制输出的条目数
-i
:忽略大小写
-e
:会去检测文件或目录是否存在,不使用该参数的话直接在数据库中查找不对结果进行验证是否存在
-S
:查看数据库中的文件和目录的情况更占多少
-c
:只打印找到的条目数
-d
:指定一个数据库而不是使用默认的数据库
演示
locate -S
只打印数据库的情况,输出数据库文件和目录所占的大小┌──(root💀kali)-[~] └─# locate -S 数据库 /var/lib/mlocate/mlocate.db: 31,062 文件夹 360,289 文件 23,005,292 文件名中的字节数 8,740,636 字节用于存储数据库
locate -e shell.exe
去检测查询结果是否真实存在,因为数据库的更新有一定的滞后性可能文件已经删除此时会去访问文件查看文件是否真实存在,如下对比使用了和没有使用该参数的差异shell.exe文件实际是已经被删除了但是数据库还未更新,导致结果存在偏差此时就会去判断文件是否真的存在┌──(root💀kali)-[~] └─# locate shell.exe /root/shell.exe ┌──(root💀kali)-[~] └─# locate -e shell.exe
locate -c 2 ip.txt
只输出查找的结果的条目数┌──(root💀kali)-[~] └─# locate -c ip.txt 4
-
whereis
查看命令的man手册、二进制文件、源代码所在位置,在查找命令的时候是在PATH环境变量中进行查找的
参数
-b
:只查找二进制文件。
-m
:只查找说明文件。
-s
:只查找原始代码文件。
演示
whereis -b ls
只查看ls命令的二进制文件所在位置┌──(root💀kali)-[~] └─# whereis -b ls ls: /usr/bin/ls
whereis -s ls
查看原始文件所在的位置┌──(root💀kali)-[~] └─# whereis -s vim vim:
whereis -m ls
查看ls命令的man手册所在位置┌──(root💀kali)-[~] └─# whereis -m ls ls: /usr/share/man/man1/ls.1.gz
-
which
查看命令的二进制文件所在的位置也就是可执行文件所在的位置,该命令是在PATH路径中进行查找的
演示
which ls
查看ls的可执行文件所在位置┌──(root💀kali)-[~] └─# which ls /usr/bin/ls
用户管理类
-
useradd
新增用户
参数
-c
:加上备注文字,备注文字保存在passwd的备注栏中。
-d
:指定用户登入时的启始目录。
-D
:变更预设值。
-e
:指定账号的有效期限,缺省表示永久有效。
-f
:指定在密码过期后多少天即关闭该账号。
-g
:指定用户所属的群组。
-G
:指定用户所属的附加群组。当一个组的用户只是把该组当作是附加组的话这个 组可以删除但是当组有用户以此为基本组的话是不能对该组进行删除的
-m
:自动建立用户的登入目录。
-M
:不要自动建立用户的登入目录。
-n
:取消建立以用户名称为名的群组。
-r
:建立系统账号。
-s
:指定用户登入后所使用的shell。
-u
:指定用户ID号。
演示
useradd -D
查看对应的预设值┌──(root💀kali)-[~] └─# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no
useradd -m test
自动为用户创建登录目录默认是以用户名命令的在/home目录下,可以看到home目录下已经创建了test文件夹┌──(root💀kali)-[/home] └─# useradd -m test ┌──(root💀kali)-[/home] └─# ls kali-njh test weblogic
useradd test -u 1001
为用户指定一个ID值也就是UID,将之前创建test用户删除了然后使用-u指定创建的用户的id值,在/etc/passwd中可以看到uid是我们所指定的500┌──(root💀kali)-[/home] └─# userdel -r test userdel:test 信件池 (/var/mail/test) 未找到 ┌──(root💀kali)-[/home] └─# useradd test -u 500 ┌──(root💀kali)-[/home] └─# cat /etc/passwd | grep test test:x:500:1005::/home/test:/bin/sh
useradd -d /home/test test
为用户指定登录目录在登录之后自动进行该目录下,使用su - test
之后查看当前目录可以看到是我们指定的目录┌──(root💀kali)-[/home] └─# userdel -r test userdel:test 信件池 (/var/mail/test) 未找到 userdel:未找到 test 的主目录“/home/test” ┌──(root💀kali)-[/home] └─# useradd -d /home/kali-njh test #指定登录目录为kali-njh ┌──(root💀kali)-[/home] └─# su - test #切换用户的时候进入用户的登录目录 ┏━(Message from Kali developers) ┃ ┃ We have kept /usr/bin/python pointing to Python 2 for backwards ┃ compatibility. Learn how to change this and avoid this message: ┃ ⇒ https://www.kali.org/docs/general-use/python3-transition/ ┃ ┗━(Run: “touch ~/.hushlogin” to hide this message) $ pwd #查看当前目录 /home/kali-njh
useradd -r test
创建一个系统用户,UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。可以看到创建的用户的id值在100-999之间是一个系统用户┌──(root💀kali)-[~] └─# useradd -r test ┌──(root💀kali)-[~] └─# cat /etc/passwd | grep test test:x:998:998::/home/test:/bin/sh
useradd -g 1002 test
指定用户所属的用户组,默认用户的组和用户名相同如果用户没有删除是无法删除组的,可以使用-n不建立以用户名为名称的组,使用-G指定用户的附加组,如果一个组的所有用户都只是把这个组当作附加组那么这个组是可以被删除的┌──(root💀kali)-[~] └─# useradd -g 1002 test ┌──(root💀kali)-[~] └─# cat /etc/passwd | grep test test:x:1004:1002::/home/test:/bin/sh
useradd -s /usr/bin/bash test
指定用户的shell普通用户的shell默认是/bin/sh,root用户为/sbin/bash,可以看到shell是我们所指定的解释器┌──(root💀kali)-[~] └─# useradd -s /usr/bin/bash test ┌──(root💀kali)-[~] └─# cat /etc/passwd | grep test test:x:1004:1005::/home/test:/usr/bin/bash
-
userdel
删除用户
参数
-r
:删除用户的时候将用户的登录目录以及用户的邮件地址一起删除了,但是当用户使用-d指定的登录目录的所属用户不是该用户的话会删除失败
-f
:即使登录目录不是该用户的也强制删除
演示
userdel -r test
删除用户的同时删除登录目录以及邮件目录,可以看到当登录目录的所属用户(root)不是该用户(test)的时候会删除失败┌──(root💀kali)-[/home] └─# useradd -d /home/aaa/ test ┌──(root💀kali)-[/home] └─# userdel -r test userdel:test 信件池 (/var/mail/test) 未找到 userdel:/home/aaa/ 并不属于 test,所以不会删除 ┌──(root💀kali)-[/home] └─# ls -l 总用量 12 drwxr-xr-x 2 root root 4096 12月 2 22:17 aaa drwxr-xr-x 28 kali-njh kali-njh 4096 11月 10 10:58 kali-njh drwxr-xr-x 17 weblogic web 4096 10月 25 21:51 weblogic
userdel -f -r test
使用-f强制删除登录目录即使不是该用户所属的┌──(root💀kali)-[/home] └─# useradd -d /home/aaa/ test ┌──(root💀kali)-[/home] └─# userdel -f -r test ┌──(root💀kali)-[/home] └─# ls kali-njh weblogic
-
passwd
密码设置
参数
-a, --all
:报告所有帐户的密码状态
-d, --delete
:删除指定帐户的密码
-e, --expire
:强制使指定帐户的密码过期
-h, --help
:显示此帮助信息并退出
-l, --lock
:锁定指定的帐户
-u, --unlock
:解锁被指定帐户
-n, --mindays MIN_DAYS
:设置到下次修改密码所须等待的最短天数为 MIN_DAYS
-x, --maxdays MAX_DAYS
:设置到下次修改密码所须等待的最多天数为 MAX_DAYS
-q, --quiet
:安静模式
-S, --status
:报告指定帐户密码的状态
-w, --warndays WARN_DAYS
:设置过期警告天数为 WARN_DAYS
passwd test
向用户添加密码,可以看到用户的密码位保存了密码的hash值在shadow文件中第二列保存的是用户的,一行为一个用户,如果第二列是*或者!表示这是一个程序用户或者系统用户不用于登录的,后面依此是密码修改的时间到1970.1.1的天数、密码修改的间隔时间为0表示随时可以修改、密码的有效期为99999表示永久有效、密码过期前多久提醒用户、密码过期和在多久内可用、账户的失效时间、保留的字段
┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test::18966:0:99999:7::: ┌──(root💀kali)-[~] └─# passwd test 新的 密码: 重新输入新的 密码: passwd:已成功更新密码 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$qvI/8W5WZTGCkOWxY6vcZ0$uDmgloRUNjoxya6Bdh7RBkHYSzKMVpINSzQuLc.JI45:18966:0:99999:7:::
passwd -d test
删除指定用户的密码,如下test的密码被删除了┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$mA1.Lit4WOB/fe8KF0Dzb.$25JrqT5g3IGpZDc1yS3G1tTSR0bgP2aaf5nI4e/nDo/:1896 6:0:99999:7::: ┌──(root💀kali)-[~] └─# passwd -d test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test::18966:0:99999:7:::
passwd -e test
强制指定用用户的密码过期,可以看到用户密码的修改时间变为了0表示用户密码已经失效了┌──(root💀kali)-[~] └─# passwd -e test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$qvI/8W5WZTGCkOWxY6vcZ0$uDmgloRUNjoxya6Bdh7RBkHYSzKMVpINSzQuLc.JI45:0:0:99999:7:::
passwd -l test
锁定用户,锁定之后用户无法登录,如下可以看到用户的密码位前多了一个!表示用户锁定无法登录┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$U6qIhwOjvO9QNNg.lZqne1$Chnfvbk6OookmpUQwmqTMhZ3./wYkUPDdChXjPrtL48:18966:0:99999:7::: ┌──(root💀kali)-[~] └─# passwd -l test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:!$y$j9T$U6qIhwOjvO9QNNg.lZqne1$Chnfvbk6OookmpUQwmqTMhZ3./wYkUPDdChXjPrtL48:18966:0:99999:7:::
passwd -u test
解锁用户,叹号去除了表示用户可以登录了┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:!$y$j9T$U6qIhwOjvO9QNNg.lZqne1$Chnfvbk6OookmpUQwmqTMhZ3./wYkUPDdChXjPrtL48:18966:0:99999:7::: ┌──(root💀kali)-[~] └─# passwd -u test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$U6qIhwOjvO9QNNg.lZqne1$Chnfvbk6OookmpUQwmqTMhZ3./wYkUPDdChXjPrtL48:18966:0:99999:7:::
passwd -n 5 test
设置密码过期的最短时间,可以看到第4个位置的数字变成了5表示至少5天后才能修改密码┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$kCFqBSY17QTNSXkxJ0Yck.$ppbZy.dUyrkXiqiQwEh7xcnZT5lYTogyVQITtjwLMF9:18966:0:99999:7::: ┌──(root💀kali)-[~] └─# passwd -n 5 test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$kCFqBSY17QTNSXkxJ0Yck.$ppbZy.dUyrkXiqiQwEh7xcnZT5lYTogyVQITtjwLMF9:18966:5:99999:7:::
passwd -x 10 test
设置账户密码修改的最大间隔天数,可以看到99999已经变成了10,表示10天后密码失效┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$kCFqBSY17QTNSXkxJ0Yck.$ppbZy.dUyrkXiqiQwEh7xcnZT5lYTogyVQITtjwLMF9:18966:5:99999:7::: ┌──(root💀kali)-[~] └─# passwd -x 10 test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$kCFqBSY17QTNSXkxJ0Yck.$ppbZy.dUyrkXiqiQwEh7xcnZT5lYTogyVQITtjwLMF9:18966:5:10:7:::
passwd -w 4 test
指定密码失效前多久进行报警提醒┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$kCFqBSY17QTNSXkxJ0Yck.$ppbZy.dUyrkXiqiQwEh7xcnZT5lYTogyVQITtjwLMF9:18966:5:10:7::: ┌──(root💀kali)-[~] └─# passwd -w 4 test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# cat /etc/shadow | grep test test:$y$j9T$kCFqBSY17QTNSXkxJ0Yck.$ppbZy.dUyrkXiqiQwEh7xcnZT5lYTogyVQITtjwLMF9:18966:5:10:4:::
passwd -S test
输出账户的密码状态,其中P表示账户可用为L的话表示账户锁定、密码修改的天数、密码在多少天之后可以修改、密码失效的时间、失效前多久提醒,-1表示intractive值为-1没有设置也就是在shadow文件中第7个位置没有设置值,passwd -Sa
列出所有用户的状态┌──(root💀kali)-[~] └─# passwd -S test test P 12/05/2021 5 10 4 -1 ┌──(root💀kali)-[~] └─# passwd -l test passwd:密码过期信息已更改。 ┌──(root💀kali)-[~] └─# passwd -S test test L 12/05/2021 5 10 4 -1
-
usermod
修改用户登录信息,如登录之后的家目录
参数
-b, --badnames allow bad names -c, --comment COMMENT GECOS 字段的新值 -d, --home HOME_DIR 用户的新主目录 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE -f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态 -g, --gid GROUP 强制使用 GROUP 为新主组 -G, --groups GROUPS 新的附加组列表 GROUPS -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中, 并不从其它组中删除此用户 -h, --help 显示此帮助信息并退出 -l, --login NEW_LOGIN 新的登录名称 -L, --lock 锁定用户帐号 -m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用) -o, --non-unique 允许使用重复的(非唯一的) UID -p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码 -R, --root CHROOT_DIR chroot 到的目录 -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL 该用户帐号的新登录 shell -u, --uid UID 用户帐号的新 UID -U, --unlock 解锁用户帐号 -v, --add-subuids FIRST-LAST 添加子 UID 范围 -V, --del-subuids FIRST-LAST 移除子 UID 范围 -w, --add-subgids FIRST-LAST 添加子 GID 范围 -W, --del-subgids FIRST-LAST 移除子 GID 范围 -Z, --selinux-user SEUSER 用户的新的 SELinux 用户映射
-
finger*
查询用户信息
参数
-s: -l: -p: -m:
进程管理类
-
ps
参数-a
:显示当前终端下运行的所有进程、除了shell解释器
-x
:显示所有与终端相关的进程
-A
:显示系统允许的所有进程
-e
:同-A选项显示所有的进程
-C
:显示指定命令的进程
-f
:显示UID用户ID、PPID父进程ID、C、STIME进程开始运行的时间信息
-p
:查看指定进程号的进程信息
-l
:显示进程的详细信息
-L
:查看指定进程的线程
ps -a
输出当前终端下的所有进程,我们先在后台运行一下wireshark然后查看,可以看见当前终端正在运行两个进程一个是ps一个是wireshark┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# wireshark & [1] 2115 #输出的第一行的含有:PID是进程号、TTY是终端名称、TIME是进程使用的CPU时间、CMD是命令 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -a PID TTY TIME CMD 2115 pts/0 00:00:02 wireshark 2202 pts/0 00:00:00 ps
ps -A
显示系统中所有的进程同-e选项,不以终端区分也就是说不管是否是和终端相关都显示#这里只显示一部分,还有很多没有显示可以,看到这里有其他终端也有不是很终端有关的都显示出来了 #并且看到还有一个1157 pts/0 00:00:00 bash是当前终端的shell使用-a是不会显示这个进程的 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -A PID TTY TIME CMD 1 ? 00:00:02 systemd 694 tty7 00:00:17 Xorg 695 tty1 00:00:00 agetty 1157 pts/0 00:00:00 bash 1938 ? 00:00:02 kworker/0:2-events 2050 ? 00:00:00 kworker/u256:2-flush-8:0 2115 pts/0 00:00:05 wireshark 2229 pts/0 00:00:00 dumpcap 2236 pts/0 00:00:00 ps 2236 pts/0 00:00:00 ps #-e选项和-A选项的效果是一样的 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -e PID TTY TIME CMD 1 ? 00:00:02 systemd 694 tty7 00:00:22 Xorg 695 tty1 00:00:00 agetty 1157 pts/0 00:00:00 bash 2115 pts/0 00:00:09 wireshark 2229 pts/0 00:00:00 dumpcap 2251 pts/0 00:00:00 ps
ps -c
显示CLS和PRI栏的信息,其中PRI表示的是内核调度的优先级┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -c PID CLS PRI TTY TIME CMD 1157 TS 19 pts/0 00:00:00 bash 2115 TS 19 pts/0 00:00:12 wireshark 2346 TS 19 pts/0 00:00:00 ps
ps -C 命令
指定一个命令查询与该命令相关的进程也就是CMD为指定的名称的进程┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -C wireshark PID TTY TIME CMD 2115 pts/0 00:00:13 wireshark ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -C ps PID TTY TIME CMD 2366 pts/0 00:00:00 ps
ps -f
显示用户名、父进程id、进程开始运行的时间、以及C┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -f UID PID PPID C STIME TTY TIME CMD root 1157 1154 0 19:55 pts/0 00:00:00 /bin/bash root 2115 1157 0 22:13 pts/0 00:00:13 wireshark root 2377 1157 0 23:06 pts/0 00:00:00 ps -f
ps -p 2115
查看进程号为2115的进程信息┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -p 2115 PID TTY TIME CMD 2115 pts/0 00:00:14 wireshark
ps -p 2115 -l
显示2115进程的详细信息┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -p 2115 -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 2115 1157 0 80 0 - 261335 - pts/0 00:00:15 wireshark
ps -L 2115
查看2115进程的线程信息#STAT表示状态、LWP表示 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ps -L 2115 PID LWP TTY STAT TIME COMMAND 2115 2115 pts/0 Sl 0:14 wireshark 2115 2116 pts/0 Sl 0:00 wireshark 2115 2117 pts/0 Sl 0:00 wireshark 2115 2119 pts/0 Sl 0:00 wireshark 2115 2125 pts/0 SNl 0:00 wireshark 2115 2126 pts/0 SNl 0:00 wireshark 2115 2127 pts/0 SNl 0:00 wireshark 2115 2128 pts/0 SNl 0:00 wireshark 2115 2258 pts/0 Sl 0:00 wireshark
- top
- kill
- fg
- bg
- netstat
文件查看类
-
ls
用户查看文件或目录的信息
参数
-a
:查看指定目录下所有文件包括隐藏文件(以点开头的文件),同时还包括’.‘当前目录,’…'上级目录
-A
:同a差别不大只不过不包括点和点点也就是当前目录和上级目录
-l
:查看详细信息,包括目录或文件的权限创建的时间大小等等
-h
:同-l一起使用以人类可读的方式进行显示也就是在大小前面加上单位
-t
:以最后修改时间为序进行排序,由近到远
-X
:以文件的拓展名进行排序,由字母的顺序由前到后不分大小写
-S
:以文件大小进行排序,由大到小
-r
:进行逆序排序
演示
ls -a
查看当前目录下的所有文件以及目录,包括隐藏文件和目录以及.(当前目录)和…(上级目录)。而-A
没有其中的.和…#可以看到其中有以点开头的还有.和.. ┌──(root💀kali)-[/home/kali-njh] └─# ls -a . 音乐 .cache .face.icon .john .presage .Xauthority .. 桌面 .config .gnome .kde .profile .xsession-errors 公共 .bash_history .dbus .gnupg Learn_dir .p.txt.swp .xsession-errors.old #当使用-A的时候.和..没有了也就是不显示当前目录和上一级目录 ┌──(root💀kali)-[/home/kali-njh] └─# ls -A 公共 .bashrc .face .kde .python-rshell.py.swp 模板 .bashrc.original .face.icon Learn_dir .rediscli_history 视频 .BurpSuite .gnome .local .ssh
ls -l
查看文件和目录的详细信息,包括权限、最后修改时间、大小、名称等#显示目录的所有文件和目录的详细信息第一列表示权限 #第一列的第一个字母表示d表示目录、如果是-表示的是文件、l表示是链接文件 #第一列的后面没三个表示一个权限前三个字母表示所属用户的权限,r表示可读、w为可写、x为可执行、-表示没有对应的权限如r-x表示有可读可执行没有可写,rwx表示可读可写没有可执行,后面第二个是用户组的权限,第三个是其他用户的权限 #第二列为所属的用户 #第三列为所属的用户组 #第四列为大小 #第五-七列为最近一次修改的月、日、时间 #第八列为名称 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls -l 总用量 5040 drwxr-xr-x 3 root root 4096 11月 4 12:00 39772 -rwxr-xr-x 1 root root 1151 11月 7 14:10 41154.sh drwxr-xr-x 2 root root 4096 11月 26 15:47 brute_file -rwxrw-rw- 1 root root 5090239 11月 20 18:47 caidao -rw-r--r-- 1 root root 2048 12月 5 16:01 Cknife.db drwxr-xr-x 2 root root 4096 10月 25 11:35 Cmd_learn -rw-r--r-- 1 root root 33182 11月 20 18:54 Config.ini drwxrwxrwx 6 root root 4096 11月 26 13:59 cs drwxr-xr-x 2 root root 4096 11月 26 13:38 CS drwxr-xr-x 2 root root 4096 11月 26 15:11 Webshell
ls -h -l
以人类易读的形式显示也就是说带上单位需要同-l一起使用#在文件大小的地方加上了单位 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls -lh 总用量 5.0M drwxr-xr-x 3 root root 4.0K 11月 4 12:00 39772 -rwxr-xr-x 1 root root 1.2K 11月 7 14:10 41154.sh drwxr-xr-x 2 root root 4.0K 11月 26 15:47 brute_file -rwxrw-rw- 1 root root 4.9M 11月 20 18:47 caidao -rw-r--r-- 1 root root 2.0K 12月 5 16:01 Cknife.db drwxr-xr-x 2 root root 4.0K 10月 25 11:35 Cmd_learn -rw-r--r-- 1 root root 33K 11月 20 18:54 Config.ini drwxrwxrwx 6 root root 4.0K 11月 26 13:59 cs drwxr-xr-x 2 root root 4.0K 11月 26 13:38 CS drwxr-xr-x 2 root root 4.0K 11月 26 15:11 Webshell
ls -lt
以最后的修改时间由近到远进行排序,需要与-l使用才能看出效果#可以看到12月修改的之后是更久之前的11月10月的了依次排序 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls -lt 总用量 5040 -rw-r--r-- 1 root root 2048 12月 5 16:01 Cknife.db drwxr-xr-x 2 root root 4096 11月 26 15:47 brute_file drwxr-xr-x 2 root root 4096 11月 26 15:11 Webshell drwxrwxrwx 6 root root 4096 11月 26 13:59 cs drwxr-xr-x 2 root root 4096 11月 26 13:38 CS -rw-r--r-- 1 root root 33182 11月 20 18:54 Config.ini -rwxrw-rw- 1 root root 5090239 11月 20 18:47 caidao -rwxr-xr-x 1 root root 1151 11月 7 14:10 41154.sh drwxr-xr-x 3 root root 4096 11月 4 12:00 39772 drwxr-xr-x 2 root root 4096 10月 25 11:35 Cmd_learn
ls -X
以文件的拓展名进行排序,由字母的顺序由前到后进行排序#对比两次的查看可以发现加了-X之后以后缀字母的顺序进行排序如db和ini,d的字母顺序在i前面所以.db的文件排在了.ini文件前面同理.sh也是一样 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls -X 39772 brute_file caidao Cmd_learn cs CS Webshell Cknife.db Config.ini 41154.sh ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls 39772 41154.sh brute_file caidao Cknife.db Cmd_learn Config.ini cs CS Webshell
ls -lS
以文件的大小由大到小排序,需要同-l才能显示效果#可以看到大小越大的排在了越前面 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls -lS 总用量 5040 -rwxrw-rw- 1 root root 5090239 11月 20 18:47 caidao -rw-r--r-- 1 root root 33182 11月 20 18:54 Config.ini drwxr-xr-x 3 root root 4096 11月 4 12:00 39772 drwxr-xr-x 2 root root 4096 11月 26 15:47 brute_file drwxr-xr-x 2 root root 4096 10月 25 11:35 Cmd_learn drwxrwxrwx 6 root root 4096 11月 26 13:59 cs drwxr-xr-x 2 root root 4096 11月 26 13:38 CS drwxr-xr-x 2 root root 4096 11月 26 15:11 Webshell -rw-r--r-- 1 root root 2048 12月 5 16:01 Cknife.db -rwxr-xr-x 1 root root 1151 11月 7 14:10 41154.sh
ls -lSr
对以上的排序进行逆序排序#可以看到从小到大进行排序了和只使用-S相反 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# ls -lSr 总用量 5040 -rwxr-xr-x 1 root root 1151 11月 7 14:10 41154.sh -rw-r--r-- 1 root root 2048 12月 5 16:01 Cknife.db drwxr-xr-x 2 root root 4096 11月 26 15:11 Webshell drwxr-xr-x 2 root root 4096 11月 26 13:38 CS drwxrwxrwx 6 root root 4096 11月 26 13:59 cs drwxr-xr-x 2 root root 4096 10月 25 11:35 Cmd_learn drwxr-xr-x 2 root root 4096 11月 26 15:47 brute_file drwxr-xr-x 3 root root 4096 11月 4 12:00 39772 -rw-r--r-- 1 root root 33182 11月 20 18:54 Config.ini -rwxrw-rw- 1 root root 5090239 11月 20 18:47 caidao
-
cat
参数-A, --show-all
:等效于 -vET
-b, --number-nonblank
:对非空输出行编号,同时取消 -n 选项效果
-n, --number
:对输出的所有行编号
-s, --squeeze-blank
:不输出多行空行
-E, --show-ends
:在每行结束处显示"$"
-e
:等效于 -vE
-T, --show-tabs
:将跳格字符显示为^I
-t
:与 -vT 等效
-v, --show-nonprinting
:使用^ 和M- 引用,除了LFD和 TAB 之外
--help
:显示此帮助信息并退出
--version
:显示版本信息并退出
演示
cat -A 文件名
在每一行的末尾加上一个$表示行尾,并且在遇到tab键的时候输出^I,┌──(root💀kali)-[~] └─# cat -A p6.dic Wordy$ site$ content$ wrap$ WordPress$ branding$
cat -b 文件名
对文件中非空行进行编号对空行不进行编号,使用-n选项的话对空行和非空行都会进行编号#可以看到对空行没有进行编号 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -b test.txt 1 aaaaaaaaa 2 bbbbbbbb 3 ccccccc 4 dddddddd #使用-n会对所有行都进行编号 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -n test.txt 1 aaaaaaaaa 2 3 4 bbbbbbbb 5 ccccccc 6 7 dddddddd
cat -s 文件名
将连续的空行合并为一行,可以看到有多个空行的时候只输出一个┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -sn test.txt 1 aaaaaaaaa 2 3 bbbbbbbb 4 ccccccc 5 6 dd ddd ddd ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -n test.txt 1 aaaaaaaaa 2 3 4 bbbbbbbb 5 ccccccc 6 7 8 dd ddd ddd
cat -E 文件名
在每行的结尾处处加上一个$,表示一行结束有的时候可能后面存在空格或tab键无法看到可以使用该参数进行查看,可以明显看到有空格个tab键的话会有一个间隔┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -E test.txt aaaaaaaaa $ $ $ bbbbbbbb $ ccccccc$ $ $ dd ddd ddd$
cat -T 文件名
遇到文件中的tab键以^I的形式输出为了与空格键进行区分┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -T test.txt aaaaaaaaa ^Ibbbbbbbb^I ccccccc dd ddd^Iddd
cat -v 文件名
输出文件中的不可打印字符以^M或M-的方式处理LFD和TAb以外,在ASCII码中前面几个字符是无法打印的,使用该参数可以输出这些不可打印的字符┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# i=8 #写入ASCII码中十进制为8的字符到文件中,该字符为退格是不可打印的字符 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# echo $i | awk '{printf("%c", $1)}' >>test.txt #使用-v输出的时候可以看到加上了^符号将不可打印字符进行了输出 ┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -v test.txt aaaaaaaaa bbbbbbbb ccccccc dd ddd ddd ^A ^H
cat -t 文件名
等效于-vT参数┌──(root💀kali)-[/home/kali-njh/Learn_dir] └─# cat -t test.txt aaaaaaaaa ^Ibbbbbbbb^I ccccccc dd ddd^Iddd
- more
该命令是用来进行分页查询的,如果文件太大了一页无法显示完内容的时候,直接使用cat输出的话会影响观看需要不断地拖动,而more命令是一页一页地显示内容,常用操作:- 空格键:查看下一屏;
- 回车键:往下滚动一行;
- b 键:往前查看一屏;
- q 键:退出。
参数
-d, --silent
:提示操作方式按空格向下查看、按q退出
-l, --logical
:在遇到换页符的时候继续显示下面的内容直到一页无法显示的时候停下等待命令
-p, --print-over
:删除之前的内容显示
-c, --clean-print
:清空之前显示的同-number使用效果更明显
-s, --squeeze
: 将多个空行压缩为一个空行
-number
:指定查看的行数
+number
:从指定的行开始显示
+/string
:在开始显示之前先搜索指定的字符串,如果不存在则输出没有该字符串并继续显示文件内容
-V, --version
:显示版本
more -d 文件名
查看的时候提示操作方法,按空格继续按q退出,没有使用该参数的时候只显示内容和进度#在末尾可以看到操作提示 ┌──(root💀kali)-[~] └─# more -d p6.dic contain page Comments world leader area --More--(1%)[Press space to continue, 'q' to quit.]
more -l 文件名
不要在遇到换页符的时候结束,在ASCII码中12表示换页符而more遇到换页符之后会自动结束
首先查看文件可以看到文件当中存在一个换页符
#可以看到当直接使用more的时候在遇到换页符会不显示下面的内容等待按空格或q ┌──(root💀kali)-[~] └─# more test.txt aaaaaaa bbbbbb ccccccccc ddddddddd ^L --More--(56%) #当使用-l的时候会接着显示下面的内容直到一页显示不完才进行分页 ┌──(root💀kali)-[~] └─# more -l test.txt aaaaaaa bbbbbb ccccccccc ddddddddd eeeeeee ffffffff gggggggggg
more +10 文件名
从第10行开始显示┌──(root💀kali)-[~] └─# more +10 p6.dic Feed Welcome Menu top masthead post main --More--(0%) #可以看到两次显示的起始行不同 ┌──(root💀kali)-[~] └─# more p6.dic Wordy site content wrap WordPress branding header navigation entry Feed Welcome and secure --More--(0%)
more -10 文件名
每次滚动只滚动10行,当使用-c或-p参数的时候只显示10行覆盖之前10行的内容,-c和-p选项会进行清屏显示┌──(root💀kali)-[~] └─# more -10 p6.dic Wordy site content wrap WordPress branding header navigation entry Feed --More--(0%)
more +/字符串 文件名
显示内容之前先去检查是否存在字符串#如果字符串不存在会输出没有发现然后继续输出文件内容 ┌──(root💀kali)-[~] └─# more -10 +/site123123 p6.dic Pattern not foundWordy site content wrap WordPress branding header navigation entry Feed
- head
该命令用来查看文件的前几行内容,默认输出前10行的内容
参数-c, --bytes=[-]NUM
:显示指定的字节数
-n, --lines=[-]NUM
:显示指定的行数
-q, --quiet, --silent
:静默模式
-v, --verbose
:始终打印文件名标题
--help display this help and exit
显示帮助
--version
:输出版本
head -c 10 文件名
显示前10个字节的内容#显示前10个字节的内容这里在aaaa之后有一个换行符所有只有9个字母 ┌──(root💀kali)-[~] └─# head -c 10 test.txt aaaaaaa bb
head -10 文件名
显示前10行的内容┌──(root💀kali)-[~] └─# head -10 p6.dic Wordy site content wrap WordPress branding header navigation entry Feed
head -v 文件名
会在输出内容之前显示文件的名称┌──(root💀kali)-[~] └─# head -v test.txt ==> test.txt <== aaaaaaa bbbbbb ccccccccc ddddddddd
- tial
查看文件后几行内容
- wc
- du
网络管理类
- ip addr
- ip route
- route
- ifconfig