练习:
显示/etc目录下,以非字母开头,后面跟了一具字母及其任意长度任意字符的文件或目录
[root@localhost~]# mkdir -vp /etc/{1sdf,2wer,3dfg} mkdir: created directory `/etc/1sdf' mkdir: created directory `/etc/2wer' mkdir: created directory `/etc/3dfg' [root@localhost ~]# ls -d /etc/[^a-z]* /etc/1sdf /etc/2wer /etc/3dfg [root@localhost ~]# rmdir/etc/{1sdf,2wer,3dfg} [root@localhost ~]# ls -d /etc/[^a-z]* ls: cannot access /etc/[^a-z]*: No suchfile or directory
复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mageedu.com目录中。
[root@localhost ~]# mkdir /tmp/mageedu.com [root@localhost ~]# cp -r /etc/*.d/tmp/mageedu.com/ [root@localhost ~]# ls /tmp/mageedu.com/ [root@localhost ~]# rm -rf/tmp/mageedu.com/
tee命令的用法
tee 命令:用来将标准输入的内容输出到标准输出并可以保存为文件
参数
-a 附加到文件-i 无视中断--help 显示帮助信息--version 显示版本信息 [root@localhost ~]# tee fuck abc abc 123 123 wosjoewqer wosjoewqer ^C [root@localhost ~]# cat fuck abc 123 wosjoewqer [root@localhost ~]# ll fuck -rw-r--r--. 1 root root 19 Aug 23 18:23fuck
目录管理类命令:
mkdir, rmdir, tree, dirname, basename
mkdir
用法:mkdir [选项]... 目录... 若指定目录不存在则创建目录。 长选项必须使用的参数对于短选项时也是必需使用的。 -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理 -v, --verbose 每次创建新目录都显示信息 -Z, --context=CTX 将每个创建的目录的SELinux 安全环境设置为CTX --help 显示此帮助信息并退出 --version 显示版本信息并退出
练习:
如何创建目录:x_m,x_n, y_m, y_n?
[root@localhost ~]# mkdir -pv {x,y}_{m,n} mkdir: created directory `x_m' mkdir: created directory `x_n' mkdir: created directory `y_m' mkdir: created directory `y_n' [root@localhost ~]# ls -l drwxr-xr-x. 2 root root 4096 Aug 23 18:30 x_m drwxr-xr-x. 2 root root 4096 Aug 23 18:30 x_n drwxr-xr-x. 2 root root 4096 Aug 23 18:30 y_m drwxr-xr-x. 2 root root 4096 Aug 23 18:30 y_n
用法:rmdir [选项]... 目录... 删除指定的空目录。 --ignore-fail-on-non-empty 忽略仅由目录非空产生的所有错误 -p, --parents 删除指定目录及其上级文件夹,例如"rmdir -p a/b/c'" 与"rmdir a/b/c a/b a'" 基本相同 -v, --verbose 输出处理的目录详情 --help 显示此帮助信息并退出 --version 显示版本信息并退出
[root@localhost ~]# rmdir -pv {x,y}_{m,n} rmdir: removing directory, `x_m' rmdir: removing directory, `x_n' rmdir: removing directory, `y_m' rmdir: removing directory, `y_n' [root@localhost ~]# ls -l
dirname 命令:显示指定路径处了文件名之外的路径前缀
用法:basename 名称 [后缀] 或:basename 选项 去掉前导的目录部分后打印“名称”。 如果指定的话,还会去掉尾随的“后缀”。 --help 显示此帮助信息并退出 --version 输出版本信息并退出
文本文件查看命令:
cat, tac, more, less, tail, head
cat
用法:cat [选项] [文件]... 将[文件]或标准输入组合输出到标准输出。 -A, --show-all 等价于 -vET -b, --number-nonblank 对非空输出行编号 -e 等价于 -vE -E, --show-ends 在每行结束处显示 $ -n, --number 对输出的所有行编号 -s, --squeeze-blank 不输出多行空行 -t 与 -vT 等价 -T, --show-tabs 将跳格字符显示为 ^I -u (被忽略) -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 --help 显示此帮助信息并退出 --version 输出版本信息并退出 如果[文件]缺省,或者[文件]为 - ,则读取标准输入。
Tac
用法:tac [选项]... [文件]... 将每个指定文件按行倒置并写到标准输出。 如果不指定文件,或文件为"-",则从标准输入读取数据。 长选项必须使用的参数对于短选项时也是必需使用的。 -b, --before 在行前而非行尾添加分隔标志 -r, --regex 将分隔标志视作正则表达式来解析 -s, --separator=字符串 使用指定字符串代替换行作为分隔标志 --help 显示此帮助信息并退出 --version 显示版本信息并退出
more, less
文件管理命令:
cp, mv, rm
用法:cp [选项]... [-T] 源文件 目标文件
或:cp [选项]... 源文件... 目录
或:cp [选项]... -t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --archive 等于-dR --preserve=all --backup[=CONTROL 为每个已存在的目标文件创建备份 -b 类似--backup 但不接受参数 --copy-contents 在递归处理是复制特殊文件内容 -d 等于--no-dereference --preserve=links -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项 存在时则不需再选此项) -i, --interactive 覆盖前询问(使前面的 -n 选项失效) -H 跟随源文件中的命令行符号链接 -l, --link 链接文件而不复制 -L, --dereference 总是跟随符号链接 -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效) -P, --no-dereference 不跟随源文件中的符号链接 -p 等于--preserve=模式,所有权,时间戳 --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果 可能保持附加属性:环境、链接、xattr 等 -c same as --preserve=context --sno-preserve=属性列表 不保留指定的文件属性 --parents 复制前在目标目录创建来源文件路径中的所有目录 -R, -r, --recursive 递归复制目录及其子目录内的所有内容 --reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。 --remove-destination 尝试打开目标文件前先删除已存在的目的地 文件 (相对于 --force 选项) --sparse=WHEN 控制创建稀疏文件的方式 --strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠 -s, --symbolic-link 只创建符号链接而不复制文件 -S, --suffix=后缀 自行指定备份文件的后缀 -t, --target-directory=目录 将所有参数指定的源文件/目录 复制至目标目录 -T, --no-target-directory 将目标目录视作普通文件 -u, --update copy only when the SOURCE file is newer than the destination file or when the destination file is missing -v, --verbose explain what is being done -x, --one-file-system stay on this filesystem -Z, --context=CONTEXT set security context ofcopy to CONTEXT
--help 显示此帮助信息并退出
--version 显示版本信息并退出
默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。
当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。
备份文件的后缀为"~",除非以--suffix选项或是SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL环境
变量来选择。以下是可用的变量值:
none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份
有一个特别情况:如果同时指定--force 和--backup选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。
用法:mv [选项]... [-T] 源文件 目标文件
或:mv [选项]... 源文件... 目录
或:mv [选项]... -t 目录 源文件...
将源文件重命名为目标文件,或将源文件移动至指定目录。
长选项必须使用的参数对于短选项时也是必需使用的。
--backup[=CONTROL] 为每个已存在的目标文件创建备份 -b 类似--backup 但不接受参数 -f,--force 覆盖前不询问 -i,--interactive 覆盖前询问 -n,--no-clobber 不覆盖已存在文件 如果您指定了-i、-f、-n 中的多个,仅最后一个生效。 --strip-trailing-slashes 去掉每个源文件参数尾部的斜线 -S,--suffix=SUFFIX 替换常用的备份文件后缀 -t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录 移动至 指定目录 -T, --no-target-directory 将目标文件视作普通文件处理 -u,--update 只在源文件文件比目标文件新,或目标文件 不存在时才进行移动 -v, --verbose 详细显示进行的步骤 --help 显示此帮助信息并退出 --version 显示版本信息并退出
备份文件的后缀为"~",除非以--suffix选项或是SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL环境
变量来选择。以下是可用的变量值:
none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份
用法:rm [选项]... 文件...
删除 (unlink) 文件。
-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 详细显示进行的步骤
默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
的目录,以及其下所有的内容。
要删除第一个字符为"-"的文件 (例如"-foo"),请使用以下方法之一:
rm -- -foo
rm ./-foo
请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。
文件处理工具:
wc, cut, sort, uniq
wc命令的功能为统计指定文件中的字节数、单词数、行数, 并将统计结果显示输出
参数
-c, --bytes打印字节数-m, --chars 打印字符数 -l, --lines 打印行数 -L, --max-line-length 打印最长行的长度-w, --words 打印单词数 [root@localhost~]#cat/etc/passwd |ws �Cl 查看passwd文件有多少行 [root@localhost~]#echo“qqq www eee” |wc �Cw 查看输出有多少个单词 [root@localhost~]#echo“21312123” | wc �Cm 查看输出有多少个字符
cut - 在文件的每一行中提取片断 在 每个文件 FILE 的 各行 中, 把 提取的 片断 显示在 标准输出. -b, --bytes=LIST 输出 这些 字节 -c, --characters=LIST 输出 这些 字符 -d, --delimiter=DELIM 使用 DELIM 取代 TAB 做 字段(field) 分隔符 -f, --fields=LIST 输出 这些 字段 -n (忽略) -s, --only-delimited 不显示 没有 分隔符 的 行 --output-delimiter=STRING 使用 STRING 作为 输出分隔符, 缺省 (的 输出分隔符) 为 输入分隔符 --help 显示 帮助信息, 然后 结束 --version 显示 版本信息, 然后 结束 使用 且 只使用 -b, -c 或 -f 中的 一个 选项. LIST 由 一个 范围 (range) 或 逗号 隔开的 多个 范围 组成. 范围 是 下列 形式 之一: N 第 N 个 字节, 字符 或 字段, 从 1 计数 起 N- 从 第 N 个 字节, 字符 或 字段 直至 行尾 N-M 从 第 N 到 第 M (并包括 第M) 个 字节, 字符 或 字段 -M 从 第 1 到 第 M (并包括 第M) 个 字节, 字符 或 字段 如果 没有 指定 文件 FILE, 或 FILE 是 -, 就从 标准输入 读取 数据.
用法:sort [选项]... [文件]... 或:sort [选项]... --files0-from=F 串联排序所有指定文件并将结果写到标准输出。 长选项必须使用的参数对于短选项时也是必需使用的。 排序选项: -b, --ignore-leading-blanks 忽略前导的空白区域 -d, --dictionary-order 只考虑空白区域和字母字符 -f, --ignore-case 忽略字母大小写 -g, --general-numeric-sort 按照常规数值排序 -i, --ignore-nonprinting 只排序可打印字符 -M, --month-sort 比较 (未知) < "一月" < ... < "十二月" 在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC' -h, --human-numeric-sort 使用易读性数字(例如: 2K 1G) -n, --numeric-sort 根据字符串数值比较 -R, --random-sort 根据随机hash 排序 --random-source=文件 从指定文件中获得随机字节 -r, --reverse 逆序输出排序结果 --sort=WORD 按照WORD 指定的格式排序: 一般数字-g,高可读性-h,月份-M,数字-n, 随机-R,版本-V -V, --version-sort 在文本内进行自然版本排序 其他选项: --batch-size=NMERGE 一次最多合并NMERGE 个输入;如果输入更多 则使用临时文件 -c, --check, --check=diagnose-first 检查输入是否已排序,若已有序则不进行操作 -C, --check=quiet, --check=silent 类似-c,但不报告第一个无序行 --compress-program=程序 使用指定程序压缩临时文件;使用该程序 的-d 参数解压缩文件 --debug 为用于排序的行添加注释,并将有可能有问题的 用法输出到标准错误输出 --files0-from=文件 从指定文件读取以NUL 终止的名称,如果该文件被 指定为"-"则从标准输入读文件名 -k, --key=位置1[,位置2] 在位置1 开始一个key,在位置2 终止(默认为行尾) 参看POS 语法。 -m, --merge 合并已排序的文件,不再进行排序 -o, --output=文件 将结果写入到文件而非标准输出 -s, --stable 禁用last-resort 比较以稳定比较算法 -S, --buffer-size=大小 指定主内存缓存大小 -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换 -T, --temporary-directory=目录 使用指定目录而非$TMPDIR 或/tmp 作为 临时目录,可用多个选项指定多个目录 --parallel=N 将同时运行的排序数改变为N -u, --unique 配合-c,严格校验排序;不配合-c,则只输出一次排序结果 -z, --zero-terminated 以0 字节而非新行作为行尾标志 --help 显示此帮助信息并退出 --version 显示版本信息并退出 POS 是F[.C][OPTS],F 代表域编号,C 是域中字母的位置,F 和C 均从1开始计数 如果没有有效的-t 或-b 选项存在,则从前导空格后开始计数字符。OPTS 是一个或多个 由单个字母表示的顺序选项,以此覆盖此key 的全局顺序设置。如果没有指定key 则 将其整个行。 指定的大小可以使用以下单位之一: 内存使用率% 1%,b 1、K 1024 (默认),M、G、T、P、E、Z、Y 等依此类推。 如果不指定文件,或者文件为"-",则从标准输入读取数据。 *** 警告 *** 本地环境变量会影响排序结果。 如果希望以字节的自然值获得最传统的排序结果,请设置LC_ALL=C。
[root@www ~]# cat /etc/passwd | sort #sort 是默认以第一个数据来排序,而且默认是以字符串形式来排序,所以由字母 a 开始升序排序。
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3 #/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3n #用数字排序,默认是以字符串来排序的
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3nr #倒序排列,默认是升序排序
[root@www ~]# ccat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r #对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序
[root@www ~]# cat /etc/passwd | sort -t':' -k 7 -u #查看/etc/passwd有多少个shell:对/etc
用法:uniq [选项]... [文件] 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。 不附加任何选项时匹配行将在首次出现处被合并。 长选项必须使用的参数对于短选项时也是必需使用的。 -c, --count 在每行前加上表示相应行目出现次数的前缀编号 -d, --repeated 只输出重复的行 -D, --all-repeated[=delimit-method 显示所有重复的行 delimit-method={none(default),prepend,separate} 以空行为界限 -f, --skip-fields=N 比较时跳过前N 列 -i, --ignore-case 在比较的时候不区分大小写 -s, --skip-chars=N 比较时跳过前N 个字符 -u, --unique 只显示唯一的行 -z, --zero-terminated 使用'\0'作为行结束符,而不是新换行 -w, --check-chars=N 对每行第N 个字符以后的内容不作对照 若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。 提示:uniq 不会检查重复的行,除非它们是相邻的行。 如果您想先对输入排序,使用没有uniq 的"sort -u"。 同时,比较服从"LC_COLLATE" 变量所指定的规则。