Linux常用命令大全

由于linux常用于服务器等重大场合,所以对linux命令也需熟悉,下面对常用命令进行总结

rm

相关命令:rmdir
用法:rm [选项]... 文件...
删除 (unlink) 文件。

  -f, --force           强制删除。忽略不存在的文件,不提示确认
  -i                    在删除前需要确认
  -I                    在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
                        示内容更少,但同样可以阻止大多数错误发生
      --interactive[=WHEN]      根据指定的WHEN 进行确认提示:never,once (-I),
                                或者always (-i)。如果此参数不加WHEN 则总是提示
      --one-file-system         递归删除一个层级时,跳过所有不符合命令行参
                                数的文件系统上的文件
      --no-preserve-roo 不特殊对待"/"
      --preserve-root   不允许删除"/"(默认)
  -d, --dir 删除空目录
  -r, -R, --recursive   递归删除目录及其内容
  -v, --verbose         详细显示进行的步骤
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
的目录,以及其下所有的内容。

要删除第一个字符为"-"的文件 (例如"-foo"),请使用以下方法之一:
  rm -- -foo
  rm ./-foo

请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。

VI:
进入vi后的,内部命令

 


移动光标类命令

h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令

Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令

ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至本行尾
dG:删至文件行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

cp

相关命令:scp
用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录。


