Linux文件管理命令
pwd 显示当前所在目录, 查看当前所在目录的完整路径(绝对路径)。
cd 进入某目录, 显示或改变当前目录。 cd 回车/cd ~ 都是回到自己的主目录。 cd . 当前目录(空格再加一个点)。 cd - 去到上一次访问的目录。 cd .. 回到上一级目录(空格再加两个点)。 cd ../.. 上两级目录。 cd /user/s807 从绝对路径去到某目录。 cd ~/s807 直接进入主目录下的某目录(“cd ~”相当于主目录的路径的简写)。
touch 如果文件/目录不存在, 则创建新文件/目录;如果文件存在, 那么就是更新该文件的最后访问时间, 用法 touch [-acm] [-r ref_file] 文件... touch [-acm] [MMDDhhmm[yy]] 文件... touch [-acm] [-t [[CC]YY]MMDDhhmm[.SS]] file...
mkdir 创建目录(必须有创建目录的权限) 用法 mkdir [-m 模式] [-p] dirname ... mkdir dir1/dir2 在dir1下建dir2 mkdir dir13 dir4 dir5 连建多个 mkdir ~/games 用户主目录下建(默认在当前目录下创建) mkdir -p dir6/dir7/dir8 强制创建dir8;若没有前面的目录, 会自动创建dir6和dir7。 不用-p时, 若没有dir6/dir7, 则创建失败。
cp 复制文件/目录 cp 源文件 目标文件 复制文件;若已有文件则覆盖 cp -r 源目录 目标目录 复制目录;若已有目录则把源目录复制到目标目录下, 没有目标目录时, 相当于完全复制源目录, 只是文件名不同。 如: cp file1 file2 dir2 把file1、file2文件复制到dir2目录下 cp 1.py netseek/2.py 将1.py拷到netseek目录下并命名为2.py cp -i file1 file2 增加是否覆盖的提示 cp filename{,.bak} 快速备份或复制文件。
mv 移动或重命名文件/目录 用法 mv [-f] [-i] f1 f2 mv [-f] [-i] f1 ... fn d1 mv [-f] [-i] d1 d2 mv 源文件名 目标文件名 若目标文件名还没有,则是源文件重命名为目标文件;若目标文件已存在, 则源文件覆盖目标文件。 mv 源文件名 目标目录 移动文件 mv 源目录 目标目录 若目标目录不存在, 则源目录重命名;若目标目录已存在, 则源目录移动到目标目录下。 如: mv qib.tgz ../qib.tgz 移到上一级目录
rm 删除文件/目录 用法 rm [-fiRr] 文件/目录,参数说明如下: -f, --force 强制删除。忽略不存在的文件, 不提示确认 -i 在删除前需要确认 -I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提示内容更少, 但同样可以阻止大多数错误发生 --interactive[=WHEN] 根据指定的WHEN 进行确认提示:never, once (-I),或者always (-i)。如果此参数不加WHEN 则总是提示 --one-file-system 递归删除一个层级时, 跳过所有不符合命令行参数的文件系统上的文件 --no-preserve-roo 不特殊对待"/" --preserve-root 不允许删除"/"(默认) -r, -R, --recursive 递归删除目录及其内容 -v, --verbose 详细显示进行的步骤 --help 显示此帮助信息并退出 --version 显示版本信息并退出
用例:
rm -rf 文件名 删除文件。
rm -rf 目录名 删除目录。
rm -f 文件 强制删除文件或者目录,无论是否有权限都可以
rm -rf * 删除所有文件及目录
要删除第一个字符为"-"的文件 (例如"-foo"), 请使用以下方法之一:
rm -- -foo
rm ./-foo
rmdir 删除空目录。只可以删除空目录。
ln 创建硬链接或软链接, 硬链接=同一文件的多个名字;软链接=快捷方式 用法 ln [-f] [-n] [-s] f1 [f2] ln [-f] [-n] [-s] f1 ... fn d1 ln [-f] [-n] -s d1 d2 ln file1 file1.ln 创建硬链接。感觉是同一文件, 删除一个, 对另一个没有影响;须两个都删除才算删除。 ln -s ../m/file1 file1.sln 创建软链接。可跨系统操作, 冲破操作权限;也是快捷方式。
ls 查看目录或者文件的属性, 列举出任一目录下面的文件 用法 ls [-aAbcCdeEfFghHilLmnopqrRstux1@] [file...] 语法:ls [-1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX][-I <范本样式>][-T <跳格字数>][-w <每列字符数>][--block-size=<区块大小>][--color=<使用时机>][--format=<列表格式>][--full-time][--help][--indicator-style=<标注样式>][--quoting-style=<引号样式>][--show-control-chars][--sort=<排序方式>][--time=<时间戳记>][--version][文件或目录...] 补充说明:执行ls指令可列出目录的内容,包括文件和子目录的名称。 参数: -1 每列仅显示一个文件或目录名称。 -a或--all 下所有文件和目录。 -A或--almost-all 显示所有文件和目录,但不显示现行目录和上层目录。 -b或--escape 显示脱离字符。 -B或--ignore-backups 忽略备份文件和目录。 -c 以更改时间排序,显示文件和目录。 -C 以又上至下,从左到右的直行方式显示文件和目录名称。 -d或--directory 显示目录名称而非其内容。 -D或--dired 用Emacs的模式产生文件和目录列表。 -f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。 -F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。 -g 次参数将忽略不予处理。 -G或--no-group 不显示群组名称。 -h或--human-readable 用"K","M","G"来显示文件和目录的大小。 -H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。 -i或--inode 显示文件和目录的inode编号。 -I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。 -k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。 -l 使用详细格式列表。 -L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。 -m 用","号区隔每个文件和目录的名称。 -n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。 -N或--literal 直接列出文件和目录名称,包括控制字符。 -o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。 -p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。 -q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。 -Q或--quote-name 把文件和目录名称以""号标示起来。 -r或--reverse 反向排序。 -R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。 -s或--size 显示文件和目录的大小,以区块为单位。 -S 用文件和目录的大小排序。 -t 用文件和目录的更改时间排序。 -T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。 -u 以最后存取时间排序,显示文件和目录。 -U 列出文件和目录名称时不予排序。 -v 文件和目录的名称列表以版本进行排序。 -w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。 -x 以从左到右,由上至下的横列方式显示文件和目录名称。 -X 以文件和目录的最后一个扩展名排序。 --block-size=<区块大小> 指定存放文件的区块大小。 --color=<列表格式> 培植文件和目录的列表格式。 --full-time 列出完整的日期与时间。 --help 在线帮助。 --indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。 --quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。 --show-control-chars 在文件和目录列表时,使用控制字符。 --sort=<排序方式> 配置文件和目录列表的排序方式。 --time=<时间戳记> 用指定的时间戳记取代更改时间。 --version 显示版本信息。 ls /etc/ 显示某目录下的所有文件和目录, 如etc目录下的。 ls -l (list)列表显示文件(默认按文件名排序), 显示文件的权限、硬链接数(即包含文件数,普通文件是1, 目录1+)、用户、组名、大小、修改日期、文件名。 ls -t (time)按修改时间排序, 显示目录和文件。 ls -lt 是“-l”和“-t”的组合, 按时间顺序显示列表。 ls -F 显示文件类型, 目录“/ ”结尾;可执行文件“*”结尾;文本文件(none), 没有结尾。 ls -R 递归显示目录结构。即该目录下的文件和各个子目录下的文件都一一显示。 ls -a 显示所有文件, 包括隐藏文件。 文件权限 r 读权限。对普通文件来说, 是读取该文件的权限;对目录来说, 是获得该目录下的文件信息。 w 写权限。对文件, 是修改;对目录, 是增删文件与子目录。 (注 删除没有写权限的文件可以用 rm -f , 这是为了操作方便, 是人性化的设计)。 x 执行权限;对目录, 是进入该目录 - 表示没有权限 形式 - rw- r-- r-- 其中 第一个是文件类型(-表普通文件, d表目录(directory), l表软链接文件(link)) 第2~4个是属主, 生成文件时登录的人, 权限最高, 用u表示(user) 第5~7个是属组, 系统管理员分配的同组的一个或几个人, 用g表示(group) 第8~10个是其他人, 除属组外的人, 用o表示(other) 所有人, 包括属主、属组及其他人, 用a表示(all)
chmod 更改权限; 用法 chmod [-fR] <绝对模式> 文件 ... chmod [-fR] <符号模式列表> 文件 ... 其中 <符号模式列表> 是一个用逗号分隔的表 [ugoa]{+|-|=}[rwxXlstugo] chmod u+rw 给用户加权限。同理, u-rw也可以减权限。 chmod u=rw 给用户赋权限。与加权限不一样, 赋权限有覆盖的效果。 主要形式有如下几种 chmod u+rw chmod u=rw chmod u+r, u+w chmod u+rw,g+w, o+r chmod u+x filenmame # 只想给自己运行, 别人只能读 chmod 777 (用数字的方式设置权限是最常用的) 数字表示权限时, 各数位分别表示属主(user)、属组(group)及其他人(other); 其中, 1是执行权(Execute), 2是写权限(Write), 4是读权限(Read), 具体权限相当于三种权限的数相加, 如7=1+2+4, 即拥有读写和执行权。 另外,临时文件/目录的权限为rwt, 可写却不可删,关机后自动删除;建临时目录:chmod 777 目录名, 再chmod +t 目录名。
df 查看文件系统, 查看数据区 用法 df [-F FSType] [-abeghklntVvZ] [-o FSType 特定选项] [目录 | 块设备 | 资源] df -k 以kbytes显示文件大小的查看文件系统方式
echo 显示一行内容。
more 分屏显示文件的内容。适合于看大文件。 用法 more [-cdflrsuw] [-行] [+行号] [+/模式] [文件名 ...]。 显示7个信息:用户名 密码 用户id(uid) 组id(gid) 描述信息(一般为空) 用户主目录 login shell(登录shell)
cat 显示文件内容, 不分屏(一般用在小文件, 大文件显示不下);合并文件, 仅在屏幕上合并, 并不改变原文件。 用法 cat [ -usvtebn ] [-|文件] ... 如:cat>1.py //就可以把代码粘帖到1.py文件里, 按ctrl+d 保存代码。 cat 1.py 或more 1.py //都可以查看里面的内容。 一般用作将很多小文件连成一个大文件: cat file* >newFile
head 输出文件的开头部分的内容 如: head -3 a.txt # 显示最上面的3行。缺省是10行 参数: -c, --bytes=[-]K 显示每个文件的前多少字节; 以“-”开头, 则显示到后多少字节; 数字后面可带k等参数表示大小,则显示多少个(一个中文算2~3个字节)。 如: head -c 10 test.txt # 显示文件的前10字节 head -c -1k test.txt # 显示到文件的后1K的内容 -n, --lines=[-]K 显示每个文件的多少行;以“-”开头, 则显示到后多少行。 -q, --quiet, --silent 不显示文件名(默认)。 -v, --verbose 总是显示文件名。即在显示文件内容前多显示一行内容: ==> 文件名 <== --help 显示帮助信息 --version 显示版本信息
tail 实时监控文件, 一般用在日志文件, 可以只看其中的几行。 用法 tail [+/-[n][lbc][f]] [文件] tail [+/-[n][l][r|f]] [文件] 如: tail -3 a.txt # 显示最下面的3行, 一般用作查看日志信息 tail -f run.log # 实时监控查看此文件 长选项必须使用的参数对于短选项时也是必需使用的。 -c, --bytes=K 输出最后K 字节;另外,使用-c +K 从每个文件的第K 字节输出 -f, --follow[={name|descriptor}]
即时输出文件变化后追加的数据。 -f, --follow 等于--follow=descriptor -F 即--follow=name --retry -n, --lines=K 输出最后K行,代替最后10行;使用-n +K 从每个文件的第K 字节输出 --max-unchanged-stats=N 使用--follow=name, 重新打开一个在N(默认为5) 次迭代后没有改变大小的文件来看它是否被解除连 接或重命名(这是循环日志文件的通常情况) --pid=PID 同 -f 一起使用,当 PID 所对应的进程死去后终止 -q, --quiet, --silent 不输出给出文件名的头 --retry 即使目标文件不可访问依然试图打开;在与参数 --follow=name 同时使用时常常有用。 -s, --sleep-interval=秒数 同-f 一起使用,在迭代间暂停约指定秒数的时间(默认1.0 秒) -v, --verbose 总是输出给出文件名的头 --help 显示此帮助信息并退出 --version 显示版本信息并退出
find 查找文件(文件或者目录名以及权限属主等匹配搜索) 用法 find [-H | -L] 路径列表 谓词列表 精确匹配: find . -name file1 模糊匹配: find . -name "file*" # 使用通配符要用双引号 -name 按文件名查找 -mtime 10 修改时间距今10天那天的文件, -10表10天以内, +10表超过10天的(10天前的) -user 0 表userid=0的文件, 即root的文件 (按用户查找)。如: find / -user 0 # 显示所有root用户的文件 -size +400 表文件大小超过400个blok, 一个blok是512字节的文件, 即200K -print 打印 -perm 777 权限是777的文件 (按文件权限查找) -type f 只查普通文件, (按文件类型查找) -atime +365 访问时间超过一年的 (按访问时间查找) -exec rm {} 执行删除操作, {}表示将前面的结果作为rm的参数 如: find / -name perl 从根目录开始查找名为perl的文件。 find . -mtime 10 -print 从当前目录查找距离现在10天时修改的文件, 显示在屏幕上。 (注 “10”表示第10天的时候;如果是“+10”表示10天以外的范围;“-10”表示10天以内的范围。)
grep 文件中查找字符;有过滤功能, 只列出想要的内容 用法 grep -hblcnsviw 模式 文件 . . . -? 同时显示匹配行上下的?行, 如:grep -2 pattern filename # 同时显示匹配行的上下2行。 -b, --byte-offset 打印匹配行前面打印该行所在的块号码。 -c, --count 只打印匹配的行数, 不显示匹配的内容。 -f File, --file=File 从文件中提取模板。空文件中包含0个模板, 所以什么都不匹配。 -h, --no-filename 当搜索多个文件时, 不显示匹配文件名前缀。 -i, --ignore-case 忽略大小写差别。 -q, --quiet 取消显示, 只返回退出状态。0则表示找到了匹配的行。 -l, --files-with-matches 打印匹配模板的文件清单。 -L, --files-without-match 打印不匹配模板的文件清单。 -n, --line-number 在匹配的行前面打印行号。 -s, --silent 不显示关于不存在或者无法读取文件的错误信息。 -v, --revert-match 反检索, 只显示不匹配的行。 -w, --word-regexp 如果被\<和\>引用, 就把表达式做为一个单词搜索。 -V, --version 显示软件版本信息。 -r, 显示文件名 如: grep abc /etc/passwd # 在passwd文件下找abc字符 grep success * # 查找当前目录下面所有文件里面含有success字符的文件 grep -ins -r "文件内容" * # 查找文件(进入到文件里面, 查询包含此内容的文件) grep -l 'boss' * # 显示所有包含boss的文件名。 grep -n 'boss' file # 在匹配行之前加行号。 grep -i 'boss' file # 显示匹配行,boss不区分大小写。 grep -v 'boss' file # 显示所有不匹配行。 grep -q 'boss' file # 找到匹配行,但不显示,但可以检查grep的退出状态。(0为匹配成功) grep -c 'boss' file # 只显示匹配行数(包括0)。 grep "$boss" file # 扩展变量boss的值再执行命令。 ps -ef|grep "^*user1" # 搜索user1的命令,即使它前面有零个或多个空格。 ps -e|grep -E 'grant_server|commsvr|tcpsvr|dainfo' # 查找多个字符串的匹配(grep -E相当于egrep) # 输出匹配前后多行 grep的A(after,后)和B(before,前)、C(center,前后)选项可以同时输出其匹配行的前后几行。 grep -B1 -A2 "DMA" message.txt grep -C 5 foo file 显示file文件中匹配foo字串那行以及上下5行
wc 对单词进行统计 -l 统计行数 -w 统计单词数 -c 统计字符数 如 grep wang /etc/passwd|wc -l # 统计passwd文件含“wang”的行数 who | wc -l # 当前登陆的用户数 wc -l /etc/passwd # 当前注册的用户数
du 统计磁盘容量 用法 du [-a] [-d] [-h|-k] [-r] [-o|-s] [-H|-L] [文件...] df -k 是对文件系统进行统计 du 单位是512字节 du -k 单位是K, 即1024字节 du -s blog 如: du -sk * # 不加-s会显示子目录, -k按千字节排序
if 判断目录、文件是否存在 myPath="/var/log/httpd/" myFile="/var/log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath" fi #这里的-d 参数判断$myPath是否存在 if [ ! -d "$myPath"]; then mkdir "$myPath" fi # 判断当前目录下,是否有“logs”目录,没有则创建这目录 if [ ! -d "logs" ]; then mkdir "logs"; fi; #这里的-f参数判断$myFile是否存在 if [ ! -f "$myFile" ]; then touch "$myFile" fi #其他参数还有-n,-n是判断一个变量是否是否有值 if [ ! -n "$myVar" ]; then echo "$myVar is empty" exit 0 fi #两个变量判断是否相等 if [ "$var1" = "$var2" ]; then echo '$var1 eq $var2' else echo '$var1 not eq $var2' fi