2019独角兽企业重金招聘Python工程师标准>>>
2.1/2.2 系统目录结构
/bin:bin是Binary的缩写,该目录下存放的是最常用的命令。
/boot:该目录下存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的。
/etc:该目录下存放的是所有系统管理所需要的配置文件和子目录。
/home:这是用户的主目录。在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib和/lib64:这两个目录下存放的是系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在目录。
/media:系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进入该目录查看光驱里的内容。
/opt:这是给主机额外安装软件所设置的目录,该目录默认为空。比如你要安装一个ORACLE数据库,可以放到该目录下。
/proc:该目录是一个虚拟的目录,是系统内存的映射,我们可以通过直接访问来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的ping命令,使其他人无法ping你的机器。后续,在日常工作中,你会经常用到类似的用法。 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录是系统管理员的用户主目录。
/run:这个目录其实和/var/run是同一个目录,这里面存放的是一些服务的pid,一个服务启动完后,是有一个pid文件的。至于为什么说是同一个目录,Linux是如何做到的,后续我们再介绍。
/sbin:s就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序。
/srv:该目录存放的是一些服务启动之后需要提取的数据。
/sys:该目录存放的是与硬件驱动程序相关的信息。
/tmp:该目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,类似于Windows下的Program Files目录,用户的很多应用程序和文件都存放在该目录下。后面的章节中,我们会多次用到这个目录。
/usr/bin:该目录存放的是系统用户使用的应用程序。
/usr/sbin: 该目录存放的是超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src :该目录是内核源代码默认的放置目录。
/var:该目录存放的是在不断扩充且经常被修改的目录,包括各种日志文件或者pid文件,刚刚提到的/var/run就是在/var目录下面
在Linux系统中,有几个重要的目录需要注意,不要误删除或者随意更改其内部文件。下面阿铭再简单总结一下这几个重要的目录。
/etc目录下是系统的配置文件,如果更改了该目录下的某个文件可能会导致系统无法正常启动。
/bin、/sbin、/usr/bin和/usr/sbin目录是系统预设的执行文件的放置目录,其中/bin和/usr/bin目录下是供系统用户使用的指令(除root外的通用账户),而/sbin和/usr/sbin目录下则是供root使用的指令。比如ls指令就存放在/bin/目录下。
/var也是一个非常重要的目录,系统上运行各个程序时所产生的日志都被记录在该目录下(即/var/log目录中),另外mail指令的预设也放置在这里。
2.3 ls命令
英文全名:List即列表的意思
ls命令用来显示目录列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
选项:
-l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件类型、权限
模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-a 显示所有档案及目录(ls内定将档案名或目录名称为“.”开头的视为隐藏,不会列出)
-i 显示文件索引节点号(inode)。一个索引节点代表一个文件;
-h(常和l配合使用) 以适合的容量单位显示文件大小
-d 仅显示目录本身,而不显示目录下的内容列表。
-t 用文件和目录的更改时间排序
-R 递归处理,将指定目录下的所有文件及子目录一并处理
-1 (数字1选项)所有输出信息用单列格式输出
-r 反序排列目录下列表
-n 以uid 和gid 替代所有者以及组
-S 按文件大小排序
实例:
1 显示当前目录下非隐藏的文件及目录:
[root@localhost ~]# ls
1.txt anaconda-ks.cfg default.target default.target1 zhang
2 显示当前目录下文件及目录的详细列表:
[root@localhost ~]# ls -l
总用量 4
-rw-r--r--. 1 root root 0 6月 16 23:31 1.txt
-rw-------. 1 root root 1250 5月 26 20:27 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
lrwxrwxrwx. 1 root root 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
drwxr-xr-x. 2 root root 6 6月 16 23:31 zhang
3 显示当前目录下隐藏及非隐藏的文件和目录:
[root@localhost ~]# ls -a
. anaconda-ks.cfg .bash_profile default.target .tcshrc
.. .bash_history .bashrc default.target1 .viminfo
1.txt .bash_logout .cshrc .ssh zhang
4 以合适的容量单位显示当前目录下文件及目录的大小:
[root@localhost ~]# ls -lh
总用量 4.0K
-rw-r--r--. 1 root root 0 6月 16 23:31 1.txt
-rw-------. 1 root root 1.3K 5月 26 20:27 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
lrwxrwxrwx. 1 root root 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
drwxr-xr-x. 2 root root 6 6月 16 23:31 zhang
5 显示inode信息:
[root@localhost ~]# ls -li
总用量 4
17374315 -rw-r--r--. 1 root root 0 6月 16 23:31 1.txt
17595044 -rw-------. 1 root root 1250 5月 26 20:27 anaconda-ks.cfg
8656416 lrwxrwxrwx. 1 root root 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
9610966 lrwxrwxrwx. 1 root root 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
304906 drwxr-xr-x. 2 root root 6 6月 16 23:31 zhang
索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。
6 最近修改的文件显示在最前面排序:
[root@localhost ~]# ls -lt
总用量 4
drwxr-xr-x. 2 root root 6 6月 16 23:31 zhang
-rw-r--r--. 1 root root 0 6月 16 23:31 1.txt
lrwxrwxrwx. 1 root root 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
-rw-------. 1 root root 1250 5月 26 20:27 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
7 最近修改的文件显示在最后面排序:
[root@localhost ~]# ls -ltr
总用量 4
lrwxrwxrwx. 1 root root 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
-rw-------. 1 root root 1250 5月 26 20:27 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
-rw-r--r--. 1 root root 0 6月 16 23:31 1.txt
drwxr-xr-x. 2 root root 6 6月 16 23:31 zhang
8 显示当前目录下文件的uid 以及 gid:
[root@localhost ~]# ls -n
总用量 4
-rw-r--r--. 1 0 0 0 6月 16 23:31 1.txt
-rw-------. 1 0 0 1250 5月 26 20:27 anaconda-ks.cfg
lrwxrwxrwx. 1 0 0 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
lrwxrwxrwx. 1 0 0 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
drwxr-xr-x. 2 0 0 6 6月 16 23:31 zhang
9 显示当前目录下的文件以及子目录下的文件:
[root@localhost ~]# ls -lR
.:
总用量 4
-rw-r--r--. 1 root root 0 6月 16 23:31 1.txt
-rw-------. 1 root root 1250 5月 26 20:27 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 37 5月 26 20:26 default.target -> /lib/systemd/system/multi-user.target
lrwxrwxrwx. 1 root root 36 6月 1 19:12 default.target1 -> /lib/systemd/system/graphical.target
drwxr-xr-x. 2 root root 18 6月 17 00:36 zhang
./zhang:
总用量 0
-rw-r--r--. 1 root root 0 6月 17 00:36 1.txt
10 显示当前目录本身详细信息:
[root@localhost ~]# ls -ld
dr-xr-x---. 4 root root 4096 6月 16 23:31
#硬链接数为4
目录下面有几个子目录,则这个目录inode的硬链接数为几
ls -id .
ls -id ../root
ls -id .ssh/..
ls -id zhang/..
系统自带别名ll:
which ll
alias ll='ls -l --color=auto'
/bin/ls
2.4 文件类型
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。
ls -l 显示详细信息的第一个字符代表文件的类型:
- 普通文件 (普通文件可以用cat查看,命令二进制文件因为被编译过无法查看)
d 目录文件
c 字符串设备(键盘,鼠标)ll /dev
b 块设备文件 (硬盘,光驱等)ll /dev
l 软链接文件
s socket文件 (套接字是方便进程之间通信的特殊文件,与管道不同的是,套接字能促
使通过网络连接的不同计算机的进程之间进行通信。套接字文件也不与任何数据块关
联。)
p 管道文件pipe (管道也是一个文件,作为数据管道方便程序之间的通信,管道实际
缓存了来自第一个进程的输入数据,也称为FIFIO)
查看某一文件类型的文件:
find / -type s/d/c/b/l/p
2.5 alias命令
alias命令用来设置命令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。
alias 的基本使用方法:
alias 查看系统已设置的别名
alias 新的命令=‘原命令 -选项/参数‘ 设置新的别名
unalias 命令别名 取消别名
例如:alias ld='ls -ld' 将重新定义ls命令,现在只需输入ld就可以显示当前目录本身的详细信息了。直接输入alias 会显示当前系统中所有已定义的命令别名。
要删除一个别名,可以使用 unalias 命令,如 unalias ld 。
which命令:
which命令会在环境变量$PATH设置的目录里查找符合条件的文件。
使用命令 which +命令 查查此命令的绝对路径,如有别名设置也会显示出来。
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls