From 4630576d764f857090c88a58672f3f39ad1b4af0 Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Tue, 27 Feb 2018 17:29:23 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20linux=20=E5=91=BD=E4=BB=A4=E8=A1=8C?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/SUMMARY.md | 16 +- docs/linux.xmind | Bin 750204 -> 808111 bytes docs/linux/commands/linux-cmd-compress.md | 255 ---- docs/linux/commands/linux-cmd-disk.md | 234 --- .../commands/linux-cmd-file-and-folder.md | 375 ----- docs/linux/commands/linux-cmd-network.md | 480 ------ docs/linux/commands/文件目录管理/README.md | 9 + .../commands/文件目录管理/文件内容查看.md | 366 +++++ .../commands/文件目录管理/文件压缩与解压.md | 530 +++++++ docs/linux/commands/文件目录管理/文件处理.md | 307 ++++ .../commands/文件目录管理/文件权限属性设置.md | 321 ++++ .../commands/文件目录管理/文件查找和比较.md | 667 +++++++++ docs/linux/commands/文件目录管理/文件编辑.md | 549 +++++++ .../commands/文件目录管理/目录基本操作.md | 1061 ++++++++++++++ docs/linux/commands/磁盘管理.md | 188 +++ docs/linux/commands/系统管理/README.md | 2 + .../commands/系统管理/用户和工作组管理.md | 426 ++++++ docs/linux/commands/网络管理/README.md | 3 + docs/linux/commands/网络管理/网络应用.md | 1291 +++++++++++++++++ docs/linux/linux-monitor.md | 167 +++ 20 files changed, 5898 insertions(+), 1349 deletions(-) delete mode 100644 docs/linux/commands/linux-cmd-compress.md delete mode 100644 docs/linux/commands/linux-cmd-disk.md delete mode 100644 docs/linux/commands/linux-cmd-file-and-folder.md delete mode 100644 docs/linux/commands/linux-cmd-network.md create mode 100644 docs/linux/commands/文件目录管理/README.md create mode 100644 docs/linux/commands/文件目录管理/文件内容查看.md create mode 100644 docs/linux/commands/文件目录管理/文件压缩与解压.md create mode 100644 docs/linux/commands/文件目录管理/文件处理.md create mode 100644 docs/linux/commands/文件目录管理/文件权限属性设置.md create mode 100644 docs/linux/commands/文件目录管理/文件查找和比较.md create mode 100644 docs/linux/commands/文件目录管理/文件编辑.md create mode 100644 docs/linux/commands/文件目录管理/目录基本操作.md create mode 100644 docs/linux/commands/磁盘管理.md create mode 100644 docs/linux/commands/系统管理/README.md create mode 100644 docs/linux/commands/系统管理/用户和工作组管理.md create mode 100644 docs/linux/commands/网络管理/README.md create mode 100644 docs/linux/commands/网络管理/网络应用.md create mode 100644 docs/linux/linux-monitor.md diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 322b2a5..329d364 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -7,11 +7,17 @@ * [命令行的艺术(转载)](linux/the-art-of-command-line.md) * [linux 目录](linux/linux-directory.md) * [linux 常用命令](linux/commands/README.md) - * [linux 常用命令-系统设置](linux/commands/linux-cmd-system.md) - * [linux 常用命令-文件目录](linux/commands/linux-cmd-file-and-folder.md) - * [linux 常用命令-磁盘管理](linux/commands/linux-cmd-disk.md) - * [linux 常用命令-网络管理](linux/commands/linux-cmd-network.md) - * [linux 常用命令-压缩](linux/commands/linux-cmd-compress.md) + * [linux 常用命令-文件目录管理](linux/commands/文件目录管理/README.md) + * [linux 常用命令-文件内容查看](linux/commands/文件目录管理/文件内容查看.md) + * [linux 常用命令-文件压缩与解压](linux/commands/文件目录管理/文件压缩与解压.md) + * [linux 常用命令-文件处理](linux/commands/文件目录管理/文件处理.md) + * [linux 常用命令-文件编辑](linux/commands/文件目录管理/文件编辑.md) + * [linux 常用命令-文件权限属性设置](linux/commands/文件目录管理/文件权限属性设置.md) + * [linux 常用命令-文件查找和比较](linux/commands/文件目录管理/文件查找和比较.md) + * [linux 常用命令-目录基本操作](linux/commands/文件目录管理/目录基本操作.md) + * [linux 常用命令-网络管理](linux/commands/网络管理/README.md) + * [linux 常用命令-网络管理](linux/commands/网络管理/网络应用.md) + * [linux 常用命令-磁盘管理](linux/commands/磁盘管理.md) * [yum 命令](linux/yum.md) * [shell](shell/README.md) * [shell 快速指南](shell/shell-quickstart.md) diff --git a/docs/linux.xmind b/docs/linux.xmind index 7ae10c314d17b15075ae25f6b00eae0a62981695..291a618dde3ef17ad8fc60ae1b0b5e31c7dc2382 100644 GIT binary patch delta 22713 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 diff --git a/docs/linux/commands/linux-cmd-compress.md b/docs/linux/commands/linux-cmd-compress.md deleted file mode 100644 index e324acc..0000000 --- a/docs/linux/commands/linux-cmd-compress.md +++ /dev/null @@ -1,255 +0,0 @@ -# Linux 常用命令-压缩 - -## zip - -> zip 命令用于压缩文件。 -> -> zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。 - -### 语法 - -``` -zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] -``` - -**参数**: - -- -A 调整可执行的自动解压缩文件。 -- -b<工作目录> 指定暂时存放文件的目录。 -- -c 替每个被压缩的文件加上注释。 -- -d 从压缩文件内删除指定的文件。 -- -D 压缩文件内不建立目录名称。 -- -f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 -- -F 尝试修复已损坏的压缩文件。 -- -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。 -- -h 在线帮助。 -- -i<范本样式> 只压缩符合条件的文件。 -- -j 只保存文件名称及其内容,而不存放任何目录名称。 -- -J 删除压缩文件前面不必要的数据。 -- -k 使用MS-DOS兼容格式的文件名称。 -- -l 压缩文件时,把LF字符置换成LF+CR字符。 -- -ll 压缩文件时,把LF+CR字符置换成LF字符。 -- -L 显示版权信息。 -- -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。 -- -n<字尾字符串> 不压缩具有特定字尾字符串的文件。 -- -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。 -- -q 不显示指令执行过程。 -- -r 递归处理,将指定目录下的所有文件和子目录一并处理。 -- -S 包含系统和隐藏文件。 -- -t<日期时间> 把压缩文件的日期设成指定的日期。 -- -T 检查备份文件内的每个文件是否正确无误。 -- -u 更换较新的文件到压缩文件内。 -- -v 显示指令执行过程或显示版本信息。 -- -V 保存VMS操作系统的文件属性。 -- -w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。 -- -x<范本样式> 压缩时排除符合条件的文件。 -- -X 不保存额外的文件属性。 -- -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。 -- -z 替压缩文件加上注释。 -- -$ 保存第一个被压缩文件所在磁盘的卷册名称。 -- -<压缩效率> 压缩效率是一个介于1-9的数值。 - -### 实例 - -将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip: - -``` -zip -q -r html.zip /home/html -``` - -如果在我们在 /home/html 目录下,可以执行以下命令: - -``` -zip -q -r html.zip * -``` - -从压缩文件 cp.zip 中删除文件 a.c - -``` -zip -dv cp.zip a.c -``` - -## unzip - -> unzip 命令用于解压缩 zip 文件 -> -> unzip 为 .zip 压缩文件的解压缩程序。 - -### 语法 - -``` -unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z] -``` - -**参数**: - -- -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。 -- -f 更新现有的文件。 -- -l 显示压缩文件内所包含的文件。 -- -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。 -- -t 检查压缩文件是否正确。 -- -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。 -- -v 执行是时显示详细的信息。 -- -z 仅显示压缩文件的备注文字。 -- -a 对文本文件进行必要的字符转换。 -- -b 不要对文本文件进行字符转换。 -- -C 压缩文件中的文件名称区分大小写。 -- -j 不处理压缩文件中原有的目录路径。 -- -L 将压缩文件中的全部文件名改为小写。 -- -M 将输出结果送到more程序处理。 -- -n 解压缩时不要覆盖原有的文件。 -- -o 不必先询问用户,unzip执行后覆盖原有文件。 -- -P<密码> 使用zip的密码选项。 -- -q 执行时不显示任何信息。 -- -s 将文件名中的空白字符转换为底线字符。 -- -V 保留VMS的文件版本信息。 -- -X 解压缩时同时回存文件原来的UID/GID。 -- [.zip文件] 指定.zip压缩文件。 -- [文件] 指定要处理.zip压缩文件中的哪些文件。 -- -d<目录> 指定文件解压缩后所要存储的目录。 -- -x<文件> 指定不要处理.zip压缩文件中的哪些文件。 -- -Z unzip -Z等于执行zipinfo指令。 - -### 实例 - -查看压缩文件中包含的文件: - -``` -# unzip -l abc.zip -Archive: abc.zip - Length Date Time Name --------- ---- ---- ---- - 94618 05-21-10 20:44 a11.jpg - 202001 05-21-10 20:44 a22.jpg - 16 05-22-10 15:01 11.txt - 46468 05-23-10 10:30 w456.JPG - 140085 03-14-10 21:49 my.asp --------- ------- - 483188 5 files -``` - --v 参数用于查看压缩文件目录信息,但是不解压该文件。 - -``` -# unzip -v abc.zip -Archive: abc.zip -Length Method Size Ratio Date Time CRC-32 Name --------- ------ ------- ----- ---- ---- ------ ---- - 94618 Defl:N 93353 1% 05-21-10 20:44 9e661437 a11.jpg - 202001 Defl:N 201833 0% 05-21-10 20:44 1da462eb a22.jpg - 16 Stored 16 0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt - 46468 Defl:N 39997 14% 05-23-10 10:30 962861f2 w456.JPG - 140085 Defl:N 36765 74% 03-14-10 21:49 836fcc3f my.asp --------- ------- --- ------- - 483188 371964 23% 5 files -``` - -## tar - -> tar 命令用于备份文件。 -> -> tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。 - -### 语法 - -``` -tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F ][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...] -``` - -**参数**: - -- -A或--catenate 新增文件到已存在的备份文件。 -- -b<区块数目>或--blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。 -- -B或--read-full-records 读取数据时重设区块大小。 -- -c或--create 建立新的备份文件。 -- -C<目的目录>或--directory=<目的目录> 切换到指定的目录。 -- -d或--diff或--compare 对比备份文件内和文件系统上的文件的差异。 -- -f<备份文件>或--file=<备份文件> 指定备份文件。 -- -F或--info-script= 每次更换磁带时,就执行指定的Script文件。 -- -g或--listed-incremental 处理GNU格式的大量备份。 -- -G或--incremental 处理旧的GNU格式的大量备份。 -- -h或--dereference 不建立符号连接,直接复制该连接所指向的原始文件。 -- -i或--ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。 -- -k或--keep-old-files 解开备份文件时,不覆盖已有的文件。 -- -K<文件>或--starting-file=<文件> 从指定的文件开始还原。 -- -l或--one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。 -- -L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。 -- -m或--modification-time 还原文件时,不变更文件的更改时间。 -- -M或--multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。 -- -N<日期格式>或--newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。 -- -o或--old-archive或--portability 将资料写入备份文件时使用V7格式。 -- -O或--stdout 把从备份文件里还原的文件输出到标准输出设备。 -- -p或--same-permissions 用原来的文件权限还原文件。 -- -P或--absolute-names 文件名使用绝对名称,不移除文件名称前的"/"号。 -- -r或--append 新增文件到已存在的备份文件的结尾部分。 -- -R或--block-number 列出每个信息在备份文件中的区块编号。 -- -s或--same-order 还原文件的顺序和备份文件内的存放顺序相同。 -- -S或--sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。 -- -t或--list 列出备份文件的内容。 -- -T<范本文件>或--files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。 -- -u或--update 仅置换较备份文件内的文件更新的文件。 -- -U或--unlink-first 解开压缩文件还原文件之前,先解除文件的连接。 -- -v或--verbose 显示指令执行过程。 -- -V<卷册名称>或--label=<卷册名称> 建立使用指定的卷册名称的备份文件。 -- -w或--interactive 遭遇问题时先询问用户。 -- -W或--verify 写入备份文件后,确认文件正确无误。 -- -x或--extract或--get 从备份文件中还原文件。 -- -X<范本文件>或--exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。 -- -z或--gzip或--ungzip 通过gzip指令处理备份文件。 -- -Z或--compress或--uncompress 通过compress指令处理备份文件。 -- -<设备编号><存储密度> 设置备份用的外围设备编号及存放数据的密度。 -- --after-date=<日期时间> 此参数的效果和指定"-N"参数相同。 -- --atime-preserve 不变更文件的存取时间。 -- --backup=<备份方式>或--backup 移除文件前先进行备份。 -- --checkpoint 读取备份文件时列出目录名称。 -- --concatenate 此参数的效果和指定"-A"参数相同。 -- --confirmation 此参数的效果和指定"-w"参数相同。 -- --delete 从备份文件中删除指定的文件。 -- --exclude=<范本样式> 排除符合范本样式的问家。 -- --group=<群组名称> 把加入设备文件中的文件的所属群组设成指定的群组。 -- --help 在线帮助。 -- --ignore-failed-read 忽略数据读取错误,不中断程序的执行。 -- --new-volume-script= 此参数的效果和指定"-F"参数相同。 -- --newer-mtime 只保存更改过的文件。 -- --no-recursion 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。 -- --null 从null设备读取文件名称。 -- --numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称。 -- --owner=<用户名称> 把加入备份文件中的文件的拥有者设成指定的用户。 -- --posix 将数据写入备份文件时使用POSIX格式。 -- --preserve 此参数的效果和指定"-ps"参数相同。 -- --preserve-order 此参数的效果和指定"-A"参数相同。 -- --preserve-permissions 此参数的效果和指定"-p"参数相同。 -- --record-size=<区块数目> 此参数的效果和指定"-b"参数相同。 -- --recursive-unlink 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。 -- --remove-files 文件加入备份文件后,就将其删除。 -- --rsh-command=<执行指令> 设置要在远端主机上执行的指令,以取代rsh指令。 -- --same-owner 尝试以相同的文件拥有者还原问家你。 -- --suffix=<备份字尾字符串> 移除文件前先行备份。 -- --totals 备份文件建立后,列出文件大小。 -- --use-compress-program=<执行指令> 通过指定的指令处理备份文件。 -- --version 显示版本信息。 -- --volno-file=<编号文件> 使用指定文件内的编号取代预设的卷册编号。 - -### 实例 - -压缩文件 非打包 - -``` -# touch a.c -# tar -czvf test.tar.gz a.c //压缩 a.c文件为test.tar.gz -a.c -``` - -列出压缩文件内容 - -``` -# tar -tzvf test.tar.gz --rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c -``` - -解压文件 - -``` -# tar -xzvf test.tar.gz a.c -``` - diff --git a/docs/linux/commands/linux-cmd-disk.md b/docs/linux/commands/linux-cmd-disk.md deleted file mode 100644 index 99890db..0000000 --- a/docs/linux/commands/linux-cmd-disk.md +++ /dev/null @@ -1,234 +0,0 @@ -# Linux 常用命令-磁盘管理 - -## cd - -> **功能:切换目录。** -> -> cd 命令用于切换当前工作目录至 dirName(目录参数)。 -> -> 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。 - -### 语法 - -``` -cd [dirName] -``` - -- dirName:要切换的目标目录。 - -### 实例 - -跳到 /usr/bin/ : - -``` -cd /usr/bin -``` - -跳到自己的 home 目录 : - -``` -cd ~ -``` - -跳到目前目录的上上两层 : - -``` -cd ../.. -``` - -## pwd - -> **功能:显示当前目录** -> -> pwd 命令用于显示工作目录。 -> -> 执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。 - -### 语法 - -``` -pwd [--help][--version] -``` - -**参数说明:** - -- --help 在线帮助。 -- --version 显示版本信息。 - -### 实例 - -查看当前所在目录: - -``` -# pwd -/root/test #输出结果 -``` - -## ls - -> **功能:显示目录内容。** -> -> ls 命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。 - -### 语法 - -``` - ls [-alrtAFR] [name...] -``` - -**参数 **: - -- -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -- -r 将文件以相反次序显示(原定依英文字母次序) -- -t 将文件依建立时间之先后次序列出 -- -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) -- -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" -- -R 若目录下有文件,则以下之文件亦皆依序列出 - -### 实例 - -列出根目录(\)下的所有目录: - -``` -# ls / -bin dev lib media net root srv upload www -boot etc lib64 misc opt sbin sys usr -home lost+found mnt proc selinux tmp var -``` - -列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面 : - -``` -ls -ltr s* -``` - -将 /bin 目录以下所有目录及文件详细资料列出 : - -``` -ls -lR /bin -``` - -列出目前工作目录下所有文件及目录;目录于名称后加 "/", 可执行档于名称后加 "*" : - -``` -ls -AF -``` - -## mkdir - -> **功能:创建目录。** -> -> mkdir 命令用于建立名称为 dirName 之子目录。 - -### 语法 - -``` -mkdir [-p] dirName -``` - -**参数说明**: - -- -p 确保目录名称存在,不存在的就建一个。 - -### 实例 - -在工作目录下,建立一个名为 AAA 的子目录 : - -``` -mkdir AAA -``` - -在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。) - -``` -mkdir -p BBB/Test -``` - -## stat - -> stat 命令用于显示文件/文件系统的详细信息。 - -### 语法 - -``` -stat [文件或目录] -``` - -### 实例 - -查看 testfile 文件的inode内容内容,可以用以下命令: - -``` -# stat testfile #输入命令 - File: `testfile' - Size: 102 Blocks: 8 IO Block: 4096 regular file -Device: 807h/2055d Inode: 1265161 Links: 1 -Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) -Access: 2014-08-13 14:07:20.000000000 +0800 -Modify: 2014-08-13 14:07:07.000000000 +0800 -Change: 2014-08-13 14:07:07.000000000 +0800 -``` - -## mount - -> **功能:挂载文件到一个虚拟盘或虚拟文件夹中。** -> -> mount 命令是经常会使用到的命令,它用于挂载 Linux 系统外的文件。 - -### 语法 - -``` -mount [-hV] -mount -a [-fFnrsvw] [-t vfstype] -mount [-fnrsvw] [-o options [,...]] device | dir -mount [-fnrsvw] [-t vfstype] [-o options] device dir -``` - -**参数说明:** - -- -V:显示程序版本 -- -h:显示辅助讯息 -- -v:显示较讯息,通常和 -f 用来除错。 -- -a:将 /etc/fstab 中定义的所有档案系统挂上。 -- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。 -- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。 -- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。 -- -s-r:等于 -o ro -- -w:等于 -o rw -- -L:将含有特定标签的硬盘分割挂上。 -- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。 -- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。 -- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。 -- -o sync:在同步模式下执行。 -- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。 -- -o auto、-o noauto:打开/关闭自动挂上模式。 -- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async. -- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。 -- -o suid、-o nosuid: -- 允许执行档在 root 权限下执行。 -- -o user、-o nouser:使用者可以执行 mount/umount 的动作。 -- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。 -- -o ro:用唯读模式挂上。 -- -o rw:用可读写模式挂上。 -- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。 - -### 实例 - -将 /dev/hda1 挂在 /mnt 之下。 - -``` -#mount /dev/hda1 /mnt -``` - -将 /dev/hda1 用唯读模式挂在 /mnt 之下。 - -``` -#mount -o ro /dev/hda1 /mnt -``` - -将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。 - -``` -#mount -o loop /tmp/image.iso /mnt/cdrom -``` \ No newline at end of file diff --git a/docs/linux/commands/linux-cmd-file-and-folder.md b/docs/linux/commands/linux-cmd-file-and-folder.md deleted file mode 100644 index ece8b4b..0000000 --- a/docs/linux/commands/linux-cmd-file-and-folder.md +++ /dev/null @@ -1,375 +0,0 @@ -# Linux 常用命令-文件目录 - -## chmod - -Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。 - -**使用权限** : 所有使用者 - -### 语法 - -``` -chmod [-cfvR] [--help] [--version] mode file... -``` - -**参数说明** - -mode : 权限设定字串,格式如下 : - -``` -[ugoa...][[+-=][rwxX]...][,...] -``` - -其中: - -- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 -- \+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 -- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。 - -其他参数说明: - -- -c : 若该文件权限确实已经更改,才显示其更改动作 -- -f : 若该文件权限无法被更改也不要显示错误讯息 -- -v : 显示权限变更的详细资料 -- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更) -- --help : 显示辅助说明 -- --version : 显示版本 - -### 实例 - -将文件 file1.txt 设为所有人皆可读取 : - -``` -chmod ugo+r file1.txt -``` - -将文件 file1.txt 设为所有人皆可读取 : - -``` -chmod a+r file1.txt -``` - -将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 : - -``` -chmod ug+w,o-w file1.txt file2.txt -``` - -将 ex1.py 设定为只有该文件拥有者可以执行 : - -``` -chmod u+x ex1.py -``` - -将目前目录下的所有文件与子目录皆设为任何人可读取 : - -``` -chmod -R a+r * -``` - -此外chmod也可以用数字来表示权限如 : - -``` -chmod 777 file -``` - -语法为: - -``` -chmod abc file -``` - -其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 - -r=4,w=2,x=1 - -- 若要rwx属性则4+2+1=7; -- 若要rw-属性则4+2=6; -- 若要r-x属性则4+1=5。 - -``` -chmod a=rwx file -``` - -和 - -``` -chmod 777 file -``` - -效果相同 - -``` -chmod ug=rwx,o=x file -``` - -和 - -``` -chmod 771 file -``` - -效果相同 - -若用chmod 4755 filename可使此程序具有root的权限 - -## more - -more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。 - -### 语法 - -``` -more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..] -``` - -**参数**: - -- -num 一次显示的行数 -- -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声 -- -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能 -- -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上) -- -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 -- -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料 -- -s 当遇到有连续两行以上的空白行,就代换为一行的空白行 -- -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同) -- +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示 -- +num 从第 num 行开始显示 -- fileNames 欲显示内容的文档,可为复数个数 - -### 实例 - -逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。 - -``` -more -s testfile -``` - -从第 20 行开始显示 testfile 之文档内容。 - -``` -more +20 testfile -``` - -## less - -less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。 - -### 语法 - -``` -less [参数] 文件 -``` - -**参数说明**: - -- -b <缓冲区大小> 设置缓冲区的大小 -- -e 当文件显示结束后,自动离开 -- -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -- -g 只标志最后搜索的关键词 -- -i 忽略搜索时的大小写 -- -m 显示类似more命令的百分比 -- -N 显示每行的行号 -- -o <文件名> 将less 输出的内容在指定文件中保存起来 -- -Q 不使用警告音 -- -s 显示连续空行为一行 -- -S 行过长时间将超出部分舍弃 -- -x <数字> 将"tab"键显示为规定的数字空格 -- /字符串:向下搜索"字符串"的功能 -- ?字符串:向上搜索"字符串"的功能 -- n:重复前一个搜索(与 / 或 ? 有关) -- N:反向重复前一个搜索(与 / 或 ? 有关) -- b 向后翻一页 -- d 向后翻半页 -- h 显示帮助界面 -- Q 退出less 命令 -- u 向前滚动半页 -- y 向前滚动一行 -- 空格键 滚动一行 -- 回车键 滚动一页 -- [pagedown]: 向下翻动一页 -- [pageup]: 向上翻动一页 - -### 实例 - -1、查看文件 - -``` -less log2013.log -``` - -2、ps查看进程信息并通过less分页显示 - -``` -ps -ef |less -``` - -3、查看命令历史使用记录并通过less分页显示 - -``` -[root@localhost test]# history | less -22 scp -r tomcat6.0.32 root@192.168.120.203:/opt/soft -23 cd .. -24 scp -r web root@192.168.120.203:/opt/ -25 cd soft -26 ls -……省略…… -``` - -4、浏览多个文件 - -``` -less log2013.log log2014.log -``` - -说明: - -输入 :n后,切换到 log2014.log - -输入 :p 后,切换到log2013.log - -## cp - -> cp 命令主要用于复制文件或目录。 - -### 语法 - -``` -cp [options] source dest -``` - -或 - -``` -cp [options] source... directory -``` - -**参数说明**: - -- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 -- -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 -- -f:覆盖已经存在的目标文件而不给出提示。 -- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 -- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 -- -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 -- -l:不复制文件,只是生成链接文件。 - -### 实例 - -使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newtest"下,输入如下命令: - -``` -$ cp –r test/ newtest -``` - -注意:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。 - -## mv - -> mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。 - -### 语法 - -``` -mv [options] source dest -mv [options] source... directory -``` - -**参数说明**: - -- -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件; -- -f: 在mv操作要覆盖某已有的目标文件时不给任何指示; - -mv参数设置与运行结果 - -| 命令格式 | 运行结果 | -| ---------- | ------------------------------ | -| mv 文件名 文件名 | 将源文件名改为目标文件名 | -| mv 文件名 目录名 | 将文件移动到目标目录 | -| mv 目录名 目录名 | 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名 | -| mv 目录名 文件名 | 出错 | - -### 实例 - -将文件 aaa 更名为 bbb : - -``` -mv aaa bbb -``` - -将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。 - -``` -mv info/ logs -``` - -再如将/usr/student下的所有文件和目录移到当前目录下,命令行为: - -``` -$ mv /usr/student/* -``` - -## rm - -rm 命令用于删除一个文件或者目录。 - -### 语法 - -``` -rm [options] name... -``` - -**参数**: - -- -i 删除前逐一询问确认。 -- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -- -r 将目录及以下之档案亦逐一删除。 - -### 实例 - -删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如: - -``` -# rm test.txt -rm:是否删除 一般文件 "test.txt"? y -# rm homework -rm: 无法删除目录"homework": 是一个目录 -# rm -r homework -rm:是否删除 目录 "homework"? y -``` - -删除当前目录下的所有文件及目录,命令行为: - -``` -rm -r * -``` - -文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。 - -## mkdir - -mkdir 命令用于建立名称为 dirName 之子目录。 - -### 语法 - -``` -mkdir [-p] dirName -``` - -**参数说明**: - -- -p 确保目录名称存在,不存在的就建一个。 - -### 实例 - -在工作目录下,建立一个名为 AAA 的子目录 : - -``` -mkdir AAA -``` - -在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。) - -``` -mkdir -p BBB/Test -``` \ No newline at end of file diff --git a/docs/linux/commands/linux-cmd-network.md b/docs/linux/commands/linux-cmd-network.md deleted file mode 100644 index 9272e78..0000000 --- a/docs/linux/commands/linux-cmd-network.md +++ /dev/null @@ -1,480 +0,0 @@ -## ifconfig - -> ifconfig 命令用于显示或设置网络设备。 -> -> ifconfig 可设置网络设备的状态,或是显示目前的设置。 - -### 语法 - -``` -ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址] -``` - -**参数说明**: - -- add<地址> 设置网络设备IPv6的IP地址。 -- del<地址> 删除网络设备IPv6的IP地址。 -- down 关闭指定的网络设备。 -- <硬件地址> 设置网络设备的类型与硬件地址。 -- io_addr 设置网络设备的I/O地址。 -- irq 设置网络设备的IRQ。 -- media<网络媒介类型> 设置网络设备的媒介类型。 -- mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。 -- metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。 -- mtu<字节> 设置网络设备的MTU。 -- netmask<子网掩码> 设置网络设备的子网掩码。 -- tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。 -- up 启动指定的网络设备。 -- -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。 -- -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。 -- -promisc 关闭或启动指定网络设备的promiscuous模式。 -- [IP地址] 指定网络设备的IP地址。 -- [网络设备] 指定网络设备的名称。 - -### 实例 - -显示网络设备信息 - -``` -# ifconfig -eth0 Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C - inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 - inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link - UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 - RX packets:172220 errors:0 dropped:0 overruns:0 frame:0 - TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0 - collisions:0 txqueuelen:1000 - RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB) - Interrupt:185 Base address:0x2024 - -lo Link encap:Local Loopback - inet addr:127.0.0.1 Mask:255.0.0.0 - inet6 addr: ::1/128 Scope:Host - UP LOOPBACK RUNNING MTU:16436 Metric:1 - RX packets:2022 errors:0 dropped:0 overruns:0 frame:0 - TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0 - collisions:0 txqueuelen:0 - RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB) -``` - -启动关闭指定网卡 - -``` -# ifconfig eth0 down -# ifconfig eth0 up -``` - -为网卡配置和删除IPv6地址 - -``` -# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡诶之IPv6地址 - -# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址 -``` - -用ifconfig修改MAC地址 - -``` -# ifconfig eth0 down //关闭网卡 -# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址 -# ifconfig eth0 up //启动网卡 -# ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址 -# ifconfig eth1 up //启动网卡 -``` - -配置IP地址 - -``` -# ifconfig eth0 192.168.1.56 -//给eth0网卡配置IP地址 -# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 -// 给eth0网卡配置IP地址,并加上子掩码 -# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255 -// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址 -``` - -启用和关闭ARP协议 - -``` -# ifconfig eth0 arp //开启 -# ifconfig eth0 -arp //关闭 -``` - -设置最大传输单元 - -``` -# ifconfig eth0 mtu 1500 -//设置能通过的最大数据包大小为 1500 bytes -``` - -## ping - -> ping 命令用于检测主机。 -> -> 执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 - -### 语法 - -``` -ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址] -``` - -**参数说明**: - -- -d 使用Socket的SO_DEBUG功能。 -- -c<完成次数> 设置完成要求回应的次数。 -- -f 极限检测。 -- -i<间隔秒数> 指定收发信息的间隔时间。 -- -I<网络界面> 使用指定的网络界面送出数据包。 -- -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。 -- -n 只输出数值。 -- -p<范本样式> 设置填满数据包的范本样式。 -- -q 不显示指令执行过程,开头和结尾的相关信息除外。 -- -r 忽略普通的Routing Table,直接将数据包送到远端主机上。 -- -R 记录路由过程。 -- -s<数据包大小> 设置数据包的大小。 -- -t<存活数值> 设置存活数值TTL的大小。 -- -v 详细显示指令的执行过程。 - -### 实例 - -检测是否与主机连通 - -``` -# ping www.w3cschool.cc //ping主机 -PING aries.m.alikunlun.com (114.80.174.110) 56(84) bytes of data. -64 bytes from 114.80.174.110: icmp_seq=1 ttl=64 time=0.025 ms -64 bytes from 114.80.174.110: icmp_seq=2 ttl=64 time=0.036 ms -64 bytes from 114.80.174.110: icmp_seq=3 ttl=64 time=0.034 ms -64 bytes from 114.80.174.110: icmp_seq=4 ttl=64 time=0.034 ms -64 bytes from 114.80.174.110: icmp_seq=5 ttl=64 time=0.028 ms -64 bytes from 114.80.174.110: icmp_seq=6 ttl=64 time=0.028 ms -64 bytes from 114.80.174.110: icmp_seq=7 ttl=64 time=0.034 ms -64 bytes from 114.80.174.110: icmp_seq=8 ttl=64 time=0.034 ms -64 bytes from 114.80.174.110: icmp_seq=9 ttl=64 time=0.036 ms -64 bytes from 114.80.174.110: icmp_seq=10 ttl=64 time=0.041 ms - ---- aries.m.alikunlun.com ping statistics --- -10 packets transmitted, 30 received, 0% packet loss, time 29246ms -rtt min/avg/max/mdev = 0.021/0.035/0.078/0.011 ms - -//需要手动终止Ctrl+C -``` - -指定接收包的次数 - -``` -# ping -c 2 www.w3cschool.cc -PING aries.m.alikunlun.com (114.80.174.120) 56(84) bytes of data. -64 bytes from 114.80.174.120: icmp_seq=1 ttl=54 time=6.18 ms -64 bytes from 114.80.174.120: icmp_seq=2 ttl=54 time=15.4 ms - ---- aries.m.alikunlun.com ping statistics --- -2 packets transmitted, 2 received, 0% packet loss, time 1016ms -rtt min/avg/max/mdev = 6.185/10.824/15.464/4.640 ms - -//收到两次包后,自动退出 -``` - -多参数使用 - -``` -# ping -i 3 -s 1024 -t 255 g.cn //ping主机 -PING g.cn (203.208.37.104) 1024(1052) bytes of data. -1032 bytes from bg-in-f104.1e100.net (203.208.37.104): icmp_seq=0 ttl=243 time=62.5 ms -1032 bytes from bg-in-f104.1e100.net (203.208.37.104): icmp_seq=1 ttl=243 time=63.9 ms -1032 bytes from bg-in-f104.1e100.net (203.208.37.104): icmp_seq=2 ttl=243 time=61.9 ms - ---- g.cn ping statistics --- -3 packets transmitted, 3 received, 0% packet loss, time 6001ms -rtt min/avg/max/mdev = 61.959/62.843/63.984/0.894 ms, pipe 2 -[root@linux ~]# - -//-i 3 发送周期为 3秒 -s 设置发送包的大小 -t 设置TTL值为 255 -``` - -## netstat - -> netstat 命令用于显示网络状态。 -> -> 利用 netstat 指令可让你得知整个Linux系统的网络情况。 - -### 语法 - -``` -netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip] -``` - -**参数说明**: - -- -a或--all 显示所有连线中的Socket。 -- -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。 -- -c或--continuous 持续列出网络状态。 -- -C或--cache 显示路由器配置的快取信息。 -- -e或--extend 显示网络其他相关信息。 -- -F或--fib 显示FIB。 -- -g或--groups 显示多重广播功能群组组员名单。 -- -h或--help 在线帮助。 -- -i或--interfaces 显示网络界面信息表单。 -- -l或--listening 显示监控中的服务器的Socket。 -- -M或--masquerade 显示伪装的网络连线。 -- -n或--numeric 直接使用IP地址,而不通过域名服务器。 -- -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。 -- -o或--timers 显示计时器。 -- -p或--programs 显示正在使用Socket的程序识别码和程序名称。 -- -r或--route 显示Routing Table。 -- -s或--statistice 显示网络工作信息统计表。 -- -t或--tcp 显示TCP传输协议的连线状况。 -- -u或--udp 显示UDP传输协议的连线状况。 -- -v或--verbose 显示指令执行过程。 -- -V或--version 显示版本信息。 -- -w或--raw 显示RAW传输协议的连线状况。 -- -x或--unix 此参数的效果和指定"-A unix"参数相同。 -- --ip或--inet 此参数的效果和指定"-A inet"参数相同。 - -### 实例 - -显示详细的网络状况 - -``` -# netstat -a -``` - -显示当前户籍UDP连接状况 - -``` -# netstat -nu -``` - -显示UDP端口号的使用情况 - -``` -# netstat -apu -Active Internet connections (servers and established) -Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name -udp 0 0 *:32768 *:* - -udp 0 0 *:nfs *:* - -udp 0 0 *:641 *:* 3006/rpc.statd -udp 0 0 192.168.0.3:netbios-ns *:* 3537/nmbd -udp 0 0 *:netbios-ns *:* 3537/nmbd -udp 0 0 192.168.0.3:netbios-dgm *:* 3537/nmbd -udp 0 0 *:netbios-dgm *:* 3537/nmbd -udp 0 0 *:tftp *:* 3346/xinetd -udp 0 0 *:999 *:* 3366/rpc.rquotad -udp 0 0 *:sunrpc *:* 2986/portmap -udp 0 0 *:ipp *:* 6938/cupsd -udp 0 0 *:1022 *:* 3392/rpc.mountd -udp 0 0 *:638 *:* 3006/rpc.statd -``` - -显示网卡列表 - -``` -# netstat -i -Kernel Interface table -Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg -eth0 1500 0 181864 0 0 0 141278 0 0 0 BMRU -lo 16436 0 3362 0 0 0 3362 0 0 0 LRU -``` - -显示组播组的关系 - -``` -# netstat -g -IPv6/IPv4 Group Memberships -Interface RefCnt Group ---------------- ------ --------------------- -lo 1 ALL-SYSTEMS.MCAST.NET -eth0 1 ALL-SYSTEMS.MCAST.NET -lo 1 ff02::1 -eth0 1 ff02::1:ff0a:b0c -eth0 1 ff02::1 -``` - -显示网络统计信息 - -``` -# netstat -s -Ip: - 184695 total packets received - 0 forwarded - 0 incoming packets discarded - 184687 incoming packets delivered - 143917 requests sent out - 32 outgoing packets dropped - 30 dropped because of missing route -Icmp: - 676 ICMP messages received - 5 input ICMP message failed. - ICMP input histogram: - destination unreachable: 44 - echo requests: 287 - echo replies: 345 - 304 ICMP messages sent - 0 ICMP messages failed - ICMP output histogram: - destination unreachable: 17 - echo replies: 287 -Tcp: - 473 active connections openings - 28 passive connection openings - 4 failed connection attempts - 11 connection resets received - 1 connections established - 178253 segments received - 137936 segments send out - 29 segments retransmited - 0 bad segments received. - 336 resets sent -Udp: - 5714 packets received - 8 packets to unknown port received. - 0 packet receive errors - 5419 packets sent -TcpExt: - 1 resets received for embryonic SYN_RECV sockets - ArpFilter: 0 - 12 TCP sockets finished time wait in fast timer - 572 delayed acks sent - 3 delayed acks further delayed because of locked socket - 13766 packets directly queued to recvmsg prequeue. - 1101482 packets directly received from backlog - 19599861 packets directly received from prequeue - 46860 packets header predicted - 14541 packets header predicted and directly queued to user - TCPPureAcks: 12259 - TCPHPAcks: 9119 - TCPRenoRecovery: 0 - TCPSackRecovery: 0 - TCPSACKReneging: 0 - TCPFACKReorder: 0 - TCPSACKReorder: 0 - TCPRenoReorder: 0 - TCPTSReorder: 0 - TCPFullUndo: 0 - TCPPartialUndo: 0 - TCPDSACKUndo: 0 - TCPLossUndo: 0 - TCPLoss: 0 - TCPLostRetransmit: 0 - TCPRenoFailures: 0 - TCPSackFailures: 0 - TCPLossFailures: 0 - TCPFastRetrans: 0 - TCPForwardRetrans: 0 - TCPSlowStartRetrans: 0 - TCPTimeouts: 29 - TCPRenoRecoveryFail: 0 - TCPSackRecoveryFail: 0 - TCPSchedulerFailed: 0 - TCPRcvCollapsed: 0 - TCPDSACKOldSent: 0 - TCPDSACKOfoSent: 0 - TCPDSACKRecv: 0 - TCPDSACKOfoRecv: 0 - TCPAbortOnSyn: 0 - TCPAbortOnData: 1 - TCPAbortOnClose: 0 - TCPAbortOnMemory: 0 - TCPAbortOnTimeout: 3 - TCPAbortOnLinger: 0 - TCPAbortFailed: 3 - TCPMemoryPressures: 0 -``` - -显示监听的套接口 - -``` -# netstat -l -Active Internet connections (only servers) -Proto Recv-Q Send-Q Local Address Foreign Address State -tcp 0 0 *:32769 *:* LISTEN -tcp 0 0 *:nfs *:* LISTEN -tcp 0 0 *:644 *:* LISTEN -tcp 0 0 *:1002 *:* LISTEN -tcp 0 0 *:netbios-ssn *:* LISTEN -tcp 0 0 *:sunrpc *:* LISTEN -tcp 0 0 vm-dev:ipp *:* LISTEN -tcp 0 0 *:telnet *:* LISTEN -tcp 0 0 *:601 *:* LISTEN -tcp 0 0 *:microsoft-ds *:* LISTEN -tcp 0 0 *:http *:* LISTEN -tcp 0 0 *:ssh *:* LISTEN -tcp 0 0 *:https *:* LISTEN -udp 0 0 *:32768 *:* -udp 0 0 *:nfs *:* -udp 0 0 *:641 *:* -udp 0 0 192.168.0.3:netbios-ns *:* -udp 0 0 *:netbios-ns *:* -udp 0 0 192.168.0.3:netbios-dgm *:* -udp 0 0 *:netbios-dgm *:* -udp 0 0 *:tftp *:* -udp 0 0 *:999 *:* -udp 0 0 *:sunrpc *:* -udp 0 0 *:ipp *:* -udp 0 0 *:1022 *:* -udp 0 0 *:638 *:* -Active UNIX domain sockets (only servers) -Proto RefCnt Flags Type State I-Node Path -unix 2 [ ACC ] STREAM LISTENING 10621 @/tmp/fam-root- -unix 2 [ ACC ] STREAM LISTENING 7096 /var/run/acpid.socket -unix 2 [ ACC ] STREAM LISTENING 9792 /tmp/.gdm_socket -unix 2 [ ACC ] STREAM LISTENING 9927 /tmp/.X11-unix/X0 -unix 2 [ ACC ] STREAM LISTENING 10489 /tmp/ssh-lbUnUf4552/agent.4552 -unix 2 [ ACC ] STREAM LISTENING 10558 /tmp/ksocket-root/kdeinit__0 -unix 2 [ ACC ] STREAM LISTENING 10560 /tmp/ksocket-root/kdeinit-:0 -unix 2 [ ACC ] STREAM LISTENING 10570 /tmp/.ICE-unix/dcop4664-1270815442 -unix 2 [ ACC ] STREAM LISTENING 10843 /tmp/.ICE-unix/4735 -unix 2 [ ACC ] STREAM LISTENING 10591 /tmp/ksocket-root/klauncherah3arc.slave-socket -unix 2 [ ACC ] STREAM LISTENING 7763 /var/run/iiim/.iiimp-unix/9010 -unix 2 [ ACC ] STREAM LISTENING 11047 /tmp/orbit-root/linc-1291-0-1e92c8082411 -unix 2 [ ACC ] STREAM LISTENING 11053 /tmp/orbit-root/linc-128e-0-dc070659cbb3 -unix 2 [ ACC ] STREAM LISTENING 8020 /var/run/dbus/system_bus_socket -unix 2 [ ACC ] STREAM LISTENING 58927 /tmp/mcop-root/vm-dev-2c28-4beba75f -unix 2 [ ACC ] STREAM LISTENING 7860 /tmp/.font-unix/fs7100 -unix 2 [ ACC ] STREAM LISTENING 7658 /dev/gpmctl -unix 2 [ ACC ] STREAM LISTENING 10498 @/tmp/dbus-s2MLJGO5Ci -``` - -## telnet - -> telnet 命令用于远端登入。 -> -> 执行telnet指令开启终端机阶段作业,并登入远端主机。 - -### 语法 - -``` -telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>] -``` - -**参数说明**: - -- -8 允许使用8位字符资料,包括输入与输出。 -- -a 尝试自动登入远端系统。 -- -b<主机别名> 使用别名指定远端主机名称。 -- -c 不读取用户专属目录里的.telnetrc文件。 -- -d 启动排错模式。 -- -e<脱离字符> 设置脱离字符。 -- -E 滤除脱离字符。 -- -f 此参数的效果和指定"-F"参数相同。 -- -F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。 -- -k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。 -- -K 不自动登入远端主机。 -- -l<用户名称> 指定要登入远端主机的用户名称。 -- -L 允许输出8位字符资料。 -- -n<记录文件> 指定文件记录相关信息。 -- -r 使用类似rlogin指令的用户界面。 -- -S<服务类型> 设置telnet连线所需的IP TOS信息。 -- -x 假设主机有支持数据加密的功能,就使用它。 -- -X<认证形态> 关闭指定的认证形态。 - -### 实例 - -登录远程主机 - -``` -# telnet 192.168.0.5 - -//登录IP为 192.168.0.5 的远程主机 -``` \ No newline at end of file diff --git a/docs/linux/commands/文件目录管理/README.md b/docs/linux/commands/文件目录管理/README.md new file mode 100644 index 0000000..95aa76d --- /dev/null +++ b/docs/linux/commands/文件目录管理/README.md @@ -0,0 +1,9 @@ +# linux 常用命令-文件目录管理 + +* [linux 常用命令-文件内容查看](文件内容查看.md) +* [linux 常用命令-文件压缩与解压](文件压缩与解压.md) +* [linux 常用命令-文件处理](文件处理.md) +* [linux 常用命令-文件编辑](文件编辑.md) +* [linux 常用命令-文件权限属性设置](文件权限属性设置.md) +* [linux 常用命令-文件查找和比较](文件查找和比较.md) +* [linux 常用命令-目录基本操作](目录基本操作.md) diff --git a/docs/linux/commands/文件目录管理/文件内容查看.md b/docs/linux/commands/文件目录管理/文件内容查看.md new file mode 100644 index 0000000..fe2384e --- /dev/null +++ b/docs/linux/commands/文件目录管理/文件内容查看.md @@ -0,0 +1,366 @@ +--- +title: linux 常用命令-文件内容查看 +date: 2018/02/27 +categories: +- linux +tags: +- linux +- command +--- + + + +- [linux 常用命令-文件内容查看](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9%E6%9F%A5%E7%9C%8B) + - [cut](#cut) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [指定字段的字符或者字节范围](#%E6%8C%87%E5%AE%9A%E5%AD%97%E6%AE%B5%E7%9A%84%E5%AD%97%E7%AC%A6%E6%88%96%E8%80%85%E5%AD%97%E8%8A%82%E8%8C%83%E5%9B%B4) + - [head](#head) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [tail](#tail) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [more](#more) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [less](#less) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + + + +# linux 常用命令-文件内容查看 + +## cut + +连接文件并打印到标准输出设备上 + +### 补充说明 + +**cut命令** 用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。 + +说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如`cut fl f2 > f3`将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。 + +当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 + +### 语法 + +``` +cut(选项)(参数) +``` + +### 选项 + +``` +-b:仅显示行中指定直接范围的内容; +-c:仅显示行中指定范围的字符; +-d:指定字段的分隔符,默认的字段分隔符为“TAB”; +-f:显示指定字段的内容; +-n:与“-b”选项连用,不分割多字节字符; +--complement:补足被选择的字节、字符或字段; +--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; +--help:显示指令的帮助信息; +--version:显示指令的版本信息。 +``` + +### 参数 + +文件:指定要进行内容过滤的文件。 + +### 实例 + +例如有一个学生报表信息,包含No、Name、Mark、Percent: + +``` +[root@localhost text]# cat test.txt +No Name Mark Percent +01 tom 69 91 +02 jack 71 87 +03 alex 68 98 + +``` + +使用 **-f** 选项提取指定字段: + +``` +[root@localhost text]# cut -f 1 test.txt +No +01 +02 +03 +``` + +``` +[root@localhost text]# cut -f2,3 test.txt +Name Mark +tom 69 +jack 71 +alex 68 + +``` + + **--complement** 选项提取指定字段之外的列(打印除了第二列之外的列): + +``` +[root@localhost text]# cut -f2 --complement test.txt +No Mark Percent +01 69 91 +02 71 87 +03 68 98 + +``` + +使用 **-d** 选项指定字段分隔符: + +``` +[root@localhost text]# cat test2.txt +No;Name;Mark;Percent +01;tom;69;91 +02;jack;71;87 +03;alex;68;98 +``` + +``` +[root@localhost text]# cut -f2 -d";" test2.txt +Name +tom +jack +alex + +``` + +### 指定字段的字符或者字节范围 + +cut命令可以将一串字符作为列来显示,字符字段的记法: + +* **N-** :从第N个字节、字符、字段到结尾; +* **N-M** :从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段; +* **-M** :从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。 + +上面是记法,结合下面选项将摸个范围的字节、字符指定为字段: + +* **-b** 表示字节; +* **-c** 表示字符; +* **-f** 表示定义字段。 + + **示例** + +``` +[root@localhost text]# cat test.txt +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +``` + +打印第1个到第3个字符: + +``` +[root@localhost text]# cut -c1-3 test.txt +abc +abc +abc +abc +abc + +``` + +打印前2个字符: + +``` +[root@localhost text]# cut -c-2 test.txt +ab +ab +ab +ab +ab + +``` + +打印从第5个字符开始到结尾: + +``` +[root@localhost text]# cut -c5- test.txt +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +``` + +## head + +在屏幕上显示指定文件的开头若干行 + +### 补充说明 + +**head命令** 用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。 + +### 语法 + +``` +head(选项)(参数) +``` + +### 选项 + +``` +-n<数字>:指定显示头部内容的行数; +-c<字符数>:指定显示头部内容的字符数; +-v:总是显示文件名的头信息; +-q:不显示文件名的头信息。 +``` + +### 参数 + +文件列表:指定显示头部内容的文件列表。 + +## tail + +在屏幕上显示指定文件的末尾若干行 + +### 补充说明 + +**tail命令** 用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 + +注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。 + +### 语法 + +``` +tail(选项)(参数) +``` + +### 选项 + +``` +--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用; +-c或——bytes=:输出文件尾部的N(N为整数)个字节内容; +-f或;--follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效; +-F:与选项“-follow=name”和“--retry"连用时功能相同; +-n或——line=:输出文件的尾部N(N位数字)行内容。 +--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令; +-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名; +-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数; +-v或——verbose:当有多个文件参数时,总是输出各个文件名; +--help:显示指令的帮助信息; +--version:显示指令的版本信息。 +``` + +### 参数 + +文件列表:指定要显示尾部内容的文件列表。 + +### 实例 + +``` +tail file (显示文件file的最后10行) +tail -n +20 file (显示文件file的内容,从第20行至文件末尾) +tail -c 10 file (显示文件file的最后10个字符) +``` + +## more + +显示文件内容,每次显示一屏 + +### 补充说明 + +**more命令** 是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。 + +该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答: + +* 按Space键:显示文本的下一屏内容。 +* 按Enier键:只显示文本的下一行内容。 +* 按斜线符`|`:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。 +* 按H键:显示帮助屏,该屏上有相关的帮助信息。 +* 按B键:显示上一屏内容。 +* 按Q键:退出rnore命令。 + +### 语法 + +``` +more(语法)(参数) +``` + +### 选项 + +``` +-<数字>:指定每屏显示的行数; +-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”; +-c:不进行滚屏操作。每次刷新这个屏幕; +-s:将多个空行压缩成一行显示; +-u:禁止下划线; ++<数字>:从指定数字的行开始显示。 +``` + +### 参数 + +文件:指定分页显示内容的文件。 + +### 实例 + +显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。 + +``` +more -dc file +``` + +显示文件file的内容,每10行显示一次,而且在显示之前先清屏。 + +``` +more -c -10 file +``` + +## less + +分屏上下翻页浏览文件内容 + +### 补充说明 + +**less命令** 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。 + +### 语法 + +``` +less(选项)(参数) +``` + +### 选项 + +``` +-e:文件内容显示完毕后,自动退出; +-f:强制显示文件; +-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度; +-l:搜索时忽略大小写的差异; +-N:每一行行首显示行号; +-s:将连续多个空行压缩成一行显示; +-S:在单行显示较长的内容,而不换行显示; +-x<数字>:将TAB字符显示为指定个数的空格字符。 +``` + +### 参数 + +文件:指定要分屏显示内容的文件。 + +## 实例 + +```bash +sudo less /var/log/shadowsocks.log +``` \ No newline at end of file diff --git a/docs/linux/commands/文件目录管理/文件压缩与解压.md b/docs/linux/commands/文件目录管理/文件压缩与解压.md new file mode 100644 index 0000000..2afbcf4 --- /dev/null +++ b/docs/linux/commands/文件目录管理/文件压缩与解压.md @@ -0,0 +1,530 @@ +--- +title: linux 常用命令-文件压缩与解压 +date: 2018/02/27 +categories: +- linux +tags: +- linux +- command +--- + + + +- [linux 常用命令-文件压缩与解压](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E6%96%87%E4%BB%B6%E5%8E%8B%E7%BC%A9%E4%B8%8E%E8%A7%A3%E5%8E%8B) + - [tar](#tar) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [zip格式](#zip%E6%A0%BC%E5%BC%8F) + - [tar格式(该格式仅仅打包,不压缩)](#tar%E6%A0%BC%E5%BC%8F%EF%BC%88%E8%AF%A5%E6%A0%BC%E5%BC%8F%E4%BB%85%E4%BB%85%E6%89%93%E5%8C%85%EF%BC%8C%E4%B8%8D%E5%8E%8B%E7%BC%A9%EF%BC%89) + - [tar.gz格式](#targz%E6%A0%BC%E5%BC%8F) + - [tar.bz2格式](#tarbz2%E6%A0%BC%E5%BC%8F) + - [tar.xz格式](#tarxz%E6%A0%BC%E5%BC%8F) + - [tar.Z格式(已过时)](#tarz%E6%A0%BC%E5%BC%8F%EF%BC%88%E5%B7%B2%E8%BF%87%E6%97%B6%EF%BC%89) + - [jar格式](#jar%E6%A0%BC%E5%BC%8F) + - [7z格式](#7z%E6%A0%BC%E5%BC%8F) + - [其它例子](#%E5%85%B6%E5%AE%83%E4%BE%8B%E5%AD%90) + - [zip](#zip) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [问题解决](#%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3) + - [unzip](#unzip) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [gzip](#gzip) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + + + +# linux 常用命令-文件压缩与解压 + +## tar + +Linux下的归档使用工具,用来打包和备份。 + +### 补充说明 + +**tar命令** 可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。 + +首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。 + +为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。 + +### 语法 + +``` +tar(选项)(参数) +``` + +### 选项 + +``` +-A或--catenate:新增文件到以存在的备份文件; +-B:设置区块大小; +-c或--create:建立新的备份文件; +-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 +-d:记录文件的差别; +-x或--extract或--get:从备份文件中还原文件; +-t或--list:列出备份文件的内容; +-z或--gzip或--ungzip:通过gzip指令处理备份文件; +-Z或--compress或--uncompress:通过compress指令处理备份文件; +-f<备份文件>或--file=<备份文件>:指定备份文件; +-v或--verbose:显示指令执行过程; +-r:添加文件到已经压缩的文件; +-u:添加改变了和现有的文件到已经存在的压缩文件; +-j:支持bzip2解压文件; +-v:显示操作过程; +-l:文件系统边界设置; +-k:保留原有文件不覆盖; +-m:保留文件不被覆盖; +-w:确认压缩文件的正确性; +-p或--same-permissions:用原来的文件权限还原文件; +-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号; +-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里; +--exclude=<范本样式>:排除符合范本样式的文件。 +``` + +### 参数 + +文件或目录:指定要打包的文件或目录列表。 + +### 实例 + +```bash +- z:有gzip属性的 +- j:有bz2属性的 +- Z:有compress属性的 +- v:显示所有过程 +- O:将文件解开到标准输出 +``` + +下面的参数-f是必须的 + +-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 + +```bash +tar -cf all.tar *.jpg +# 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 + +tar -rf all.tar *.gif +# 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 + +tar -uf all.tar logo.gif +# 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 + +tar -tf all.tar +# 这条命令是列出all.tar包中所有文件,-t是列出文件的意思 +``` + +```bash +tar -cfv archive.tar foo bar # 从文件foo和bar创建archive.tar。 +tar -tvf archive.tar # 详细列出archive.tar中的所有文件。 +tar -xf archive.tar # 从archive.tar提取所有文件。 +``` + +#### zip格式 + +压缩: zip -r [目标文件名].zip [原文件/目录名] +解压: unzip [原文件名].zip +注:-r参数代表递归 + +#### tar格式(该格式仅仅打包,不压缩) + +打包:tar -cvf [目标文件名].tar [原文件名/目录名] +解包:tar -xvf [原文件名].tar +注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。 + +#### tar.gz格式 + +方式一:利用前面已经打包好的tar文件,直接用压缩命令。 + +压缩:gzip [原文件名].tar +解压:gunzip [原文件名].tar.gz + +方式二:一次性打包并压缩、解压并解包 + +打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名] +解压并解包: tar -zxvf [原文件名].tar.gz +注:z代表用gzip算法来压缩/解压。 + +#### tar.bz2格式 + +方式一:利用已经打包好的tar文件,直接执行压缩命令: + +压缩:bzip2 [原文件名].tar +解压:bunzip2 [原文件名].tar.bz2 +方式二:一次性打包并压缩、解压并解包 + +打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] +解压并解包: tar -jxvf [原文件名].tar.bz2 +注:小写j代表用bzip2算法来压缩/解压。 + +#### tar.xz格式 + +方式一:利用已经打包好的tar文件,直接用压缩命令: + +压缩:xz [原文件名].tar +解压:unxz [原文件名].tar.xz +方式二:一次性打包并压缩、解压并解包 + +打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] +解压并解包: tar -Jxvf [原文件名].tar.xz +注:大写J代表用xz算法来压缩/解压。 + +#### tar.Z格式(已过时) + +方式一:利用已经打包好的tar文件,直接用压缩命令: + +压缩:compress [原文件名].tar +解压:uncompress [原文件名].tar.Z +方式二:一次性打包并压缩、解压并解包 + +打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名] +解压并解包: tar -Zxvf [原文件名].tar.Z +注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。 + +#### jar格式 + +压缩:jar -cvf [目标文件名].jar [原文件名/目录名] +解压:jar -xvf [原文件名].jar +注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下: + +Manifest-Version: 1.0 +Created-By: 1.6.0_27 (Sun Microsystems Inc.) +Main-class: the_name_of_the_main_class_should_be_put_here +然后用如下命令打包: + +jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名] +这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。 + +#### 7z格式 + +压缩:7z a [目标文件名].7z [原文件名/目录名] +解压:7z x [原文件名].7z +注:这个7z解压命令支持rar格式,即: + +7z x [原文件名].rar + +#### 其它例子 + + **将文件全部打包成tar包** : + +``` +tar -cvf log.tar log2012.log 仅打包,不压缩! +tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩 +tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩 +``` + +在选项`f`之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加`z`选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加`j`选项,则以.tar.bz2来作为tar包名。 + + **查阅上述tar包内有哪些文件** : + +``` +tar -ztvf log.tar.gz +``` + +由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上`z`这个选项了。 + + **将tar包解压缩** : + +``` +tar -zxvf /opt/soft/test/log.tar.gz +``` + +在预设的情况下,我们可以将压缩档在任何地方解开的 + + **只将tar内的部分文件解压出来** : + +``` +tar -zxvf /opt/soft/test/log30.tar.gz log2013.log +``` + +我可以透过`tar -ztvf`来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件! + + **文件备份下来,并且保存其权限** : + +``` +tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log +``` + +这个`-p`的属性是很重要的,尤其是当您要保留原本文件的属性时。 + + **在文件夹当中,比某个日期新的文件才备份** : + +``` +tar -N "2012/11/13" -zcvf log17.tar.gz test +``` + + **备份文件夹内容是排除部分文件:** + +``` +tar --exclude scf/service -zcvf scf.tar.gz scf/* +``` + + **其实最简单的使用 tar 就只要记忆底下的方式即可:** + +``` +压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 +查 询:tar -jtv -f filename.tar.bz2 +解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录 +``` + +## zip + +可以用来解压缩文件 + +### 补充说明 + +**zip命令** 可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 + +### 语法 + +``` +zip(选项)(参数) +``` + +### 选项 + +``` +-A:调整可执行的自动解压缩文件; +-b<工作目录>:指定暂时存放文件的目录; +-c:替每个被压缩的文件加上注释; +-d:从压缩文件内删除指定的文件; +-D:压缩文件内不建立目录名称; +-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中; +-F:尝试修复已损坏的压缩文件; +-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件; +-h:在线帮助; +-i<范本样式>:只压缩符合条件的文件; +-j:只保存文件名称及其内容,而不存放任何目录名称; +-J:删除压缩文件前面不必要的数据; +-k:使用MS-DOS兼容格式的文件名称; +-l:压缩文件时,把LF字符置换成LF+CR字符; +-ll:压缩文件时,把LF+cp字符置换成LF字符; +-L:显示版权信息; +-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中; +-n<字尾字符串>:不压缩具有特定字尾字符串的文件; +-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同; +-q:不显示指令执行过程; +-r:递归处理,将指定目录下的所有文件和子目录一并处理; +-S:包含系统和隐藏文件; +-t<日期时间>:把压缩文件的日期设成指定的日期; +-T:检查备份文件内的每个文件是否正确无误; +-u:更换较新的文件到压缩文件内; +-v:显示指令执行过程或显示版本信息; +-V:保存VMS操作系统的文件属性; +-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效; +-x<范本样式>:压缩时排除符合条件的文件; +-X:不保存额外的文件属性; +-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效; +-z:替压缩文件加上注释; +-$:保存第一个被压缩文件所在磁盘的卷册名称; +-<压缩效率>:压缩效率是一个介于1~9的数值。 +``` + +### 参数 + +* zip压缩包:指定要创建的zip压缩包; +* 文件列表:指定要压缩的文件列表。 + +### 实例 + +将`/home/Blinux/html/`这个目录下所有文件和文件夹打包为当前目录下的html.zip: + +``` +zip -q -r html.zip /home/Blinux/html +``` + +上面的命令操作是将绝对地址的文件及文件夹进行压缩,以下给出压缩相对路径目录,比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果: + +``` +zip -q -r html.zip html +``` + +比如现在我的html目录下,我操作的zip压缩命令是: + +``` +zip -q -r html.zip * +``` + +### 问题解决 + +CentOS7中命令找不到 + +``` +-Bash: Unzip: Command Not Found +``` + +解决方法 + +```bash +yum install -y unzip zip +``` + +## unzip + +用于解压缩由zip命令压缩的压缩包 + +### 补充说明 + +**unzip命令** 用于解压缩由zip命令压缩的“.zip”压缩包。 + +### 语法 + +``` +unzip(选项)(参数) +``` + +### 选项 + +``` +-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换; +-f:更新现有的文件; +-l:显示压缩文件内所包含的文件; +-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换; +-t:检查压缩文件是否正确; +-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中; +-v:执行时显示详细的信息; +-z:仅显示压缩文件的备注文字; +-a:对文本文件进行必要的字符转换; +-b:不要对文本文件进行字符转换; +-C:压缩文件中的文件名称区分大小写; +-j:不处理压缩文件中原有的目录路径; +-L:将压缩文件中的全部文件名改为小写; +-M:将输出结果送到more程序处理; +-n:解压缩时不要覆盖原有的文件; +-o:不必先询问用户,unzip执行后覆盖原有的文件; +-P<密码>:使用zip的密码选项; +-q:执行时不显示任何信息; +-s:将文件名中的空白字符转换为底线字符; +-V:保留VMS的文件版本信息; +-X:解压缩时同时回存文件原来的UID/GID; +-d<目录>:指定文件解压缩后所要存储的目录; +-x<文件>:指定不要处理.zip压缩文件中的哪些文件; +-Z:unzip-Z等于执行zipinfo指令。 +``` + +### 参数 + +压缩包:指定要解压的“.zip”压缩包。 + +### 实例 + +将压缩文件text.zip在当前目录下解压缩。 + +``` +unzip test.zip +``` + +将压缩文件text.zip在指定目录`/tmp`下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。 + +``` +unzip -n test.zip -d /tmp +``` + +查看压缩文件目录,但不解压。 + +``` +unzip -v test.zip +``` + +将压缩文件test.zip在指定目录`/tmp`下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件。 + +``` +unzip -o test.zip -d tmp/ +``` + +## gzip + +用来压缩文件 + +### 补充说明 + +**gzip命令** 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 + +gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 + +### 语法 + +``` +gzip(选项)(参数) +``` + +### 选项 + +``` +-a或——ascii:使用ASCII文字模式; +-d或--decompress或----uncompress:解开压缩文件; +-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接; +-h或——help:在线帮助; +-l或——list:列出压缩文件的相关信息; +-L或——license:显示版本与版权信息; +-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记; +-N或——name:压缩文件时,保存原来的文件名称及时间戳记; +-q或——quiet:不显示警告信息; +-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理; +-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串; +-t或——test:测试压缩文件是否正确无误; +-v或——verbose:显示指令执行过程; +-V或——version:显示版本信息; +-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高; +--best:此参数的效果和指定“-9”参数相同; +--fast:此参数的效果和指定“-1”参数相同。 +-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。 +``` + +### 参数 + +文件列表:指定要压缩的文件列表。 + +### 实例 + +把test6目录下的每个文件压缩成.gz文件 + +``` +gzip * +``` + +把上例中每个压缩的文件解压,并列出详细的信息 + +``` +gzip -dv * +``` + +详细显示例1中每个压缩的文件的信息,并不解压 + +``` +gzip -l * +``` + +压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz + +``` +gzip -r log.tar +``` + +递归的压缩目录 + +``` +gzip -rv test6 +``` + +这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。 + +递归地解压目录 + +``` +gzip -dr test6 +``` diff --git a/docs/linux/commands/文件目录管理/文件处理.md b/docs/linux/commands/文件目录管理/文件处理.md new file mode 100644 index 0000000..bc3fce8 --- /dev/null +++ b/docs/linux/commands/文件目录管理/文件处理.md @@ -0,0 +1,307 @@ +--- +title: linux 常用命令-文件处理 +date: 2018/02/27 +categories: +- linux +tags: +- linux +- command +--- + + + +- [linux 常用命令-文件处理](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E6%96%87%E4%BB%B6%E5%A4%84%E7%90%86) + - [touch](#touch) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [ln](#ln) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [扩展知识](#%E6%89%A9%E5%B1%95%E7%9F%A5%E8%AF%86) + - [硬链接](#%E7%A1%AC%E9%93%BE%E6%8E%A5) + - [符号链接](#%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5) + - [cat](#cat) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [rename](#rename) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + + + +# linux 常用命令-文件处理 + +## touch + +创建新的空文件 + +### 补充说明 + +**touch命令** 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。 + +### 语法 + +``` +touch(选项)(参数) +``` + +### 选项 + +``` +-a:或--time=atime或--time=access或--time=use 只更改存取时间; +-c:或--no-create 不建立任何文件; +-d:<时间日期> 使用指定的日期时间,而非现在的时间; +-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题; +-m:或--time=mtime或--time=modify 只更该变动时间; +-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同; +-t:<日期时间> 使用指定的日期时间,而非现在的时间; +--help:在线帮助; +--version:显示版本信息。 +``` + +### 参数 + +文件:指定要设置时间属性的文件列表。 + +### 实例 + +``` +touch ex2 +``` + +在当前目录下建立一个空文件ex2,然后,利用`ls -l`命令可以发现文件ex2的大小为0,表示它是空文件。 + +## ln + +用来为文件创件连接 + +### 补充说明 + +**ln命令** 用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。 + +注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。 + +### 语法 + +``` +ln [选项]... [-T] 目标 链接名 (第一种格式) + 或:ln [选项]... 目标 (第二种格式) + 或:ln [选项]... 目标... 目录 (第三种格式) + 或:ln [选项]... -t 目录 目标... (第四种格式) +``` + +### 选项 + +``` + --backup[=CONTROL] 为每个已存在的目标文件创建备份文件 +-b 类似--backup,但不接受任何参数 +-d, -F, --directory 创建指向目录的硬链接(只适用于超级用户) +-f, --force 强行删除任何已存在的目标文件 +-i, --interactive 覆盖既有文件之前先询问用户; +-L, --logical 取消引用作为符号链接的目标 +-n, --no-dereference 把符号连接的目的目录视为一般文件; +-P, --physical 直接将硬链接到符号链接 +-r, --relative 创建相对于链接位置的符号链接 +-s, --symbolic 对源文件建立符号连接,而非硬连接; +-S, --suffix=SUFFIX 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它; +-t, --target-directory=DIRECTORY 指定要在其中创建链接的DIRECTORY +-T, --no-target-directory 将“LINK_NAME”视为常规文件 +-v, --verbose 打印每个链接文件的名称 + --help 显示此帮助信息并退出 + --version 显示版本信息并退出 +``` + +### 参数 + +* 源文件:指定连接的源文件。如果使用`-s`选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件; +* 目标文件:指定源文件的目标连接文件。 + +```bash +none, off # 不进行备份(即使使用了--backup 选项) +numbered, t # 备份文件加上数字进行排序 +existing, nil # 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份 +simple, never # 永远使用普通方式备份 +``` + +### 实例 + +将目录`/usr/mengqc/mub1`下的文件m2.c链接到目录`/usr/liu`下的文件a2.c + +``` +cd /usr/mengqc +ln /mub1/m2.c /usr/liu/a2.c +``` + +在执行ln命令之前,目录`/usr/liu`中不存在a2.c文件。执行ln之后,在`/usr/liu`目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用`ls -l`命令可以看到链接数的变化。 + +在目录`/usr/liu`下建立一个符号链接文件abc,使它指向目录`/usr/mengqc/mub1` + +``` +ln -s /usr/mengqc/mub1 /usr/liu/abc +``` + +执行该命令后,`/usr/mengqc/mub1`代表的路径将存放在名为`/usr/liu/abc`的文件中。 + +### 扩展知识 + +Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。 + +文件链接有两种形式,即硬链接和符号链接。 + +### 硬链接 + +建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。如图所示的m2.c文件就在目录mub1和liu中都建立了目录项。 + +创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件的链接数为l。 + +在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。 + +对硬链接有如下限制: + +* 不能对目录文件做硬链接。 +* 不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。 + +### 符号链接 + +符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件(如图中的abc文件),其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。 + +!符号连接 + +与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。 + +符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。 + +用`ln -s`命令建立符号链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行符号链接。而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接。 + +符号链接保持了链接与源文件或目录之间的区别: + +* 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据。 +* 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。 +* 符号链接的大小是其链接文件的路径名中的字节数。 +* 当用`ln -s`命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录,例如`lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file`其中,表示“文件大小”的数字“14”恰好说明源文件名`original_file`由14个字符构成。 + +## cat + +连接文件并打印到标准输出设备上 + +### 补充说明 + +**cat命令** 连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。 + +注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 + +### 语法 + +``` +cat(选项)(参数) +``` + +### 选项 + +``` +-n或-number:有1开始对所有输出的行数编号; +-b或--number-nonblank:和-n相似,只不过对于空白行不编号; +-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; +-A:显示不可打印字符,行尾显示“$”; +-e:等价于"-vE"选项; +-t:等价于"-vT"选项; +``` + +### 参数 + +文件列表:指定要连接的文件列表。 + +### 实例 + +设ml和m2是当前目录下的两个文件 + +``` +cat m1 (在屏幕上显示文件ml的内容) +cat m1 m2 (同时显示文件ml和m2的内容) +cat m1 m2 > file (将文件ml和m2合并后放入文件file中) +``` + +## rename + +用字符串替换的方式批量改变文件名 + +### 补充说明 + +**rename命令** 用字符串替换的方式批量改变文件名。 + +### 语法 + +``` +rename(参数) +``` + +### 参数 + +``` +原字符串:将文件名需要替换的字符串; +目标字符串:将文件名中含有的原字符替换成目标字符串; +文件:指定要改变文件名的文件列表。 +``` + +### 实例 + +将main1.c重命名为main.c + +``` +rename main1.c main.c main1.c +``` + + **rename支持通配符** + +``` +? 可替代单个字符 +* 可替代多个字符 +[charset] 可替代charset集中的任意单个字符 +``` + +文件夹中有这些文件foo1, ..., foo9, foo10, ..., foo278 + +如果使用`rename foo foo0 foo?`,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。 + +如果使用`rename foo foo0 foo??`,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。 + +如果使用`rename foo foo0 foo*`,foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。 + +如果使用`rename foo0 foo foo0[2]*`,从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。 + + **rename支持正则表达式** + +字母的替换 + +``` +rename "s/AA/aa/" * //把文件名中的AA替换成aa +``` + +修改文件的后缀 + +``` +rename "s//.html//.php/" * //把.html 后缀的改成 .php后缀 +``` + +批量添加文件后缀 + +``` +rename "s/$//.txt/" * //把所有的文件名都以txt结尾 +``` + +批量删除文件名 + +``` +rename "s//.txt//" * //把所有以.txt结尾的文件名的.txt删掉 +``` diff --git a/docs/linux/commands/文件目录管理/文件权限属性设置.md b/docs/linux/commands/文件目录管理/文件权限属性设置.md new file mode 100644 index 0000000..304b0a7 --- /dev/null +++ b/docs/linux/commands/文件目录管理/文件权限属性设置.md @@ -0,0 +1,321 @@ +--- +title: linux 常用命令-文件权限属性设置 +date: 2018/02/27 +categories: +- linux +tags: +- linux +- command +--- + + + +- [linux 命令-文件权限属性设置](#linux-%E5%91%BD%E4%BB%A4-%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E5%B1%9E%E6%80%A7%E8%AE%BE%E7%BD%AE) + - [chmod](#chmod) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [知识扩展和实例](#%E7%9F%A5%E8%AF%86%E6%89%A9%E5%B1%95%E5%92%8C%E5%AE%9E%E4%BE%8B) + - [chown](#chown) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [stat](#stat) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [file](#file) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + + + +# linux 常用命令-文件权限属性设置 + +## chmod + +用来变更文件或目录的权限 + +### 补充说明 + +**chmod命令** 用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。 + +权限范围的表示法如下: + +`u` User,即文件或目录的拥有者; +`g` Group,即文件或目录的所属群组; +`o` Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; +`a` All,即全部的用户,包含拥有者,所属群组以及其他用户; +`r` 读取权限,数字代号为“4”; +`w` 写入权限,数字代号为“2”; +`x` 执行或切换权限,数字代号为“1”; +`-` 不具任何权限,数字代号为“0”; +`s` 特殊功能说明:变更文件或目录的权限。 + +### 语法 + +``` +chmod(选项)(参数) +``` + +### 选项 + +```bash +u # 操作对象简称,用户user,文件或目录的所有者。 +g # 操作对象简称,同组用户group,文件或目录所属群组 +o # 操作对象简称,其它用户others +a # 操作对象简称,所有用户all,系统默认使用此项 ++ # 权限操作符,添加某些权限 +- # 权限操作符,取消某些权限 += # 权限操作符,设置文件的权限为给定的权限 +r # 权限设定(英文),表示可读权限 +w # 权限设定(英文),表示可写权限 +x # 权限设定(英文),表示可执行权限 +- # 权限设定(英文字符),表示没有权限 +X # 权限设定,如果目标文件是可执行文件或目录,可给其设置可执行权限 +s # 权限设定,设置权限suid和sgid,使用权限组合“u+s”设定文件的用户的ID位,“g+s”设置组ID位 +t # 权限设定,只有目录或文件的所有者才可以删除目录下的文件 +-c或——changes # 效果类似“-v”参数,但仅回报更改的部分,如果文件权限已经改变,显示其操作信息; +-f或--quiet或——silent # 操作过程中不显示任何错误信息; +-R或——recursive # 递归处理,将指令目录下的所有文件及子目录一并处理; +-v或——verbose # 显示命令运行时的详细执行过程; +--reference=<参考文件或目录> # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; +<权限范围>+<权限设置> # 开启权限范围的文件或目录的该选项权限设置; +<权限范围>-<权限设置> # 关闭权限范围的文件或目录的该选项权限设置; +<权限范围>=<权限设置> # 指定权限范围的文件或目录的该选项权限设置; +--help # 显示帮助信息 +--version # 显示版本信息 +``` + +### 参数 + +权限模式:指定文件的权限模式; +文件:要改变权限的文件。 + +### 知识扩展和实例 + +Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在`/etc/passwd`文件中。每个人的密码则是记录在`/etc/shadow`文件下。 此外,所有的组群名称记录在`/etc/group`內! + +linux文件的用户权限的分析图 + +```bash + -rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules +# ↑╰┬╯╰┬╯╰┬╯ +# ┆ ┆ ┆ ╰┈ 0 其他人 +# ┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组 +# ┆ ╰┈┈┈┈ u 属组 +# ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件 +``` + +例:rwx rw- r-- + +r=读取属性  //值=4 +w=写入属性  //值=2 +x=执行属性  //值=1 + +```bash +chmod u+x,g+w f01  # 为文件f01设置自己可以执行,组员可以写入的权限 +chmod u=rwx,g=rw,o=r f01 +chmod 764 f01 +chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性 +``` + +文件的属主和属组属性设置 + +```bash +chown user:market f01  # 把文件f01给uesr,添加到market组 +ll -d f1 查看目录f1的属性 +``` + + +将`/home/wwwroot/`里的所有文件和文件夹设置为`755`权限 + +(1)直接指定路径修改 + +```bash +chmod -R 755 /home/wwwroot/* +``` + +(2)手动进入该目录修改权限(并显示详细过程) + + +```bash +cd /home/wwwroot +chmod -Rv 755 * #注意:“*”表示通配符,指的是所有文件和文件 +sudo chmod o+rw /shared #设置文件夹权限以保证其余用户可以访问它。 +``` + +## chown + +用来变更文件或目录的拥有者或所属群组 + +### 补充说明 + +**chown命令** 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。 + +只有文件主和超级用户才可以便用该命令。 + +### 语法 + +``` +chown(选项)(参数) +``` + +### 选项 + +``` +-c或——changes:效果类似“-v”参数,但仅回报更改的部分; +-f或--quite或——silent:不显示错误信息; +-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件; +-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理; +-v或——version:显示指令执行过程; +--dereference:效果和“-h”参数相同; +--help:在线帮助; +--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同; +--version:显示版本信息。 +``` + +### 参数 + +用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者; +文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。 + +### 实例 + +将目录`/usr/meng`及其下面的所有文件、子目录的文件主改成 liu: + +``` +chown -R liu /usr/meng +``` + +## stat + +用于显示文件的状态信息 + +### 补充说明 + +**stat命令** 用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。 + +### 语法 + +``` +stat(选项)(参数) +``` + +### 选项 + +``` +-L:支持符号连接; +-f:显示文件系统状态而非文件状态; +-t:以简洁方式输出信息; +--help:显示指令的帮助信息; +--version:显示指令的版本信息。 +``` + +### 参数 + +文件:指定要显示信息的普通文件或者文件系统对应的设备文件名。 + +### 实例 + +``` +[root@localhost ~]# ls -l myfile +-rw-r--r-- 1 root root 0 2010-10-09 myfile + +[root@localhost ~]# stat myfile +file: “myfile” +Size: 0 Blocks: 8 IO Block: 4096 一般空文件 +Device: fd00h/64768d Inode: 194805815 Links: 1 +Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) +Access: 2010-12-12 12:22:35.000000000 +0800 +Modify: 2010-10-09 20:44:21.000000000 +0800 +Change: 2010-10-09 20:44:21.000000000 +0800 + +[root@localhost ~]# stat -f myfile +File: "myfile" +id: 0 Namelen: 255 type: ext2/ext3 +Block size: 4096 Fundamental block size: 4096 +Blocks: Total: 241555461 free: 232910771 Available: 220442547 +Inodes: Total: 249364480 Free: 249139691 + +[root@localhost ~]# stat -t myfile +myfile 0 8 81a4 0 0 fd00 194805815 1 0 0 1292127755 1286628261 1286628261 4096 + +``` + +## file + +用来探测给定文件的类型。 + +### 补充说明 + +**file命令** 用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。 + +### 语法 + +``` +file(选项)(参数) +``` + +### 选项 + +``` +-b:列出辨识结果时,不显示文件名称; +-c:详细显示指令执行过程,便于排错或分析程序执行的情形; +-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称; +-L:直接显示符号连接所指向的文件类别; +-m<魔法数字文件>:指定魔法数字文件; +-v:显示版本信息; +-z:尝试去解读压缩文件的内容。 +``` + +### 参数 + +文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。 + +### 实例 + +显示文件类型 + +``` +[root@localhost ~]# file install.log +install.log: UTF-8 Unicode text + +[root@localhost ~]# file -b install.log <== 不显示文件名称 +UTF-8 Unicode text + +[root@localhost ~]# file -i install.log <== 显示MIME类别。 +install.log: text/plain; charset=utf-8 + +[root@localhost ~]# file -b -i install.log +text/plain; charset=utf-8 + +``` + +显示符号链接的文件类型 + +``` +[root@localhost ~]# ls -l /var/mail +lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail + +[root@localhost ~]# file /var/mail +/var/mail: symbolic link to `spool/mail' + +[root@localhost ~]# file -L /var/mail +/var/mail: directory + +[root@localhost ~]# file /var/spool/mail +/var/spool/mail: directory + +[root@localhost ~]# file -L /var/spool/mail +/var/spool/mail: directory + +``` diff --git a/docs/linux/commands/文件目录管理/文件查找和比较.md b/docs/linux/commands/文件目录管理/文件查找和比较.md new file mode 100644 index 0000000..e039b93 --- /dev/null +++ b/docs/linux/commands/文件目录管理/文件查找和比较.md @@ -0,0 +1,667 @@ +--- +title: linux 常用命令-文件查找和比较 +date: 2018/02/27 +categories: +- linux +tags: +- linux +- command +--- + + + +- [linux 常用命令-文件查找和比较](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E6%96%87%E4%BB%B6%E6%9F%A5%E6%89%BE%E5%92%8C%E6%AF%94%E8%BE%83) + - [diff](#diff) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [locate](#locate) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [which](#which) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [find](#find) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + - [根据文件或者正则表达式进行匹配](#%E6%A0%B9%E6%8D%AE%E6%96%87%E4%BB%B6%E6%88%96%E8%80%85%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%BF%9B%E8%A1%8C%E5%8C%B9%E9%85%8D) + - [否定参数](#%E5%90%A6%E5%AE%9A%E5%8F%82%E6%95%B0) + - [根据文件类型进行搜索](#%E6%A0%B9%E6%8D%AE%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B%E8%BF%9B%E8%A1%8C%E6%90%9C%E7%B4%A2) + - [基于目录深度搜索](#%E5%9F%BA%E4%BA%8E%E7%9B%AE%E5%BD%95%E6%B7%B1%E5%BA%A6%E6%90%9C%E7%B4%A2) + - [根据文件时间戳进行搜索](#%E6%A0%B9%E6%8D%AE%E6%96%87%E4%BB%B6%E6%97%B6%E9%97%B4%E6%88%B3%E8%BF%9B%E8%A1%8C%E6%90%9C%E7%B4%A2) + - [根据文件大小进行匹配](#%E6%A0%B9%E6%8D%AE%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E8%BF%9B%E8%A1%8C%E5%8C%B9%E9%85%8D) + - [删除匹配文件](#%E5%88%A0%E9%99%A4%E5%8C%B9%E9%85%8D%E6%96%87%E4%BB%B6) + - [根据文件权限/所有权进行匹配](#%E6%A0%B9%E6%8D%AE%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E6%89%80%E6%9C%89%E6%9D%83%E8%BF%9B%E8%A1%8C%E5%8C%B9%E9%85%8D) + - [借助`-exec`选项与其他命令结合使用](#%E5%80%9F%E5%8A%A9-exec%E9%80%89%E9%A1%B9%E4%B8%8E%E5%85%B6%E4%BB%96%E5%91%BD%E4%BB%A4%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8) + - [搜索但跳出指定的目录](#%E6%90%9C%E7%B4%A2%E4%BD%86%E8%B7%B3%E5%87%BA%E6%8C%87%E5%AE%9A%E7%9A%84%E7%9B%AE%E5%BD%95) + - [find其他技巧收集](#find%E5%85%B6%E4%BB%96%E6%8A%80%E5%B7%A7%E6%94%B6%E9%9B%86) + - [whereis](#whereis) + - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) + - [语法](#%E8%AF%AD%E6%B3%95) + - [选项](#%E9%80%89%E9%A1%B9) + - [参数](#%E5%8F%82%E6%95%B0) + - [实例](#%E5%AE%9E%E4%BE%8B) + + + +# linux 常用命令-文件查找和比较 + +## diff + +比较给定的两个文件的不同 + +### 补充说明 + +**diff命令** 在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。 + +### 语法 + +``` +diff(选项)(参数) +``` + +### 选项 + +``` +-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用; +-a或——text:diff预设只会逐行比较文本文件; +-b或--ignore-space-change:不检查空格字符的不同; +-B或--ignore-blank-lines:不检查空白行; +-c:显示全部内容,并标出不同之处; +-C<行数>或--context<行数>:与执行“-c-<行数>”指令相同; +-d或——minimal:使用不同的演算法,以小的单位来做比较; +-D<巨集名称>或ifdef<巨集名称>:此参数的输出格式可用于前置处理器巨集; +-e或——ed:此参数的输出格式可用于ed的script文件; +-f或-forward-ed:输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处; +-H或--speed-large-files:比较大文件时,可加快速度; +-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若两个文件在某几行有所不同,而之际航同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异; +-i或--ignore-case:不检查大小写的不同; +-l或——paginate:将结果交由pr程序来分页; +-n或——rcs:将比较结果以RCS的格式来显示; +-N或--new-file:在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录,文件A 若使用-N参数,则diff会将文件A 与一个空白的文件比较; +-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称; +-P或--unidirectional-new-file:与-N类似,但只有当第二个目录包含了第一个目录所没有的文件时,才会将这个文件与空白的文件做比较; +-q或--brief:仅显示有无差异,不显示详细的信息; +-r或——recursive:比较子目录中的文件; +-s或--report-identical-files:若没有发现任何差异,仍然显示信息; +-S<文件>或--starting-file<文件>:在比较目录时,从指定的文件开始比较; +-t或--expand-tabs:在输出时,将tab字符展开; +-T或--initial-tab:在每行前面加上tab字符以便对齐; +-u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同; +-v或——version:显示版本信息; +-w或--ignore-all-space:忽略全部的空格字符; +-W<宽度>或--width<宽度>:在使用-y参数时,指定栏宽; +-x<文件名或目录>或--exclude<文件名或目录>:不比较选项中所指定的文件或目录; +-X<文件>或--exclude-from<文件>;您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件; +-y或--side-by-side:以并列的方式显示文件的异同之处; +--help:显示帮助; +--left-column:在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容; +--suppress-common-lines:在使用-y参数时,仅显示不同之处。 +``` + +### 参数 + +* 文件1:指定要比较的第一个文件; +* 文件2:指定要比较的第二个文件。 + +### 实例 + +将目录`/usr/li`下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令: + +``` +diff /usr/li test.txt #使用diff指令对文件进行比较 +``` + +上面的命令执行后,会将比较后的不同之处以指定的形式列出,如下所示: + +``` +n1 a n3,n4 +n1,n2 d n3 +n1,n2 c n3,n4 +``` + +其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号,"n3"、"n4"表示在文件2中的行号。 + +注意:以上说明指定了两个文件中不同处的行号及其相应的操作。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以<开始的行属于文件1,以>开始的行属于文件2。 + +## locate + +Apache服务器的性能测试工具 + +### 补充说明 + +locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。 + +locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab) + +locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等)来指定范本样式,如指定范本为kcpa*ner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。 + +locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。 + + +### 语法 + +``` +locate [选择参数] [样式] +``` + +### 选项 + +``` +-e 将排除在寻找的范围之外。 +-1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。 +-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。 +-q 安静模式,不会显示任何错误讯息。 +-n 至多显示 n个输出。 +-r 使用正规运算式 做寻找的条件。 +-o 指定资料库存的名称。 +-d 指定资料库的路径 +-h 显示辅助讯息 +-V 显示程式的版本讯息 +``` + +### 实例 + +实例1:查找和pwd相关的所有文件 + +``` +root ~ # locate pwd +/bin/pwd +/etc/.pwd.lock +/sbin/unix_chkpwd +/usr/bin/pwdx +/usr/include/pwd.h +/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py +/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc +/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py +/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc +/usr/lib/syslinux/pwd.c32 +/usr/share/help/C/empathy/irc-join-pwd.page +/usr/share/help/ca/empathy/irc-join-pwd.page +/usr/share/help/cs/empathy/irc-join-pwd.page +/usr/share/help/de/empathy/irc-join-pwd.page +/usr/share/help/el/empathy/irc-join-pwd.page +``` + +实例2: 搜索etc目录下所有以sh开头的文件 + +``` +root ~ # locate /etc/sh +/etc/shadow +/etc/shadow- +/etc/shells +``` + +实例3:搜索etc目录下,所有以m开头的文件 + +``` +root ~ # locate /etc/m +/etc/magic +/etc/magic.mime +/etc/mailcap +/etc/mailcap.order +/etc/manpath.config +/etc/mate-settings-daemon +``` + +## which + +查找并显示给定命令的绝对路径 + +### 补充说明 + +**which命令** 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 + +### 语法 + +``` +which(选项)(参数) +``` + +### 选项 + +``` +-n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名; +-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径; +-w:指定输出时栏位的宽度; +-V:显示版本信息。 +``` + +### 参数 + +指令名:指令名列表。 + +### 实例 + +查找文件、显示命令路径: + +``` +[root@localhost ~]# which pwd +/bin/pwd + +[root@localhost ~]# which adduser +/usr/sbin/adduser +``` + +说明:which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的! + +用 which 去找出 cd + +``` +[root@localhost ~]# which cd +cd: shell built-in command +``` +cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是bash 内建的命令! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的! + +## find + +在指定目录下查找文件 + +### 补充说明 + +**find命令** 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 + +### 语法 + +``` +find(选项)(参数) +``` + +### 选项 + +``` +-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; +-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录; +-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算; +-cmin<分钟>:查找在指定时间之时被更改过的文件或目录; +-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; +-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算; +-daystart:从本日开始计算时间; +-depth:从指定目录下最深层的子目录开始查找; +-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录; +-exec<执行指令>:假设find指令的回传值为True,就执行该指令; +-false:将find指令的回传值皆设为False; +-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件; +-follow:排除符号连接; +-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件; +-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件; +-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件; +-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录; +-gid<群组识别码>:查找符合指定之群组识别码的文件或目录; +-group<群组名称>:查找符合指定之群组名称的文件或目录; +-help或——help:在线帮助; +-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别; +-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别; +-inum:查找符合指定的inode编号的文件或目录; +-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别; +-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别; +-links<连接数目>:查找符合指定的硬连接数目的文件或目录; +-iname<范本样式>:指定字符串作为寻找符号连接的范本样式; +-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出; +-maxdepth<目录层级>:设置最大目录层级; +-mindepth<目录层级>:设置最小目录层级; +-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算; +-mount:此参数的效果和指定“-xdev”相同; +-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算; +-name<范本样式>:指定字符串作为寻找文件或目录的范本样式; +-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; +-nogroup:找出不属于本地主机群组识别码的文件或目录; +-noleaf:不去考虑目录至少需拥有两个硬连接存在; +-nouser:找出不属于本地主机用户识别码的文件或目录; +-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令; +-path<范本样式>:指定字符串作为寻找目录的范本样式; +-perm<权限数值>:查找符合指定的权限数值的文件或目录; +-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; +-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行; +-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定; +-prune:不寻找字符串作为寻找文件或目录的范本样式; +-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式; +-size<文件大小>:查找符合指定的文件大小的文件; +-true:将find指令的回传值皆设为True; +-typ<文件类型>:只寻找符合指定的文件类型的文件; +-uid<用户识别码>:查找符合指定的用户识别码的文件或目录; +-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算; +-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录; +-version或——version:显示版本信息; +-xdev:将范围局限在先行的文件系统中; +-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。 +``` + +### 参数 + +起始目录:查找文件的起始目录。 + +### 实例 + +```bash +# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容 +find . -type f -name "*" | xargs grep "140.206.111.111" +``` + +#### 根据文件或者正则表达式进行匹配 + +列出当前目录及子目录下所有文件和文件夹 + +``` +find . +``` + +在`/home`目录下查找以.txt结尾的文件名 + +``` +find /home -name "*.txt" +``` + +同上,但忽略大小写 + +``` +find /home -iname "*.txt" +``` + +当前目录及子目录下查找所有以.txt和.pdf结尾的文件 + +``` +find . \( -name "*.txt" -o -name "*.pdf" \) + +或 + +find . -name "*.txt" -o -name "*.pdf" +``` + +匹配文件路径或者文件 + +``` +find /usr/ -path "*local*" +``` + +基于正则表达式匹配文件路径 + +``` +find . -regex ".*\(\.txt\|\.pdf\)$" +``` + +同上,但忽略大小写 + +``` +find . -iregex ".*\(\.txt\|\.pdf\)$" +``` + +#### 否定参数 + +找出/home下不是以.txt结尾的文件 + +``` +find /home ! -name "*.txt" +``` + +#### 根据文件类型进行搜索 + +``` +find . -type 类型参数 +``` + +类型参数列表: + +* **f** 普通文件 +* **l** 符号连接 +* **d** 目录 +* **c** 字符设备 +* **b** 块设备 +* **s** 套接字 +* **p** Fifo + +#### 基于目录深度搜索 + +向下最大深度限制为3 + +``` +find . -maxdepth 3 -type f +``` + +搜索出深度距离当前目录至少2个子目录的所有文件 + +``` +find . -mindepth 2 -type f +``` + +#### 根据文件时间戳进行搜索 + +``` +find . -type f 时间戳 +``` + +UNIX/Linux文件系统每个文件都有三种时间戳: + +* **访问时间** (-atime/天,-amin/分钟):用户最近一次访问时间。 +* **修改时间** (-mtime/天,-mmin/分钟):文件最后一次修改时间。 +* **变化时间** (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。 + +搜索最近七天内被访问过的所有文件 + +``` +find . -type f -atime -7 +``` + +搜索恰好在七天前被访问过的所有文件 + +``` +find . -type f -atime 7 +``` + +搜索超过七天内被访问过的所有文件 + +``` +find . -type f -atime +7 +``` + +搜索访问时间超过10分钟的所有文件 + +``` +find . -type f -amin +10 +``` + +找出比file.log修改时间更长的所有文件 + +``` +find . -type f -newer file.log +``` + +#### 根据文件大小进行匹配 + +``` +find . -type f -size 文件大小单元 +``` + +文件大小单元: + +* **b** —— 块(512字节) +* **c** —— 字节 +* **w** —— 字(2字节) +* **k** —— 千字节 +* **M** —— 兆字节 +* **G** —— 吉字节 + +搜索大于10KB的文件 + +``` +find . -type f -size +10k +``` + +搜索小于10KB的文件 + +``` +find . -type f -size -10k +``` + +搜索等于10KB的文件 + +``` +find . -type f -size 10k +``` + +#### 删除匹配文件 + +删除当前目录下所有.txt文件 + +``` +find . -type f -name "*.txt" -delete +``` + +#### 根据文件权限/所有权进行匹配 + +当前目录下搜索出权限为777的文件 + +``` +find . -type f -perm 777 +``` + +找出当前目录下权限不是644的php文件 + +``` +find . -type f -name "*.php" ! -perm 644 +``` + +找出当前目录用户tom拥有的所有文件 + +``` +find . -type f -user tom +``` + +找出当前目录用户组sunk拥有的所有文件 + +``` +find . -type f -group sunk +``` + +#### 借助`-exec`选项与其他命令结合使用 + +找出当前目录下所有root的文件,并把所有权更改为用户tom + +``` +find .-type f -user root -exec chown tom {} \; +``` + +上例中, **{}** 用于与 **-exec** 选项结合使用来匹配所有文件,然后会被替换为相应的文件名。 + +找出自己家目录下所有的.txt文件并删除 + +``` +find $HOME/. -name "*.txt" -ok rm {} \; +``` + +上例中, **-ok** 和 **-exec** 行为一样,不过它会给出提示,是否执行相应的操作。 + +查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中 + +``` +find . -type f -name "*.txt" -exec cat {} \;> all.txt +``` + +将30天前的.log文件移动到old目录中 + +``` +find . -type f -mtime +30 -name "*.log" -exec cp {} old \; +``` + +找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来 + +``` +find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; +``` + +因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令 + +``` +-exec ./text.sh {} \; +``` + +#### 搜索但跳出指定的目录 + +查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk + +``` +find . -path "./sk" -prune -o -name "*.txt" -print +``` + +#### find其他技巧收集 + +要列出所有长度为零的文件 + +``` +find . -empty +``` + +## whereis + +查找二进制程序、代码等相关文件路径 + +### 补充说明 + +**whereis命令** 用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。 + +whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 + +和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 + +### 语法 + +``` +whereis(选项)(参数) +``` + +### 选项 + +``` +-b:只查找二进制文件; +-B<目录>:只在设置的目录下查找二进制文件; +-f:不显示文件名前的路径名称; +-m:只查找说明文件; +-M<目录>:只在设置的目录下查找说明文件; +-s:只查找原始代码文件; +-S<目录>只在设置的目录下查找原始代码文件; +-u:查找不包含指定类型的文件。 +``` + +### 参数 + +指令名:要查找的二进制程序、源文件和man手册页的指令名。 + +### 实例 + +将相关的文件都查找出来 + +``` +[root@localhost ~]# whereis tomcat +tomcat: + +[root@localhost ~]# whereis svn +svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz +``` + +说明:tomcat没安装,找不出来,svn安装找出了很多相关文件 + +只将二进制文件查找出来  + +``` +[root@localhost ~]# whereis -b svn +svn: /usr/bin/svn /usr/local/svn + +[root@localhost ~]# whereis -m svn +svn: /usr/share/man/man1/svn.1.gz + +[root@localhost ~]# whereis -s svn +svn: + +``` + +说明:`whereis -m svn`查出说明文档路径,`whereis -s svn`找source源文件。 \ No newline at end of file diff --git a/docs/linux/commands/文件目录管理/文件编辑.md b/docs/linux/commands/文件目录管理/文件编辑.md new file mode 100644 index 0000000..cf789a7 --- /dev/null +++ b/docs/linux/commands/文件目录管理/文件编辑.md @@ -0,0 +1,549 @@ +--- +title: linux 常用命令-文件编辑 +date: 2018/02/27 +categories: +- linux +tags: +- linux +- command +--- + + + +- [linux 常用命令-文件编辑](#linux-常用命令-文件编辑) + - [sed](#sed) + - [补充说明](#补充说明) + - [sed的选项、命令、替换标记](#sed的选项命令替换标记) + - [选项](#选项) + - [参数](#参数) + - [sed命令](#sed命令) + - [sed替换标记](#sed替换标记) + - [sed元字符集](#sed元字符集) + - [sed用法实例](#sed用法实例) + - [替换操作:s命令](#替换操作s命令) + - [全面替换标记g](#全面替换标记g) + - [定界符](#定界符) + - [删除操作:d命令](#删除操作d命令) + - [已匹配字符串标记&](#已匹配字符串标记) + - [子串匹配标记\1](#子串匹配标记\1) + - [组合多个表达式](#组合多个表达式) + - [引用](#引用) + - [选定行的范围:,(逗号)](#选定行的范围逗号) + - [多点编辑:e命令](#多点编辑e命令) + - [从文件读入:r命令](#从文件读入r命令) + - [写入文件:w命令](#写入文件w命令) + - [追加(行下):a\命令](#追加行下a\命令) + - [插入(行上):i\命令](#插入行上i\命令) + - [下一个:n命令](#下一个n命令) + - [变形:y命令](#变形y命令) + - [退出:q命令](#退出q命令) + - [保持和获取:h命令和G命令](#保持和获取h命令和g命令) + - [保持和互换:h命令和x命令](#保持和互换h命令和x命令) + - [脚本scriptfile](#脚本scriptfile) + - [打印奇数行或偶数行](#打印奇数行或偶数行) + - [打印匹配字符串的下一行](#打印匹配字符串的下一行) + - [vi](#vi) + - [补充说明](#补充说明-1) + - [语法](#语法) + - [选项](#选项-1) + - [参数](#参数-1) + - [知识扩展](#知识扩展) + + + +# linux 常用命令-文件编辑 + +## sed + +功能强大的流式文本编辑器 + +### 补充说明 + +**sed** 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 + +### sed的选项、命令、替换标记 + + **命令格式** + +``` +sed [options] 'command' file(s) +sed [options] -f scriptfile file(s) +``` + +### 选项 + +``` +-e