首页 > 解决方案 > 基本的贝壳练习

问题描述

我有一个关于 shell 的练习,我需要使用权限。我需要重现一个存储库,使用 ls -l 时文件应如下所示:

dr-x---r-- 2 XX XX XX Jun 1 22:45 test0
-rwx--xr-- 1 XX XX 4  Jun 1 22:56 test1
-r-----r-- 2 XX XX 1  Jun 1 22:45 test2

所以我可以通过某些方式重现它(使用 mkdir test0 chmod 504 test0/chmod ugo-rwx 之类的基本命令),但它总是看起来像这样

dr-x---r--@ 2 XX XX 64 Jun 1 22:45 test0
-rwx--xr--  1 XX XX 0  Jun 1 22:54 test1
-r-----r--  1 XX XX 5  Jun 1 22:45 test2

如您所见,在 test0 中我有一个“@”,但我找不到它代表什么,也找不到如何删除它。然后,一旦我创建另一个文件或目录,test0 将自动更改并如下所示:

drwxr-xr-@ 2 XX XX 64 Jun 1 22:45 test0

对于 test1,我不知道如何使我的文件大小为“4”而不是“0”

对于 test2,我不知道它为什么不是目录,并且仍然有 2 个链接的硬链接,它的大小是 1。

提前致谢 !

标签: shellpermissionszsh

解决方案


@ 是 Mac OS 的约定,表示该目录已设置有扩展权限。更多信息可以在这里找到:

http://scottlab.ucsc.edu/xtal/wiki/index.php/Extended_Attributes

关于文件的大小,您可以创建文件并使用 dd 指定它们的大小,因此:

dd if=/dev/zero of=test1 bs=4c count=1

dd if=/dev/zero of=test2 bs=5c count=1

dd来自手册页的详细信息:

  dd - convert and copy a file

  bs=BYTES
          read and write up to BYTES bytes at a time


   count=N
          copy only N input blocks


  N and BYTES may be followed by the following multiplicative suffixes: c
   =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
   GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

推荐阅读