目录
参考源
- 小猿圈book
- 小猿圈官网
感谢…
文件和目录的关系
目录中存放的是文件
文件类型
-
普通文件d
目录l
链接文件b
设备文件c
字符设备,例如/dev/null
s
套接字文件p
管道文件
使用ll
or ls -l
命令查看
文件颜色含义
- 绿色文件
- 可执行文件,可执行的程序
- 红色文件
- 压缩文件 或者 包文件
- 蓝色文件
- 目录文件
- 白色文件
- 一般性文件,如文本文件,配置文件,源码文件等
- 浅蓝色文件
- 链接文件,主要是使用
ln
命令建立的文件
- 链接文件,主要是使用
- 红色闪烁
- 表示链接的文件有问题
- 黄色
- 表示设备文件
- 灰色
- 表示其他文件
文件与目录的操作
- 新建
- 改名
- 查看
- 删除
- 拷贝
- 移动
文件操作
查看类型
file
命令
新建
touch
命令 : 新建文件和修改文件或者文件的时间戳
命令语法:
touch [选项] 文件名或者目录名
例如:
touch file1
建议:最好带后缀,标识这是什么文件,方便自己,也方便他人
touch run.py 标识这是一个python文件
touch file{1,2} {1,2}之间不要有空格
==》 touch file1 file2
选项:
-c 或--no-create 不创建不存在的文件
(默认,如果文件存在,就刷新时间戳;若不存在,就新建文件)
-a 以当前系统时间更新atime(访问时间)
-m 以当前系统时间更新mtime(修改时间)
-t 以指定的时间更新atime和mtime | '月日时分' 可配合-a -m选项使用
如:10011150代表10月8号11点55分
-d 以指定的日期更新atime和mtime | 'yyyy-mm-dd' 可配合-a -m选项使用
-r file 使用指定file文件的时间戳(access,modify)更新文件的时间戳(access,modify)
拓展(三time)
linux文件的三time
stat
命令: 打印信息节点(inode)内容
atime
:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用。
mtime
: (modify time)显示的是文件内容被修改的最后时间。
ctime
: (change time)显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间(元信息)。当然当内容改变时也会随之改变
改名
mv
命令:文件移动,也可用作文件改名
命令语法:
mv old_file new_file
例如:
mv ../old_file ./new_file
rename
命令:
查看
cat
cat
命令: 用于连接文件并打印到标准输出设备上。
命令语法:
cat [选项列表] 文件列表
例如:
cat /etc/passwd /etc/shadow
选项:
-n 或 --number: 显示行号(从1开始)
-b 或 --number-nonblank: 和 -n 相似,只不过空行不显示行号
-s 或 --squeeze-blank: 多个空行折叠为1行显示
以下我很少使用,记录一下:
-v 或 --show-nonprinting: 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all: 等价于 -vET。
-e: 等价于"-vE"选项;
-t: 等价于"-vT"选项;
tac
tac
命令: 倒序查看普通文件的内容
head
head
:输出文件的开始部分
默认显示前10
行
命令语法:
head [OPTION\] 文件
例如:
head /etc/passwd
命令选项:
-n, --lines=NUMBER 显示起始的NUMBER行,而非默认的起始10行
例如:
head -n 5 查看前5行
==》 head -n5
==》 head -5
-c, --bytes=SIZE 打印起始的SIZE字节
head -c 5b b表示512 k表示1K m表示1M
==》 head -5b
-q, --quiet, --silent 从不显示给出文件名的首部
-v, --verbose 总是显示给出文件名的首部
--help 显示帮助后退出
--version 输出版本信息后退出
tail
tail
:输出文件的末尾部分
默认显示后10
行
命令语法:
tail [OPTION] 文件
例如:
tail /etc/passwd
命令选项:
-n<行数> 显示文件的尾部 n 行内容(用法跟head一样)
-c<数目> 显示的字节数 (用法跟head一样)
-f 循环读取
-q 从不显示给出文件名的首部
-v 总是显示给出文件名的首部
tailf
tailf
<==> tail -f
more
more
命令
用法:more /etc/passwd
less
less
命令
用法:less /etc/passwd
/string
,向后搜索
?string
,向前搜索
以高亮显示
删除
rm
命令: 删除文件
慎用rm
命令语法:
rm [options] 文件列表
例如:
rm file1
rm file1 file2
rm file{1,2}
命令选项:
-i 默认,删除前确认
-f 强制删除,不要提示
-r 递归删除目录
拷贝
cp
命令:拷贝文件
命令语法:
cp [options] 源文件或目录 目标目录
例如:
cp ./passwd ../new_dir/passwd_new_name (可以改名)
命令选项
-r: 递归地拷贝目录(也就是说,默认只能拷贝普通文件)
-l: 不复制文件,只是生成链接文件
-i: 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-f: 覆盖已经存在的目标文件而不给出提示。
-p: 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-d: 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-a: 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
==》 -pdr
拓展
关于不提示,直接覆盖
不提示(我所知道的)有几种方式:
1. 使用命令的绝对路径(查看命令的绝对路径which or whereis)
2. \ (命令以\开头)(\不仅能让别名失效还能直接覆盖)
3. 命令自带的选项,一般为-f
移动
mv
:移动或重名文件
命令选项:(fubi,伏笔)
-i 覆盖时,提示
-f 不提示
-b 覆盖前,将目的数据备份
-u 如果源的mtime比目的新才覆盖
目录操作
新建
mkdir
: 创建一个或多个单级目录文件
命令语法:
mkdir [选项] 目录
例如:
mkdir a b c
mkdir {a,z}
mkdir -vp ./a/b/c
命令选项:
-v 显示执行状态
-p 创建多级目录
改名
mv
命令
mv source destination
查看
ls
命令:查看目录下的文件内容
例如:
ls /etc
选项:
ls -a 查看当前目录下包含的所有文件包括隐藏文件
ls -A 除了.和..以外,其他都显示
ls -C 以列的方式显示
ls -R 递归显示该目录下所有的文件,包括子目录中的
ls -l 查看文件的详细信息
==》 ll
ls -d 查看目录的详细信息,配合-l使用
ls -i 查看文件的inode编号
ll -h 文件大小以K显示
==》 ls -lh
ls -t 按最新的修改时间排序
ls --auto=color 可是显示颜色(试不出来)
删除
rm
命令
rm -r
rmdir
,只能删除一个或多个单级空目录
rmdir -p
,删除多级空目录
rmdir -v
,显示删除信息
拷贝
cp
命令
cp -r
移动
mv
命令
切换
cd
命令:切换路径
cd 切换路径
cd 切换到当前用户的家目录 = cd ~
cd ~ 切换到当前用户的家目录
cd . 切换到当前目录
cd .. 切换到当前目录的上一级目录
cd - 切换到上一次所在的目录