长选项必须使用的参数对于短选项时也是必需使用的。
  -a, --archive 等于-dR --preserve=all
      --attributes-only 只拷贝文件属性,不拷贝文件内容
      --backup[=CONTROL 为每个已存在的目标文件创建备份
  -b 类似--backup 但不接受参数
      --copy-contents 在递归处理是复制特殊文件内容
  -d 等于--no-dereference --preserve=links
  -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
  -i, --interactive 覆盖前询问(使前面的 -n 选项失效)
  -H 跟随源文件中的命令行符号链接
  -l, --link 链接文件而不复制
  -L, --dereference 总是跟随符号链接
  -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
  -P, --no-dereference 不跟随源文件中的符号链接
  -p 等于--preserve=模式,所有权,时间戳
      --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
  -c                           same as --preserve=context
      --sno-preserve=属性列表 不保留指定的文件属性
      --parents 复制前在目标目录创建来源文件路径中的所有目录
  -R, -r, --recursive 递归复制目录及其子目录内的所有内容
      --reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
      --remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
      --sparse=WHEN 控制创建稀疏文件的方式
      --strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
  -s, --symbolic-link 只创建符号链接而不复制文件
  -S, --suffix=后缀 自行指定备份文件的后缀
  -t,  --target-directory=目录 将所有参数指定的源文件/目录
                                           复制至目标目录
  -T, --no-target-directory 将目标目录视作普通文件
  -u, --update                 copy only when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -x, --one-file-system        stay on this file system
  -Z, --context=CONTEXT        set security context of copy to CONTEXT
      --help 显示此帮助信息并退出
      --version 显示版本信息并退出


默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。


当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。


备份文件的后缀为"~",除非以--suffix 选项或是SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:


  none, off       不进行备份(即使使用了--backup 选项)
  numbered, t     备份文件加上数字进行排序
  existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
  simple, never   永远使用普通方式备份


有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。

grep

相关命令:fgrep
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。Linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

grep --help
匹配模式选择:
 -E, --extended-regexp     扩展正则表达式egrep
 -F, --fixed-strings       一个换行符分隔的字符串的集合fgrep
 -G, --basic-regexp        基本正则
 -P, --perl-regexp         调用的perl正则
 -e, --regexp=PATTERN      后面根正则模式,默认无
 -f, --file=FILE           从文件中获得匹配模式
 -i, --ignore-case         不区分大小写
 -w, --word-regexp         匹配整个单词
 -x, --line-regexp         匹配整行
 -z, --null-data           一个 0 字节的数据行,但不是空行

杂项:
 -s, --no-messages         不显示错误信息
 -v, --invert-match        显示不匹配的行
 -V, --version             显示版本号
 --help                    显示帮助信息
 --mmap                use memory-mapped input if possible

输入控制:
 -m, --max-count=NUM       匹配的最大数
 -b, --byte-offset         打印匹配行前面打印该行所在的块号码。
 -n, --line-number         显示的加上匹配所在的行号
 --line-buffered           刷新输出每一行
 -H, --with-filename       当搜索多个文件时,显示匹配文件名前缀
 -h, --no-filename         当搜索多个文件时,不显示匹配文件名前缀
 --label=LABEL            print LABEL as filename for standard input
 -o, --only-matching       只显示一行中匹配PATTERN 的部分
 -q, --quiet, --silent      不显示任何东西
 --binary-files=TYPE   假定二进制文件的TYPE 类型;
                                      TYPE 可以是`binary', `text', 或`without-match'
 -a, --text                匹配二进制的东西
 -I                        不匹配二进制的东西
 -d, --directories=ACTION  目录操作,读取,递归,跳过
 -D, --devices=ACTION      设置对设备,FIFO,管道的操作,读取,跳过
 -R, -r, --recursive       递归调用
 --include=PATTERN     只查找匹配FILE_PATTERN 的文件
 --exclude=PATTERN     跳过匹配FILE_PATTERN 的文件和目录
 --exclude-from=FILE   跳过所有除FILE 以外的文件
 -L, --files-without-match 匹配多个文件时,显示不匹配的文件名
 -l, --files-with-matches  匹配多个文件时,显示匹配的文件名
 -c, --count               显示匹配的行数
 -Z, --null                在FILE 文件最后打印空字符

文件控制:
 -B, --before-context=NUM  打印匹配本身以及前面的几个行由NUM控制
 -A, --after-context=NUM   打印匹配本身以及随后的几个行由NUM控制
 -C, --context=NUM         打印匹配本身以及随后,前面的几个行由NUM控制
 -NUM                      根-C的用法一样的
 --color[=WHEN],
 --colour[=WHEN]       使用标志高亮匹配字串;
 
 -U, --binary               使用标志高亮匹配字串;
 -u, --unix-byte-offsets   当CR 字符不存在,报告字节偏移(MSDOS 模式)

tar

相关命令:unzip,bzip2,gunzip,tar,rar,gzip
 tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
 
 主操作模式:

 -A, --catenate, --concatenate   追加 tar 文件至归档
 -c, --create               创建一个新归档
 -d, --diff, --compare      找出归档和文件系统的差异
 --delete               从归档(非磁带!)中删除
 -r, --append               追加文件至归档结尾
 -t, --list                 列出归档内容
 --test-label           测试归档卷标并退出
 -u, --update               仅追加比归档中副本更新的文件
 -x, --extract, --get       从归档中解出文件

yum

相关命令:apt-get,pacman,rpm
yum 命令:用于添加/删除/更新RPM包,自动解决包的依赖问题以及系统更新升级

参数

-e [error level], --errorlevel=[error level] 错误输出级别
-q, --quiet 安静的操作
-t 忽略错误
-R[分钟] 设置等待时间
-y 自动应答yes
--skip-broken 忽略依赖问题
--nogpgcheck 忽略GPG验证

check-update 检查可更新的包
clean all 清除全部
clean packages 清除临时包文件(/var/cache/yum 下文件)
clean headers 清除rpm头文件
clean oldheaders 清除旧的rpm头文件
deplist 列出包的依赖
list 可安装和可更新的RPM包
list installed 已安装的包
list extras 已安装且不在资源库的包
info 可安装和可更新的RPM包 信息
info installed 已安装包的信息(-qa 参数相似)
install[RPM包] 安装包
localinstall 安装本地的 RPM包
update[RPM包] 更新包
upgrade 升级系统
search[关键词] 搜索包
provides[关键词] 搜索特定包文件名
reinstall[RPM包] 重新安装包
repolist 显示资源库的配置
resolvedep 指定依赖
remove[RPM包] 卸载包

rpm

相关命令:apt-get,yum,pacman
rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。以下的例子都以example-1.2.3-1.i386.rpm代表对象软件包的名称

参数与选项

 


一、安装选项

 


命令格式:

rpm -i ( or --install) options file1.rpm ... fileN.rpm

参数:

file1.rpm ... fileN.rpm 将要安装的RPM包的文件名

详细选项:

-h (or --hash) 安装时输出hash记号 (``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为

通用选项

-v 显示附加信息
-vv 显示更加详细的信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安
装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为

--dbpath 设置RPM 资料库存所在的路径为

Linux除了上述重要命令外,还有两个重要的东西,那就是重定向跟管道,下面来介绍一下这两个重要内容

1.标准输入和输出

linux中给出了三种有关设备:

标准输入:stdin ,由0表示,默认接受来自键盘的输入
标准输出:stdout,由1表示,默认输出到终端窗口
标准错误:stderr,由2表示,默认输出到终端窗口

stdout就是输出正确的信息,stderr就是输出的错误提示信息。
重定向和管道就是为了重定向这些输入和输出的。

2.重定向

重定向有多种形式,可以重定向输出到文件,可以重定向输出到下个命令,可以重定向输入到命令来被使用。

1)重定输出向到文件

>:把stdout重定向到文件,文件内容会被覆盖
>>:把stdout重定向到文件,文件内容不会被覆盖,而是在原有基础上追加内容
2>:把stderr重定向到文件,进行覆盖。
2>>:把stderr重定向到文件,进行追加。
&>or >& or 2>&1:把stdout和stderr作为同一个数据流重定向到文件
&>>:把stdout和stderr就是进行重定向追加了
(程序命令;程序命令;...):配合上述格式,可以合并多个程序命令的stdout和stderr来覆盖或追加

为了防止误操作来把文件给覆盖掉,造成数据丢失,可以通过set 命令来禁止和允许>的覆盖操作:

set -C:禁止将内容覆盖
set +C:允许覆盖

注意:stdout和stderr分开输出到不同文件时,必须是stdout在前,stderr在后,也就是2>2>>2>&1都需要在正确输出的后面。
具体的写法如下:

command > /path/to/file.out 2> /path/to/error.out
command >> /path/to/file.all.out 2>>/path/to/error.out
command > /path/to/file.all.out 2>&1 == command &> /path/to/file.all.out == command >& /path/to/file.all.out

2)重定向输入到命令

