正在学习Linux,记录一下学习历程。
文中所指的文件是广泛定义,即包括普通文件,目录,伪文件。
更多参见Linux学习-文件系统
路径名&工作目录
路径名:通过列举由/分隔的目录序列描述文件树的一个位置。也称路径。
工作目录:当前正在工作的目录。也称当前目录。
每当希望使用工作目录中的文件时,无需指定整个路径,只需键入文件名即可。
工作目录是各种操作的基础,在需要时可以进行改变。
绝对路径&相对路径
绝对路径:目录序列从根目录开始。
相对路径:目录序列从工作目录开始。
系统假定任何一个/开头的路径都是绝对路径,假定任何不以/开头的路径都是相对于工作目录。
路径名缩写(实际上使用路径名缩写的路径是绝对路径,路径的一部分用缩写代替):
.. 指父目录,相当于向上移动一层。
. 指工作目录本身。
~ 指home目录。
ps:当必须指定绝对路径,使用路径名缩写可以避免输入长的路径名,避免拼写错误,也可以实现路径的动态指定,根据程序所处位置,进行路径的补全。
在目录树中移动
pwd 显示工作目录,确定当前所处的目录树位置。
cd命令用于切换工作目录
cd 没有指定目录名称,切换到home目录。
cd - 切换到上一次访问的目录。
cd 指定路径名,切换到路径名对应目录。
ps:
如果好奇根目录的父目录是什么,其实它就是根目录本身。因此如果输入多个../../../../../,也不会报错。
创建新目录
mkdir 创建新目录
可以自由地命名新目录,字母,数字,么由特殊含义的标点符号作为目录名称。(大多数情况下,坚持只使用小写字母将使生活更轻松)
创建目录时,既可以使用绝对路径名,也可以使用相对路径名。
注意:当父目录不存在,就不能创建子目录。
可以使用 -p 选项自动创建所有需要的父目录。
移除目录
rmdir 移除目录
是mkdir的逆操作。
注意:当一个目录为空时,才能移除这个目录。
使用 -r 选项可以移除不为空的目录,它会递归移除所有的子目录及其内容(为了保证目录为空才可移除这个规则,从最底层目录开始移除,递归移除到指定目录)。
使用 -p 选项可以自动移除所有需要移除的父目录。 若子目录移除后父目录为空则把父目录也移除,递归,直到父目录不为空。
注意:不能删除工作目录和根目录之间的任何目录。
将文件系统看作一棵树,树干是根目录,每个树枝都是一个子目录,工作目录就是正处在的树枝。移除一个目录就先砍掉树枝一样,移除目录的限制就是不能砍掉正在支撑你的树枝。
移动或重命名目录
mv 可以将目录从一个位置移动到另一个位置,如果新位置和原位置在同一个目录中,那么实际结果就是对原始目录重命名。
mv a/b a/c/d
相当于将工作目录下的a/b移动到工作目录下的a/c并命名为d
使用目录栈
shell提供了一个类似栈的功能,来存放目录名称。
pushd命令将目录的名称压入目录栈中,popd命令从栈中弹出一个目录名称,dirs命令显示栈的内容。
目录栈是一种高级工具,运行维护一个目录列表,每当需要时,可以将工作目录改变为列表中的一个目录。
在任何时候,栈顶的目录名称就是当前的工作目录。
详情参见:Linux学习-目录栈
最重要的程序:ls
list files列举文件
如果未指定列举目标,将显示工作目录中的文件。
当ls输出到终端时以列的形式按字母顺序排序显示。
当ls的输出重定向到文件或管道时,ls以每个文件名占一行的形式输出结果。
选项:
-C 强制ls以列的形式将输出写入到文件或管道中。
-1 强制ls以每个文件名占一行的形式将输出写到终端。
-r 以相反顺序显示文件名(默认按字母表顺序排序)。
-R 列举指定目录中的所有直接或间接的子目录和文件的信息,也就是显示整个目录树的信息。
-F 在特定类型文件的名称之后显示一个标志。
--color 通过颜色来标识不同类型的文件,在许多系统上ls是ls --color=auto的别名,即仅当输出要在终端上显示时才使用颜色。
-s 在每个文件名前以KB为单位列出文件的大小。
-h 与-s合用,显示一个合适的单位,h指human-readable。
-a 查看全部文件,包括.文件(隐藏文件)。
-l 以长列表形式显示。(文件类型,权限,链接数,文件属主的用户标识,用户标识所属的组,文件大小,修改时间,文件名)
-u 显示文件访问(上一次读取文件)的时间。
-t 按时间顺序(修该时间)显示文件。
-d 不要查看目录内部。
标志 | 含义 |
空 | 普通文件:非执行文件 |
* | 普通文件:可执行文件 |
/ | 目录 |
@ | 符号链接 |
| | 命令管道/FIFO |
ps:
命令前加\忽略任何别名。
磁盘空间使用情况
在文本文件中,一个字节可以存放一个字符。
在文件系统中,空间以固定大小的组块进行分配,固定大小的组块称为块(block)。
根据文件系统的不同,块的大小有512字节,1KB,2KB,4KB等。1KB在Linux文件系统中常用。
为文件所分配的最小的磁盘空间数量就是一个块。
磁盘存储空间也以固定大小的组块分配,称之为分配单元或簇。
簇的大小取决于文件系统和存储设备,通常为8K。
文件系统中所有的数据都组织成块,其中有一个块,称为超块,是一个特殊的数据区,存放与文件系统本身有关的关键信息。
可以用dumpe2fs程序检查超块内容,可以显示出文件系统所使用块的大小
查看磁盘使用情况命令:
ls -s 在文件名前以KB为单位列出文件大小。
du 显示文件所使用的存储空间总量,用来统计一个目录树中全部文件所使用的磁盘空间。
du -s 只显示总和。
du -c 在输出末尾显示总量。
du -s 显示它所处理的每个目录和文件的大小。
df 显示每个文件系统已经使用了多少磁盘空间,以及还有多少磁盘空间可用。
quota 检查在共享系统中每个用户标识的磁盘空间配额的使用及限制情况。
ps:
均有-h选项,用来以适合人类阅读的方式显示输出。
上述程序以不同的方式估计存储空间的使用情况,所以如果数字有些出入的话,不要感到惊讶。
通配符
每当键入以文件名作为参数的命令时,可以通过使用特定的元字符——通配符,指定多个文件名。
通配符与正则表达式元字符很相似,但是并不相同。通配符是shell元字符的一部分。
点击查看
符号 | 含义 |
* | 匹配任何0个或多个字符构成的序列 |
? | 匹配任何单个的字符 |
[list] | 匹配list中的任何字符 |
[^list] | 匹配不在list中的任何字符 |
{string1|string2...} | 匹配其中一个指定的字符串 |
[[:lower:]] | 匹配一个小写字母 |
[[:upper:]] | 匹配一个大写字母 |
[[:digit:]] | 匹配一个数字 |
[[:alnum:]] | 匹配一个大写字母或小写字母或数字 |
[[:alpha:]] | 匹配一个字母 |