写点什么

Linux 基础命令

作者:渔戈
  • 2022-10-22
    广东
  • 本文字数:37905 字

    阅读完需:约 124 分钟

Linux 基础命令

一. 文件操作命令

1.文件处理命令:ls、cd、pwd、touch、mkdir、cp、mv、rm、rmdir

(1)ls 命令:显示目录内容列表

ls 命令 就是 list 的缩写,用来显示目标列表,在 Linux 中是使用率较高的命令。ls 命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。


语法


ls [选项] [文件名...]
复制代码


选项


-l     # 以详细信息的形式展示出当前目录下的文件-a     # 显示当前目录下的全部文件(包括隐藏文件)-d     # 查看目录属性-t     # 按创建时间顺序列出文件-i     # 输出文件的inode编号-R     # 列出当前目录下的所有文件信息,并以递归的方式显示各个子目录中的文件和子目录信息
复制代码


实例


$ ls       # 仅列出当前目录可见文件$ ls -l    # 列出当前目录可见文件详细信息$ ls -hl   # 列出详细信息并以可读大小显示文件大小$ ls -al   # 列出所有文件(包括隐藏)的详细信息$ ls --human-readable --size -1 -S --classify # 按文件大小排序$ du -sh * | sort -h # 按文件大小排序(同上)
复制代码

(2)cd 命令:切换用户当前工作目录。

语法


cd [-L|[-P [-e]]] [dir]
复制代码


参数


dir(可选):指定要切换到的目录。
复制代码


选项


-L (默认值)如果要切换到的目标目录是一个符号连接,那么切换到符号连接的目录。-P 如果要切换到的目标目录是一个符号连接,那么切换到它指向的物理位置目录。-  当前工作目录将被切换到环境变量OLDPWD所表示的目录,也就是前一个工作目录。
复制代码


主要用途


  • 切换工作目录至dir。其中dir的表示法可以是绝对路径或相对路径。

  • 若参数dir省略,则默认为使用者的 shell 变量HOME

  • 如果dir指定为~时表示为使用者的 shell 变量HOME.表示当前目录,..表示当前目录的上一级目录。

  • 环境变量CDPATH是由冒号分割的一到多个目录,你可以将常去的目录的上一级加入到CDPATH以便方便访问它们;如果dir/开头那么CDPATH不会被使用。

  • shopt选项cdable_vars打开时,如果dirCDPATH及当前目录下均不存在,那么会把它当作变量,读取它的值作为要进入的目录。


实例


cd    # 进入用户主目录;cd /  # 进入根目录cd ~  # 进入用户主目录;cd ..  # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);cd ../..  # 返回上两级目录;cd !$  # 把上个命令的参数作为cd参数使用。
复制代码

(3)pwd 命令:显示当前工作目录的绝对路径。

语法


pwd [-LP]
复制代码


选项


-L, --logical 打印环境变量"$PWD"的值,可能为符号链接。-P, --physical (默认值)打印当前工作目录的物理位置。--help 显示帮助信息并退出。--version 显示版本信息并退出。
复制代码


实例


[root@localhost var]# pwd/var
显示软连接文件最终指向的文件路径:[root@localhost ~]# cd /var/ # 进入/var目录,该目录下有个 mail 软连接文件[root@localhost var]# ls -altotal 164...lrwxrwxrwx 1 root root 10 Oct 17 2015 mail -> spool/mail
[root@localhost var]# cd mail/ # 进入 mail 目录,mail 为连接文件。[root@localhost mail]# pwd # 默认,使用连接文件,直接显示连接文件全路径。/var/mail
使用 -P 参数,显示的不是逻辑路径,而是连接(软连接)文件最终指向的文件:[root@localhost mail]# pwd -P /var/spool/mail
复制代码

(4)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,表示它是空文件。
批量创建文件touch file{1..5}.txt
创建 job1.md 文件,并写入 job 1echo "job 1" > job1.md
复制代码

(5)mkdir 命令:用来创建目录

语法


mkdir (选项)(参数)
复制代码


选项


-Z:设置安全上下文,当使用SELinux时有效;-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;--version 显示版本信息。
复制代码


参数


目录:指定要创建的目录列表,多个目录之间用空格隔开。
复制代码


实例


在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问mkdir -m 700 /usr/meng/test

在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问mkdir -p-m 750 bin/os_1
复制代码

(6)cp 命令:将源文件或目录复制到目标文件或目录中

补充说明


cp命令 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
复制代码


语法


cp(选项)(参数)
复制代码


选项


-a:此参数的效果和同时指定"-dpR"参数相同;-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;-f:强行复制文件或目录,不论目标文件或目录是否已存在;-i:覆盖既有文件之前先询问用户;-l:对源文件建立硬连接,而非复制文件;-p:保留源文件或目录的属性;-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;-s:对源文件建立符号连接,而非复制文件;-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;-b:覆盖已存在的文件目标前将目标文件备份;-v:详细显示命令执行的操作。
复制代码


参数


源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
复制代码


实例


1.将文件file复制到目录/usr/men/tmp下,并改名为file1cp file /usr/men/tmp/file1

2.将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中cp -r /usr/men /usr/zh