使用 <来重定向文件导向给stdin。
某些命令能够接收从文件中导入的stdin
例如:

使用<<终止词来重定向从键盘上输入的多行内容导向给stdin。
直到终止词位置的所有文件都发送给stdin。

3.管道

管道符号“|”用来连接命令:

command 1 | command 2 | command 3 | ...
上述是将command 1的stdout 发送给command 2的stdin,command 2 的stdout 发送给command 3的stdin,最后command 3的会在当前shell进程的子shell进程中执行出来。
系统默认不支持stderr进行管道转发,但可以利用2>&1|& 来实现。
例如:

管道中的-符号的用法:
tar -cvf - /home |tar -xvf -
这条命令是将/home里的文件打包,但打包的数据没有记录到某个文件,而是直接传送到stdout,经过管道后,将打包的数据送给tar -xvf来执行,后面的这个-就是取的前面的stdout,这样就不需要使用临时的文件了。

4.重定向到多个目标:tee

tee命令可以用到管道中,来保存管道不同阶段的输出,可以用于复杂管道的故障排除,同时查看和记录阶段输出。

tee - read from standard input and write to standard output and files
tee [OPTION]... [FILE]...
-a, --append:追加数据到文件
-i, --ignore-interrupts : 忽略中断符号

例如:
command 1 | tee -a file | command 2
把command 1的stdout保存到file中,并且再作为command 2的stdin

posted @ 2019-06-19 09:57  繁声物语  阅读(287)  评论(0编辑  收藏  举报