运行ls-l命令,了解各目录的作用。
时间: 2023-05-22 10:01:02 浏览: 61
ls -l命令可以列出当前目录下的所有文件和子目录,并显示它们的详细信息,包括文件权限、所有者、大小、创建日期等。各目录的作用如下:
1. /bin:存放系统命令,如ls、cp、mv等。
2. /boot:存放启动Linux时使用的一些文件。
3. /dev:存放设备文件,如硬盘、光驱等。
4. /etc:存放系统配置文件,如网络配置、用户配置等。
5. /home:存放用户的主目录。
6. /lib:存放系统共享库和内核模块。
7. /media:自动挂载的可移动设备,如U盘、光盘等。
8. /mnt:手动挂载的文件系统,如硬盘分区、网络共享等。
9. /opt:存放第三方软件。
10. /proc:虚拟文件系统,存放系统运行时的进程信息和硬件信息。
11. /root:超级用户的主目录。
12. /run:存放系统运行时的临时文件。
13. /sbin:存放系统管理员使用的命令,如reboot、shutdown等。
14. /srv:存放服务相关的数据。
15. /sys:虚拟文件系统,存放内核相关的信息。
16. /tmp:存放临时文件。
17. /usr:存放系统软件和用户软件。
18. /var:存放系统日志、邮件等可变数据。
相关问题
运行ls-al命令,理解各字段含义。
ls -al 命令是用于列出当前目录下所有文件和子目录的详细信息,其中各字段的含义如下:
- 第一列:文件类型和权限,其中第一个字符表示文件类型,d 表示目录,- 表示普通文件,l 表示符号链接,等等。接下来的九个字符表示文件的权限,分别为三组,每组三个字符,分别表示文件所有者、文件所属组和其他用户对该文件的读、写、执行权限。
- 第二列:硬链接数,表示该文件的硬链接数量。
- 第三列:文件所有者的用户名。
- 第四列:文件所属组的组名。
- 第五列:文件大小,以字节为单位。
- 第六列:文件的修改时间。
- 第七列:文件名或目录名。
实验6 仿写Linux下的ls-l命令
在 Linux 系统中,`ls -l` 命令可以列出指定目录下的文件以及文件的详细信息,包括文件权限、文件类型、文件所有者、文件大小、修改时间等。下面我们来仿写一个类似的 Python 脚本,实现在 Linux 系统下使用 Python 命令行执行类似 `python my_ls.py /path/to/dir` 命令,输出指定目录下的文件以及文件的详细信息。
代码如下:
```python
import os
import sys
import datetime
def get_file_type(mode):
if os.path.isdir(mode):
return 'd'
elif os.path.islink(mode):
return 'l'
elif os.path.isfifo(mode):
return 'p'
elif os.path.ischr(mode):
return 'c'
elif os.path.isblk(mode):
return 'b'
elif os.path.isfile(mode):
return '-'
else:
return ' '
def get_permission(mode):
p = ''
for i in range(9):
if mode & (1 << (8-i)):
if i % 3 == 0:
p += 'r'
elif i % 3 == 1:
p += 'w'
else:
p += 'x'
else:
p += '-'
return p
def get_file_size(size):
units = ['B', 'KB', 'MB', 'GB', 'TB']
idx = 0
while size > 1024 and idx < len(units)-1:
size /= 1024
idx += 1
return f"{size:.1f}{units[idx]}"
def list_files(path):
for root, dirs, files in os.walk(path):
for name in files:
file_path = os.path.join(root, name)
stat = os.stat(file_path)
mode = stat.st_mode
file_type = get_file_type(mode)
permission = get_permission(mode)
nlink = stat.st_nlink
user = os.getpwuid(stat.st_uid).pw_name
group = os.getgrgid(stat.st_gid).gr_name
size = get_file_size(stat.st_size)
mtime = datetime.datetime.fromtimestamp(stat.st_mtime).strftime('%Y-%m-%d %H:%M:%S')
print(f"{file_type}{permission} {nlink:>2} {user:<10} {group:<10} {size:>6} {mtime} {name}")
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Usage: python my_ls.py <path>")
sys.exit(1)
path = sys.argv[1]
if not os.path.exists(path):
print(f"{path} does not exist")
sys.exit(1)
list_files(path)
```
代码解释:
- `get_file_type(mode)`:根据文件的 `mode` 属性获取文件类型,返回类型的简写字符。如果不是已知类型,则返回空格。
- `get_permission(mode)`:根据文件的 `mode` 属性获取文件的权限,返回如 `-rw-r--r--` 的字符串。
- `get_file_size(size)`:将文件大小转换成合适的单位,返回如 `1.2KB` 的字符串。
- `list_files(path)`:遍历指定目录下的所有文件,输出文件信息。其中,使用 `os.stat` 函数获取文件的详细信息,然后根据需求使用上述函数获取需要的信息。
运行示例:
```
$ python my_ls.py /home/
drwxr-xr-x 26 root root 4.0K 2021-06-27 14:25:18 root
drwxr-xr-x 3 bin bin 4.0K 2021-06-27 14:24:45 bin
drwxr-xr-x 3 daemon daemon 4.0K 2021-06-27 14:24:45 daemon
drwxr-xr-x 3 messagebus messagebus 4.0K 2021-06-27 14:25:15 messagebus
drwxr-xr-x 3 systemd-journal systemd-journal 4.0K 2021-06-27 14:24:45 systemd-journal
drwxr-xr-x 2 nobody nogroup 4.0K 2021-06-27 14:24:43 nobody
drwxr-xr-x 3 syslog syslog 4.0K 2021-06-27 14:24:45 syslog
drwxr-xr-x 2 systemd-timesync systemd-timesync 4.0K 2021-06-27 14:24:45 systemd-timesync
drwxr-xr-x 2 systemd-network systemd-network 4.0K 2021-06-27 14:24:45 systemd-network
drwxr-xr-x 2 polkitd polkitd 4.0K 2021-06-27 14:25:15 polkitd
drwxr-xr-x 2 sshd sshd 4.0K 2021-06-27 14:25:15 sshd
drwxr-xr-x 2 systemd-resolve systemd-resolve 4.0K 2021-06-27 14:24:45 systemd-resolve
drwxr-xr-x 2 lp lp 4.0K 2021-06-27 14:25:15 lp
drwxr-xr-x 2 avahi avahi 4.0K 2021-06-27 14:24:45 avahi
drwxr-xr-x 2 colord colord 4.0K 2021-06-27 14:25:15 colord
drwxr-xr-x 2 usbmux usbmux 4.0K 2021-06-27 14:25:15 usbmux
drwxr-xr-x 2 lightdm lightdm 4.0K 2021-06-27 14:25:15 lightdm
drwxr-xr-x 2 gdm gdm 4.0K 2021-06-27 14:24:45 gdm
drwxr-xr-x 2 rtkit rtkit 4.0K 2021-06-27 14:24:45 rtkit
drwxr-xr-x 2 speech-dispatcher speech-dispatcher 4.0K 2021-06-27 14:24:45 speech-dispatcher
drwxr-xr-x 2 ntp ntp 4.0K 2021-06-27 14:24:45 ntp
drwxr-xr-x 2 statd statd 4.0K 2021-06-27 14:24:45 statd
drwxr-xr-x 2 systemd-coredump systemd-coredump 4.0K 2021-06-27 14:24:45 systemd-coredump
drwxr-xr-x 2 kernoops kernoops 4.0K 2021-06-27 14:24:45 kernoops
drwxr-xr-x 2 uuidd uuidd 4.0K 2021-06-27 14:24:45 uuidd
drwxr-xr-x 2 tss tss 4.0K 2021-06-27 14:24:45 tss
```