3.我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:cp aaa/* /bbb# 复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb# 这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -r -a aaa/* /bbb# 依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb# 成功,没有提示按Y、传递了目录属性、没有略过目录。
4.递归强制复制目录到指定目录中覆盖已存在文件cp -rfb ./* ../backup# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中
5.拷贝目录下的隐藏文件如 .babelrccp -r aaa/.* ./bbb# 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。
cp -a aaa ./bbb/ # 记住后面目录最好的'/' 带上 `-a` 参数
6.复制到当前目录cp aaa.conf ./# 将 aaa.conf 复制到当前目录
复制代码

(7)mv 命令:用来对文件或目录重新命名

补充说明


mv命令 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
复制代码


语法


mv(选项)(参数)
复制代码


选项


--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;-b:当文件存在时,覆盖前,为其创建一个备份;-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。--strip-trailing-slashes:删除源文件中的斜杠“/”;-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;--target-directory=<目录>:指定源文件要移动到目标目录;-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
复制代码


参数


源文件:源文件列表。目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
复制代码


实例


1.将目录/usr/men中的所有文件移到当前目录(用.表示)中:mv /usr/men/* .2.移动文件mv file_1.txt /home/office/3.移动目录mv directory_1/ /home/office/4.重命名文件或目录mv file_1.txt file_2.txt # 将文件file_1.txt改名为file_2.txt5.重命名目录mv directory_1/ directory_2/
复制代码

(8)rm 命令:用于删除给定的文件和目录

补充说明


rm 命令 可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
复制代码


说法


rm (选项)(参数)
复制代码


选项


-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;-f:强制删除文件或目录;-i:删除已有文件或目录之前先询问用户;-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;--preserve-root:不对根目录进行递归操作;-v:显示指令的详细执行过程。
复制代码


参数


文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。
复制代码


实例


1.交互式删除当前目录下的文件test和examplerm -i test exampleRemove test ?n(不删除文件test)Remove example ?y(删除文件example)2.删除当前目录下除隐含文件外的所有文件和子目录# rm -r *3.删除当前目录下的 package-lock.json 文件find .  -name "package-lock.json" -exec rm -rf {} \;4.*查找 .html 结尾的文件并删除find ./docs -name "*.html" -exec rm -rf {} \;5.删除当前目录下的 node_modules 目录find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +6.删除文件# rm 文件1 文件2 ...rm testfile.txt7.删除目录rm -r [目录名称] -r 表示递归地删除目录下的所有文件和目录。 -f 表示强制删除rm -rf testdirrm -r testdir
复制代码

(9)rmdir 命令:用来删除空目录

补充说明


rmdir命令 用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。
注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。
虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。
复制代码


语法


rmdir(选项)(参数)
复制代码


选项


-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;-v或-verboes:显示命令的详细执行过程;--help:显示命令的帮助信息;--version:显示命令的版本信息。
复制代码


参数


目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。
复制代码


实例


1.将工作目录下,名为 www 的子目录删除 :rmdir www2.在工作目录下的 www 目录中,删除名为 Test 的子目录。若 Test 删除后,www 目录成为空目录,则 www 亦予删除。rmdir -p www/Test3.下面命令等价于 rmdir a/b/c, rmdir a/b, rmdir armdir -p a/b/c
复制代码

2. 文件查看命令:cat、more、head、tail

(1)cat 命令:连接多个文件并打印到标准输出。

语法


cat [OPTION]... [FILE]...
复制代码


主要用途


显示文件内容,如果没有文件或文件为-则读取标准输入。将多个文件的内容进行连接并打印到标准输出。显示文件内容中的不可见字符(控制字符、换行符、制表符等)。
复制代码


参数


FILE(可选):要处理的文件,可以为一或多个。
复制代码


选项


长选项与短选项等价
-A, --show-all 等价于"-vET"组合选项。-b, --number-nonblank 只对非空行编号,从1开始编号,覆盖"-n"选项。-e 等价于"-vE"组合选项。-E, --show-ends 在每行的结尾显示'$'字符。-n, --number 对所有行编号,从1开始编号。-s, --squeeze-blank 压缩连续的空行到一行。-t 等价于"-vT"组合选项。-T, --show-tabs 使用"^I"表示TAB(制表符)。-u POSIX兼容性选项,无意义。-v, --show-nonprinting 使用"^"和"M-"符号显示控制字符,除了LFD(line feed,即换行符'\n')和TAB(制表符)。
--help 显示帮助信息并退出。--version 显示版本信息并退出。
复制代码


实例


# 合并显示多个文件cat ./1.log ./2.log ./3.log# 显示文件中的非打印字符、tab、换行符cat -A test.log# 压缩文件的空行cat -s test.log# 显示文件并在所有行开头附加行号cat -n test.log# 显示文件并在所有非空行开头附加行号cat -b test.log# 将标准输入的内容和文件内容一并显示echo '######' |cat - test.log
复制代码

(2)more 命令:显示文件内容,每次显示一屏

more命令 是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。
该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答:
按 Space 键:显示文本的下一屏内容。按 Enter 键:只显示文本的下一行内容。按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。按H键:显示帮助屏,该屏上有相关的帮助信息。按B键:显示上一屏内容。按Q键:退出more命令。
复制代码


语法


more(语法)(参数)
复制代码


选项


-<数字>:指定每屏显示的行数;-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;-c:不进行滚屏操作。每次刷新这个屏幕;-s:将多个空行压缩成一行显示;-u:禁止下划线;+<数字>:从指定数字的行开始显示。
复制代码


参数


文件:指定分页显示内容的文件。
复制代码


实例


1.显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完成的百分比。more -dc file2.显示文件file的内容,每10行显示一次,而且在显示之前先清屏。more -c -10 file
复制代码

(3)head 命令:显示文件的开头部分。

语法


head [OPTION]... [FILE]...
复制代码


主要用途


在未指定行数时默认显示前10行。处理多个文件时会在各个文件之前附加含有文件名的行。当没有文件或文件为-时,读取标准输入。
复制代码


选项


-c, --bytes=[-]NUM       显示前NUM字节;如果NUM前有"-",那么会打印除了文件末尾的NUM字节以外的其他内容。-n, --lines=[-]NUM       显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行。-q, --quiet, --silent    不打印文件名行。-v, --verbose            总是打印文件名行。-z, --zero-terminated    行终止符为NUL而不是换行符。--help                   显示帮助信息并退出。--version                显示版本信息并退出。
NUM可以有一个乘数后缀:b 512kB 1000k 1024MB 1000*1000M 1024*1024GB 1000*1000*1000G 1024*1024*1024T、P、E、Z、Y等以此类推。
也可以使用二进制前缀:KiB=KMiB=M以此类推。
复制代码


参数


FILE(可选):要处理的文件,可以为一或多个。
复制代码


实例


# 查看历史文件的前6行:[user2@pc ~]$ head -n 6 ~/.bash_history#1575425555cd ~#1575425558ls -lh#1575425562vi ~/Desktop/ZhuangZhu-74.txt
复制代码

(4)tail 命令:在屏幕上显示指定文件的末尾若干行

补充说明


tail命令 用于输入文件中的尾部内容。
默认在屏幕上显示指定文件的末尾10行。处理多个文件时会在各个文件之前附加含有文件名的行。如果没有指定文件或者文件名为-,则读取标准输入。如果表示字节或行数的NUM值之前有一个+号,则从文件开头的第NUM项开始显示,而不是显示文件的最后NUM项。NUM值后面可以有后缀:b : 512kB : 1000k : 1024MB : 1000 * 1000M : 1024 * 1024GB : 1000 * 1000 * 1000G : 1024 * 1024 * 1024T、P、E、Z、Y等以此类推。
复制代码


语法


tail (选项) (参数)
复制代码


选项


-c, --bytes=NUM                 输出文件尾部的NUM(NUM为整数)个字节内容。-f, --follow[={name|descript}]  显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。-F                              与 “--follow=name --retry” 功能相同。-n, --line=NUM                  输出文件的尾部NUM(NUM位数字)行内容。--pid=<进程号>                  与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令。-q, --quiet, --silent           当有多个文件参数时,不输出各个文件名。--retry                         即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“--follow=name”连用。-s, --sleep-interal=<秒数>      与“-f”选项连用,指定监视文件变化时间隔的秒数。-v, --verbose                   当有多个文件参数时,总是输出各个文件名。--help                          显示指令的帮助信息。--version                       显示指令的版本信息。
复制代码


参数


文件列表:指定要显示尾部内容的文件列表。
复制代码


实例


tail file #(显示文件file的最后10行)tail -n +20 file #(显示文件file的内容,从第20行至文件末尾)tail -c 10 file #(显示文件file的最后10个字节)
tail -25 mail.log # 显示 mail.log 最后的 25 行tail -f mail.log # 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止tail -F mail.log # 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
复制代码

3.权限管理命令:chmod、chown、chgrp

(1)chmod 命令:用来变更文件或目录的权限

语法


chmod [OPTION]... MODE[,MODE]... FILE...chmod [OPTION]... OCTAL-MODE FILE...chmod [OPTION]... --reference=RFILE FILE...
复制代码


主要用途


通过符号组合的方式更改目标文件或目录的权限。通过八进制数的方式更改目标文件或目录的权限。通过参考文件的权限来更改目标文件或目录的权限。
复制代码


参数


mode:八进制数或符号组合。
file:指定要更改权限的一到多个文件。
复制代码


选项


-c, --changes:当文件的权限更改时输出操作信息。--no-preserve-root:不将'/'特殊化处理,默认选项。--preserve-root:不能在根目录下递归操作。-f, --silent, --quiet:抑制多数错误消息的输出。-v, --verbose:无论文件是否更改了权限,一律输出操作信息。--reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限。-R, --recursive:对目录以及目录下的文件递归执行更改权限操作。--help:显示帮助信息并退出。--version:显示版本信息并退出。
复制代码


实例


参考man chmod文档的DESCRIPTION段落得知:
u符号代表当前用户。g符号代表和当前用户在同一个组的用户,以下简称组用户。o符号代表其他用户。a符号代表所有用户。r符号代表读权限以及八进制数4。w符号代表写权限以及八进制数2。x符号代表执行权限以及八进制数1。X符号代表如果目标文件是可执行文件或目录,可给其设置可执行权限。s符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置组用户ID位。t符号代表只有目录或文件的所有者才可以删除目录下的文件。+符号代表添加目标用户相应的权限。-符号代表删除目标用户相应的权限。=符号代表添加目标用户相应的权限,删除未提到的权限。
linux文件的用户权限说明:
# 查看当前目录(包含隐藏文件)的长格式。ls -la -rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
# 第1位如果是d则代表目录,是-则代表普通文件。# 更多详情请参阅info coreutils 'ls invocation'(ls命令的info文档)的'-l'选项部分。# 第2到4位代表当前用户的权限。# 第5到7位代表组用户的权限。# 第8到10位代表其他用户的权限。

# 添加组用户的写权限。chmod g+w ./test.log# 删除其他用户的所有权限。chmod o= ./test.log# 使得所有用户都没有写权限。chmod a-w ./test.log# 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。chmod u=rwx, g=rw, o=r ./test.log# 等价的八进制数表示:chmod 764 ./test.log# 将目录以及目录下的文件都设置为所有用户拥有读写权限。# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!chmod -R a=rw ./testdir/# 根据其他文件的权限设置文件权限。chmod --reference=./1.log ./test.log
复制代码

(2)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
复制代码

(3)chgrp 命令:用来变更文件或目录的所属群组

补充说明


chgrp命令 用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
复制代码


语法


chgrp [选项][组群][文件|目录]
复制代码


选项


-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组-c或——changes:效果类似“-v”参数,但仅回报更改的部分;-f或--quiet或——silent:不显示错误信息;-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;-H如果命令行参数是一个通到目录的符号链接,则遍历符号链接-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;-L遍历每一个遇到的通到目录的符号链接-P不遍历任何符号链接(默认)-v或——verbose:显示指令执行过程;--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
复制代码


参数


组:指定新工作名称;文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。
复制代码


实例


将/usr/meng及其子目录下的所有文件的用户组改为mengxinchgrp -R mengxin /usr/meng

更改文件ah的组群所有者为 newuser[root@rhel ~]# chgrp newuser ah
复制代码

4.文件搜索命令:which、find、locate、grep

(1)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 cdcd: shell built-in commandcd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是bash 内建的命令! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的!
复制代码

(2)find 命令:在指定目录下查找文件

补充说明


find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
复制代码


语法


find(选项)(参数)
复制代码


选项


-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;-daystart:从本日开始计算时间;-depth:从指定目录下最深层的子目录开始查找;-empty:寻找文件大小为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编号>:查找符合指定的inode编号的文件或目录;-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;-links<连接数目>:查找符合指定的硬连接数目的文件或目录;-lname<范本样式>:指定字符串作为寻找符号连接的范本样式;-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;-type<文件类型>:只寻找符合指定的文件类型的文件;-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;-version或——version:显示版本信息;-xdev:将范围局限在先行的文件系统中;-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
复制代码


参数


起始目录:查找文件的起始目录。
复制代码


实例


# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容find . -type f -name "*" | xargs grep "140.206.111.111"
复制代码

(3)locate 命令:比 find 好用的文件查找工具

补充说明


locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。
locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”” 或”?”等)来指定范本样式,如指定范本为kcpaner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。
locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
复制代码


语法


locate [-d  path | --database=path] [-e | -E | --[non-]existing] [-i |       --ignore-case] [-0 | --null] [-c | --count] [-w |  --wholename]  [-b  |       --basename]  [-l  N  |  --limit=N]  [-S | --statistics] [-r | --regex ]       [--regextype R] [--max-database-age D] [-P | -H  |  --nofollow]  [-L  |       --follow] [--version] [-A | --all] [-p | --print] [--help] pattern...
复制代码


选项


-b, --basename  # 仅匹配路径名的基本名称-c, --count     # 只输出找到的数量-d, --database DBPATH # 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db-e, --existing  # 仅打印当前现有文件的条目-1 # 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的  权限资料。-0, --null            # 在输出上带有NUL的单独条目-S, --statistics      # 不搜索条目,打印有关每个数据库的统计信息-q                    # 安静模式,不会显示任何错误讯息。-P, --nofollow, -H    # 检查文件存在时不要遵循尾随的符号链接-l, --limit, -n LIMIT # 将输出(或计数)限制为LIMIT个条目-n                    # 至多显示 n个输出。-m, --mmap            # 被忽略,为了向后兼容-r, --regexp REGEXP   # 使用基本正则表达式    --regex           # 使用扩展正则表达式-q, --quiet           # 安静模式,不会显示任何错误讯息-s, --stdio           # 被忽略,为了向后兼容-o                    # 指定资料库存的名称。-h, --help            # 显示帮助-i, --ignore-case     # 忽略大小写-V, --version         # 显示版本信息
复制代码


实例


实例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

实例4:忽略大小写搜索当前用户目录下所有以 r 开头的文件 :locate -i ~/r
复制代码

(4)grep 命令:强大的文本搜索工具

补充说明


grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。
复制代码


选项


-a --text  # 不要忽略二进制数据。-A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。-b --byte-offset                           # 在显示符合范本样式的那一行之外,并显示该行之前的内容。-B<显示行数>   --before-context=<显示行数>   # 除了显示符合样式的那一行之外,并显示该行之前的内容。-c --count    # 计算符合范本样式的列数。-C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。-d<进行动作> --directories=<动作>  # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。-e<范本样式> --regexp=<范本样式>   # 指定字符串作为查找文件内容的范本样式。-E --extended-regexp             # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。-f<范本文件> --file=<规则文件>     # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。-F --fixed-regexp   # 将范本样式视为固定字符串的列表。-G --basic-regexp   # 将范本样式视为普通的表示法来使用。-h --no-filename    # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。-H --with-filename  # 在显示符合范本样式的那一列之前,标示该列的文件名称。-i --ignore-case    # 忽略字符大小写的差别。-l --file-with-matches   # 列出文件内容符合指定的范本样式的文件名称。-L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。-n --line-number         # 在显示符合范本样式的那一列之前,标示出该列的编号。-P --perl-regexp         # PATTERN 是一个 Perl 正则表达式-q --quiet或--silent     # 不显示任何信息。-R/-r  --recursive       # 此参数的效果和指定“-d recurse”参数相同。-s --no-messages  # 不显示错误信息。-v --revert-match # 反转查找。-V --version      # 显示版本信息。   -w --word-regexp  # 只显示全字符合的列。-x --line-regexp  # 只显示全列符合的列。-y # 此参数效果跟“-i”相同。-o # 只输出文件中匹配到的部分。-m <num> --max-count=<num> # 找到num行结果后停止查找,用来限制匹配行数
复制代码


规则表达式


^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    $    # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    *    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    .*   # 一起用代表任意字符。   []   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    [^]  # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    \(..\)  # 标记匹配字符,如'\(love\)',love被标记为1。    \<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    \>      # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    x\{m\}  # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   \w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   \W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   \b    # 单词锁定符,如: '\bgrep\b'只匹配grep。  
复制代码


实例


在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:
grep match_pattern file_namegrep "match_pattern" file_name在多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...输出除之外的所有行 -v 选项:
grep -v "match_pattern" file_name标记匹配颜色 --color=auto 选项:
grep "match_pattern" file_name --color=auto使用正则表达式 -E 选项:
grep -E "[1-9]+"# 或egrep "[1-9]+"使用正则表达式 -P 选项:
grep -P "(\d{3}\-){2}\d{4}" file_name只输出文件中匹配到的部分 -o 选项:
echo this is a test line. | grep -o -E "[a-z]+\."line.
echo this is a test line. | egrep -o "[a-z]+\."line.统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c "text" file_name搜索命令行历史记录中 输入过 git 命令的记录:
history | grep git输出包含匹配字符串的行数 -n 选项:
grep "text" -n file_name# 或cat file_name | grep "text" -n
#多个文件grep "text" -n file_1 file_2打印样式匹配所位于的字符或字节偏移:
echo gun is not unix | grep -b -o "not"7:not#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 **-b -o** 一般总是配合使用。搜索多个文件并查找匹配文本在哪些文件中:
grep -l "text" file1 file2 file3...grep递归搜索文件在多级目录中对文本进行递归搜索:
grep "text" . -r -n# .表示当前目录。忽略匹配样式中的字符大小写:
echo "hello world" | grep -i "HELLO"# hello选项 -e 制动多个匹配样式:
echo this is a text line | grep -e "is" -e "line" -oisisline
#也可以使用 **-f** 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。cat patfileaaabbb
echo aaa bbb ccc ddd eee | grep -f patfile -o在grep搜索结果中包括或者排除指定文件:
# 只在目录中所有的.php和.html文件中递归搜索字符"main()"grep "main()" . -r --include *.{php,html}
# 在搜索结果中排除所有README文件grep "main()" . -r --exclude "README"
# 在搜索结果中排除filelist文件列表里的文件grep "main()" . -r --exclude-from filelist
使用0值字节后缀的grep与xargs:
# 测试文件:echo "aaa" > file1echo "bbb" > file2echo "aaa" > file3
grep "aaa" file* -lZ | xargs -0 rm
# 执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用。grep静默输出:
grep -q "test" filename# 不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。打印出匹配文本之前或者之后的行:
# 显示匹配某个结果之后的3行,使用 -A 选项:seq 10 | grep "5" -A 35678
# 显示匹配某个结果之前的3行,使用 -B 选项:seq 10 | grep "5" -B 32345
# 显示匹配某个结果的前三行和后三行,使用 -C 选项:seq 10 | grep "5" -C 32345678
# 如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符:echo -e "a\nb\nc\na\nb\nc" | grep a -A 1ab--ab
复制代码

5.网络管理与通信命令:ifconfig、netstat、ping、write、wall

(1)ifconfig 命令:配置和显示 Linux 系统网卡的网络参数

补充说明


ifconfig命令 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
复制代码


语法


ifconfig(参数)
复制代码


参数


add<地址>:设置网络设备IPv6的ip地址;del<地址>:删除网络设备IPv6的IP地址;down:关闭指定的网络设备;<hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;io_addr<I/O地址>:设置网络设备的I/O地址;irq<IRQ地址>:设置网络设备的IRQ;media<网络媒介类型>:设置网络设备的媒介类型;mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;mtu<字节>:设置网络设备的MTU;netmask<子网掩码>:设置网络设备的子网掩码;tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;up:启动指定的网络设备;-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;-promisc:关闭或启动指定网络设备的promiscuous模式;IP地址:指定网络设备的IP地址;网络设备:指定网络设备的名称。
复制代码


实例


[root@localhost ~]# ifconfigeth0      Link encap:Ethernet  HWaddr 00:16:3E:00:1E:51            inet addr:10.160.7.81  Bcast:10.160.15.255  Mask:255.255.240.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0          TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:3607197869 (3.3 GiB)  TX bytes:6115042 (5.8 MiB)
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:56103 errors:0 dropped:0 overruns:0 frame:0 TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB)
说明:
eth0 表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:16:3E:00:1E:51。
inet addr 用来表示网卡的IP地址,此网卡的IP地址是10.160.7.81,广播地址Bcast:10.160.15.255,掩码地址Mask:255.255.240.0。
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。第二行:网卡的IP地址、子网、掩码。第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。第四、五行:接收、发送数据包情况统计。第七行:接收、发送数据字节数统计信息。


启动关闭指定网卡:ifconfig eth0 upifconfig eth0 down
复制代码

(2)netstat 命令:查看 Linux 中网络系统状态信息

补充说明


netstat命令 用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
复制代码


语法


netstat(选项)
复制代码


选项


-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     #列出所有端口netstat -at    #列出所有tcp端口netstat -au    #列出所有udp端口                             

列出所有处于监听状态的 Socketsnetstat -l #只显示监听端口netstat -lt #只列出所有监听 tcp 端口netstat -lu #只列出所有监听 udp 端口netstat -lx #只列出所有监听 UNIX 端口

显示每个协议的统计信息netstat -s 显示所有端口的统计信息netstat -st 显示TCP端口的统计信息netstat -su 显示UDP端口的统计信息
​```shell
**在netstat输出中显示 PID 和进程名称**
​```shellnetstat -pt

显示核心路由信息netstat -r

找出运行在指定端口的进程:netstat -an | grep ':80'
显示网络接口列表netstat -i
复制代码

(3)ping 命令:测试主机之间网络的连通性

补充说明


ping命令 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
复制代码


语法


ping(选项)(参数)
复制代码


选项


-d:使用Socket的SO_DEBUG功能;-c<完成次数>:设置完成要求回应的次数;-f:极限检测;-i<间隔秒数>:指定收发信息的间隔时间;-I<网络界面>:使用指定的网络界面送出数据包;-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;-n:只输出数值;-p<范本样式>:设置填满数据包的范本样式;-q:不显示指令执行过程,开头和结尾的相关信息除外;-r:忽略普通的Routing Table,直接将数据包送到远端主机上;-R:记录路由过程;-s<数据包大小>:设置数据包的大小;-t<存活数值>:设置存活数值TTL的大小;-v:详细显示指令的执行过程。
复制代码


参数


目的主机:指定发送ICMP报文的目的主机。
复制代码


实例


[root@AY1307311912260196fcZ ~]# ping www.jsdig.comPING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data.64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms...按Ctrl+C结束
--- host.1.jsdig.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 2998msrtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms
复制代码

(4)write 命令:向指定登录用户终端上发送信息

补充说明


write命令 用于向指定登录用户终端上发送信息。通过write命令可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write命令就会将信息传给对方。如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。
复制代码


语法


write(参数)
复制代码


参数


用户:指定要接受信息的登录用户;登陆终端:指定接收信息的用户的登录终端。
复制代码


实例


传信息给Rollaend,此时Rollaend只有一个连线 : write Rollaend接下来就是将信息打上去,结束请Ctrl+C

传信息给Rollaend、Rollaend的连线有pts/2、pts/3:write Rollaend pts/2接下来就是将信息打上去,结束请Ctrl+C若对方设定mesg n,则此时信息将无法传给对方。
复制代码

(5)wall 命令:向系统当前所有打开的终端上输出信息

补充说明


wall命令 用于向系统当前所有打开的终端上输出信息。通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
复制代码


语法


wall(参数)
复制代码


参数


消息:指定广播消息。
复制代码


实例


[root@localhost ~]# wall this is a test line
Broadcast message from root (pts/1) (Fri Dec 20 11:36:51 2013):
this is a test line
复制代码

6.压缩解压命令:gzip/gunzip、zip/unzip、bzip2/bunzip2

(1)gzip/gunzip 命令:

①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。-c或--stdout或--to-stdout:保留原始文件,生成标准输出流(结合重定向使用)。
复制代码


参数


文件列表:指定要压缩的文件列表。
复制代码


实例


把test6目录下的每个文件压缩成.gz文件gzip *

压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gzgzip -r log.tar

递归的压缩目录gzip -rv test6

递归地解压目录gzip -dr test6
保留原始文件,把压缩/解压流重定向到新文件gzip -c aa > aa.gzgzip -dc bb.gz > bb
复制代码
②gunzip 命令:用来解压缩文件

补充说明


gunzip命令 用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。
复制代码


语法


gunzip(选项)(参数)
复制代码


选项


-a或——ascii:使用ASCII文字模式;-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备;-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:显示版本信息;
复制代码


参数


文件列表:指定要解压缩的压缩包。
复制代码


实例


首先将/etc目录下的所有文件以及子目录进行压缩,备份压缩包etc.zip到/opt目录,然后对etc.zip文件进行gzip压缩,设置gzip的压缩级别为9。zip –r /opt/etc.zip /etcgzip -9v /opt/etc.zip

查看上述etc.zip.gz文件的压缩信息。gzip -l /opt/etc.zip.gzcompressed uncompressed ratio uncompressed_name11938745 12767265 6.5% /opt/etc.zip

解压上述etc.zip.gz文件到当前目录。[root@mylinux ~]#gzip –d /opt/etc.zip.gz 或者执行[root@mylinux ~]#gunzip /opt/etc.zip.gz通过上面的示例可以知道gzip –d等价于gunzip命令。
复制代码

(2)zip/unzip 命令:

①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 *
复制代码
②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/解压指定文件,* 用作通配符。
unzip test.zip "*.jpg"
复制代码

(3)bzip2/bunzip2 命令:

①bzip2 命令:将文件压缩成 bz2 格式

语法


bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ...  ]
复制代码


选项


-c --stdout    # 将数据压缩或解压缩至标准输出。
-d --decompress # 强制解压缩。 bzip2, bunzip2 以及 bzcat 实际上是同一个程序,进行何种操作将根据程序名确定。 指定该选项后将不考虑这一机制,强制 bzip2 进行解压缩。
-z --compress # -d 选项的补充:强制进行压缩操作,而不管执行的是哪个程序。
-t --test # 检查指定文件的完整性,但并不对其解压缩。 实际上将对数据进行实验性的解压缩操作,而不输出结果。
-f --force # 强制覆盖输出文件。通常 bzip2 不会覆盖已经存在的文件。该选项还强制 bzip2 打破文件的硬连接,缺省情况下 bzip2 不会这么做。
-k --keep # 在压缩或解压缩时保留输入文件(不删除这些文件)。
-s --small # 在压缩、解压缩及检查时减少内存用量。采用一种修正的算法进行压缩和测试,每个数据块仅需要 2.5 个字节。这意味着任何文件都可以在 2300k # 的内存中进行解压缩, 尽管速度只有通常情况下的一半。
# 在压缩时,-s将选定 200k 的块长度,内存用量也限制在 200k 左右, 代价是压缩率会降低。 总之,如果机器的内存较少(8兆字节或更少), # 可对所有操作都采用-s选项。参见下面的内存管理。
-q --quiet # 压制不重要的警告信息。属于 I/O 错误及其它严重事件的信息将不会被压制。
-v --verbose # 详尽模式 -- 显示每个被处理文件的压缩率。 命令行中更多的 -v 选项将增加详细的程度, 使 bzip2 显示出许多主要用于诊断目的信息。
-L --license -V --version # 显示软件版本,许可证条款及条件。
-1 to -9 # 在压缩时将块长度设为 100 k、200 k .. 900 k。 对解压缩没有影响。参见下面的内存管理。
-- # 将所有后面的命令行变量看作文件名,即使这些变量以减号"-"打头。 可用这一选项处理以减号"-"打头的文件名, 例如:bzip2 -- -myfilename.
--repetitive-fast --repetitive-best # 这些选项在 0.9.5 及其以上版本中是多余的。 在较早的版本中,这两个选项对排序算法的行为提供了一些粗糙的控制,有些情况下很有用。 0.9.5 # 及其以上版本采用了改进的算法而与这些选项无关。
复制代码


参数


文件:指定要压缩的文件。
复制代码


实例


压缩指定文件filename:
bzip2 filenamebzip2 -z filename

解压指定的文件filename.bz2:bzip2 -d filename.bz2bunzip2 filename.bz2
复制代码
②bunzip2 命令:创一个 bz2 文件压缩包

补充说明


bunzip2命令 解压缩由bzip2指令创建的”.bz2"压缩包。对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2其实是bzip2的符号链接,即软链接,因此压缩解压都可以通过bzip2实现。
复制代码


语法


bunzip2(选项)(参数)
复制代码


选项


-f或--force:解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件;-k或——keep:在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数;-s或——small:降低程序执行时,内存的使用量;-v或——verbose:解压缩文件时,显示详细的信息;-l,--license,-V或——version:显示版本信息。
复制代码


参数


.bz2压缩包:指定需要解压缩的.bz2压缩包。
复制代码


实例


将/opt目录下的etc.zip、var.zip和backup.zip进行压缩,设置压缩率为最高,同时在压缩完毕后不删除原始文件,显示压缩过程的详细信息。
bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip压缩完毕后,在/opt下就会生成相应的etc.zip.bz2、var.zip.bz2和backup.zip.bz2文件。
复制代码

7.打包命令:tar

将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。


补充说明


tar命令 可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
复制代码


语法


tar [选项...] [FILE]...
复制代码


选项


-A, --catenate, --concatenate   追加 tar 文件至归档-c, --create               创建一个新归档-d, --diff, --compare      找出归档和文件系统的差异    --delete               从归档(非磁带!)中删除-r, --append               追加文件至归档结尾-t, --list                 列出归档内容    --test-label           测试归档卷标并退出-u, --update               仅追加比归档中副本更新的文件-x, --extract, --get       从归档中解出文件
操作修饰符:
--check-device 当创建增量归档时检查设备号(默认) -g, --listed-incremental=FILE 处理新式的 GNU 格式的增量备份 -G, --incremental 处理老式的 GNU 格式的增量备份 --ignore-failed-read 当遇上不可读文件时不要以非零值退出 --level=NUMBER 所创建的增量列表归档的输出级别 -n, --seek 归档可检索 --no-check-device 当创建增量归档时不要检查设备号 --no-seek 归档不可检索 --occurrence[=NUMBER] 仅处理归档中每个文件的第 NUMBER 个事件;仅当与以下子命令 --delete, --diff, --extract 或是 --list 中的一个联合使用时,此选项才有效。而且不管文件列表是以命令行形式给出或是通过 -T 选项指定的;NUMBER 值默认为 1 --sparse-version=MAJOR[.MINOR] 设置所用的离散格式版本(隐含 --sparse) -S, --sparse 高效处理离散文件
重写控制:
-k, --keep-old-files don't replace existing files when extracting, treat them as errors --keep-directory-symlink preserve existing symlinks to directories when extracting --keep-newer-files 不要替换比归档中副本更新的已存在的文件 --no-overwrite-dir 保留已存在目录的元数据 --overwrite 解压时重写存在的文件 --overwrite-dir 解压时重写已存在目录的元数据(默认)
--recursive-unlink 解压目录之前先清除目录层次 --remove-files 在添加文件至归档后删除它们 --skip-old-files don't replace existing files when extracting, silently skip over them -U, --unlink-first 在解压要重写的文件之前先删除它们 -W, --verify 在写入以后尝试校验归档
选择输出流:
--ignore-command-error 忽略子进程的退出代码 --no-ignore-command-error 将子进程的非零退出代码认为发生错误 -O, --to-stdout 解压文件至标准输出 --to-command=COMMAND 将解压的文件通过管道传送至另一个程序
操作文件属性:
--atime-preserve[=METHOD] 在输出的文件上保留访问时间,要么通过在读取(默认 METHOD=‘replace’)后还原时间,要不就不要在第一次(METHOD=‘system’)设置时间 --delay-directory-restore 直到解压结束才设置修改时间和所解目录的权限 --group=名称 强制将 NAME 作为所添加的文件的组所有者 --mode=CHANGES 强制将所添加的文件(符号)更改为权限 CHANGES --mtime=DATE-OR-FILE 从 DATE-OR-FILE 中为添加的文件设置 mtime -m, --touch 不要解压文件的修改时间 --no-delay-directory-restore 取消 --delay-directory-restore 选项的效果 --no-same-owner 将文件解压为您所有(普通用户默认此项) --no-same-permissions 从归档中解压权限时使用用户的掩码位(默认为普通用户服务) --numeric-owner 总是以数字代表用户/组的名称 --owner=名称 强制将 NAME 作为所添加的文件的所有者 -p, --preserve-permissions, --same-permissions 解压文件权限信息(默认只为超级用户服务) --preserve 与 -p 和 -s 一样 --same-owner 尝试解压时保持所有者关系一致(超级用户默认此项) -s, --preserve-order, --same-order member arguments are listed in the same order as the files in the archive
Handling of extended file attributes:
--acls Enable the POSIX ACLs support --no-acls Disable the POSIX ACLs support --no-selinux Disable the SELinux context support --no-xattrs Disable extended attributes support --selinux Enable the SELinux context support --xattrs Enable extended attributes support --xattrs-exclude=MASK specify the exclude pattern for xattr keys --xattrs-include=MASK specify the include pattern for xattr keys
设备选择和切换:
-f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备 --force-local 即使归档文件存在副本还是把它认为是本地归档 -F, --info-script=名称, --new-volume-script=名称 在每卷磁带最后运行脚本(隐含 -M) -L, --tape-length=NUMBER 写入 NUMBER × 1024 字节后更换磁带 -M, --multi-volume 创建/列出/解压多卷归档文件 --rmt-command=COMMAND 使用指定的 rmt COMMAND 代替 rmt --rsh-command=COMMAND 使用远程 COMMAND 代替 rsh --volno-file=FILE 使用/更新 FILE 中的卷数
设备分块:
-b, --blocking-factor=BLOCKS 每个记录 BLOCKS x 512 字节 -B, --read-full-records 读取时重新分块(只对 4.2BSD 管道有效) -i, --ignore-zeros 忽略归档中的零字节块(即文件结尾) --record-size=NUMBER 每个记录的字节数 NUMBER,乘以 512
选择归档格式:
-H, --format=FORMAT 创建指定格式的归档
FORMAT 是以下格式中的一种:
gnu GNU tar 1.13.x 格式 oldgnu GNU 格式 as per tar <= 1.12 pax POSIX 1003.1-2001 (pax) 格式 posix 等同于 pax ustar POSIX 1003.1-1988 (ustar) 格式 v7 old V7 tar 格式
--old-archive, --portability 等同于 --format=v7 --pax-option=关键字[[:]=值][,关键字[[:]=值]]... 控制 pax 关键字 --posix 等同于 --format=posix -V, --label=TEXT 创建带有卷名 TEXT 的归档;在列出/解压时,使用 TEXT 作为卷名的模式串
压缩选项:
-a, --auto-compress 使用归档后缀名来决定压缩程序 -I, --use-compress-program=PROG 通过 PROG 过滤(必须是能接受 -d 选项的程序) -j, --bzip2 通过 bzip2 过滤归档 -J, --xz 通过 xz 过滤归档 --lzip 通过 lzip 过滤归档 --lzma 通过 lzma 过滤归档 --lzop --no-auto-compress 不使用归档后缀名来决定压缩程序 -z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档 -Z, --compress, --uncompress 通过 compress 过滤归档
本地文件选择:
--add-file=FILE 添加指定的 FILE 至归档(如果名字以 - 开始会很有用的) --backup[=CONTROL] 在删除前备份,选择 CONTROL 版本 -C, --directory=DIR 改变至目录 DIR --exclude=PATTERN 排除以 PATTERN 指定的文件 --exclude-backups 排除备份和锁文件 --exclude-caches 除标识文件本身外,排除包含 CACHEDIR.TAG 的目录中的内容 --exclude-caches-all 排除包含 CACHEDIR.TAG 的目录 --exclude-caches-under 排除包含 CACHEDIR.TAG 的目录中所有内容
--exclude-tag=FILE 除 FILE 自身外,排除包含 FILE 的目录中的内容 --exclude-tag-all=FILE 排除包含 FILE 的目录 --exclude-tag-under=FILE 排除包含 FILE 的目录中的所有内容 --exclude-vcs 排除版本控制系统目录 -h, --dereference 跟踪符号链接;将它们所指向的文件归档并输出 --hard-dereference 跟踪硬链接;将它们所指向的文件归档并输出 -K, --starting-file=MEMBER-NAME begin at member MEMBER-NAME when reading the archive --newer-mtime=DATE 当只有数据改变时比较数据和时间 --no-null 禁用上一次的效果 --null 选项 --no-recursion 避免目录中的自动降级 --no-unquote 不以 -T 读取的文件名作为引用结束 --null -T 读取以空终止的名字,-C 禁用 -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE 只保存比 DATE-OR-FILE 更新的文件 --one-file-system 创建归档时保存在本地文件系统中 -P, --absolute-names 不要从文件名中清除引导符‘/’ --recursion 目录递归(默认) --suffix=STRING 在删除前备份,除非被环境变量 SIMPLE_BACKUP_SUFFIX 覆盖,否则覆盖常用后缀(‘’) -T, --files-from=FILE 从 FILE 中获取文件名来解压或创建文件 --unquote 以 -T 读取的文件名作为引用结束(默认) -X, --exclude-from=FILE 排除 FILE 中列出的模式串
文件名变换:
--strip-components=NUMBER 解压时从文件名中清除 NUMBER 个引导部分 --transform=EXPRESSION, --xform=EXPRESSION 使用 sed 代替 EXPRESSION 来进行文件名变换
文件名匹配选项(同时影响排除和包括模式串):
--anchored 模式串匹配文件名头部 --ignore-case 忽略大小写 --no-anchored 模式串匹配任意‘/’后字符(默认对 exclusion 有效) --no-ignore-case 匹配大小写(默认) --no-wildcards 逐字匹配字符串 --no-wildcards-match-slash 通配符不匹配‘/’ --wildcards use wildcards (default) --wildcards-match-slash 通配符匹配‘/’(默认对排除操作有效)
提示性输出:
--checkpoint[=NUMBER] 每隔 NUMBER 个记录显示进度信息(默认为 10 个) --checkpoint-action=ACTION 在每个检查点上执行 ACTION --full-time print file time to its full resolution --index-file=FILE 将详细输出发送至 FILE -l, --check-links 只要不是所有链接都被输出就打印信息 --no-quote-chars=STRING 禁用来自 STRING 的字符引用 --quote-chars=STRING 来自 STRING 的额外的引用字符 --quoting-style=STYLE 设置名称引用风格;有效的 STYLE 值请参阅以下说明 -R, --block-number 每个信息都显示归档内的块数 --show-defaults 显示 tar 默认选项 --show-omitted-dirs 列表或解压时,列出每个不匹配查找标准的目录 --show-transformed-names, --show-stored-names 显示变换后的文件名或归档名 --totals[=SIGNAL] 处理归档后打印出总字节数;当此 SIGNAL 被触发时带参数 - 打印总字节数;允许的信号为: SIGHUP,SIGQUIT,SIGINT,SIGUSR1 和 SIGUSR2;同时也接受不带 SIG 前缀的信号名称 --utc 以 UTC 格式打印文件修改时间 -v, --verbose 详细地列出处理的文件 --warning=KEYWORD 警告控制: -w, --interactive, --confirmation 每次操作都要求确认
兼容性选项:
-o 创建归档时,相当于 --old-archive;展开归档时,相当于 --no-same-owner
其它选项:
-?, --help 显示此帮助列表 --restrict 禁用某些潜在的有危险的选项 --usage 显示简短的用法说明 --version 打印程序版本
长选项和相应短选项具有相同的强制参数或可选参数。
除非以 --suffix 或 SIMPLE_BACKUP_SUFFIX设置备份后缀,否则备份后缀就是“~”。可以用 --backup 或 VERSION_CONTROL 设置版本控制,可能的值为:
none, off 从不做备份 t, numbered 进行编号备份 nil, existing如果编号备份存在则进行编号备份,否则进行简单备份 never, simple 总是使用简单备份
--quoting-style 选项的有效参数为:
literal shell shell-always c c-maybe escape locale clocale
此 tar 默认为:--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/etc/rmt--rsh-command=/usr/bin/ssh
复制代码


参数


文件或目录:指定要打包的文件或目录列表。
复制代码


实例


- z:有gzip属性的- j:有bz2属性的- Z:有compress属性的- v:显示所有过程- O:将文件解开到标准输出tar -cf archive.tar foo bar  # 从文件 foo 和 bar 创建归档文件 archive.tar。tar -tvf archive.tar         # 详细列举归档文件 archive.tar 中的所有文件。tar -xf archive.tar          # 展开归档文件 archive.tar 中的所有文件。下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
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是列出文件的意思tar -cvf 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.0Created-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包名。
解压目录
去掉第一层目录结构,要出除第二层,--strip-components 2
tar -xvf portal-web-v2.0.0.tar --strip-components 1 -C 指定目录查阅上述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 -cvf test.tar test --remove-files其实最简单的使用 tar 就只要记忆底下的方式即可:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称查 询:tar -jtv -f filename.tar.bz2解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
复制代码

8. 帮助命令:man、info、whatis、whoami

(1)man 命令:查看 Linux 中的指令帮助

补充说明


man命令 是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
复制代码


语法


man(选项)(参数)
复制代码


选项


-a:在所有的man帮助手册中搜索;-f:等价于whatis指令,显示给定关键字的简短描述信息;-P:指定内容时使用分页程序;-M:指定man手册搜索的路径。
复制代码


参数


数字:指定从哪本man手册中搜索帮助;关键字:指定要搜索帮助的关键字。
复制代码


数字代表内容


1:用户在shell环境可操作的命令或执行文件;2:系统内核可调用的函数与工具等3:一些常用的函数(function)与函数库(library),大部分为C的函数库(libc)4:设备文件说明,通常在/dev下的文件5:配置文件或某些文件格式6:游戏(games)7:惯例与协议等,如Linux文件系统,网络协议,ASCII code等说明8:系统管理员可用的管理命令9:跟kernel有关的文件
复制代码


实例


我们输入man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输man ifconfig它会在最左上角显示“IFCONFIG(8)”。也可以这样输入命令:“man [章节号] 手册名称”。
man是按照手册的章节号的顺序进行搜索的,比如:
man sleep只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:
man 3 sleep
复制代码

(2)info 命令:Linux 下 info 格式的帮助指令

补充说明


info命令 是Linux下info格式的帮助指令。
就内容来说,info页面比man page编写得要更好、更容易理解,也更友好,但man page使用起来确实要更容易得多。一个man page只有一页,而info页面几乎总是将它们的内容组织成多个区段(称为节点),每个区段也可能包含子区段(称为子节点)。理解这个命令的窍门就是不仅要学习如何在单独的Info页面中浏览导航,还要学习如何在节点和子节点之间切换。可能刚开始会一时很难在info页面的节点之间移动和找到你要的东西,真是具有讽刺意味:原本以为对于新手来说,某个东西比man命令会更好些,但实际上学习和使用起来更困难。
复制代码


语法


info(选项)(参数)
复制代码


选项


-d:添加包含info格式帮助文档的目录;-f:指定要读取的info格式的帮助文档;-n:指定首先访问的info帮助文件的节点;-o:输出被选择的节点内容到指定文件。
复制代码


参数


帮助主题:指定需要获得帮助的主题,可以是指令、函数以及配置文件。
复制代码


实例


在info后面输入命令的名称就可以查看该命令的info帮助文档了:info info
面介绍一下它的几个常用快捷键。
**?键:** 它就会显示info的常用快捷键。 **N键:** 显示(相对于本节点的)下一节点的文档内容。 **P键:** 显示(相对于本节点的)前一节点的文档内容。 **U键:** 进入当前命令所在的主题。 **M键:** 敲M键后输入命令的名称就可以查看该命令的帮助文档了。 **G键:** 敲G键后输入主题名称,进入该主题。 **L键:** 回到上一个访问的页面。 **SPACE键:** 向前滚动一页。 **BACKUP或DEL键:** 向后滚动一页。 **Q:** 退出info。
复制代码


命令


 **?**      显示帮助窗口
在帮助窗口中: **Ctrl-x 0** 关闭帮助窗口 **Ctrl-x Ctrl-c** 关闭整个 Info
**q** 退出 info **n** 打开与本 Node 关联的下一个 Node **p** 打开与本 Node 关联的前一个 Node **u** 打开与本 Node 关联的上一个 Node **l** 回到上一次访问的 Node **m或g** 选择一个菜单项(Node 的名字) 输入指定菜单的名字后按回车,打开指定菜单项关联的 Node **空格键** 下一页(PageDown 也可以,下一页从当前页的最后两行开始算起) 下一个 Node (若当前页在 Node 文档的末尾) **Del 键** 上一页(PageUp 也可以,上一页从当前页的开始两行开始算起) 上一个 Node (若当前页 Node 文档的开始)
**b 或 t 或 Home** 文档的开始(b 是 begining 的意思) **e 或 End** 文档的末尾(b 是 ending 的意思) **Ctrl-l** 刷新当前页,若当前文档显示情况有问题时 **Ctrl-g** 取消所键入的指令
复制代码

(3)whatis 命令:查询一个命令执行什么功能

补充说明


whatis命令 是用于查询一个命令执行什么功能,并将查询结果打印到终端上。
whatis命令在用catman -w命令创建的数据库中查找command参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。
复制代码


语法


whatis
复制代码


实例


[root@localhost ~]# whatis lsls                   (1)  - list directory contentsls                   (1p)  - list directory contents
[root@localhost ~]# whatis cpcp (1) - copy files and directoriescp (1p) - copy files
[root@localhost ~]# whatis chownchown (1) - change file owner and groupchown (1p) - change the file ownershipchown (2) - change ownership of a filechown (3p) - change owner and group of a file
[root@localhost ~]# whatis manman (1) - format and display the on-line manual pagesman (1p) - display system documentationman (7) - macros to format man pagesman (rpm) - A set of documentation tools: man, apropos and whatis.man-pages (rpm) - Man (manual) pages from the Linux Documentation Project.man.config [man] (5) - configuration data for man
复制代码

(4)whoami 命令:打印当前有效的用户 ID 对应的名称

语法


whoami [OPTION]...
复制代码


主要用途


打印当前有效的用户ID对应的名称。
复制代码


选项


--help       显示帮助信息并退出。--version    显示版本信息并退出。
复制代码


实例


[root@localhost ~]# whoamiroot
复制代码


发布于: 刚刚阅读数: 4
用户头像

渔戈

关注

还未添加个人签名 2022-10-14 加入

还未添加个人简介

评论

发布
暂无评论
Linux基础命令_Linux_渔戈_InfoQ写作社区