从零开始学kali命令行(2)

打印出文件内容的简单描述

file hulk.py
hulk.py: ASCII text, with CRLF line terminators

查看文件内容

less hulk.py

Page UP or b 向后翻滚一页
Page Down or space 向前翻动一页
UP Arrow 向前移动一行
Down Arrow 向后移动一行
G 移动到最后一行
g 移动到开头一行
/charaters 再按个回车向前查找指定的字符串
n 向前查找下一个出现的字符串,这个字符串是之前所指定查找的
h 显示帮助屏幕
q 退出 less 程序

kali的系统目录简介
/ 根目录
/bin 包含系统启动和运行所必须的二进制程序
/boot 包含 Linux 内核,最初的 RMA 磁盘映像(系统启动时,由驱动程序所需)和启动加载程序。
• /boot/grub/grub.cfg 被用来配置启动加载程序。
• /boot/vmlinuz Linux 内核。
/dev 这是一个包含设备结点的特殊目录。在这个目录里,内核维护着它支持的设备。
/etc 这个目录包含所有系统层面的配置文件。它也包含一系列的shell 脚本,在系统启动时,这些脚本会运行每个系统服务。这个目录中的任何文件应该是可读的文本文件。
• /etc/crontab,定义自动运行的任务。
• /etc/fstab,包含存储设备的列表,以及与他们相关的挂载点。
• /etc/passwd,包含用户帐号列表。
/home 在通常的配置环境下,系统会在/home 下,给每个用户分配一个目录。普通只能在他们自己的目录下创建文件。这个限制保护系统免受错误的用户活动破坏。
/lib 包含核心系统程序所需的库文件。这些文件与 Windows 中的动态链接库相似。
/lost+found 每个使用 Linux 文件系统的格式化分区或设备,例如 ext3文件系统,都会有这个目录。当部分恢复一个损坏的文件系统时,会用到这个目录。除非文件系统真正的损坏了,那么这个目录会是个空目录。
/media 在现在的 Linux 系统中,/media 目录会包含可移除媒体设备的挂载点,例如 USB 驱动器,CD-ROMs 等等。这些设备连接到计算机之后,会自动地挂载到这个目录结点下。
/mnt 目录包含可移除设备的挂载点。
/opt 用来安装“可选的”软件。这个主要用来存储可能安装在系统中的商业软件产品。
/proc 从存储在硬盘上的文件的意义上说,它不是真正的文件系统。反而,它是一个由 Linux 内核维护的虚拟文件系统。它所包含的文件是内核的窥视孔。这些文件是可读的,它们会告诉你内核是怎样监管计算机的。
/root root 帐户的主目录。
/sbin 这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序,通常为超级用户保留。
/tmp 用来存储由各种程序创建的临时文件的地方。一些配置,导致系统每次重新启动时,都会清空这个目录
/usr 在 Linux 系统中,/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。
/usr/bin /usr/bin 目录包含系统安装的可执行程序。通常,这个目录会包含许多程序。
/usr/lib 包含由/usr/bin 目录中的程序所用的共享库。
/usr/local 是非系统发行版自带,却打算让系统使用的程序的安装目录。通常,由源码编译的程序会安装在/usr/local/bin 目录下。新安装的 Linux 系统中,会存在
这个目录,但却是空目录,直到系统管理员放些东西到它里
面。/usr/sbin 包含许多系统管理程序。
/usr/share包含许多由/usr/bin 目录中的程序使用的共享数据。其中包括像默认的配置文件,图标,桌面背景,音频文件等等。
/usr/share/doc 大多数安装在系统中的软件包会包含一些文档。在/usr/share/doc 目录下,我们可以找到按照软件包分类的文档。
/var 除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说,它们的内容不会改变。/var 目录是可能需要改动的文件存储的地方。各种数据库,假脱机文件,用户邮件等等,都驻扎在这里。
/var/log 这个/var/log 目录包含日志文件,各种系统活动的记录。这些文件非常重要,并且应该时时监测它们。其中最重要的一个文件是/var/log/messages。注意,为了系统安全,在一些系统中,你必须是超级用户才能查看这些日志文件

创建目录

 mkdir a1 b1 c1
root@kali:~# ls
  a1                b1                c1 

复制命令

