Wargames与bash知识04

Wargames与bash知识04

Bandit Level 7

从这个关卡开始,提示的可能使用的命令更换了一组,由ls , cd , cat , file , du , find,grep变成了man, grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd。下面我们对以前使用过的命令进行一下总结。
ls 常用的选项由-a -l -F -d -i等
-A或者-a用于显示隐藏文件,区别是-a显示.和…两个目录。
-l是长格式输出文件信息,大家一定注意一下长格式输出的各列信息的含义。一般情况下,讲Linux的书籍都会讲ls -l输出信息讲到权限。权限在Linux十分重要,大家一个要搞懂搞会。
-F 加上文件类型的指示符号(*/=@| 其中一个
-d 当遇到目录时列出目录本身而非目录内的文件
-i 显示文件inode

问题:你能用ls只显示目录名吗?大家可以先试试,看看能不能做到。

cd 命令关联的知识是绝对路径与相对路径。
绝对路径:从根目录开始的目录。如:/var/cache/apt/archives/ (这个目录是debian系linux apt 安装软件将软件缓存的默认目录)。
相对路径:就是相对于当前目录的路径。

gyj@DESKTOP-S52KD5S:~$ pwd
/home/gyj                          #用户家目录据根目录差两级
gyj@DESKTOP-S52KD5S:~$ ls ../../     #相对于当前目录,父目录的父目录就是根目录。
bin   dev  home  lib    lib64   lost+found  mnt  proc  run   snap  sys  usr
boot  etc  init  lib32  libx32  media       opt  root  sbin  srv   tmp  var
gyj@DESKTOP-S52KD5S:~$ cd ../..
gyj@DESKTOP-S52KD5S:/$ pwd
/

有几个用法注意一下。
cd命令后没有参数与cd ~一样:进入当前用户家目录
cd – 进入上一次的工作目录
cd … 进入上一级目录
cd ~/dirname 进入当前用户家目录下的dirname目录。

如果想玩可是试试下面命令:shopt -s autocd。然后就可以不用cd命令改变目录了。

gyj@DESKTOP-S52KD5S:~$ ls -F
env.out  hua/  jieya/  set.out  xue/
gyj@DESKTOP-S52KD5S:~$ shopt -s autocd
gyj@DESKTOP-S52KD5S:~$ cd hua
gyj@DESKTOP-S52KD5S:~/hua$ ls -F
202101/  202105/  202109/  202201/  202205/  202209/  202301/  202305/  202309/  ahao01  ahao05  bhao04

gyj@DESKTOP-S52KD5S:~/hua$ 202101
cd -- 202101
gyj@DESKTOP-S52KD5S:~/hua/202101$ ~
cd -- /home/gyj
gyj@DESKTOP-S52KD5S:~$ ls -F
env.out  hua/  jieya/  set.out  xue/
gyj@DESKTOP-S52KD5S:~$ jieya
cd -- jieya
gyj@DESKTOP-S52KD5S:~/jieya$ pwd
/home/gyj/jieya
gyj@DESKTOP-S52KD5S:~/jieya$ cd
gyj@DESKTOP-S52KD5S:~$ pwd
/home/gyj
gyj@DESKTOP-S52KD5S:~$ cd -
/home/gyj/jieya
gyj@DESKTOP-S52KD5S:~/jieya$ ~
cd -- /home/gyj
gyj@DESKTOP-S52KD5S:~$ shopt -u autocd

cat命令与tac命令
cat 显示文件

-A, --show-all 等效于 -vET
-b, --number-nonblank 对非空输出行编号,同时取消 -n 选项效果
-e 等效于 -vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等效
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
–help 显示此帮助信息并退出
–version 显示版本信息并退出

tac 命令是“倒背如流”,按行倒置显示文件。从拼写来看tac是cat的反着写,命令显示结果也是一样,cat是从头到尾显示,tac是从尾到头显示。linux中这种文字游戏很多,如more与less、bash与sh,甚至GUN。了解这些花边信息也可以帮助学习和记忆Linux知识。

du 命令是计算每个文件的磁盘用量,目录则取总用量。上面关卡没有使用过du命令,将find找到的文件,专门du一下就显得太刻意了。

file和find命令已经在上文讲过了,不再复述了。

PS:使用ls只显示目录的方法:ls -d */

gyj@DESKTOP-S52KD5S:/$ cd
gyj@DESKTOP-S52KD5S:~$ ls -lF
总用量 92
-rw-r--r--  1 gyj gyj  3119 1211 15:48 env.out
drwxr-xr-x 38 gyj gyj  4096 1228 21:21 hua/
drwxr-xr-x  2 gyj gyj  4096 1229 19:43 jieya/
-rw-r--r--  1 gyj gyj 76522 1211 15:48 set.out
drwxr-xr-x  4 gyj gyj  4096 1227 21:15 xue/
gyj@DESKTOP-S52KD5S:~$ ls -d */         #只显示目录
hua/  jieya/  xue/
gyj@DESKTOP-S52KD5S:~$ ls -dl */        #长格式只显示目录
drwxr-xr-x 38 gyj gyj 4096 1228 21:21 hua/
drwxr-xr-x  2 gyj gyj 4096 1229 19:43 jieya/
drwxr-xr-x  4 gyj gyj 4096 1227 21:15 xue/
gyj@DESKTOP-S52KD5S:~$

开始解题:
提示:密码存储在文件data.txt中单词millionth的旁边。
这个关卡使用grep命令就很容易。
谈grep命令就离不开正则表达式。正则表达式有一本几百页的书在谈,计划在明天的文章简单介绍一下。

bandit7@bandit:~$ file data.txt
data.txt: Unicode text, UTF-8 text
bandit7@bandit:~$ ls -hl
total 4.0M
-rw-r----- 1 bandit8 bandit7 4.0M Oct  5 06:19 data.txt
bandit7@bandit:~$ < data.txt grep millionth
millionth       TESKZC0XvTetK0S9xNwm25STk5iWrBvP
bandit7@bandit:~$ cat data.txt |grep millionth
millionth       TESKZC0XvTetK0S9xNwm25STk5iWrBvP
bandit7@bandit:~$

你可能感兴趣的:(bash,开发语言)