跳转到帖子

搜索论坛

显示结果为标签'Pilferer'。

  • 用标签来搜索

    用逗号分隔标签类型
  • 用作者来搜索

内容类型


论坛

  • 漏洞与黑客攻击防御安全领域
    • 黑客攻防业务合作
    • 世界黑客新闻动态
    • WEB和服务器安全漏洞
    • CHT漏洞数据库
    • Linux Kali高级学习教程
    • CTF&密码学与社会工程
    • 木马病毒分析
    • 黑客世界会员中心
  • 问题讨论中心
    • 问答中心
    • 交流中心
  • 编程开发
    • 各种编程技术
    • ios /安卓开发
  • CHT官方团队介绍及比赛制度
    • CTF攻防系统[供会员使用]
    • 积分商场
    • 积分跳马系统
    • 积分统计系统

产品组

  • Hacker attack and defense security hardware series
  • Internet Security Book Recommendations

博客

没有结果。

没有结果。

类别

  • Hacker Attack and Defense & Network Security Videos

查找结果在…

查找包含的结果…


创建日期

  • 开始

    结束


最后更新

  • 开始

    结束


按数量过滤…

注册日期

  • 开始

    结束


用户组


About Me

找到6个结果

  1. GitHub 上的 Awesome 系列(资源大全系列),是一个汇总了优秀工具资源的大集合,并由 GitHub 社区用户持续维护和更新。初始的版本都是英文,伯乐在线组织整理了热门资源大全的中文版。目前,中文版的资源列表在 GitHub 总计已经有超过 10K star 和 数千 fork 。以下是各个开发和设计资源的详细介绍。 Java 资源大全 Java资源大全中文版,包括:构建工具、字节码操作、集群管理、代码分析、编译器生成工具、外部配置工具、持续集成、数据结构、数据库、时间日期工具库、依赖注入、开发流程增强工具、分布式应用、分布式数据库、文档处理工具、函数式编程、游戏开发、GUI、高性能计算、IDE、图像处理、JSON、JVM与JDK、日志、机器学习、消息传递、应用监控工具、自然语言处理等。 GitHub 主页:https://github.com/jobbole/awesome-java-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=32 Python 资源大全 Python 资源大全中文版,包括:环境管理、包管理、构建工具、分发、Web框架、网络爬虫、模板引擎、数据库、数据可视化、图像处理、文本处理、自然语言处理、配置、命令行工具、地理位置、CMS、缓存、数据验证、反垃圾、GUI、游戏开发等。 GitHub 主页: https://github.com/jobbole/awesome-python-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=144 JavaScript 资源大全 JavaScript 资源大全中文版,内容包括:包管理器、打包工具、加载器、测试框架、运行器、QA、MVC框架和库、模板引擎、数据可视化、编辑器、函数式编程、响应式编程、数据结构、存储、国际化和本地化、日志、正则表达式、视觉检测、代码高亮、加载状态、验证、幻灯片、滑块控件、表单组件、框架、地图、视频/音频、动画、图片处理等。 GitHub 主页: https://github.com/jobbole/awesome-javascript-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=67 CSS 资源大全 CSS 资源大全中文版,内容包括:CSS预处理器、框架、CSS结构、大型网站的 CSS 开发、代码风格指南、命名习惯等 GitHub 主页:https://github.com/jobbole/awesome-css-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=24 iOS 资源大全 iOS 资源大全中文版,内容包括:依赖/包管理、框架、图表、测试、音频/视频、SDK、数据库、硬件、文件、日志、地图、网络通知、代码质量、支付、安全、编程规范、UI、硬件等。 GitHub 主页:https://github.com/jobbole/awesome-ios-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=31 C 资源大全 C 资源大全中文版,包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库、文档生成、编辑器、环境、框架、游戏编程、引擎、通用编程、图形、GUI、JSON、多媒体、网络编程、Web 框架、数值计算、并行编程、正则表达式、序列化、标准库、字符串处理、测试工具、文本编辑器扩展等。 GitHub 主页:https://github.com/jobbole/awesome-c-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=1877 MySQL 资源大全 MySQL 资源大全中文版,分析工具、备份、性能测试、配置、部署、GUI、聊天应用、连接器、HA、代理、服务器、分片、工具包 等。 GitHub 主页:https://github.com/jobbole/awesome-mysql-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=7 机器学习资源大全 机器学习资源大全中文版,包括众多编程语言(C++、Closure、Go、Java、JavaScript、Julia、Lua、MATLAB、DotNet、Python、Ruby、R、Scala )在 ML 领域的框架、库以及软件。 GitHub 主页:https://github.com/jobbole/awesome-machine-learning-cn Android 资源大全 Android 资源大全中文版,包括:图表、游戏开发、GUI、JSON、崩溃检测、网络请求、通知、数据库、测试、行为监测、集合框架、调试工具等。 GitHub 主页:https://github.com/jobbole/awesome-android-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=252 系统管理员/运维资源大全 系统管理员资源大全中文版,备份/克隆软件、云计算/云存储、协作软件、配置管理、日志管理、监控、项目管理、DNS、网络配置、NOSQL、打包、队列、RDBMS、安全、SSH、统计、故障排除、项目管理、版本控制、虚拟化、Web服务器等。 GitHub 主页:https://github.com/jobbole/awesome-sysadmin-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=7 DotNet 资源大全 DotNet 资源大全中文版,内容包括:API、编译器、压缩、应用框架、应用模板、认证和授权、CLI、CLR、代码分析、编译器、加密、数据库、反编译、IDE、部署、分布式、GIS、游戏开发、GUI、图像处理、MVVM、ORM、Web框架、Web服务器、日志、风格指南等。 GitHub 主页:https://github.com/jobbole/awesome-dotnet-cn PHP 资源大全 PHP资源大全中文版,内容包括:依赖管理、库、框架、静态网站生成器、HTTP、依赖注入、文件、图像处理、测试、持续集成、模板、安全、构建工具、调试工具、代码分析、搜索、日志、第三方库、配置工具、Web工具等。 GitHub 主页:https://github.com/jobbole/awesome-php-cn C++ 资源大全 C++ 资源大全中文版,标准库、Web应用框架、人工智能、音频、生态学、压缩、并发、容器、密码学、调试、游戏引擎、GUI、数据库、图片处理、机器学习、日志、代码分析、JSON、视频、物理学、机器人学、科学计算、网络编程、编译器、在线编译器、IDE 等。 GitHub 主页:https://github.com/jobbole/awesome-cpp-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=374 设计师资源大全 设计师资源大全,包含:ICON图标、Logo设计、PhotoShop插件、交互设计工具、流程图、线框图/原型图、设计博客等。 GitHub 主页:https://github.com/jobbole/awesome-design-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=803 署名:Pilferer 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/25.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  2. 本文讲述如何查找数据库里重复的行。这是初学者十分普遍遇到的问题。方法也很简单。这个问题还可以有其他演变,例如,如何查找“两字段重复的行”(#mysql IRC 频道问到的问题) 如何查找重复行 第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本: create table test(id int not null primary key, day date not null); insert into test(id, day) values(1, '2006-10-08'); insert into test(id, day) values(2, '2006-10-08'); insert into test(id, day) values(3, '2006-10-09'); select * from test; +----+------------+ | id | day | +----+------------+ | 1 | 2006-10-08 | | 2 | 2006-10-08 | 32006-10-09前面两行在day字段具有相同的值,因此如何我将他们当做重复行,这里有一查询语句可以查找。查询语句使用GROUP BY子句把具有相同字段值的行归为一组,然后计算组的大小。 select day, count(*) from test GROUP BY day; +------------+----------+ | day | count(*) | +------------+----------+ | 2006-10-08 | 2 | 2006-10-091重复行的组大小大于1。如何希望只显示重复行,必须使用HAVING子句,比如 select day, count() from test group by day HAVING count() > 1; +------------+----------+ | day | count(*) | +------------+----------+ 2006-10-082这是基本的技巧:根据具有相同值的字段分组,然后知显示大小大于1的组。 为什么不能使用WHERE子句?因为WHERE子句过滤的是分组之前的行,HAVING子句过滤的是分组之后的行。 如何删除重复行 一个相关的问题是如何删除重复行。一个常见的任务是,重复行只保留一行,其他删除,然后你可以创建适当的索引,防止以后再有重复的行写入数据库。 同样,首先是弄清楚重复行的定义。你要保留的是哪一行呢?第一行,或者某个字段具有最大值的行?本文中,假设要保留的是第一行——id字段具有最小值的行,意味着你要删除其他的行。 也许最简单的方法是通过临时表。尤其对于MYSQL,有些限制是不能在一个查询语句中select的同时update一个表。简单起见,这里只用到了临时表的方法。 我们的任务是:删除所有重复行,除了分组中id字段具有最小值的行。因此,需要找出大小大于1的分组,以及希望保留的行。你可以使用MIN()函数。这里的语句是创建临时表,以及查找需要用DELETE删除的行。 create temporary table to_delete (day date not null, min_id int not null); insert into to_delete(day, min_id) select day, MIN(id) from test group by day having count(*) > 1; select * from to_delete; +------------+--------+ | day | min_id | +------------+--------+ 2006-10-081有了这些数据,你可以开始删除“脏数据”行了。可以有几种方法,各有优劣(详见我的文章many-to-one problems in SQL),但这里不做详细比较,只是说明在支持查询子句的关系数据库中,使用的标准方法。 delete from test where exists( select * from to_delete where to_delete.day = test.day and to_delete.min_id <> test.id ) 如何查找多列上的重复行 有人最近问到这样的问题:我的一个表上有两个字段b和c,分别关联到其他两个表的b和c字段。我想要找出在b字段或者c字段上具有重复值的行。 咋看很难明白,通过对话后我理解了:他想要对b和c分别创建unique索引。如上所述,查找在某一字段上具有重复值的行很简单,只要用group分组,然后计算组的大小。并且查找全部字段重复的行也很简单,只要把所有字段放到group子句。但如果是判断b字段重复或者c字段重复,问题困难得多。这里提问者用到的样本数据。 create table a_b_c( a int not null primary key auto_increment, b int, c int ); insert into a_b_c(b,c) values (1, 1); insert into a_b_c(b,c) values (1, 2); insert into a_b_c(b,c) values (1, 3); insert into a_b_c(b,c) values (2, 1); insert into a_b_c(b,c) values (2, 2); insert into a_b_c(b,c) values (2, 3); insert into a_b_c(b,c) values (3, 1); insert into a_b_c(b,c) values (3, 2); insert into a_b_c(b,c) values (3, 3); 现在,你可以轻易看到表里面有一些重复的行,但找不到两行具有相同的二元组{b, c}。这就是为什么问题会变得困难了。 错误的查询语句 如果把两列放在一起分组,你会得到不同的结果,具体看如何分组和计算大小。提问者恰恰是困在了这里。有时候查询语句找到一些重复行却漏了其他的。这是他用到了查询 。 select b, c, count(*) from a_b_c group by b, c having count(distinct b > 1) or count(distinct c > 1); 结果返回所有的行,因为CONT(*)总是1.为什么?因为 >1 写在COUNT()里面。这个错误很容易被忽略,事实上等效于 select b, c, count(*) from a_b_c group by b, c having count(1) or count(1); 为什么?因为(b > 1)是一个布尔值,根本不是你想要的结果。你要的是 select b, c, count(*) from a_b_c group by b, c having count(distinct b) > 1 or count(distinct c) > 1; 返回空结果。很显然,因为没有重复的{b,c}。这人试了很多其他的OR和AND的组合,用来分组的是一个字段,计算大小的是另一个字段,像这样 select b, count(*) from a_b_c group by b having count(distinct c) > 1; +------+----------+ | b | count(*) | +------+----------+ | 1 | 3 | | 2 | 3 | 33没有一个能够找出全部的重复行。而且最令人沮丧的是,对于某些情况,这种语句是有效的,如果错误地以为就是这么写法,然而对于另外的情况,很可能得到错误结果。 事实上,单纯用GROUP BY 是不可行的。为什么?因为当你对某一字段使用group by时,就会把另一字段的值分散到不同的分组里。对这些字段排序可以看到这些效果,正如分组做的那样。首先,对b字段排序,看看它是如何分组的 当你对b字段排序(分组),相同值的c被分到不同的组,因此不能用COUNT(DISTINCT c)来计算大小。COUNT()之类的内部函数只作用于同一个分组,对于不同分组的行就无能为力了。类似,如果排序的是c字段,相同值的b也会分到不同的组,无论如何是不能达到我们的目的的。 几种正确的方法 也许最简单的方法是分别对某个字段查找重复行,然后用UNION拼在一起,像这样: select b as value, count(*) as cnt, 'b' as what_col from a_b_c group by b having count(*) > 1 union select c as value, count(*) as cnt, 'c' as what_col from a_b_c group by c having count(*) > 1; +-------+-----+----------+ | value | cnt | what_col | +-------+-----+----------+ | 1 | 3 | b | | 2 | 3 | b | | 3 | 3 | b | | 1 | 3 | c | | 2 | 3 | c | 33c输出what_col字段为了提示重复的是哪个字段。另一个办法是使用嵌套查询: select a, b, c from a_b_c where b in (select b from a_b_c group by b having count(*) > 1) or c in (select c from a_b_c group by c having count(*) > 1); +----+------+------+ | a | b | c | +----+------+------+ | 7 | 1 | 1 | | 8 | 1 | 2 | | 9 | 1 | 3 | | 10 | 2 | 1 | | 11 | 2 | 2 | | 12 | 2 | 3 | | 13 | 3 | 1 | | 14 | 3 | 2 | 1533这种方法的效率要比使用UNION低许多,并且显示每一重复的行,而不是重复的字段值。还有一种方法,将自己跟group的嵌套查询结果联表查询。写法比较复杂,但对于复杂的数据或者对效率有较高要求的情况,是很有必要的。 select a, a_b_c.b, a_b_c.c from a_b_c left outer join ( select b from a_b_c group by b having count(*) > 1 ) as b on a_b_c.b = b.b left outer join ( select c from a_b_c group by c having count(*) > 1 ) as c on a_b_c.c = c.c where b.b is not null or c.c is not null 以上方法可行,我敢肯定还有其他的方法。如果UNION能用,我想会是最简单不过的了。 署名:逸之枫|Pilferer 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/28.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  3. GitHub 上的 Awesome 系列(资源大全系列),是一个汇总了优秀工具资源的大集合,并由 GitHub 社区用户持续维护和更新。初始的版本都是英文,伯乐在线组织整理了热门资源大全的中文版。目前,中文版的资源列表在 GitHub 总计已经有超过 10K star 和 数千 fork 。以下是各个开发和设计资源的详细介绍。 Java 资源大全 Java资源大全中文版,包括:构建工具、字节码操作、集群管理、代码分析、编译器生成工具、外部配置工具、持续集成、数据结构、数据库、时间日期工具库、依赖注入、开发流程增强工具、分布式应用、分布式数据库、文档处理工具、函数式编程、游戏开发、GUI、高性能计算、IDE、图像处理、JSON、JVM与JDK、日志、机器学习、消息传递、应用监控工具、自然语言处理等。 GitHub 主页:https://github.com/jobbole/awesome-java-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=32 Python 资源大全 Python 资源大全中文版,包括:环境管理、包管理、构建工具、分发、Web框架、网络爬虫、模板引擎、数据库、数据可视化、图像处理、文本处理、自然语言处理、配置、命令行工具、地理位置、CMS、缓存、数据验证、反垃圾、GUI、游戏开发等。 GitHub 主页: https://github.com/jobbole/awesome-python-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=144 JavaScript 资源大全 JavaScript 资源大全中文版,内容包括:包管理器、打包工具、加载器、测试框架、运行器、QA、MVC框架和库、模板引擎、数据可视化、编辑器、函数式编程、响应式编程、数据结构、存储、国际化和本地化、日志、正则表达式、视觉检测、代码高亮、加载状态、验证、幻灯片、滑块控件、表单组件、框架、地图、视频/音频、动画、图片处理等。 GitHub 主页: https://github.com/jobbole/awesome-javascript-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=67 CSS 资源大全 CSS 资源大全中文版,内容包括:CSS预处理器、框架、CSS结构、大型网站的 CSS 开发、代码风格指南、命名习惯等 GitHub 主页:https://github.com/jobbole/awesome-css-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=24 iOS 资源大全 iOS 资源大全中文版,内容包括:依赖/包管理、框架、图表、测试、音频/视频、SDK、数据库、硬件、文件、日志、地图、网络通知、代码质量、支付、安全、编程规范、UI、硬件等。 GitHub 主页:https://github.com/jobbole/awesome-ios-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=31 C 资源大全 C 资源大全中文版,包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库、文档生成、编辑器、环境、框架、游戏编程、引擎、通用编程、图形、GUI、JSON、多媒体、网络编程、Web 框架、数值计算、并行编程、正则表达式、序列化、标准库、字符串处理、测试工具、文本编辑器扩展等。 GitHub 主页:https://github.com/jobbole/awesome-c-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=1877 MySQL 资源大全 MySQL 资源大全中文版,分析工具、备份、性能测试、配置、部署、GUI、聊天应用、连接器、HA、代理、服务器、分片、工具包 等。 GitHub 主页:https://github.com/jobbole/awesome-mysql-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=7 机器学习资源大全 机器学习资源大全中文版,包括众多编程语言(C++、Closure、Go、Java、JavaScript、Julia、Lua、MATLAB、DotNet、Python、Ruby、R、Scala )在 ML 领域的框架、库以及软件。 GitHub 主页:https://github.com/jobbole/awesome-machine-learning-cn Android 资源大全 Android 资源大全中文版,包括:图表、游戏开发、GUI、JSON、崩溃检测、网络请求、通知、数据库、测试、行为监测、集合框架、调试工具等。 GitHub 主页:https://github.com/jobbole/awesome-android-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=252 系统管理员/运维资源大全 系统管理员资源大全中文版,备份/克隆软件、云计算/云存储、协作软件、配置管理、日志管理、监控、项目管理、DNS、网络配置、NOSQL、打包、队列、RDBMS、安全、SSH、统计、故障排除、项目管理、版本控制、虚拟化、Web服务器等。 GitHub 主页:https://github.com/jobbole/awesome-sysadmin-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=7 DotNet 资源大全 DotNet 资源大全中文版,内容包括:API、编译器、压缩、应用框架、应用模板、认证和授权、CLI、CLR、代码分析、编译器、加密、数据库、反编译、IDE、部署、分布式、GIS、游戏开发、GUI、图像处理、MVVM、ORM、Web框架、Web服务器、日志、风格指南等。 GitHub 主页:https://github.com/jobbole/awesome-dotnet-cn PHP 资源大全 PHP资源大全中文版,内容包括:依赖管理、库、框架、静态网站生成器、HTTP、依赖注入、文件、图像处理、测试、持续集成、模板、安全、构建工具、调试工具、代码分析、搜索、日志、第三方库、配置工具、Web工具等。 GitHub 主页:https://github.com/jobbole/awesome-php-cn C++ 资源大全 C++ 资源大全中文版,标准库、Web应用框架、人工智能、音频、生态学、压缩、并发、容器、密码学、调试、游戏引擎、GUI、数据库、图片处理、机器学习、日志、代码分析、JSON、视频、物理学、机器人学、科学计算、网络编程、编译器、在线编译器、IDE 等。 GitHub 主页:https://github.com/jobbole/awesome-cpp-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=374 设计师资源大全 设计师资源大全,包含:ICON图标、Logo设计、PhotoShop插件、交互设计工具、流程图、线框图/原型图、设计博客等。 GitHub 主页:https://github.com/jobbole/awesome-design-cn 单个资源的详细介绍,发布在这里:http://hao.jobbole.com/?catid=803 署名:Pilferer 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/25.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  4. 本文讲述如何查找数据库里重复的行。这是初学者十分普遍遇到的问题。方法也很简单。这个问题还可以有其他演变,例如,如何查找“两字段重复的行”(#mysql IRC 频道问到的问题) 如何查找重复行 第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本: create table test(id int not null primary key, day date not null); insert into test(id, day) values(1, '2006-10-08'); insert into test(id, day) values(2, '2006-10-08'); insert into test(id, day) values(3, '2006-10-09'); select * from test; +----+------------+ | id | day | +----+------------+ | 1 | 2006-10-08 | | 2 | 2006-10-08 | 32006-10-09前面两行在day字段具有相同的值,因此如何我将他们当做重复行,这里有一查询语句可以查找。查询语句使用GROUP BY子句把具有相同字段值的行归为一组,然后计算组的大小。 select day, count(*) from test GROUP BY day; +------------+----------+ | day | count(*) | +------------+----------+ | 2006-10-08 | 2 | 2006-10-091重复行的组大小大于1。如何希望只显示重复行,必须使用HAVING子句,比如 select day, count() from test group by day HAVING count() > 1; +------------+----------+ | day | count(*) | +------------+----------+ 2006-10-082这是基本的技巧:根据具有相同值的字段分组,然后知显示大小大于1的组。 为什么不能使用WHERE子句?因为WHERE子句过滤的是分组之前的行,HAVING子句过滤的是分组之后的行。 如何删除重复行 一个相关的问题是如何删除重复行。一个常见的任务是,重复行只保留一行,其他删除,然后你可以创建适当的索引,防止以后再有重复的行写入数据库。 同样,首先是弄清楚重复行的定义。你要保留的是哪一行呢?第一行,或者某个字段具有最大值的行?本文中,假设要保留的是第一行——id字段具有最小值的行,意味着你要删除其他的行。 也许最简单的方法是通过临时表。尤其对于MYSQL,有些限制是不能在一个查询语句中select的同时update一个表。简单起见,这里只用到了临时表的方法。 我们的任务是:删除所有重复行,除了分组中id字段具有最小值的行。因此,需要找出大小大于1的分组,以及希望保留的行。你可以使用MIN()函数。这里的语句是创建临时表,以及查找需要用DELETE删除的行。 create temporary table to_delete (day date not null, min_id int not null); insert into to_delete(day, min_id) select day, MIN(id) from test group by day having count(*) > 1; select * from to_delete; +------------+--------+ | day | min_id | +------------+--------+ 2006-10-081有了这些数据,你可以开始删除“脏数据”行了。可以有几种方法,各有优劣(详见我的文章many-to-one problems in SQL),但这里不做详细比较,只是说明在支持查询子句的关系数据库中,使用的标准方法。 delete from test where exists( select * from to_delete where to_delete.day = test.day and to_delete.min_id <> test.id ) 如何查找多列上的重复行 有人最近问到这样的问题:我的一个表上有两个字段b和c,分别关联到其他两个表的b和c字段。我想要找出在b字段或者c字段上具有重复值的行。 咋看很难明白,通过对话后我理解了:他想要对b和c分别创建unique索引。如上所述,查找在某一字段上具有重复值的行很简单,只要用group分组,然后计算组的大小。并且查找全部字段重复的行也很简单,只要把所有字段放到group子句。但如果是判断b字段重复或者c字段重复,问题困难得多。这里提问者用到的样本数据。 create table a_b_c( a int not null primary key auto_increment, b int, c int ); insert into a_b_c(b,c) values (1, 1); insert into a_b_c(b,c) values (1, 2); insert into a_b_c(b,c) values (1, 3); insert into a_b_c(b,c) values (2, 1); insert into a_b_c(b,c) values (2, 2); insert into a_b_c(b,c) values (2, 3); insert into a_b_c(b,c) values (3, 1); insert into a_b_c(b,c) values (3, 2); insert into a_b_c(b,c) values (3, 3); 现在,你可以轻易看到表里面有一些重复的行,但找不到两行具有相同的二元组{b, c}。这就是为什么问题会变得困难了。 错误的查询语句 如果把两列放在一起分组,你会得到不同的结果,具体看如何分组和计算大小。提问者恰恰是困在了这里。有时候查询语句找到一些重复行却漏了其他的。这是他用到了查询 。 select b, c, count(*) from a_b_c group by b, c having count(distinct b > 1) or count(distinct c > 1); 结果返回所有的行,因为CONT(*)总是1.为什么?因为 >1 写在COUNT()里面。这个错误很容易被忽略,事实上等效于 select b, c, count(*) from a_b_c group by b, c having count(1) or count(1); 为什么?因为(b > 1)是一个布尔值,根本不是你想要的结果。你要的是 select b, c, count(*) from a_b_c group by b, c having count(distinct b) > 1 or count(distinct c) > 1; 返回空结果。很显然,因为没有重复的{b,c}。这人试了很多其他的OR和AND的组合,用来分组的是一个字段,计算大小的是另一个字段,像这样 select b, count(*) from a_b_c group by b having count(distinct c) > 1; +------+----------+ | b | count(*) | +------+----------+ | 1 | 3 | | 2 | 3 | 33没有一个能够找出全部的重复行。而且最令人沮丧的是,对于某些情况,这种语句是有效的,如果错误地以为就是这么写法,然而对于另外的情况,很可能得到错误结果。 事实上,单纯用GROUP BY 是不可行的。为什么?因为当你对某一字段使用group by时,就会把另一字段的值分散到不同的分组里。对这些字段排序可以看到这些效果,正如分组做的那样。首先,对b字段排序,看看它是如何分组的 当你对b字段排序(分组),相同值的c被分到不同的组,因此不能用COUNT(DISTINCT c)来计算大小。COUNT()之类的内部函数只作用于同一个分组,对于不同分组的行就无能为力了。类似,如果排序的是c字段,相同值的b也会分到不同的组,无论如何是不能达到我们的目的的。 几种正确的方法 也许最简单的方法是分别对某个字段查找重复行,然后用UNION拼在一起,像这样: select b as value, count(*) as cnt, 'b' as what_col from a_b_c group by b having count(*) > 1 union select c as value, count(*) as cnt, 'c' as what_col from a_b_c group by c having count(*) > 1; +-------+-----+----------+ | value | cnt | what_col | +-------+-----+----------+ | 1 | 3 | b | | 2 | 3 | b | | 3 | 3 | b | | 1 | 3 | c | | 2 | 3 | c | 33c输出what_col字段为了提示重复的是哪个字段。另一个办法是使用嵌套查询: select a, b, c from a_b_c where b in (select b from a_b_c group by b having count(*) > 1) or c in (select c from a_b_c group by c having count(*) > 1); +----+------+------+ | a | b | c | +----+------+------+ | 7 | 1 | 1 | | 8 | 1 | 2 | | 9 | 1 | 3 | | 10 | 2 | 1 | | 11 | 2 | 2 | | 12 | 2 | 3 | | 13 | 3 | 1 | | 14 | 3 | 2 | 1533这种方法的效率要比使用UNION低许多,并且显示每一重复的行,而不是重复的字段值。还有一种方法,将自己跟group的嵌套查询结果联表查询。写法比较复杂,但对于复杂的数据或者对效率有较高要求的情况,是很有必要的。 select a, a_b_c.b, a_b_c.c from a_b_c left outer join ( select b from a_b_c group by b having count(*) > 1 ) as b on a_b_c.b = b.b left outer join ( select c from a_b_c group by c having count(*) > 1 ) as c on a_b_c.c = c.c where b.b is not null or c.c is not null 以上方法可行,我敢肯定还有其他的方法。如果UNION能用,我想会是最简单不过的了。 署名:逸之枫|Pilferer 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/28.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  5. 1、ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的详细信息 -c 根据ctime排序显示 -t 根据文件修改时间排序 ---color[=WHEN] 用色彩辨别文件类型 WHEN 可以是'never'、'always'或'auto'其中之一 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其它文件 2、mv [选项] 源文件或目录 目录或多个源文件 | 移动或重命名文件 -b 覆盖前做备份 -f 如存在不询问而强制覆盖 -i 如存在则询问是否覆盖 -u 较新才覆盖 -t 将多个源文件移动到统一目录下,目录参数在前,文件参数在后 eg: mv a /tmp/ 将文件a移动到 /tmp目录下 mv a b 将a命名为b mv /home/zenghao test1.txt test2.txt test 3、cp [选项] 源文件或目录 目录或多个源文件 | 将源文件复制至目标文件,或将多个源文件复制至目标目录。 -r -R 递归复制该目录及其子目录内容 -p 连同档案属性一起复制过去 -f 不询问而强制复制 -s 生成快捷方式 -a 将档案的所有特性都一起复制 4、scp [参数] [原路径] [目标路径] | 在Linux服务器之间复制文件和目录 -v 详细显示输出的具体情况 -r 递归复制整个目录 (1) 复制文件: 命令格式: scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file 第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名 (2) 复制目录: 命令格式: scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder 第1个指定了用户名,命令执行后需要输入用户密码; 第2个没有指定用户名,命令执行后需要输入用户名和密码; eg: 从 本地 复制到 远程 scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root 从 远程 复制到 本地 scp root@/172.19.2.75:/home/root/full.tar.gz /home/daisy/full.tar.gz 5、rm [选项] 文件 | 删除文件 -r 删除文件夹 -f 删除不提示 -i 删除提示 -v 详细显示进行步骤 6、touch [选项] 文件 | 创建空文件或更新文件时间 -a 只修改存取时间 -m 值修改变动时间 -r eg:touch -r a b ,使b的时间和a相同 -t 指定特定的时间 eg:touch -t 201211142234.50 log.log -t time [[CC]YY]MMDDhhmm[.SS],C:年前两位 7、pwd 查看当前所在路径 8、cd 改变当前目录 :返回上层目录 .. :返回上层目录 回车 :返回主目录 / :根目录9、mkdir [选项] 目录… | 创建新目录 -p 递归创建目录,若父目录不存在则依次创建 -m 自定义创建目录的权限 eg:mkdir -m 777 hehe -v 显示创建目录的详细信息 10、rmdir 删除空目录 -v 显示执行过程 -p 若自父母删除后父目录为空则一并删除 11、rm [选项] 文件… | 一个或多个文件或目录 -f 忽略不存在的文件,不给出提示 -i 交互式删除 -r 将列出的目录及其子目录递归删除 -v 列出详细信息 12、echo:显示内容 -n 输出后不换行 -e 遇到转义字符特殊处理 eg: echo "he\nhe" 显示he\nhe ehco -e "he\nhe" 显示he(换行了)he 13、cat [选项] [文件]..| 一次显示整个文件或从键盘创建一个文件或将几个文件合并成一个文件 -n 编号文件内容再输出 -E 在结束行提示$ 14、tac | 反向显示 15、more | 按页查看文章内容,从前向后读取文件,因此在启动时就加载整个文件 +n 从第n行开始显示 -n 每次查看n行数据 +/String 搜寻String字符串位置,从其前两行开始查看 -c 清屏再显示 -p 换页时清屏 16、less | 可前后移动地逐屏查看文章内容,在查看前不会加载整个文件 -m 显示类似于more命令的百分比 -N 显示行号 / 字符串:向下搜索“字符串”的功能 ? 字符串:向上搜索“字符串”的功能 n 重复前一个搜索(与 / 或 ? 有关) N 反向重复前一个搜索(与 / 或 ? 有关) b 向后翻一页 d 向后翻半页 17、nl [选项]… [文件]… | 将输出内容自动加上行号 -b -b a 不论是否有空行,都列出行号(类似 cat -n) -b t 空行则不列行号(默认) -n 有ln rn rz三个参数,分别为再最左方显示,最右方显示不加0,最右方显示加0 18、head [参数]… [文件]… | 显示档案开头,默认开头10行 -v 显示文件名 -c number 显示前number个字符,若number为负数,则显示除最后number个字符的所有内容 -number/n (+)number 显示前number行内容, -n number 若number为负数,则显示除最后number行数据的所有内容 19、tail [必要参数] [选择参数] [文件] | 显示文件结尾内容 -v 显示详细的处理信息 -q 不显示处理信息 -num/-n (-)num 显示最后num行内容 -n +num 从第num行开始显示后面的数据 -c 显示最后c个字符 -f 循环读取 20、vi 编辑文件 :w filename 将文章以指定的文件名保存起来 :wq 保存并退出 :q! 不保存而强制退出 命令行模式功能键 1)插入模式 按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。 2)从插入模式切换为命令行模式 按「ESC」键。 3)移动光标   vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。   按「ctrl」+「b」:屏幕往"后"移动一页。   按「ctrl」+「f」:屏幕往"前"移动一页。   按「ctrl」+「u」:屏幕往"后"移动半页。   按「ctrl」+「d」:屏幕往"前"移动半页。   按数字「0」:移到文章的开头。   按「G」:移动到文章的最后。   按「$」:移动到光标所在行的"行尾"。   按「^」:移动到光标所在行的"行首"   按「w」:光标跳到下个字的开头   按「e」:光标跳到下个字的字尾   按「b」:光标回到上个字的开头   按「#l」:光标移到该行的第#个位置,如:5l,56l。 4)删除文字   「x」:每按一次,删除光标所在位置的"后面"一个字符。   「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。   「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。   「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。   「dd」:删除光标所在行。   「#dd」:从光标所在行开始删除#行 5)复制   「yw」:将光标所在之处到字尾的字符复制到缓冲区中。   「#yw」:复制#个字到缓冲区   「yy」:复制光标所在行到缓冲区。   「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。   「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。 6)替换   「r」:替换光标所在处的字符。   「R」:替换光标所到之处的字符,直到按下「ESC」键为止。 7)回复上一次操作   「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。 8)更改   「cw」:更改光标所在处的字到字尾处   「c#w」:例如,「c3w」表示更改3个字 9)跳至指定的行   「ctrl」+「g」列出光标所在行的行号。   「#G」:例如,「15G」,表示移动光标至文章的第15行行首。 21、which 可执行文件名称 | 查看可执行文件的位置,在PATH变量指定的路径中查看系统命令是否存在及其位置 22、whereis [-bmsu] [BMS 目录名 -f ] 文件名| 定位可执行文件、源代码文件、帮助文件在文件系统中的位置 -b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。 -B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径。 23、locate | 通过搜寻数据库快速搜寻档案 -r 使用正规运算式做寻找的条件 24、find find [PATH] [option] [action] | 在文件树种查找文件,并作出相应的处理 选项与参数: 与时间有关的选项:共有 -atime, -ctime 与 -mtime 和-amin,-cmin与-mmin,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的档案; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的档案档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的档案档名。 -newer file :file 为一个存在的档案,列出比 file 还要新的档案档名与使用者或组名有关的参数: -uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID -gid n :n 为数字,这个数字是组名的 ID,亦即 GID -user name :name 为使用者账号名称!例如 dmtsai -group name:name 为组名,例如 users ; -nouser :寻找档案的拥有者不存在 /etc/passwd 的人! -nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案!与档案权限及名称有关的参数: -name filename:搜寻文件名为 filename 的档案(可使用通配符) -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有: c: 代表 byte k: 代表 1024bytes。所以,要找比 50KB还要大的档案,就是『 -size +50k 』-type TYPE :搜寻档案的类型为 TYPE 的,类型主要有: 一般正规档案 (f) 装置档案 (b, c) 目录 (d) 连结档 (l) socket (s) FIFO (p)-perm mode :搜寻档案权限『刚好等于』 mode的档案,这个mode为类似chmod的属性值,举例来说,-rwsr-xr-x 的属性为4755! -perm -mode :搜寻档案权限『必须要全部囊括 mode 的权限』的档案,举例来说, 我们要搜寻-rwxr--r-- 亦即 0744 的档案,使用-perm -0744,当一个档案的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。-perm +mode :搜寻档案权限『包含任一 mode 的权限』的档案,举例来 说,我们搜寻-rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在!额外可进行的动作: -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。 -print :将结果打印到屏幕上,这个动作是预设动作! eg: find / -perm +7000 -exec ls -l {} \; ,额外指令以-exec开头,以\;结尾{}代替前面找到的内容| xargs -i 默认的前面输出用{}代替 eg: find . -name "*.log" | xargs -i mv {} test4 25、grep ‘正则表达式’ 文件名 | 用正则表达式搜索文本,并把匹配的行打印出来 -c 只输出匹配行的计数。 -I 不区分大小写(只适用于单字符)。 -l 只显示文件名 -v 显示不包含匹配文本的所有行。 -n 显示匹配行数据及其行号 25、file | 判断文件类型 26、gzip [-cdtv#] 檔名 | 压缩、解压缩,源文件都不再存在 -d 进行解压缩 -c 将压缩的数据输出到屏幕上 -v :显示原档案/压缩文件案的压缩比等信息 -# :压缩等级,-1最快,但压缩比最差,=9最慢,但压缩比最好 27、gunzip | 解压缩 28、bzip2 | 压缩、解压缩 -d :解压 -z :压缩 -k :保留源文件 -c :将压缩的过程产生的数据输出到屏幕上! -v :可以显示出原档案/压缩文件案的压缩比等信息; -#:与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 29、bzcat 读取数据而无需解压 30、tar [主选项+辅选项] 文件或者目录 | 多个目录或档案打包、压缩成一个大档案 主选项: -c 建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename) -t 察看打包档案的内容含有哪些档名,重点在察看『档名』就是了; -x 解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 辅选项: -j 透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2 -z 透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz -v 在压缩/解压缩的过程中,将正在处理的文件名显示出来! -f filename -f 后面要立刻接要被处理的档名! -C 目录 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 --exclude FILE:在压缩打包过程中忽略某文件 eg: tar --exclude /home/zenghao -zcvf myfile.tar.gz /home/* /etc -p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 -P(大写) 保留绝对路径,亦即允许备份数据中含有根目录存在之意; eg: 压 缩:tar -jcvf filename.tar.bz2 要被压缩的档案或目录名称 查 询:tar -jtvf filename.tar.bz2 解压缩:tar -jxvf filename.tar.bz2 -C 欲解压缩的目录 31、exit 退出当前shell 32、logout 退出登录shell 33、shutdown -h now 34、users 显示当前登录系统地用户 35、who 登录在本机的用户与来源 -H或--heading  显示各栏位的标题信息列。 36、w 登录在本机的用户及其运行的程序 -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。 -h  不显示各栏位的标题信息列。 37、write 给当前联机的用户发消息 38、wall 给所有登录再本机的用户发消息 39、last 查看用户的登陆日志 40、lastlog 查看每个用户最后的登陆时间 41、finger [选项] [使用者] [用户@主机] | 查看用户信息 -s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息 -l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。 -p 除了不显示.plan文件和.project文件以外,与-l选项相同 42、hostname 查看主机名 43、alias ii = “ls -l” | 添加别名 44、unalias ii | 清除别名 45、useradd [-u UID] [-g 初始群组] [-G 次要群组] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名 | 新增用户 -M 不建立用户家目录!(系统账号默认值) -m 建立用户家目录!(一般账号默认值) -r 建立一个系统的账号,这个账号的 UID 会有限制 -e 账号失效日期,格式为『YYYY-MM-DD』 -D 查看useradd的各项默认值 46、passwd | 修改密码 -l 使密码失效 -u 与-l相对,用户解锁 -S 列出登陆用户passwd文件内的相关参数 -n 后面接天数,shadow 的第 4 字段,多久不可修改密码天数 -x 后面接天数,shadow 的第 5 字段,多久内必须要更动密码 -w 后面接天数,shadow 的第 6 字段,密码过期前的警告天数 -i 后面接『日期』,shadow 的第 7 字段,密码失效日期 使用管道刘设置密码:echo "zeng" | passwd --stdin zenghao 47、userdel 删除用户 -r 用户文件一并删除 48、chage [-ldEImMW] 账号名 | 修改用户密码的相关属性 -l 列出该账号的详细密码参数; -d 后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式YYYY-MM-DD -E 后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD -I 后面接天数,修改 shadow 第七字段(密码失效日期) -m 后面接天数,修改 shadow 第四字段(密码最短保留天数) -M 后面接天数,修改 shadow 第五字段(密码多久需要进行变更) -W 后面接天数,修改 shadow 第六字段(密码过期前警告日期) 49、usermod [-cdegGlsuLU] username | 修改用户的相关属性 -c 后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。 -d 后面接账号的家目录,即修改 /etc/passwd 的第六栏; -e 后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦! -f 后面接天数为 shadow 的第七字段。 -g 后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是GID的字段! -G 后面接次要群组,修改这个使用者能够支持的群组 -l 后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏! -s 后面接 Shell 的实际档案,例如 /bin/ 或 /bin/csh 等等。 -u 后面接 UID 数字啦!即 /etc/passwd 第三栏的资料; -L 冻结密码 -U 解冻密码 50、id [username] | 查看用户相关的id信息,还可以用来判断用户是否存在 51、groups 查看登陆用户支持的群组, 第一个输出的群组为有效群组 52、newgrp 切换有效群组 53、groupadd [-g gid] 组名 | 添加组 -g 设定添加组的特定组id 54、groupmod [-g gid] [-n group_name] 群组名 | 修改组信息 -g 修改既有的 GID 数字 -n 修改既有的组名 55、groupdel [groupname] | 删除群组 56、gpasswd | 群组管理员功能 root管理员动作: -gpasswd groupname 设定密码 -gpasswd [-A user1,...] [-M user3,...] groupname -A 将 groupname 的主控权交由后面的使用者管理(该群组的管理员) -M 将某些账号加入这个群组当中-gpasswd [-r] groupname -r 将 groupname 的密码移除群组管理员动作: gpasswd [-ad] user groupname -a 将某位使用者加入到 groupname 这个群组当中 -d 将某位使用者移除出 groupname 这个群组当中57、chfn修改个人信息 58、mount [-t vfstype] [-o options] device dir -ro 采用只读方式挂接设备 -rw 采用读写方式挂接设备 eg:mount /home/mydisk.iso /tmp/mnt 通过mnt访问mydisk内的内容 59、umount 取消挂载 60、cut -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 61、sort -n 依照数值的大小排序。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 -k 选择以哪个区间进行排序。 62、wc 统计指定文件中的字节数、字数、行数, 并将统计结果显示输出 -l filename 报告行数 -c filename 报告字节数 -m filename 报告字符数 -w filename 报告单词数 63、uniq 去除文件中相邻的重复行 -c或——count:在每列旁边显示该行重复出现的次数; -d或--repeated:仅显示重复出现的行列; -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位; -s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符; -u或——unique:仅显示出一次的行列; -w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。 64、set 显示环境变量和普通变量 65、env 显示环境变量 66、export 把普通变量变成环境变量 67、unset 删除一个环境变量 aaa(){} 定义函数 68、read -p 接提示字符 -t 接等待的秒数 69、declare、typeset -i 声明为整数 -a 声明为数组 -f 声明为函数 -r 声明为只读 70、ulimit 限制使用者的某些系统资源 -f 此 shell 可以建立的最大档案容量 (一般可能设定为 2GB)单位为 Kbytes eg: ulimit -f 1024 限制使用者仅能建立 1MBytes 以下的容量的档案 71、df [选项] [文件] | 显示指定磁盘文件的可用空间,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示 -a 显示全部文件系统 -h 文件大小友好显示 -l 只显示本地文件系统 -i 显示inode信息 -T 显示文件系统类型 72、du [选项] [文件] | 显示每个文件和目录的磁盘使用空间 -h 方便阅读的方式 -s 只显示总和的大小 73、ln [参数] [源文件或目录] [目标文件或目录] | 某一个文件在另外一个位置建立一个同步的链接 -s 建立软连接 -v 显示详细的处理过程 74、diff [参数] [文件1或目录1] [文件2或目录2] | 比较单个文件或者目录内容 -b  不检查空格字符的不同。 -B  不检查空白行。 -i 不检查大小写 -q 仅显示差异而不显示详细信息 eg: diff a b > parch.log 比较两个文件的不同并产生补丁 75、date [参数]… [+格式] | 显示或设定系统的日期与时间 %H 小时(以00-23来表示)。 %M 分钟(以00-59来表示)。 %P AM或PM。 %D 日期(含年月日) %U 该年中的周数。 date -s “2015-10-17 01:01:01″ //时间设定 date +%Y%m%d //显示前天年月日 date +%Y%m%d --date="+1 day/month/year" //显示前一天/月/年的日期 date +%Y%m%d --date="-1 day/month/year" //显示后一天/月/年的日期 date -d '2 weeks' 2周后的日期 76、cal [参数] 月份] [年份] | 查看日历 -1 显示当月的月历 -3 显示前、当、后一个月的日历 -m 显示星期一为一个星期的第一天 -s (默认)星期天为第一天 -j 显示当月是一年中的第几天的日历 -y 显示当前年份的日历 77、ps | 列出当前进程的快照 a 显示所有的进程 -a 显示同一终端下的所有程序 e 显示环境变量 f 显示进程间的关系 -H 显示树状结构 r 显示当前终端的程序 T 显示当前终端的所有程序 -au 显示更详细的信息 -aux 显示所有包含其他使用者的行程 -u 指定用户的所有进程 78、top [参数] | 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等 79、kill [参数] [进程号] | 杀死进程 80、free [参数] | 显示linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer 81、vmstat | 对操作系统的虚拟内存、进程、CPU活动进行监控 82、iostat [参数] [时间t] [次数n](每隔t时间刷新一次,最多刷新n次)| 对系统的磁盘操作活动进行监视,汇报磁盘活动统计情况,同时也会汇报出CPU使用情况 -p[磁盘] 显示磁盘和分区的情况 83、watch [参数] [命令] |重复执行某一命令以观察变化 -n 时隔多少秒刷新 -d 高亮显示动态变化 84、at [参数] [时间] | 在一个指定的时间执行一个指定任务,只能执行一次 HH:MM[am|pm] + number [minutes|hours|days|weeks] 强制在某年某月某日的某时刻进行该项任务 atq 查看系统未执行的任务 atrm n 删除编号为n的任务 at -c n 显示编号为n的任务的内容 85、crontab | 定时任务调度 file 载入crontab -e 编辑某个用户的crontab文件内容 -l 显示某个用户的crontab文件内容 -r 删除某个用户的crontab文件 86、ifconfig [网络设备] [参数] | 查看和配置网络设备 87、route | 显示和操作IP路由表 88、ping [参数] [主机名或IP地址] | 测试与目标主机的连通性 -q 只显示最后的结果 89、netstat | 显示与IP、TCP、UDP和ICMP协议相关的统计数据 90、telnet [参数] [主机] | 用于远程登录,采用明文传送报文,安全性不好 91、rcp [参数] [源文件] [目标文件] | 远程文件拷贝 -r 递归复制 -p 保留源文件的属性 usage: rcp –r remote_hostname:remote_dir local_dir 92、wget [参数] [URL地址] | 直接从网络上下载文件 -o FILE 把记录写到FILE文件中 eg : wget -O a.txt URL wget --limit-rate=300k URL 限速下载 93、awk -F 分隔符 以分隔符分隔内容 {} 要执行的脚本内容 eg:cat /etc/passwd |awk -F ':' '{print $1"\t"$7}' 94、sed 对数据行进行替换、删除、新增、选取等操作 a 新增,在新的下一行出现 c 取代,取代 n1,n2 之间的行 eg: sed '1,2c Hi' ab d 删除 i 插入,在新的上一行出现 95、paste 合并文件,需确保合并的两文件行数相同 -d 指定不同于空格或tab键的域分隔符 -s 按行合并,单独一个文件为一行 96、su [参数] user | 切换登陆 -l 切换时连同环境变量、工作目录一起改变 -c command 执行command变回原来的使用者 97、sudo | 以特定用户的权限执行特定命令 -l 列出当前用户可执行的命令 -u username#uid 以指定用户执行命令 署名:逸之枫|Pilferer 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/59.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  6. 1、ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的详细信息 -c 根据ctime排序显示 -t 根据文件修改时间排序 ---color[=WHEN] 用色彩辨别文件类型 WHEN 可以是'never'、'always'或'auto'其中之一 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其它文件 2、mv [选项] 源文件或目录 目录或多个源文件 | 移动或重命名文件 -b 覆盖前做备份 -f 如存在不询问而强制覆盖 -i 如存在则询问是否覆盖 -u 较新才覆盖 -t 将多个源文件移动到统一目录下,目录参数在前,文件参数在后 eg: mv a /tmp/ 将文件a移动到 /tmp目录下 mv a b 将a命名为b mv /home/zenghao test1.txt test2.txt test 3、cp [选项] 源文件或目录 目录或多个源文件 | 将源文件复制至目标文件,或将多个源文件复制至目标目录。 -r -R 递归复制该目录及其子目录内容 -p 连同档案属性一起复制过去 -f 不询问而强制复制 -s 生成快捷方式 -a 将档案的所有特性都一起复制 4、scp [参数] [原路径] [目标路径] | 在Linux服务器之间复制文件和目录 -v 详细显示输出的具体情况 -r 递归复制整个目录 (1) 复制文件: 命令格式: scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file 第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名 (2) 复制目录: 命令格式: scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder 第1个指定了用户名,命令执行后需要输入用户密码; 第2个没有指定用户名,命令执行后需要输入用户名和密码; eg: 从 本地 复制到 远程 scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root 从 远程 复制到 本地 scp root@/172.19.2.75:/home/root/full.tar.gz /home/daisy/full.tar.gz 5、rm [选项] 文件 | 删除文件 -r 删除文件夹 -f 删除不提示 -i 删除提示 -v 详细显示进行步骤 6、touch [选项] 文件 | 创建空文件或更新文件时间 -a 只修改存取时间 -m 值修改变动时间 -r eg:touch -r a b ,使b的时间和a相同 -t 指定特定的时间 eg:touch -t 201211142234.50 log.log -t time [[CC]YY]MMDDhhmm[.SS],C:年前两位 7、pwd 查看当前所在路径 8、cd 改变当前目录 :返回上层目录 .. :返回上层目录 回车 :返回主目录 / :根目录9、mkdir [选项] 目录… | 创建新目录 -p 递归创建目录,若父目录不存在则依次创建 -m 自定义创建目录的权限 eg:mkdir -m 777 hehe -v 显示创建目录的详细信息 10、rmdir 删除空目录 -v 显示执行过程 -p 若自父母删除后父目录为空则一并删除 11、rm [选项] 文件… | 一个或多个文件或目录 -f 忽略不存在的文件,不给出提示 -i 交互式删除 -r 将列出的目录及其子目录递归删除 -v 列出详细信息 12、echo:显示内容 -n 输出后不换行 -e 遇到转义字符特殊处理 eg: echo "he\nhe" 显示he\nhe ehco -e "he\nhe" 显示he(换行了)he 13、cat [选项] [文件]..| 一次显示整个文件或从键盘创建一个文件或将几个文件合并成一个文件 -n 编号文件内容再输出 -E 在结束行提示$ 14、tac | 反向显示 15、more | 按页查看文章内容,从前向后读取文件,因此在启动时就加载整个文件 +n 从第n行开始显示 -n 每次查看n行数据 +/String 搜寻String字符串位置,从其前两行开始查看 -c 清屏再显示 -p 换页时清屏 16、less | 可前后移动地逐屏查看文章内容,在查看前不会加载整个文件 -m 显示类似于more命令的百分比 -N 显示行号 / 字符串:向下搜索“字符串”的功能 ? 字符串:向上搜索“字符串”的功能 n 重复前一个搜索(与 / 或 ? 有关) N 反向重复前一个搜索(与 / 或 ? 有关) b 向后翻一页 d 向后翻半页 17、nl [选项]… [文件]… | 将输出内容自动加上行号 -b -b a 不论是否有空行,都列出行号(类似 cat -n) -b t 空行则不列行号(默认) -n 有ln rn rz三个参数,分别为再最左方显示,最右方显示不加0,最右方显示加0 18、head [参数]… [文件]… | 显示档案开头,默认开头10行 -v 显示文件名 -c number 显示前number个字符,若number为负数,则显示除最后number个字符的所有内容 -number/n (+)number 显示前number行内容, -n number 若number为负数,则显示除最后number行数据的所有内容 19、tail [必要参数] [选择参数] [文件] | 显示文件结尾内容 -v 显示详细的处理信息 -q 不显示处理信息 -num/-n (-)num 显示最后num行内容 -n +num 从第num行开始显示后面的数据 -c 显示最后c个字符 -f 循环读取 20、vi 编辑文件 :w filename 将文章以指定的文件名保存起来 :wq 保存并退出 :q! 不保存而强制退出 命令行模式功能键 1)插入模式 按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。 2)从插入模式切换为命令行模式 按「ESC」键。 3)移动光标   vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。   按「ctrl」+「b」:屏幕往"后"移动一页。   按「ctrl」+「f」:屏幕往"前"移动一页。   按「ctrl」+「u」:屏幕往"后"移动半页。   按「ctrl」+「d」:屏幕往"前"移动半页。   按数字「0」:移到文章的开头。   按「G」:移动到文章的最后。   按「$」:移动到光标所在行的"行尾"。   按「^」:移动到光标所在行的"行首"   按「w」:光标跳到下个字的开头   按「e」:光标跳到下个字的字尾   按「b」:光标回到上个字的开头   按「#l」:光标移到该行的第#个位置,如:5l,56l。 4)删除文字   「x」:每按一次,删除光标所在位置的"后面"一个字符。   「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。   「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。   「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。   「dd」:删除光标所在行。   「#dd」:从光标所在行开始删除#行 5)复制   「yw」:将光标所在之处到字尾的字符复制到缓冲区中。   「#yw」:复制#个字到缓冲区   「yy」:复制光标所在行到缓冲区。   「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。   「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。 6)替换   「r」:替换光标所在处的字符。   「R」:替换光标所到之处的字符,直到按下「ESC」键为止。 7)回复上一次操作   「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。 8)更改   「cw」:更改光标所在处的字到字尾处   「c#w」:例如,「c3w」表示更改3个字 9)跳至指定的行   「ctrl」+「g」列出光标所在行的行号。   「#G」:例如,「15G」,表示移动光标至文章的第15行行首。 21、which 可执行文件名称 | 查看可执行文件的位置,在PATH变量指定的路径中查看系统命令是否存在及其位置 22、whereis [-bmsu] [BMS 目录名 -f ] 文件名| 定位可执行文件、源代码文件、帮助文件在文件系统中的位置 -b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。 -B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径。 23、locate | 通过搜寻数据库快速搜寻档案 -r 使用正规运算式做寻找的条件 24、find find [PATH] [option] [action] | 在文件树种查找文件,并作出相应的处理 选项与参数: 与时间有关的选项:共有 -atime, -ctime 与 -mtime 和-amin,-cmin与-mmin,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的档案; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的档案档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的档案档名。 -newer file :file 为一个存在的档案,列出比 file 还要新的档案档名与使用者或组名有关的参数: -uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID -gid n :n 为数字,这个数字是组名的 ID,亦即 GID -user name :name 为使用者账号名称!例如 dmtsai -group name:name 为组名,例如 users ; -nouser :寻找档案的拥有者不存在 /etc/passwd 的人! -nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案!与档案权限及名称有关的参数: -name filename:搜寻文件名为 filename 的档案(可使用通配符) -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有: c: 代表 byte k: 代表 1024bytes。所以,要找比 50KB还要大的档案,就是『 -size +50k 』-type TYPE :搜寻档案的类型为 TYPE 的,类型主要有: 一般正规档案 (f) 装置档案 (b, c) 目录 (d) 连结档 (l) socket (s) FIFO (p)-perm mode :搜寻档案权限『刚好等于』 mode的档案,这个mode为类似chmod的属性值,举例来说,-rwsr-xr-x 的属性为4755! -perm -mode :搜寻档案权限『必须要全部囊括 mode 的权限』的档案,举例来说, 我们要搜寻-rwxr--r-- 亦即 0744 的档案,使用-perm -0744,当一个档案的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。-perm +mode :搜寻档案权限『包含任一 mode 的权限』的档案,举例来 说,我们搜寻-rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在!额外可进行的动作: -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。 -print :将结果打印到屏幕上,这个动作是预设动作! eg: find / -perm +7000 -exec ls -l {} \; ,额外指令以-exec开头,以\;结尾{}代替前面找到的内容| xargs -i 默认的前面输出用{}代替 eg: find . -name "*.log" | xargs -i mv {} test4 25、grep ‘正则表达式’ 文件名 | 用正则表达式搜索文本,并把匹配的行打印出来 -c 只输出匹配行的计数。 -I 不区分大小写(只适用于单字符)。 -l 只显示文件名 -v 显示不包含匹配文本的所有行。 -n 显示匹配行数据及其行号 25、file | 判断文件类型 26、gzip [-cdtv#] 檔名 | 压缩、解压缩,源文件都不再存在 -d 进行解压缩 -c 将压缩的数据输出到屏幕上 -v :显示原档案/压缩文件案的压缩比等信息 -# :压缩等级,-1最快,但压缩比最差,=9最慢,但压缩比最好 27、gunzip | 解压缩 28、bzip2 | 压缩、解压缩 -d :解压 -z :压缩 -k :保留源文件 -c :将压缩的过程产生的数据输出到屏幕上! -v :可以显示出原档案/压缩文件案的压缩比等信息; -#:与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 29、bzcat 读取数据而无需解压 30、tar [主选项+辅选项] 文件或者目录 | 多个目录或档案打包、压缩成一个大档案 主选项: -c 建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename) -t 察看打包档案的内容含有哪些档名,重点在察看『档名』就是了; -x 解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 辅选项: -j 透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2 -z 透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz -v 在压缩/解压缩的过程中,将正在处理的文件名显示出来! -f filename -f 后面要立刻接要被处理的档名! -C 目录 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 --exclude FILE:在压缩打包过程中忽略某文件 eg: tar --exclude /home/zenghao -zcvf myfile.tar.gz /home/* /etc -p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 -P(大写) 保留绝对路径,亦即允许备份数据中含有根目录存在之意; eg: 压 缩:tar -jcvf filename.tar.bz2 要被压缩的档案或目录名称 查 询:tar -jtvf filename.tar.bz2 解压缩:tar -jxvf filename.tar.bz2 -C 欲解压缩的目录 31、exit 退出当前shell 32、logout 退出登录shell 33、shutdown -h now 34、users 显示当前登录系统地用户 35、who 登录在本机的用户与来源 -H或--heading  显示各栏位的标题信息列。 36、w 登录在本机的用户及其运行的程序 -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。 -h  不显示各栏位的标题信息列。 37、write 给当前联机的用户发消息 38、wall 给所有登录再本机的用户发消息 39、last 查看用户的登陆日志 40、lastlog 查看每个用户最后的登陆时间 41、finger [选项] [使用者] [用户@主机] | 查看用户信息 -s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息 -l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。 -p 除了不显示.plan文件和.project文件以外,与-l选项相同 42、hostname 查看主机名 43、alias ii = “ls -l” | 添加别名 44、unalias ii | 清除别名 45、useradd [-u UID] [-g 初始群组] [-G 次要群组] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名 | 新增用户 -M 不建立用户家目录!(系统账号默认值) -m 建立用户家目录!(一般账号默认值) -r 建立一个系统的账号,这个账号的 UID 会有限制 -e 账号失效日期,格式为『YYYY-MM-DD』 -D 查看useradd的各项默认值 46、passwd | 修改密码 -l 使密码失效 -u 与-l相对,用户解锁 -S 列出登陆用户passwd文件内的相关参数 -n 后面接天数,shadow 的第 4 字段,多久不可修改密码天数 -x 后面接天数,shadow 的第 5 字段,多久内必须要更动密码 -w 后面接天数,shadow 的第 6 字段,密码过期前的警告天数 -i 后面接『日期』,shadow 的第 7 字段,密码失效日期 使用管道刘设置密码:echo "zeng" | passwd --stdin zenghao 47、userdel 删除用户 -r 用户文件一并删除 48、chage [-ldEImMW] 账号名 | 修改用户密码的相关属性 -l 列出该账号的详细密码参数; -d 后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式YYYY-MM-DD -E 后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD -I 后面接天数,修改 shadow 第七字段(密码失效日期) -m 后面接天数,修改 shadow 第四字段(密码最短保留天数) -M 后面接天数,修改 shadow 第五字段(密码多久需要进行变更) -W 后面接天数,修改 shadow 第六字段(密码过期前警告日期) 49、usermod [-cdegGlsuLU] username | 修改用户的相关属性 -c 后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。 -d 后面接账号的家目录,即修改 /etc/passwd 的第六栏; -e 后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦! -f 后面接天数为 shadow 的第七字段。 -g 后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是GID的字段! -G 后面接次要群组,修改这个使用者能够支持的群组 -l 后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏! -s 后面接 Shell 的实际档案,例如 /bin/ 或 /bin/csh 等等。 -u 后面接 UID 数字啦!即 /etc/passwd 第三栏的资料; -L 冻结密码 -U 解冻密码 50、id [username] | 查看用户相关的id信息,还可以用来判断用户是否存在 51、groups 查看登陆用户支持的群组, 第一个输出的群组为有效群组 52、newgrp 切换有效群组 53、groupadd [-g gid] 组名 | 添加组 -g 设定添加组的特定组id 54、groupmod [-g gid] [-n group_name] 群组名 | 修改组信息 -g 修改既有的 GID 数字 -n 修改既有的组名 55、groupdel [groupname] | 删除群组 56、gpasswd | 群组管理员功能 root管理员动作: -gpasswd groupname 设定密码 -gpasswd [-A user1,...] [-M user3,...] groupname -A 将 groupname 的主控权交由后面的使用者管理(该群组的管理员) -M 将某些账号加入这个群组当中-gpasswd [-r] groupname -r 将 groupname 的密码移除群组管理员动作: gpasswd [-ad] user groupname -a 将某位使用者加入到 groupname 这个群组当中 -d 将某位使用者移除出 groupname 这个群组当中57、chfn修改个人信息 58、mount [-t vfstype] [-o options] device dir -ro 采用只读方式挂接设备 -rw 采用读写方式挂接设备 eg:mount /home/mydisk.iso /tmp/mnt 通过mnt访问mydisk内的内容 59、umount 取消挂载 60、cut -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 61、sort -n 依照数值的大小排序。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 -k 选择以哪个区间进行排序。 62、wc 统计指定文件中的字节数、字数、行数, 并将统计结果显示输出 -l filename 报告行数 -c filename 报告字节数 -m filename 报告字符数 -w filename 报告单词数 63、uniq 去除文件中相邻的重复行 -c或——count:在每列旁边显示该行重复出现的次数; -d或--repeated:仅显示重复出现的行列; -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位; -s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符; -u或——unique:仅显示出一次的行列; -w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。 64、set 显示环境变量和普通变量 65、env 显示环境变量 66、export 把普通变量变成环境变量 67、unset 删除一个环境变量 aaa(){} 定义函数 68、read -p 接提示字符 -t 接等待的秒数 69、declare、typeset -i 声明为整数 -a 声明为数组 -f 声明为函数 -r 声明为只读 70、ulimit 限制使用者的某些系统资源 -f 此 shell 可以建立的最大档案容量 (一般可能设定为 2GB)单位为 Kbytes eg: ulimit -f 1024 限制使用者仅能建立 1MBytes 以下的容量的档案 71、df [选项] [文件] | 显示指定磁盘文件的可用空间,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示 -a 显示全部文件系统 -h 文件大小友好显示 -l 只显示本地文件系统 -i 显示inode信息 -T 显示文件系统类型 72、du [选项] [文件] | 显示每个文件和目录的磁盘使用空间 -h 方便阅读的方式 -s 只显示总和的大小 73、ln [参数] [源文件或目录] [目标文件或目录] | 某一个文件在另外一个位置建立一个同步的链接 -s 建立软连接 -v 显示详细的处理过程 74、diff [参数] [文件1或目录1] [文件2或目录2] | 比较单个文件或者目录内容 -b  不检查空格字符的不同。 -B  不检查空白行。 -i 不检查大小写 -q 仅显示差异而不显示详细信息 eg: diff a b > parch.log 比较两个文件的不同并产生补丁 75、date [参数]… [+格式] | 显示或设定系统的日期与时间 %H 小时(以00-23来表示)。 %M 分钟(以00-59来表示)。 %P AM或PM。 %D 日期(含年月日) %U 该年中的周数。 date -s “2015-10-17 01:01:01″ //时间设定 date +%Y%m%d //显示前天年月日 date +%Y%m%d --date="+1 day/month/year" //显示前一天/月/年的日期 date +%Y%m%d --date="-1 day/month/year" //显示后一天/月/年的日期 date -d '2 weeks' 2周后的日期 76、cal [参数] 月份] [年份] | 查看日历 -1 显示当月的月历 -3 显示前、当、后一个月的日历 -m 显示星期一为一个星期的第一天 -s (默认)星期天为第一天 -j 显示当月是一年中的第几天的日历 -y 显示当前年份的日历 77、ps | 列出当前进程的快照 a 显示所有的进程 -a 显示同一终端下的所有程序 e 显示环境变量 f 显示进程间的关系 -H 显示树状结构 r 显示当前终端的程序 T 显示当前终端的所有程序 -au 显示更详细的信息 -aux 显示所有包含其他使用者的行程 -u 指定用户的所有进程 78、top [参数] | 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等 79、kill [参数] [进程号] | 杀死进程 80、free [参数] | 显示linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer 81、vmstat | 对操作系统的虚拟内存、进程、CPU活动进行监控 82、iostat [参数] [时间t] [次数n](每隔t时间刷新一次,最多刷新n次)| 对系统的磁盘操作活动进行监视,汇报磁盘活动统计情况,同时也会汇报出CPU使用情况 -p[磁盘] 显示磁盘和分区的情况 83、watch [参数] [命令] |重复执行某一命令以观察变化 -n 时隔多少秒刷新 -d 高亮显示动态变化 84、at [参数] [时间] | 在一个指定的时间执行一个指定任务,只能执行一次 HH:MM[am|pm] + number [minutes|hours|days|weeks] 强制在某年某月某日的某时刻进行该项任务 atq 查看系统未执行的任务 atrm n 删除编号为n的任务 at -c n 显示编号为n的任务的内容 85、crontab | 定时任务调度 file 载入crontab -e 编辑某个用户的crontab文件内容 -l 显示某个用户的crontab文件内容 -r 删除某个用户的crontab文件 86、ifconfig [网络设备] [参数] | 查看和配置网络设备 87、route | 显示和操作IP路由表 88、ping [参数] [主机名或IP地址] | 测试与目标主机的连通性 -q 只显示最后的结果 89、netstat | 显示与IP、TCP、UDP和ICMP协议相关的统计数据 90、telnet [参数] [主机] | 用于远程登录,采用明文传送报文,安全性不好 91、rcp [参数] [源文件] [目标文件] | 远程文件拷贝 -r 递归复制 -p 保留源文件的属性 usage: rcp –r remote_hostname:remote_dir local_dir 92、wget [参数] [URL地址] | 直接从网络上下载文件 -o FILE 把记录写到FILE文件中 eg : wget -O a.txt URL wget --limit-rate=300k URL 限速下载 93、awk -F 分隔符 以分隔符分隔内容 {} 要执行的脚本内容 eg:cat /etc/passwd |awk -F ':' '{print $1"\t"$7}' 94、sed 对数据行进行替换、删除、新增、选取等操作 a 新增,在新的下一行出现 c 取代,取代 n1,n2 之间的行 eg: sed '1,2c Hi' ab d 删除 i 插入,在新的上一行出现 95、paste 合并文件,需确保合并的两文件行数相同 -d 指定不同于空格或tab键的域分隔符 -s 按行合并,单独一个文件为一行 96、su [参数] user | 切换登陆 -l 切换时连同环境变量、工作目录一起改变 -c command 执行command变回原来的使用者 97、sudo | 以特定用户的权限执行特定命令 -l 列出当前用户可执行的命令 -u username#uid 以指定用户执行命令 署名:逸之枫|Pilferer 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/59.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    ×
    ×
    • 创建新的...