-a, --archive 复制文件和目录,以及它们的属性,包括所有权和权限。通常,复本具有用户所操作文件的默认属性。
-i, --interactive 在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。
-r, --recursive 递归地复制目录及目录中的内容。当复制目录时,需要这个
选项(或者 -a 选项)。
-u, --update 当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
-v, --verbose 显示具体的命令操作信息

cp file1 file2 复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2的内容会被 file1 的内容重写。如果 file2 不存在,则会创建file2。

cp hulk.py hulk1.py
root@kali:~/42# ls
  hulk1.py   hulk.py     

cp -i file1 file2 这条命令和上面的命令一样,除了如果文件 file2 存在的话,在文件 file2 被重写之前,会提示用户确认信息

cp -i hulk.py hulk1.py
cp:是否覆盖'hulk1.py'yes
root@kali:~/42# ls
 hulk1.py    hulk.py   

cp file1 file2 dir1 复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在

cp hulk.py terminal.py 42
root@kali:~# cd 42
root@kali:~/42# ls
 hulk.py      terminal.py

cp dir1/* dir2 使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。dir2 必须已经存在,但是dir1目录下的子目录不会被复制

cp trape/* test
cp: 略过目录"trape/core"
cp: 略过目录"trape/static"
cp: 略过目录"trape/templates"
root@kali:~# cd test
root@kali:~/test# ls
database.db  README.md  requirements.txt  trape.py  version.txt

cp -r dir1 dir2 复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在,创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。如果目录 dir2 存在,则目录 dir1(和目录中的内容) 将会被复制到 dir2 中

 cp -r trape test
root@kali:~# cd test
root@kali:~/test# ls
database.db  README.md  requirements.txt  trape  trape.py  version.txt

移动命令
-i --interactive 在重写一个已经存在的文件之前,提示用户确认信息。 如果不指定这个选项,mv 命令会默认重写文件内容。
-u --update 当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。
-v --verbose 当操作 mv 命令时,显示具体的操作信息。

mv file1 file2 移动 file1 到 file2。如果 file2 存在,它的内容会被 file1 的内容重写。 如果 file2 不存在,则创建 file2。file1 不再存在。

mv test2.exe test1.exe
root@kali:~# ls
test1.exe 

mv -i file1 file2 除了如果 file2 存在的话,在 file2 被重写之前,用户会得到
提示信息外,这个和上面的选项一样。

mv -i  test1.exe test.exe
mv:是否覆盖"test.exe"yes
root@kali:~# ls
test.exe 

mv file1dir1 移动 file1 到目录 dir1 中。dir1 必须已经存在

mv test.exe test
root@kali:~# cd test
root@kali:~/test# ls
test.exe

mv dir1 dir2 如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1的内容到目录 dir2 中,同时删除目录 dir1。如果目录 dir2存在,移动目录 dir1(及它的内容)到目录 dir2

mv test test1
root@kali:~# ls
  test1 
root@kali:~# cd test1
root@kali:~/test1# ls
test.exe

删除命令
-i, --interactive 在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm 会默默地删除文件
-r, --recursive 递归地删除文件,这意味着,如果要删除一个目录,而此目
录又包含子目录,那么子目录也会被删除。要删除一个目录,必须指定这个选项。
-f, --force 忽视不存在的文件,不显示提示信息。这选项颠覆了”–interactive” 选项。
-v, --verbose 在执行 rm 命令时,显示具体的操作信息。

rm file1 默默地删除文件

 ls
test.exe
root@kali:~/test1# rm test.exe
root@kali:~/test1# ls
root@kali:~/test1# 

rm -i file1 除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。

 ls
 get-pip.py 
root@kali:~# rm -i get-pip.py
rm:是否删除普通文件 "get-pip.py"?yesy
root@kali:~# ls
root@kali:~# 

rm -r dir1 删除目录 dir1,及 dir1 中的内容

rm -r test

rm -rf dir1 同上,除了如果文目录 dir1 不存在的话,rm 仍会继续执行

rm -rf test
root@kali:~# rm -r test
rm: 无法删除"test": 没有那个文件或目录

ln 命令即可创建硬链接,也可以创建符号链接。
创建硬链接ln file link

ls
automate.rc trape
root@kali:~# ln trape trape-hard
ln: "trape": 不允许将硬链接指向目录
root@kali:~# ln automate.rc auto.hard
root@kali:~# ls -l
总用量 16
-rw-r--r-- 2 root root  175  5月 11 12:48 auto.hard
-rw-r--r-- 2 root root  175  5月 11 12:48 automate.rc

创建符号链接ln -s item link“item” 可以是一个文件或是一个目录

 ln -s trape trape-sym
root@kali:~# ls -l
drwxr-xr-x 6 root root 4096  5月  5 17:37 trape
lrwxrwxrwx 1 root root    5  6月  2 09:46 trape-sym -> trape

硬链接和符号链接比起来,硬链接是最初 Unix 创建链接的方式,而符号链接更加现代。在
默认情况下,每个文件有一个硬链接,这个硬链接给文件起名字。当我们创建一个硬链接以后,就为文件创建了一个额外的目录条目。硬链接有两个重要局限性:

  1. 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联与链接本身
    不在同一个磁盘分区上的文件。
  2. 一个硬链接不能关联一个目录。
    一个硬链接和文件本身没有什么区别。不像符号链接,当你列出一个包含硬链接的目录内
    容时,你会看到没有特殊的链接指示说明。当一个硬链接被删除时,这个链接被删除,但是文件本身的内容仍然存在(这是说,它所占的磁盘空间不会被重新分配),直到所有关联这个文件的链接都删除掉。

创建符号链接是为了克服硬链接的局限性。符号链接生效,是通过创建一个特殊类型的文
件,这个文件包含一个关联文件或目录的文本指针。在这一方面,它们和 Windows 的快捷方式差不多,一个符号链接指向一个文件,而且这个符号链接本身与其它的符号链接几乎没有区别。例如,如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。然而,当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。如果删除这个文件早于文件的符号链接,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为坏链接。在许多实现中,ls 命令会以不同的颜色展示坏链接,比如说红色,来显示它们的存在。

当考虑到硬链接,想象文件是由两部分组成:数据部分包含文件的内容,名字部分包含文
件的名字,这样可以帮助理解。当我们创建了文件的硬链接,实际上,我们给文件添加了额外的名字,这些名字都涉及一样的数据内容。系统分配了一系列的盘块给所谓的索引节点,它和文件名字想关联。因此每个硬链接都关系到一个具体的索引节点,这个节点包含了文件的内容。
ls 命令有一种方法,来展示(文件索引节点)的信息。在命令中加上 “-i” 选项

ls -li
总用量 16
666778 -rw-r--r-- 2 root root  175  5月 11 12:48 auto.hard
666778 -rw-r--r-- 2 root root  175  5月 11 12:48 automate.rc

在这个版本的列表中,第一字段表示文件索引节点号,正如我们所见到的,automate.rc 和 auto.hard共享一样的索引节点号

通配符

  • 匹配任意多个字符(包括零个或一个)
    ? 匹配任意一个字符(不包括零个)
ls *trape
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt
root@kali:~# ls *pe
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt
root@kali:~# ls ?rape
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt
root@kali:~# ls ?ra
ls: 无法访问?ra: 没有那个文件或目录
ls ?trape
ls: 无法访问?trape: 没有那个文件或目录
ls ???pe
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt

g* 文件名以“g”开头的文件
b*.txt 以”b” 开头,中间有零个或任意多个字符,并以”.txt” 结尾
的文件
Data??? 以“Data”开头,其后紧接着 3 个字符的文件

[characters] 匹配任意一个属于字符集中的字符
[!characters] 匹配任意一个不是字符集中的字符
[[:class:]] 匹配任意一个属于指定字符类中的字符
[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:] 匹配任意一个数字
[:lower:] 匹配任意一个小写字母
[:upper:] 匹配任意一个大写字母

[abc]* 文件名以”a”,”b”, 或”c” 开头的文件

ls [tab]*
auto.hard  automate.rc

trape:
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt

trape-sym:
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt

haha[0-9][0-9][0-9]
以”haha” 开头,并紧接着 3 个数字的文件
[[:upper:]]* 以大写字母开头的文件
[![:digit:]]* 不以数字开头的文件

 ls [![:digit:]]*
auto.hard  automate.rc

Desktop:

trape:
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt

trape-sym:
core         README.md         static     trape.py
database.db  requirements.txt  templates  version.txt

*[[:lower:]123] 文件名以小写字母结尾,或以“1”,“2”,或“3”结尾的
文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值