Linux
Linux文件系统
- 树形结构,从根目录root(/)开始
- Linux文件系统的结构:
/ : 所有文件的跟目录
/bin : 存放二进制可执行命令目录
/home : 用户主目录的基点目录
/lib : 存放标准程序设计库目录, 动态链接共享库目录
/etc : 存放系统管理和配置文件的目录
/dev : 存放设备特殊文件目录
/usr : 存放应用程序和文件目录
/proc : 虚拟目录, 是系统内存的映射,可直接访问这个目录来获取系统信息
/root : 系统管理员的主目录
/var : 存放系统产生的经常变化的文件的目录
/tmp : 存放公用临时文件目录
Linux文件系统操作
1. 快捷操作
快捷键 | 操作 |
---|---|
Ctrl+C | 终止当前命令 |
Ctrl+Z | 暂停当前命令 |
Ctrl+D | 输入结束, 退出 |
Ctrl+M | 相当于Enter |
Ctrl+S | 暂停屏幕的输出 |
Ctrl+Q | 恢复屏幕的输出 |
Ctrl+U | 在提示符下,将整行命令删除 |
2. 目录操作命令
- 切换工作目录
**cd**
cd [目的目录] : 切换目录至目的目录
cd : 切换到当前用户的家目录
cd - : 切换到当前用户上一次所在的目录
cd .. : 切换到当前目录的上一级目录
pwd : 查看"当前所在目录"的完整路径
ls : 显示当前目录下的内容
ls -l : 显示文件或目录的详细信息
- 创建和删除目录
**mkdir**
mkdir [选项]... 目录名... : 创建一个或多个目录 ( 可同时多个选项,多个目录)
-p : 若所建目录的上层目录不存在, 会一并建立
**rmdir**
rmdir [选项]... 目录名... : 从一个目录中删除一个或多个目录
-p : 删除指定目录后,若该目录的上层目录已变成空目录,则一并删除
3. 文件操作命令
- 显示文件
**cat**
cat [选项]... [文件]... : 把多个文件的内容连接后 输出到屏幕显示 ( 若最后 >file : 则前面文件内容连接后 输出到file文件中,很多情况都适用 ) (选项可以一起使用: -bs)
选项:
-b : 从1开始对所有输出行编号, 非空行不编号
-n : 从1开始对所有输出行编号
-s : 将连续两行及以上的空白行合并成一行空白行
**more**
more [选项]... [文件]... : 显示文本文件的内容, 一次显示一屏,满屏后停下来. 按如下键继续:
(1) Enter键 : 默认显示文本的下一行内容
(2) Ctrl+D : 向下显示半屏文本内容
(3) Ctrl+B : 向上显示半屏文本内容
(4) Space键 : 默认显示文本的下一屏内容
(5) q : 退出more命令
选项:
-num : 指定一个整数,表示一屏显示多少行
+num : 从行号num开始显示
+/pattern : 定义一字符串,在文件中查找该字符串,从该字符串后开始显示
-d : 在每屏底部显示提示信息
**less**
less [选项]... [文件]... : 与more命令相似,分屏显示文件内容. 但less命令允许用户向前或向后浏览文件, q退出
选项:
-m : 显示读取文件的百分比
-M : 显示读取文件的百分比, 行号及总行数
-N : 在输出显示的每行前显示行号
-p pattern : 定义一字符串,在文件中查找该字符串,从该字符串后开始显示
**head**
less [选项]... [文件]... : 用于查看一个文件的开头部分, 行数由参数值决定,默认是10. 如果给定的文件不止一个,则在显示的每个文件前面加一个文件标题.
选项:
-c : 显示文件前面num个字节( head -c20 1.txt )
-n : 显示文件前面num行,不指定此参数显示前10行( head -n5 1.txt )
**tail**
tail [选项]... [文件]... : 用于查看一个文件末尾若干行,行数由参数值决定,默认是10. 如果给定的文件不止一个,则在显示的每个文件前面加一个文件标题.
选项:
-c : 显示文件最后面num个字节( tail -c20 1.txt )
-n : 显示文件最后面num行,不指定此参数显示后10行( tail -n5 1.txt )
- 搜索, 排序及去掉重复行
**grep**
grep [选项] 查找条件 [文件] : 查找文件里符合条件的字符串, 将该字符串所在的一行的内容都输出( \n截止 )
( 如: grep e 1.txt : 查找含字母e的字符串所在行的内容 )
选项:
-b : 在显示符合匹配字符串的行前,标识该行第一个字符的位编号 (注意有'\n')
-c : 计算符合匹配字符串的行数
-n : 在显示符合匹配字符串的行前,标识该行的行号
-x : 只显示全行都严格匹配的行
-i : 忽略大小写
-v : 反转查找,显示不包含匹配字符串的文本行
-V : 显示版本信息
**sort**
sort [选项]... [文件]... : 对指定文件中所有的行排序, 将结果显示在屏幕上. (多个文件是混在一起排序的)
选项:
-m : (给定文件已排好序),合并文件
-c : 检查给定文件是否排序,未排序打印出错信息
-u : 对排序前后相同的行只留其中一行
-f : 忽略字母大小写
-r : 按逆序输出排序(默认是升序)
**uniq**
uniq [选项]... [输入文件[输出文件]] : 检查及删除文件中连续重复出现的行 ( uniq 1file.txt 1.txt )
选项:
-c : 显示输出中,在每行行首加上该行在文件中连续出现的次数
-u : 只显示文件中不重复的各行
-d : 只显示文件中的重复行(不重复显示)
- 比较文件内容
**comm**
comm [选项]... 文件1 文件2 : 对两个已经排好序的文件进行比较,从文件1和文件2中读取正文行进行比较,生成3列输出: 仅在文件1中出现的行, 仅在文件2中出现的行, 在两个文件中都出现的行.
选项:
-123 : 选项1,2,3分别表示不显示comm输出的第一列,第二列,第三列
**diff**
diff [选项]... 文件列表 : 比较文本文件,并找出它们的不同
-b : 忽略空格造成的不同
-B : 忽略空行造成的不同
-i : 忽略大小写的不同
- 文件内容统计
**wc**
wc [选项]... [文件]... : 统计给定文件中的行数,字数,字节数
-l 或 -lines : 统计行数
-w 或 -words : 统计字数
-c 或 -bytes : 统计字节数
-m 或 -chars : 统计字符数
- 文件的压缩和备份
**bzip2命令**
bzip2 [选项]... [要压缩的文件] : .bz2文件的压缩程序,并删除原始文件
选项:
-d : 执行解压缩
-f : 压缩或解压缩时,若输出文件与现有文件同名,覆盖现有文件
-k : 压缩或解压缩后,保留原始文件
**gzip**
gzip [选项...] [文件] : .gz文件的压缩程序,并删除原始文件
选项:
-d : 执行解压缩
-f : 强行压缩文件
-r : 递归处理, 将指定目录下的所有文件及子目录中的文件一并压缩或解压缩
**tar**
tar [选项],,, [文件或目录]... : 用来建立,还原文件的工具程序,它可以加入,解开备份文件(.tar)内的文件
( tar -cvf 123.tar 1.txt 2.txt : 将当前目录下的文件1.txt , 2.txt 备份到123.tar中)
选项:
-cf<备份文件> : 建立新的备份文件
-xf<备份文件> : 从备份文件中还原文件
-v : 显示指令执行过程(-cvf)
-A : 新增tar文件到已存在的备份文件
3. 目录 and 文件操作命令
- 复制, 删除和移动
**cp**
cp [选项] [源文件或目录] [目标文件或目录] : 文件复制.
如果源是普通文件,把源文件复制为 指定名目标文件 或 复制到 指定的目标目录中;
如果源是目录,把源目录复制到目标目录中(-r),目标目录不存在则新建;
选项:
-p : 复制源文件或目录内容的同时,也复制文件属性
-f : 强制复制文件或目录
-i : 覆盖目标文件前需要确认(y / n)
-d : 复制符号链接时,把目标文件或目录也建立符号链接,并指向与源文件或目录链接的原始文件或目录
**rm**
rm [选项]... [文件或目录]... : 删除文件或目录(删除目录: -r)
-f : 强制删除文件或目录
-i : 删除文件或目录前提示用户确认(y / n)
**mv**
mv [选项]... [源文件或目录] [目标文件或目录] : 可移动文件或目录;可更改文件或目录的名称
选项:
-f : 若目标文件或目录已存在,直接覆盖
-i : 覆盖文件前需要确认
-n : 不覆盖已存在的文件
-u : 移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件
- 查找
**find**
find [文件或路径清单] [表达式] : 用于查找符合条件的文件和目录
表达式: 包含要寻找的文件的匹配规范或说明(从左向右求值,只要表达式中的结果为真,则进行下一个测试)
选项:
-name "*文件类型" : 若所建目录的上层目录不存在, 会一并建立
(find . -name "*.txt" : 寻找当前目录及其子目录下所有.txt文件)
- 改变存取权限
**chmod**
chmod [who] [opt] [mode] [文件或目录]... : 用于改变文件或目录的访问权限
who: 表示对象. u(文件所有者); g(同组用户); o(其他用户); a(所有用户) --> (可使用一个或多个)
opt: 表示操作. +(添加某个权限); -(取消某个权限);=(赋予给定权限并取消原有权限)
mode: 表示权限. r(可读);w(可写); x(可执行) --> (可使用一个或多个)
(chmod u=rw,g=x,o= 1.txt ; ls -l 1.txt 可查看文件的详细信息)
- 链接
**ln**
ln [选项]... [源文件或目录] [目标文件或目录]: 用于链接文件或目录
选项:
-s : 对源文件建立软链接(符号链接),而非硬链接
Python
使用内置的os模块可以直接调用操作系统提供的接口函数
>>> import os
>>> os .name # 操作系统类型
>>> os.uname # 操作系统的详细信息
>>> os.path.abspath('.') # 查看当前目录的绝对路径
# 在某个目录下创建一个新目录
>>> os.path.join('usrcindy/python','test') # 首先把新目录的完整路径表示出来
>>> os.mkdir('usrcindy/python/test') # 然后创建一个目录
>>> os.rmdir('usrcindy/python/test') # 删除一个目录
>>> os.path.split('usrcindy/python/test') # 把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
>>> os.path.splitext('usrcindy/python/test/1.txt') # 拆分得到文件扩展名
>>> os.rename('test.txt','test.py') # 对文件重命名
>>> os.remove('test.py') # 删除文件
# 过滤文件
[x for x in os.listdir('.') if os.path.isdir(x)] # 列出当前目录下的所有目录
[x for x in os.listdir('.') if os.path.isfile(x) and os.path.stlitext(x)[1]=='.py'] # 列出当前目录下的所有.py文件