目录基本操作
ls:列出目录
语法:
ls <选项> <参数>
选项:
-a # 显示所有文件及目录
-l # 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r # 将文件以相反次序显示(原定依英文字母次序)
-t # 将文件依建立时间之先后次序列出
-A # 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F # 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R # 若目录下有文件,则以下之文件亦皆依序列出
-s # 显示文件和目录的大小,以区块为单位
参数:
目录 # 指定要显示列表的目录,也可以是具体的文件。
实例:
ls # 多列显示输出结果
ls -la # 单列显示所有文件,包括隐藏文件
cd:切换目录
语法:
cd <参数>
参数:
目录 # 指定要切换的目录路径
实例:
cd # 进入用户主目录
cd - # 返回进入此目录之前所在的目录
cd .. # 返回上级目录
pwd:显示当前所在目录
语法:
pwd <选项>
选项:
-P # 显示出确实的路径,而非使用连结 (link) 路径
实例:
pwd # 显示当前目录路径
mkdir:创建目录
语法:
mkdir <选项> <参数>
选项:
-p # 创建多级目录
-m # 设置目录权限
参数:
目录 # 指定要创建的目录列表,多个目录之间用空格隔开
实例:
mkdir test # 创建目录
mkdir -p-m 755 test1/test2/test3 # 创建多级目录并赋值目录权限
rmdir:删除目录
语法:
rmdir <选项> <参数>
选项:
-p # 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除
参数:
目录 # 要删除的空目录列表。多个空目录时,使用空格隔开
实例:
rmdir test # 删除目录
rmdir -p test1/test2 # 删除test2目录,若test2删除后,test1目录成为空目录也一并删除
cp:复制文件/目录
语法:
cp <选项> <参数>
选项:
-a # 复制目录时,保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
-d # 复制时保留链接。这里的链接相当于Windows系统中的快捷方式
-f # 强行,若目标文件已经存在且无法开启,则移除后再尝试一次
-i # 覆盖既有文件之前先询问用户
-l # 不复制文件,只是生成链接文件
-p # 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-R/r # 递归处理,将指定目录下的所有文件与子目录一并处理
-s # 对源文件建立符号连接,而非复制文件
-u # 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件
-S # 在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀
-b # 覆盖已存在的文件目标前将目标文件备份
-v # 详细显示命令执行的操作
参数:
源文件 # 制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项
目标文件 # 指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录
实例:
cp file1 /home/file2 # 复制file1文件到/home目录下并重命名
cp -r dir1 /home/dir2 # 复制dir1目录及其子目录到/home目录下并重命名
cp -r file1 /home # 强行复制file1文件到/home目录下,会覆盖/home目录下已存在的file1文件
rm:移除文件/目录
语法:
rm <选项> <参数>
选项:
-d # 直接把欲删除的目录的硬连接数据删除成0,删除该目录
-f # 强制删除文件或目录
-i # 删除前逐一询问确认
-r或-R # 递归处理,将指定目录下的所有文件与子目录一并处理
--preserve-root # 不对根目录进行递归操作
-v # 显示指令的详细执行过程
参数:
文件 # 指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项
实例:
rm file # 删除文件
rm -r dir # 删除目录及其下子目录
mv:移动文件/目录,或重命名
语法:
mv <选项> <参数>
选项:
-b # 当文件存在时,覆盖前,为其创建一个备份
-f # 如果目标文件已经存在,不会询问而直接覆盖
-i # 若指定目录已有同名文件,则先询问是否覆盖旧文件
-u # 当源文件比目标文件新或者目标文件不存在时,才执行移动操作
-S<后缀> # 为备份文件指定后缀,而不使用默认的后缀
--backup=<备份模式> # 若需覆盖文件,则覆盖前先行备份
参数:
源文件 # 源文件列表
目标文件 # 目标文件, 移动到该目标下并重命名
实例:
mv file1 file2 # 重命名文件为file2
mv /home/file1 ./file2 # 移动home下file1文件到当前目录下,并重命名为file2
文件内容查看
cat:从第一行开始显示
语法:
cat <选项> <参数>
选项:
-n 或 --number # 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank # 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank # 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting # 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外
-E 或 --show-ends # 在每行结束处显示 $
-T 或 --show-tabs # 将 TAB 字符显示为 ^|
-A, --show-all # 等价于 -vET
-e # 等价于"-vE"选项
-t # 等价于"-vT"选项
参数:
文件列表 # 指定要查看的文件
实例:
cat -n file # 查看file文件并显示行号
cat -n file | more # 分页查看file文件并显示行号
tac:从最后一行开始显示
语法:
tac <选项> <参数>
选项:
-a或--append # 将内容追加到文件的末尾
-i或--ignore-interrupts # 忽略中断信号
参数:
文件列表 # 指定要查看的文件
实例:
tac file # 倒序查看file文件
nl:显示并输出行号
语法:
nl <选项> <参数>
选项:
-b a # 表示不论是否为空行,也同样列出行号(类似 cat -n)
-b t # 如果有空行,空的那一行不要列出行号(默认值)
-n ln # 行号在萤幕的最左方显示
-n rn # 行号在自己栏位的最右方显示,且不加 0
-n rz # 行号在自己栏位的最右方显示,且加 0
-w # 行号栏位的占用的位数
-p # 在逻辑定界符处不重新开始计算
参数:
文件列表 # 指定要查看的文件
实例:
nl file # 查看file文件并输出行号,空白行不输出行号
more:分页显示
语法:
more <选项> <参数>
选项:
-<数字> # 每次显示的行数
+<数字> # 从指定数字的行开始显示
-d # 提示信息,在画面下方显示"[press space to continue,'q' to quit.]", 按错则显示"[Press 'h' for instructions]"
-c # 不进行滚屏操作。每次刷新这个屏幕
-s # 当多个空行则显示成一行
-u # 不显示下引号
参数:
文件 # 指定分页显示内容的文件
实例:
more file # 满屏分页显示文件file的内容
more +20 file # 在20行位置开始显示文件file的内容
more -c -10 file # 每10行显示文件file的内容,而且在显示之前先清屏
操作:
Enter # 下一行,可定义显示行
空格键 # 下一屏
Ctrl+B # 上一屏
Ctrl+F # 下一屏
= # 输出当前行的行号
:f # 输出文件名和当前行的行号
v # 调用vi编辑器
! # 调用Shell,并执行命令
q # 退出more
less:与more类似,显示大型文件效率更高
语法:
less <选项> <参数>
选项:
-e # 文件内容显示完毕后,自动退出
-f # 强制显示文件
-i # 忽略搜索时的大小写
-g # 只标志最后搜索的关键词
-l # 搜索时忽略大小写的差异
-N # 显示每行的行号
-Q # 不使用警告音
-m # 显示类似more命令的百分比
-s # 当多个空行则显示成一行
-S # 在单行显示较长的内容,而不换行显示
-x<数字> # 将TAB字符显示为指定个数的空格字符
参数:
文件 # 指定分页显示内容的文件
实例:
less file # 满屏分页显示文件file的内容
less file1 file2 # 浏览多个文件(:q浏览上一个, :n浏览下一个, :e file3打开新的文件)
ps -ef | less # ps查看进程信息并通过less分页显示
操作:
回车键 # 下一行
空格键 # 下一屏
[pageup] # 上一屏
[pagedown] # 下一屏
ctrl+F # 上一屏
ctrl+B # 下一屏
ctrl+D # 向上半屏
ctrl+U # 向下半屏
j # 上一行
k # 下一行
g # 第一行
G # 最后一行
q/ZZ # 退出
v # 进入编辑模式
head:显示开头几行
语法:
head <选项> <参数>
选项:
-n<数字> # 指定显示头部内容的行数
-c<字符数> # 指定显示头部内容的字符数
-v # 总是显示文件名的头信息
-q # 不显示文件名的头信息
参数:
文件列表 # 指定显示头部内容的文件列表
实例:
head -n 20 file # 显示20行前内容
tail:显示结尾几行
语法:
tail <选项> <参数>
选项:
-f # 循环读取
-q # 不显示处理信息
-v # 显示详细的处理信息
-c<数目> # 显示的字节数
-n<行数> # 显示行数
--pid=PID # 与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent # 从不输出给出文件名的首部
-s, --sleep-interval=S # 与-f合用,表示在每次反复的间隔休眠S秒
参数:
文件列表 # 指定要显示尾部内容的文件列表
实例:
tail file # 显示文件file的最后10行
tail -c 10 file # 显示文件file的最后10个字符
tail -f file # 实时追踪该文档的所有更新
文件处理
touch:创建文件
语法:
touch <选项> <参数>
选项:
-a # 改变档案的读取时间记录
-m # 改变档案的修改时间记录
-c # 假如目的档案不存在,不会建立新的档案
-f # 不使用,是为了与其他 unix 系统的相容性而保留
-r<参考文件或目录> # 使用参考档的时间记录,与 --file 的效果一样
-d<时间日期> # 设定时间与日期,可以使用各种不同的格式
-t<时间日期> # 设定档案的时间记录,格式与 date 指令相同
参数:
文件 # 指定要设置的文件列表
实例:
touch file # 创建新文件
ln:软链接(类似win快捷方式)
语法:
ln <选项> <参数>
选项:
-b # 删除,覆盖以前建立的链接
-d # 允许超级用户制作目录的硬链接
-f # 强行建立文件或目录的连接,不论文件或目录是否存在
-i # 覆盖既有文件之前先询问用户
-n # 把符号连接的目的目录视为一般文件
-s # 对源文件建立符号连接,而非硬连接
-v # 显示详细的处理过程
-S # "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V # "-V<备份方式>"或"--version-control=<备份方式>"
参数:
源文件 # 指定连接的源文件
目标文件 # 指定源文件的目标连接文件
实例:
ln -s /home/dir1/file1 /home/dir2/file2 # 将file1文件链接到file2文件(file2->file1, file2指向file1)
>:输出重定向 >>:追加
语法:
>
>>
实例:
ls -l > a.txt # 查询的列表内容写入到a.txt文件,a.txt文件存在会覆盖
ls -l >> a.txt # 查询的列表内容追加到a.txt文件内容末尾
文件查找
find:基于目录查找
语法:
find <选项> <参数>
选项:
# 以文件名查找
-name<范本样式> # 以文件名查找
-iname<范本样式> # 以文件名查找,忽略大小写
-regex<范本样式> # 基于正则表达式查找文件,精确匹配文件名
# 以文件从属关系查找
-uid<用户识别码> # 以UID查找
-gid<群组识别码> # 以GID查找
-user<用户名称> # 以用户名查找
-group<群组名称> # 以组名查找
-nouser # 查找没有属主的文件
-nogroup # 查找没有属组的文件
# 以空文件查找
-expty # 以空文件或空目录查找
# 以文件类型查找
-type<文件类型> # 以文件类型查找(f普通文件,d目录文件,l软链接文件,p管道文件,b块设备文件,c字符设备文件,s套接字文件)
# 以文件大小查找
-size<[+|-]文件大小> # 以文件大小查询,大小包含K,M,G的单位(+:大于,-:小于,无符号:等于)
# 以时间查找
-amin<[+|-]分钟> # 以访问时间(分钟)查找
-mmin<[+|-]分钟> # 以数据修改时间(分钟)查找
-cmin<[+|-]分钟> # 以属性修改时间(分钟)查找
-atime<[+|-]天> # 以访问时间(天)查找
-mtime<[+|-]天> # 以数据修改时间(天)查找
-ctime<[+|-]天> # 以属性修改时间(天)查找
-newer<文件或目录> # 以FILE文件为条件,判断比它新的文件
# 以权限查找
-perm<权限数值> # 以权限查找
# 组合条件
-a # 与, 例:find . -name "*.txt" -a -name "*.pdf",两个条件同时满足
-o # 或, 例:find . -name "*.txt" -o -name "*.pdf" ,两个条件只满足一个即可
-not或! # 非, find . ! -name "*.txt",不是以.txt结尾的文件
# 处理动作
-print # 默认为打印,不需要添加,输出入屏幕
-ls # 以ls长文件的格式形式输出
-delete # 删除查找到的文件
-fls<列表文件> # 把查询到的文件以ls详细信息格式保存到文件中
-ok<执行指令> # 查找到的文件传递给COMMAND命令,每步都给用户提示确认操作
-exec<执行指令> # 查找到的文件传递给COMMAND命令,直接修改完成,不给用户确认
参数:
起始目录 # 查找文件的起始目录
实例:
find . # 列出当前目录及子目录下所有文件和文件夹
find /home -name "*.txt" # 在/home目录下查找以.txt结尾的文件名
find /usr/ -path "*local*" # 匹配文件路径或者文件
find . -type f -atime -7 # 搜索最近七天内被访问过的所有文件
find . -type f -perm 777 # 当前目录下搜索出权限为777的文件
locate:基于数据库查找
语法:
locate <选项> <参数>
选项:
-d<目录>或--database=<目录> # 指定数据库所在的目录
-u # 更新slocate数据库
参数:
查找字符串 # 要查找的文件名中含有的字符串
实例:
updatedb # 创建数据库(第一次使用locate命令时, 需要执行一次创建数据库命令)
locate -u # 更新数据库(以数据库的更新为准)
locate file # 查找file文件
grep:过滤查找 |:管道
语法:
grep <选项> <参数>
| # 管道, 将前一个命令的处理结果输出传递给后面的命令处理
选项:
-a # 不要忽略二进制数据
-A<显示列数> # 除了显示符合范本样式的那一行之外,并显示该行之后的内容
-b # 在显示符合样式的那一行之前,标示出该行第一个字符的编号
-B<显示列数> # 除了显示符合范本样式的那一行之外,并显示该行之前的内容
-c # 计算符合范本样式的列数
-C<显示列数>或-<显示列数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容
-d<进行动作> # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作
-e<范本样式> # 指定字符串作为查找文件内容的范本样式
-E # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
-f<范本文件> # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
-F # 将范本样式视为固定字符串的列表
-G # 将范本样式视为普通的表示法来使用
-h # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H # 在显示符合范本样式的那一列之前,标示该列的文件名称
-i # 忽略字符大小写的差别
-l # 列出文件内容符合指定的范本样式的文件名称
-L # 列出文件内容不符合指定的范本样式的文件名称
-n # 在显示符合范本样式的那一列之前,标示出该列的编号
-q # 不显示任何信息(成功返0,失败返非0。一般用于测试)
-R/-r # 此参数的效果和指定“-d recurse”参数相同
-s # 不显示错误信息
-v # 反转查找
-w # 只显示全字符合的列
-x # 只显示全列符合的列
-y # 此参数效果跟“-i”相同
-o # 只输出文件中匹配到的部分
参数:
查找内容 # 要查找的内容
源文件 # 要查找的文件
实例:
grep *test file1 file2 # 在多个file文件里查找匹配“test”后缀的行
cat file | grep -ni *test # 在file文件查找匹配的行并显示行号,不区分大小写