热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最牛B的LinuxShell命令

文章标题:最牛B的LinuxShell命令。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  1.用你最喜欢的编辑器来敲命令

  command

  在已经敲完的命令后按,会打开一个你指定的编辑器(比如vim,通过环境变 量$EDITOR指定),里面就是你刚输入的命令,然后爱怎么编辑就怎么编辑吧,特别是那些参数异常复杂的程序,比如 mencoder/ffmpeg,一个命令动辄3、4行的,要修改其中的参数,这个方法最合适不过了,保存退出后自动执行这个程序。

  实际上这是readline 库的功能,在默认情况下,bash使用的是emacs模式的命令行操作方式,是 调用这个功能的一个绑定。如果你习惯使用vi模式,按可以实现同样功能。

  如果你喜欢别的编辑器,可以在~/.bashrc里面放上比如export EDITOR=nano的命令。

  另外一个修改命令的方法是使用fc命令(Fix Command),在编辑器里面打开上一句命令。我们的第一辑连载提过一个^foo^bar^命 令可以用fc来实现:fc -s foo=bar。

  2.清空或创建一个文件

  > file.txt

  >在shell里面是标准输出重定向符,即把(前部个命令的)命令行输出转往一个文件内,但这里没有“前部命 令”,输出为空,于是就覆盖(或创建)成一个空文件了。

  有些脚本的写法是:>file.txt,因为:是bash默认存在的空函数。

  单纯创建文件也可以用$touch file.txt,touch本来是用作修改文件的时间戳,但如果文件不存在,就自 动创建了。

  3.用ssh创建端口转发通道

  ssh -N -L2001:remotehost:80 user@somemachine

  这个命令在本机打开了2001端口,对本机2001端口的请求通过somemachine作为跳板,转到remotehost的 80端口上。

  实现效果跟术语反向代理是相似的,实际上就是端口转发,注意上面的描述涉及了3台主机,但当然somemachine可 以变成localhost。

  这个命令比较抽象,但有时候是很有用的,比如因为众所周知的原因国内的IP的80端口无法使用,又或者公司的防火墙只给外网开了ssh端口,需要访 问内部服务器一个web应用,以及需要访问某些限定了来源IP的服务,就可以用上这个方法了。

  举一个具体例子,运行:

  2

  ssh -f -N -L 0.0.0.0:443:twitter.com:443 shell.cjb.netssh -f -N -L 0.0.0.0:80:twitter.com:80 shell.cjb.net

  然后在/etc/hosts里面添加127.0.0.1 twitter.com,好吧剩下的你懂的。

  当然通常做这个功能的反向代理,应该要用squid、nginx之类,ssh就算是轻量级的尝试吧!

  4.重置终端

  reset

  如果你试过不小心cat了某个二进制文件,很可能整个终端就傻掉了,可能不会换行,没法回显,大堆乱码之类的,这时候敲入reset回车,不管命令 有没有显示,就能回复正常了。

  实际上reset命令只是输出了一些特殊字符,我们看BusyBox里面最简单的reset程序的实现:

  printf("\033c\033(K\033[J\033[0m\033[?25h");

  输出的这些字符对Shell是有特殊意义的:

  \033c: “ESC c” ? 发送重置命令;

  \033(K: “ESC ( K” ? 重载终端的字符映射;

  \033[J: “ESC [ J” ? 清空终端内容;

  \033[0m: “ESC [ 0 m” ? 初始化字符显示属性;

  \033[?25h: “ESC [ ? 25 h” ? 让光标可见;

  其中字符显示属性经常用来设定打印字符的颜色等,可参考这 个博文。

  5.在午夜的时候执行某命令

  echo cmd | at midnight

  说的就是at这个组件,通常跟cron相提并论,不过at主要用 于定时一次性任务,而cron定时周期性任务。

  at的参数比较人性化,跟英语语法一样,可以tomorrow, next week之类的,详细的查看手册man at。

  6.远程传送麦克风语音

  dd if=/dev/dsp | ssh username@host dd of=/dev/dsp

  没错就是实现一个喊话器的功能。

  /dev/dsp是Linux下声卡的文件映射(Digital Signal Proccessor),从其中读数据就是录音,往里面写数据就是播放,相当简单!

  dd是常用的数据拷贝程序,如果不同时指定if、of,就直接使用stdin/stdout来传输。

  如果你没有远程主机,可以试试这样:

  dd if=/dev/dsp of=/dev/dsp

  直接回放麦克风的声音,只是有一点延时。

  但是如果有别的程序正在使用声卡,这个方法就不凑效了,因为一般的声卡都不允许多个音频流同时处理,可以借用alsa组件的工具,arecord跟 aplay:

  arecord | ssh username@host aplay

  本地回放就是:

  arecord | aplay

  如果你想吓吓别人:

  cat /dev/urandom | ssh username@host aplay

  7.映射一个内存目录

  mount -t tmpfs -o size=1024m tmpfs /mnt/ram

  这个命令开了一块1G内存来当目录用。不过放心,如果里面没文件,是不会占用内存的,用多少占多少。

  不过一般来说没必要手动挂载,因为多数发行版都会在fstab内预留了一个内存目录,挂载在/dev/shm,直接使用 即可;

  最常见的用途是用内存空间来放Firefox的配置,可以让慢吞吞的FF快很多,参见Shellex的博文:用 tmpfs让Firefox在内存中飞驰,以及后来的改进:用 tmpfs让Firefox在内存中飞驰II,其中提到的脚本来自speeding up firefox with tmpfs and automatic rsync。

  那个破烂LinuxQQ也可以用这个方法,减少因为大量磁盘IO导致的问题。

  8.用diff对比远程文件跟本地文件

  ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

  diff通常的用法是从参数读入两个文件,而命令里面的-则是指从stdin读入了。

  善用ssh可以让web开发减少很多繁琐,还有比如sshfs,可以从编辑-上传-编辑-上传的 人工循环里面解脱出来。

  9.查看系统中占用端口的进程

  netstat -tulnp

  Netstat是很常用的用来查看Linux网络系统的工具之一,这个参数可以背下来:

  -t: 显示TCP链接信息

  -u: 显示UDP链接信息

  -l: 显示监听状态的端口

  -n: 直接显示ip,不做名称转换

  -p: 显示相应的进程PID以及名称(要root权限)

  如果要查看关于sockets更详细占用信息等,可以使用lsof工具。


推荐阅读
  • ###########性能监控脚本###########################!binbash#监控cpu系统负载IPifconfigeth0|grepinetaddr ... [详细]
  • SonarQube配置与使用指南
    本文档详细介绍了SonarQube的配置方法及使用流程,包括环境准备、样本分析、数据库配置、项目属性文件解析以及插件安装等内容,适用于具有Linux基础操作能力的用户。 ... [详细]
  • 本文深入探讨了SSH隧道技术,详细介绍了如何利用SSH协议构建安全的通信通道,实现跨网络的数据传输。通过实例分析,分别阐述了动态SSH隧道、本地SSH隧道和远程SSH隧道的配置方法及应用场景。 ... [详细]
  • Linux中实用的文件传输命令:rz与sz
    在生物信息学研究中,频繁地在本地与远程Linux服务器间传输文件是一项常见需求。无论是上传待分析的数据集还是下载处理后的结果,高效便捷的文件传输方法至关重要。 ... [详细]
  • CentOS 7.4 KVM虚拟化平台搭建指南
    本文详细介绍了如何在CentOS 7.4系统上搭建KVM虚拟化平台,包括环境准备、网络配置、KVM安装与管理等步骤,适用于希望利用KVM进行虚拟化部署的技术人员。 ... [详细]
  • 开发笔记:Mongodb副本集集群搭建 ... [详细]
  • 本文介绍如何通过配置Linux服务器作为路由器来实现两个不同网段(192.168.1.0/24 和 192.168.2.0/24)之间的互联互通。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • 本书《Pro Git》深入探讨了 Git 版本控制系统的核心概念与高级功能,旨在帮助开发者和团队有效管理代码变更。通过实例和最佳实践,读者将学习如何利用 Git 提升工作效率。 ... [详细]
  • 解决宝塔面板Nginx反向代理缓存问题
    本文介绍如何在宝塔控制面板中通过编辑Nginx配置文件来解决反向代理中的缓存问题,确保每次请求都能从服务器获取最新的数据。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 树莓派(简称RPI)通常需要配合电脑使用,但对于某些用户或特定场合,手机作为主要携带设备,能够直接用于配置和管理RPI,这具有重要的实用价值。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 如何更换Anaconda和pip的国内镜像源
    本文详细介绍了如何通过国内多个知名镜像站(如北京外国语大学、中国科学技术大学、阿里巴巴等)更换Anaconda和pip的源,以提高软件包的下载速度和安装效率。 ... [详细]
author-avatar
卢嘉怡i
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有