常用linux命令

Linux 命令

  • 关闭防火墙

1、禁用防火墙

[root@centos06 ~]# systemctl stop firewalld.service

[root@centos06 ~]#systemctl disable firewalld.service

[root@centos06 ~]#systemctl status firewalld.service (查看关闭状态)

关闭防火墙是不行的,我们还得关闭Selinux,

2、准备关闭SELinux

先得查看当前SELinux状态:

执行命令/usr/sbin/sestatus -v

//参数为enabled即为开启状态

3执行命令:vi /etc/selinux/config

按“i”进入编辑模式将SELINUX=enforcing改为SELINUX=disabled,然后按“ESC”退出编辑模式,按Shift+;然后再输入wq回车即可。

  • 免密码登录

  • Linux免密码登录

首先机器上生成密钥,

  • ssh-keygen -t rsa

一路回车

将生成的公钥复制到192.168.96.130

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.96.130

测试免密码

ssh root@192.168.1.100

  • 网络设置

  • 在vmware中选择NAT模式

  • 编辑网卡配置文件,命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

NAME=eno16777736

UUID=8e6cbfcb-b533-4021-ab37-aab69ce90c1b

DEVICE=eno16777736

ONBOOT=yes

IPADDR=192.168.96.128

NETMASK=255.255.255.0

GATEWAY=192.168.96.1

DNS1=192.168.96.1

BOOTPROTO=static

  • 保存退出,然后重启虚拟机网卡

/etc/init.d/network restart

  • Ping www.baidu.com
  • 2.修改/etc/sysconfig/network文件``` [root@localhost ~]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=master
  • 其它服务scp命令进行复制文件

scp /etc/hosts 192.168.1.125:/etc/

注意:

a、可选DNS可将物理机DNS填 上

B、网关要与虚拟机VMware NAT设置中一致

C、ip要在DHCP设置的范围内

  • 安装软件

  • rpm install

要解决依赖的问题

rpm –ivh xxxx.rpm

  • Yum install

yum安装ifconfig这个命令

yum install net-tools

  • 修改yum源

  1. 备份本地yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

2.获取阿里yum源配置文件

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.更新cache

yum makecache

  • 换成本地yum源

  • 挂载光盘

mkdir  /mnt/cdrom

mount -r /dev/cdrom /mnt/cdrom

  • 换成本地yum源

执行yum命令更新yum缓存

yum clean all

yum makecache

  • 问题401 Authorization Required

已发出 HTTP 请求,正在等待回应... 401 Authorization Required

可能网络不好,再试一次

  • Yum 被锁定:

可以通过强制关掉yum进程:

rm -f /var/run/yum.pid

查看有没有安装包:

yum list mysql*

查看有没有安装过:

yum list installed mysql*

  • jdk

一、删除系统自带的****jdk

rm -f /usr/bin/java

rm -f /usr/bin/javac

rm -f /etc/alternatives/java

rm -f /etc/alternatives/javac

二、解压jdk-8u181-linux-x64.tar.gz

三、添加环境变量

打开vim /etc/profile

环境变量顺序有要求,先赋值后使用

export JAVA_HOME=/usr/local/jdk1.8.0_181

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/hadoop-2.8.4

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

生效

source /etc/profile

  • zookeeper

bin/zkServer.sh start-foreground命令查看启动的错误原因

connect refused的错误的原因

vi /usr/local/zookeeper/data/myid

vi /usr/local/zookeeper-3.4.10/conf/zoo.cfg

/usr/local/zookeeper-3.4.10/bin/zkServer.sh start-foreground

/usr/local/zookeeper-3.4.10/bin/zkServer.sh status

集群需要在每个 虚拟机上启动zookeeper

  • 停止当前程序

快捷键:

Ctrl+c

在命令行下起着终止当前执行程序的作用,

Ctrl+d

相当于exit命令,退出当前shell

Ctrl+s

挂起当前shell(保护作用很明显哦)

Ctrl+q

解冻挂起的shell再不行就重新连接打开一个终端,reboot linux 或 kill 相关进程。

进入vi的命令

vi filename :打开或新建文件,并将光标置于第一行首

vi +n filename :打开文件,并将光标置于第n行首

vi + filename :打开文件,并将光标置于最后一行首

vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename

vi filename....filename :打开多个文件,依次进行编辑

系统信息** **arch 显示机器的处理器架构(1)  uname -m 显示机器的处理器架构(2)  uname -r 显示正在使用的内核版本  dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)  hdparm -i /dev/hda 罗列一个磁盘的架构特性  hdparm -tT /dev/sda 在磁盘上执行测试性读取操作  cat /proc/cpuinfo 显示CPU info的信息  cat /proc/interrupts 显示中断  cat /proc/meminfo 校验内存使用  cat /proc/swaps 显示哪些swap被使用  cat /proc/version 显示内核的版本  cat /proc/net/dev 显示网络适配器及统计  cat /proc/mounts 显示已加载的文件系统  lspci -tv 罗列 PCI 设备  lsusb -tv 显示 USB 设备  date 显示系统日期  cal 2007 显示2007年的日历表  date 041217002007.00 设置日期和时间 - 月日时分年.秒  clock -w 将时间修改保存到 BIOS

关机** (系统的关机、重启以及登出shutdown -h now 关闭系统(1)  init 0 关闭系统(2)  telinit 0 关闭系统(3)  shutdown -h hours:minutes & 按预定时间关闭系统  shutdown -c 取消按预定时间关闭系统  shutdown -r now 重启(1)  reboot 重启(2)  logout 注销 文件和目录 cd /home 进入 '/ home' 目录'  cd .. 返回上一级目录  cd ../.. 返回上两级目录  cd 进入个人的主目录  cd ~user1 进入个人的主目录  cd - 返回上次所在的目录  pwd 显示工作路径  ls 查看目录中的文件  ls -F 查看目录中的文件  ls -l 显示文件和目录的详细资料  ls -a 显示隐藏文件  ls [0-9] 显示包含数字的文件名和目录名  tree 显示文件和目录由根目录开始的树形结构(1)  lstree 显示文件和目录由根目录开始的树形结构(2)  mkdir dir1 创建一个叫做 'dir1' 的目录'  mkdir dir1 dir2 同时创建两个目录  mkdir -p /tmp/dir1/dir2 创建一个目录树  rm -f file1 删除一个叫做 'file1' 的文件'  rmdir dir1 删除一个叫做 'dir1' 的目录'  rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容  rm -rf dir1 dir2 同时删除两个目录及它们的内容  mv dir1 new_dir 重命名/移动 一个目录  cp file1 file2 复制一个文件  cp dir/ . 复制一个目录下的所有文件到当前工作目录  cp -a /tmp/dir1 . 复制一个目录到当前工作目录  cp -a dir1 dir2 复制一个目录  ln -s file1 lnk1 创建一个指向文件或目录的软链接  ln file1 lnk1 创建一个指向文件或目录的物理链接  touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)  file file1 outputs the mime type of the file as text  iconv -l 列出已知的编码  iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.  find . -maxdepth 1 -name .jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 文件搜索 find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录  find / -user user1 搜索属于用户 'user1' 的文件和目录  find /home/user1 -name *.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件  find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件  find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件  find / -name *.rpm -exec chmod 755 '{}' ; 搜索以 '.rpm' 结尾的文件并定义其权限  find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备  locate *.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令  whereis halt 显示一个二进制文件、源码或man的位置  which halt 显示一个二进制文件或可执行文件的完整路径 挂载一个文件系统 mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在  umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出  fuser -km /mnt/hda2 当设备繁忙时强制卸载  umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用  mount /dev/fd0 /mnt/floppy 挂载一个软盘  mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom  mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom  mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom  mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件  mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统  mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备  mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享 磁盘空间 df -h 显示已经挂载的分区列表  ls -lSr |more 以尺寸大小排列文件和目录  du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'  du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小  rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)  dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统) 用户和群组 groupadd group_name 创建一个新用户组  groupdel group_name 删除一个用户组  groupmod -n new_group_name old_group_name 重命名一个用户组  useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户  useradd user1 创建一个新用户  userdel -r user1 删除一个用户 ( '-r' 排除主目录)  usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性  passwd 修改口令  passwd user1 修改一个用户的口令 (只允许root执行)  chage -E 2005-12-31 user1 设置用户口令的失效期限  pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户  grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组  newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消 ls -lh 显示权限  ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示  chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限  chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限  chown user1 file1 改变一个文件的所有人属性  chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性  chgrp group1 file1 改变文件的群组  chown user1:group1 file1 改变一个文件的所有人和群组属性  find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件  chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限  chmod u-s /bin/file1 禁用一个二进制文件的 SUID位  chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的  chmod g-s /home/public 禁用一个目录的 SGID 位  chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件  chmod o-t /home/public 禁用一个目录的 STIKY 位 文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 chattr +a file1 只允许以追加方式读写文件  chattr +c file1 允许这个文件能被内核自动压缩/解压  chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件  chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接  chattr +s file1 允许一个文件被安全地删除  chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘  chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件  lsattr 显示特殊的属性 打包和压缩文件 **bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件  bzip2 file1 压缩一个叫做 'file1' 的文件  gunzip file1.gz 解压一个叫做 'file1.gz'的文件  gzip file1 压缩一个叫做 'file1'的文件  gzip -9 file1 最大程度压缩  rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包  rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'  rar x file1.rar 解压rar包  unrar x file1.rar 解压rar包  tar -cvf archive.tar file1 创建一个非压缩的 tarball  tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件  tar -tf archive.tar 显示一个包中的内容  tar -xvf archive.tar 释放一个包  tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下  tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包  tar -jxvf archive.tar.bz2 解压一个bzip2格式的压缩包  tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包  tar -zxvf archive.tar.gz 解压一个gzip格式的压缩包  zip file1.zip file1 创建一个zip格式的压缩包  zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包  unzip file1.zip 解压一个zip格式压缩包 RPM - Fedora, Redhat****及类似系统)  rpm -ivh package.rpm 安装一个rpm包  rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告  rpm -U package.rpm 更新一个rpm包但不改变其配置文件  rpm -F package.rpm 更新一个确定已经安装的rpm包  rpm -e package_name.rpm 删除一个rpm包  rpm -qa 显示系统中所有已经安装的rpm包  rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包  rpm -qi package_name 获取一个已安装包的特殊信息  rpm -qg "System Environment/Daemons" 显示一个组件的rpm包  rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表  rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表  rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表  rpm -q package_name --whatprovides 显示一个rpm包所占的体积  rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l  rpm -q package_name --changelog 显示一个rpm包的修改历史  rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供  rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表  rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书  rpm --checksig package.rpm 确认一个rpm包的完整性  rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性  rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间  rpm -Va 检查系统中所有已安装的rpm包- 小心使用  rpm -Vp package.rpm 确认一个rpm包还未安装  rpm2cpio package.rpm | cpio --extract --make-directories bin 从一个rpm包运行可执行文件  rpm -ivh /usr/src/redhat/RPMS/arch/package.rpm 从一个rpm源码安装一个构建好的包  rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包 **YUM 软件包升级器 - Fedora, RedHat及类似系统) **yum install package_name 下载并安装一个rpm包  yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系  yum update package_name.rpm 更新当前系统中所有安装的rpm包  yum update package_name 更新一个rpm包  yum remove package_name 删除一个rpm包  yum list 列出当前系统中安装的所有包  yum search package_name 在rpm仓库中搜寻软件包  yum clean packages 清理rpm缓存删除下载的包  yum clean headers 删除所有头文件  yum clean all 删除所有缓存的包和头文件 **DEB (Debian, Ubuntu 以及类似系统) **dpkg -i package.deb 安装/更新一个 deb 包  dpkg -r package_name 从系统删除一个 deb 包  dpkg -l 显示系统中所有已经安装的 deb 包  dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包  dpkg -s package_name 获得已经安装在系统中一个特殊包的信息  dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表  dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表  dpkg -S /bin/ping 确认所给的文件由哪个deb包提供 APT 软件工具 (Debian, Ubuntu 以及类似系统apt-get install package_name 安装/更新一个 deb 包  apt-cdrom install package_name 从光盘安装/更新一个 deb 包  apt-get update 升级列表中的软件包  apt-get upgrade 升级所有已安装的软件  apt-get remove package_name 从系统删除一个deb包  apt-get check 确认依赖的软件仓库正确  apt-get clean 从下载的软件包中清理缓存  apt-cache search searched-package 返回包含所要搜索字符串的软件包名称 查看文件内容 cat file1 从第一个字节开始正向查看文件的内容  tac file1 从最后一行开始反向查看一个文件的内容  more file1 查看一个长文件的内容  less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作  head -2 file1 查看一个文件的前两行  tail -2 file1 查看一个文件的最后两行  tail -f /var/log/messages 实时查看被添加到一个文件中的内容 文本处理 cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT  cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中  cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中  grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"  grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇  grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行  grep Aug -R /var/log/ 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"  sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"  sed '/^$/d' example.txt 从example.txt文件中删除所有空白行  sed '/ #/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行  echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容  sed -e '1d' result.txt 从文件example.txt 中排除第一行  sed -n '/stringa1/p' 查看只包含词汇 "string1"的行  sed -e 's/ $//' example.txt 删除每一行最后的空白字符  sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部  sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容  sed -n '5p;5q' example.txt 查看第5行  sed -e 's/00/0/g' example.txt 用单个零替换多个零  cat -n file1 标示文件的行数  cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行  echo a b c | awk '{print $1}' 查看一行第一栏  echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏  paste file1 file2 合并两个文件或两栏的内容  paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分  sort file1 file2 排序两个文件的内容  sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)  sort file1 file2 | uniq -u 删除交集,留下其他的行  sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)  comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容  comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容  comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 字符设置和文件格式转换 dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX  unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS  recode ..HTML < page.txt > page.html 将一个文本文件转换成html  recode -l | more 显示所有允许的转换格式 文件系统分析 badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块  fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性  fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性  e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性  e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性  fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性  fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性  fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性  dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 初始化一个文件系统 mkfs /dev/hda1 在hda1分区创建一个文件系统  mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统  mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统  mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统  fdformat -n /dev/fd0 格式化一个软盘  mkswap /dev/hda3 创建一个swap文件系统 SWAP****文件系统 mkswap /dev/hda3 创建一个swap文件系统  swapon /dev/hda3 启用一个新的swap文件系统  swapon /dev/hda2 /dev/hdb3 启用两个swap分区 备份 dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份  dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份  restore -if /tmp/home0.bak 还原一个交互式备份  rsync -rogpav --delete /home /tmp 同步两边的目录  rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync  rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录  rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录  dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作  dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件  tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作  ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容  ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录  tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接  find /home/user1 -name '.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录  find /var/log -name '.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包  dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作  dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容 光盘 cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容  mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件  mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件  mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件  cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件  gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件  mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件  cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中  cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3)  cdrecord --scanbus 扫描总线以识别scsi通道  dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD 网络 - (以太网和WIFI****无线) ifconfig eth0 显示一个以太网卡的配置  ifup eth0 启用一个 'eth0' 网络设备  ifdown eth0 禁用一个 'eth0' 网络设备  ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址  ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing)  dhclient eth0 以dhcp模式启用 'eth0'  route -n show routing table  route add -net 0/0 gw IP_Gateway configura default gateway  route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16'  route del 0/0 gw IP_gateway remove static route  echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing  hostname show hostname of system  host www.example.com lookup hostname to resolve name to ip address and viceversa(1)  nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2)  ip link show show link status of all interfaces  mii-tool eth0 show link status of 'eth0'  ethtool eth0 show statistics of network card 'eth0'  netstat -tup show all active network connections and their PID  netstat -tupl show all network services listening on the system and their PID  tcpdump tcp port 80 show all HTTP traffic  iwlist scan show wireless networks  iwconfig eth1 show configuration of a wireless network card  hostname show hostname  host www.example.com lookup hostname to resolve name to ip address and viceversa  nslookup www.example.com lookup hostname to resolve name to ip address and viceversa  whois www.example.com lookup on Whois database

JPS****工具

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。

我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。 jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。

**     使用方法:在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打) **

jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path.

$>** jps** 23991 Jps 23789 BossMain 23651 Resin

比较常用的参数:

-q 只显示pid,不显示class名称,jar文件名和传递给main ****方法的参数$>  jps -q 28680 23789 23651

-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null

$> jps -m 28715 Jps -m 23789 BossMain 23651 Resin -socketwait 32768 -stdout /data/aoxj/resin/log/stdout.log -stderr /data/aoxj/resin/log/stderr.log

-l 输出应用程序main class的完整package 或者 应用程序的jar****文件完整路径名

$> jps -l 28729 sun.tools.jps.Jps 23789 com.asiainfo.aimc.bossbi.BossMain 23651 com.caucho.server.resin.Resin

-v 输出传递给JVM****的参数

$> jps -v 23789 BossMain 28802 Jps -Denv.class.path=/data/aoxj/bossbi/twsecurity/java/trustwork140.jar:/data/aoxj/bossbi/twsecurity/java/:/data/aoxj/bossbi/twsecurity/java/twcmcc.jar:/data/aoxj/jdk15/lib/rt.jar:/data/aoxj/jd

k15/lib/tools.jar -Dapplication.home=/data/aoxj/jdk15 -Xms8m 23651 Resin -Xss1m -Dresin.home=/data/aoxj/resin -Dserver.root=/data/aoxj/resin -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -

Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl

sudo jps****看到的进程数量最全

jps 192.168.0.77

列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为****1099

(前提是远程服务器提供jstatd服务)

注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linuxps命令。

进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令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$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write信息 nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始 mesg:允许vi显示其他用户用write写到自己终端上的信息 最后行方式命令 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 :n1,n2 d :将n1行到n2行之间的内容删除 :w :保存当前文件 :e filename:打开文件filename进行编辑 :x:保存当前文件并退出 :q:退出vi :q!:不保存文件并退出vi :!command:执行shell命令command :n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 :r!command:将命令command的输出结果放到当前行 寄存器操作 "?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 "?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 "?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 "?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。VI的使用--------------------------------------------------------------------------------一、插入文本 ┌──┬────────────┐ │命令│描述          │ ├──┼────────────┤ │i  │在当前字符前插入文本  │ ├──┼────────────┤ │I  │在行首插入文本      │ ├──┼────────────┤ │a  │在当前字符后添加文本  │ ├──┼────────────┤ │A  │在行末添加文本     │ ├──┼────────────┤ │o  │在当前行后面插入一空行 │ ├──┼────────────┤ │O  │在当前行前面插入一空行 │ ├──┼────────────┤ │R  │以改写方式输入文本   │ └──┴────────────┘ 二、移动光标 ┌─────┬───────────┐ │命令   │描述         │ ├─────┼───────────┤ │j或下箭头 │向下移动一行     │ ├─────┼───────────┤ │k或上箭头 │向上移动一行     │ ├─────┼───────────┤ │h或左箭头 │左移一个字符     │ ├─────┼───────────┤ │l或右箭头 │右移一个字符     │ ├─────┼───────────┤ │w     │右移一个词      │ ├─────┼───────────┤ │W     │右移一个以空格分隔的词│ ├─────┼───────────┤ │b     │左移一个词      │ ├─────┼───────────┤ │B     │左移一个以空格分隔的词│ ├─────┼───────────┤ │0     │移到行首       │ │Ctrl-F  │向前翻页       │ ├─────┼───────────┤ │Ctrl-B  │向后翻页       │ ├─────┼───────────┤ │nG    │到第n行        │ ├─────┼───────────┤ │G     │到最后一行      │ └─────┴───────────┘ 三、替换文本 ┌─────┬──────┐ │命令   │描述    │ ├─────┼──────┤ │$     │到行尾   │ ├─────┼──────┤ │(     │到句子的开头│ ├─────┼──────┤ │)     │到句子的末尾│ ├─────┼──────┤ │{     │到段落的开头│ ├─────┼──────┤ │}     │到段落的末尾│ └─────┴──────┘ 四、删除文本 ┌───┬───────────┐ │命令 │描述          │ ├───┼───────────┤ │r   │替换一个字符      │ ├───┼───────────┤ │c   │修改文本直到按下Esc健 │ ├───┼───────────┤ │cw  │修改下一个词      │ ├───┼───────────┤ │cnw  │修改接下来的n个词   │ └───┴───────────┘ 五、文本编辑 ┌──┬──────────────────────┐ │命寺│描述                    │ ├──┼──────────────────────┤ │yy │将一行文本移到缺省缓冲区中          │ ├──┼──────────────────────┤ │yn │将下一个词移到缺省缓冲区中          │ ├──┼──────────────────────┤ │ynw │将后面的n个词移到缺省缓冲区中        │ ├──┼──────────────────────┤ │p  │如果缺省缓冲区中包含一行文本,则在当前   │ │  │行后面插入一个空行井将缺省缓冲区中的声   │ │  │容粘贴到这一行中;如果缺省缓冲区中包含   │ │  │多个词,把这些词粘贴到光标的右边.     │ ├──┼──────────────────────┤ │P  │如果缺省缓冲区中包含一行文本,则正当前    │ │   │行前面插入一个空行井将缺省缓冲区中的内    │ │  │容粘贴到这一行中;如果缺省缓冲区中包含    │ │   │多个词,把这些词粘贴到光标的左边       │ └──┴──────────────────────┘ 六、保存退出 ┌───────────┬───────────────┐ │命令         │描述             │ ├───────────┼───────────────┤ │zz          │保存并退出          │ ├───────────┼───────────────┤ │:w filename      │写入文件            │ ├───────────┼───────────────┤ │:W          │写入文件           │ ├───────────┼───────────────┤ │:x          │保存(如果当前文件修改过)并退出│ ├───────────┼───────────────┤ │:q!          │不保存文件,直接退出      │ ├───────────┼───────────────┤ │:q          │退出vi            │ VI常用技巧VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。 一、基本命令介绍 ---- 1.光标命令 k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。 nG——跳转命令。n为行数,该命令立即使光标跳到指定行。 Ctrl+G——光标所在位置的行数和列数报告。 w、b——使光标向前或向后跳过一个单词。 ---- 2.编辑命令 i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。 cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。 x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。 ---- 3.查找命令 ---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。 ---- 4.拷贝复制命令 ---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。 二、常见问题及应用技巧 ---- 1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。 ---- vi file  ---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd ---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。 ---- 您也可以在指定的行号后读入文件内容,例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。 ---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。 ---- #cat squid.conf.default | grep -v ^$ | grep -v ^#  ---- 2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。 ---- vi file  ---- :w /tmp/1 保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。 ---- vi file  ---- :20,59w /tmp/1  ---- 3.用VI编辑一个文件,但需要删除大段的内容。 ---- 首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。 ---- :23,1045d 假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:a,bd”命令删除。 ---- 4.在整个文件的各行或某几行的行首或行尾加一些字符串。 ---- vi file  ---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。 ---- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。 ---- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。 ---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。 ---- 注意: 其中s为substitute,%表示所有行,g表示global。 ---- 5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。 ---- vi file1 file2  ---- yy 在文件1的光标处拷贝所在行 ---- :n 切换到文件2 (n=next) ---- p 在文件2的光标所在处粘贴所拷贝的行 ---- :n 切换回文件1 ---- 6.替换文件中的路径。 ---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

全部删除命令

https://blog.csdn.net/z_qifa/article/details/74202581

光标到首行开头位置直接敲键盘gg,然后输入:.,$d 一回车就全没了直接敲键盘gg,然后敲dG,一定要连贯,然后就全没了cat /dev/null > 要清空的文件echo "" > 要清空的文件>要清空的文件

这几个命令虽然是很方便,但是要谨慎使用,避免清空重要文件。

全部删除:按esc后,然后dG全部复制:按esc后,然后ggyG全选高亮显示:按esc后,然后ggvG或者ggVG介绍一下 vim. vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有. vi 有各种变种, 在不同的机器上常用不同的变种软件. 其中 vim 比较好用也用得比较广泛. vim 是 Vi IMproved 的缩写, 表示更好的 vi. 我个人觉得它是非常好的编辑器(为了避免 Emacs 粉丝挑眼, 就不说最好了). 没用过的也建议试试看, 当然 vim 对编写文本文件很方便好用, 比如编写程序, html文档等等, 却不能用来编写 word 文档.关于 vim 的安装, 基本使用方法等网络上能搜出许多, 就不在这里罗嗦了, 要是对 vim 有兴趣, 那就看看这里(中文文档): http://vcd.gro.clinux.org/本文就说些其中比较有用, 比较常用的命令, 若能熟练运用这些命令, 那么会发现编辑文件很舒服.说明:以下的例子中 xxx 表示在命令模式下输入 xxx 并回车以下的例子中 :xxx 表示在扩展模式下输入 xxx 并回车小括号中的命令表示相关命令.在编辑模式或可视模式下输入的命令会另外注明. 1. 查找/xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.其中xxx可以是正规表达式,关于正规式就不多说了.一般来说是区分大小写的, 要想不区分大小写, 那得先输入:set ignorecase 查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. (#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. g(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串. gd 本命令查找与光标所在单词相匹配的单词, 并将光标停留在文档的非注释段中第一次出现这个单词的地方. % 本命令查找与光标所在处相匹配的反括号, 包括 () [] {} f(F)x 本命令表示在光标所在行进行查找, 查找光标右(左)方第一个x字符.找到后:输入 ; 表示继续往下找输入 , 表示反方向查找2. 快速移动光标在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定位和编辑. 因此能更快一点移动光标是很有用的. w(e) 移动光标到下一个单词. b 移动光标到上一个单词. 0 移动光标到本行最开头. ^ 移动光标到本行最开头的字符处. $ 移动光标到本行结尾处. H 移动光标到屏幕的首行. M 移动光标到屏幕的中间一行. L 移动光标到屏幕的尾行. gg 移动光标到文档首行. G 移动光标到文档尾行. c-f (即 ctrl 键与 f 键一同按下) 本命令即 page down. c-b (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up. '' 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置. '. 此命令相当好使, 它移动光标到上一次的修改行. `. 此命令相当强大, 它移动光标到上一次的修改点. 3. 拷贝, 删除与粘贴在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令结合的, 看几个例子就能够明白了. yw 表示拷贝从当前光标到光标所在单词结尾的内容. dw 表示删除从当前光标到光标所在单词结尾的内容. y0 表示拷贝从当前光标到光标所在行首的内容. d0 表示删除从当前光标到光标所在行首的内容. y$ 表示拷贝从当前光标到光标所在行尾的内容. d$ 表示删除从当前光标到光标所在行尾的内容. yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容. dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容.特殊地: yy 表示拷贝光标所在行. dd 表示删除光标所在行. D 表示删除从当前光标到光标所在行尾的内容.关于拷贝, 删除和粘贴的复杂用法与寄存器有关, 可以自行查询. 4. 数字与命令在 vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行号定位. 如: 5fx 表示查找光标后第 5 个 x 字符. 5w(e) 移动光标到下五个单词. 5yy 表示拷贝光标以下 5 行. 5dd 表示删除光标以下 5 行. y2fa 表示拷贝从当前光标到光标后面的第二个a字符之间的内容. :12,24y 表示拷贝第12行到第24行之间的内容. :12,y 表示拷贝第12行到光标所在行之间的内容. :,24y 表示拷贝光标所在行到第24行之间的内容. 删除类似. 5. 快速输入字符在 vi 中, 不要求你输入每一个字符, 可以有很多种方法快速输入一些字符.使用 linux/unix 的同学一定有一个经验, 在命令行下输入命令时敲入头几个字符再按TAB 系统就会自动将剩下的字符补齐, 假如有多个匹配则会打印出来. 这就是著名的命令补齐(其实windows中也有文件名补齐功能). vi 中有许多的字符串补齐命令, 非常方便. c-p(c-n) 在编辑模式中, 输入几个字符后再输入此命令则 vi 开始向上(下)搜索开头与其匹配的单词并补齐, 不断输入此命令则循环查找. 此命令会在所有在这个 vim 程序中打开的文件中进行匹配. c-x-l 在编辑模式中, 此命令快速补齐整行内容, 但是仅在本窗口中出现的文档中进行匹配. c-x-f 在编辑模式中, 这个命令表示补齐文件名. 如输入: /usr/local/tom 后再输入此命令则它会自动匹配出: /usr/local/tomcat/ abbr 即缩写. 这是一个宏操作, 可以在编辑模式中用一个缩写代替另一个字符串. 比如编写java文件的常常输入 System.out.println, 这很是麻烦, 所以应该用缩写来减少敲字. 可以这么做: :abbr sprt System.out.println 以后在输入sprt后再输入其他非字母符号, 它就会自动扩展为System. out.println 6. 替换替换是 vi 的强项, 因为可以用正规表达式来匹配字符串.以下提供几个例子. 😒/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb 😒/<aa>/bb/g 将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词:%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb :12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb :12,23s/^/#/ 将从12行到23行的行首加入 # 字符:%s= $== 将所有行尾多余的空格删除:g/^\s$/d 将所有不包含字符(空格也不包含)的空行删除. 7. 多文件编辑在一个 vim 程序中打开很多文件进行编辑是挺方便的. :sp(:vsp) 文件名 vim 将分割出一个横(纵)向窗口, 并在该窗口中打开新文件.从 vim6.0 开始, 文件名可以是一个目录的名称, 这样, vim 会把该目录打开并显示文件列表, 在文件名上按回车则在本窗口打开该文件, 若输入 O 则在新窗口中打开该文件, 输入 ? 可以看到帮助信息. :e 文件名 vim 将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存. c-w-w vim 分割了好几个窗口怎么办? 输入此命令可以将光标循环定位到各个窗口之中. :ls 此命令查看本 vim 程序已经打开了多少个文件, 在屏幕的最下方会显示出如下数据: 1 %a "usevim.html" 行 162 2 # "xxxxxx.html" 行 0其中: 1 表示打开的文件序号, 这个序号很有用处. %a 表示文件代号, % 表示当前编辑的文件, # 表示上次编辑的文件"usevim.html" 表示文件名. 行 162 表示光标位置. :b 序号(代号) 此命令将指定序号(代号)的文件在本窗口打开, 其中的序号(代号)就是用 :ls 命令看到的. :set diff 此命令用于比较两个文件, 可以用:vsp filename 命令打开另一个文件, 然后在每个文件窗口中输入此命令,就能看到效果了. 8. 宏替换vi 不仅可以用 abbr 来替换文字, 也可以进行命令的宏定义. 有些命令输起来很费劲,因此我把它们定义到 - 上, 这样就很方便了.这些配置可以预先写到 ~/.vimrc (windows 下为 $VIM/_vimrc) 中, 写进去的时候不用写前面的冒号. :nmap :nohls 取消被搜索字串的高亮:nmap w 命令模式下转移光标到不同窗口:imap 输入模式下运行 :nmap :%s= *$== 删除所有行尾多余的空格. :imap 同上:java 中: (注, 这里为什么说 java 中, 因为以下定义对其他文件格式不起作用, 下文会说到如何实现这一点) :nmap :comp javac:mak -d . %此命令用 javac 编译 java 文件, 它会自动将光标定位到出错点. 不过这需要定义一个 javac.vim 文件在 $VIM/compiler 下, 在 javac.vim 里面只有两行字: setlocal makeprg=javac setlocal errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%# :nmap :comp ant:mak此命令用 ant 编译 java 文件, 它会自动将光标定位到出错点. 一般来说, 安装vim 后已经有了compiler/ant.vim文件, 因此这个命令可以直接使用. 但是需要在当前目录下有 build.xml 文件, 当然还必须安装 ant 才行. :nmap :cl 此命令用于查看所有的编译错误. :imap :nmap :cc 此命令用于查看当前的编译错误. :imap :nmap :cn 此命令用于跳到下一个出错位置. :imap :nmap :cp 此命令用于跳到上一个出错位置. :imap :nmap :JavaBrowser此命令用于在窗口左部分割出一个新窗口, 里面的内容是 java 的资源树, 包括本文件中出现的类, 类的成员变量及成员方法, 就好像 JCreator 表现的那样.在这个窗口中输入 ? 会看到帮助. 嘿嘿, 很好用, 不过需要 ctags 支持. :imap 9. TAB TAB 就是制表符, 单独拿出来做一节是因为这个东西确实很有用. << 输入此命令则光标所在行向左移动一个 tab. >> 输入此命令则光标所在行向右移动一个 tab. 5>> 输入此命令则光标后 5 行向右移动一个 tab. :12,24> 此命令将12行到14行的数据都向右移动一个 tab. :12,24>> 此命令将12行到14行的数据都向右移动两个 tab.那么如何定义 tab 的大小呢? 有人愿意使用 8 个空格位, 有人用4个, 有的用2个.有的人希望 tab 完全用空格代替, 也有的人希望 tab 就是 tab. 没关系, vim 能帮助你.以下的设置一般也都先写入配置文件中, 免得老敲. :set shiftwidth=4 设置自动缩进 4 个空格, 当然要设自动缩进先. :set sts=4 即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格. :set tabstop=4 实际的 tab 即为 4 个空格, 而不是缺省的 8 个. :set expandtab 在输入 tab 后, vim 用恰当的空格来填充这个 tab. 10. autocmd这个命令十分的强大, 可以用这个命令实现对不同的文件格式应用不同的配置; 可以在新建文件时自动添加上版权声明等等. 这些命令一般定义在 ~/.vimrc 这样的配置文件里面. 由于他很强大, 所以我不能给出很具体的说明, 只能举几个例子, 详细的请看帮助. :autocmd! 删除所有之前的自动命令. autocmd FileType java source ~/.vim/files/java.vim autocmd FileType java source ~/.vim/files/jcommenter.vim以上两条命令让我在打开 java 文件时才应用后面提到的两个配置文件. autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel以上这条命令让我在新建 java 文件时自动加入 java.skel 文件的内容. autocmd BufNewFile *.java normal gnp以上这条命令让我在新建 java 文件时自动运行 gnp 命令, 这个命令进行一些特殊化处理, 比如将新 java 文件中的 date 替换成今天的日期什么的. 11. 常用脚本在 vim.sf.net 你可以发现很多脚本(script), 这些脚本常常有让你意想不到的作用.我常用的有: jcommenter.vim 自动加入 javadoc 风格的注释. JBrowser.vim 类资源浏览. C, C++ 等可以用 Tlist还有许多有用的, 比如 checkstyle.vim 可以检验你的编程风格, jad.vim 可以直接反编译 .class 文件等等. 12. 常用配置在~/.vimrc 配置文件中你常常需要一些个性化配置. 比如上面写的一些宏定义, 一些autocmd 定义等等. 比如: set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc这样在vim中打开文件时, 按 tab 键补齐文件名时它会忽略上述文件. set nu 显示行号set ai 设置自动缩进map Y y$ 让 Y 和 D 一样, 要不然 Y 的本意和 yy 一样. 13. 其他还有许多有意思的命令, 记录在这里免得忘记. . 重复上次编辑命令. :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) 在行首插入行号:runtime! syntax/2html.vim 转换 txt 成 html, 会按照你的颜色配置来转支持Java:对标签跳跃的支持标签是Java的标识符,它们可以是包装名、类名、方法名,或者是字段名。在你的代码里创建一个所有标签的大型索引,能够让你使用单个按键就跳跃到任何类、方法或者字段的定义上。这些索引文件都是使用ctags程序创建的,后者在vim的发行版里都有。Ctags会获取Java源文件或者包含有Java源代码的目录的列表,从中提取标识符的信息,再生成所vi需要的用于跳跃到标签的排序索引。下面一行代码是ctags调用的一个例子,只要JAVA_HOME变量被正确地定义,它会生成一个包含有项目源代码里所有标识符的标签文件,Sun核心库源代码也是如此:ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src一旦标签索引创建好了,你所需要做的只是告诉vi要在哪里找到它。这一步是通过将set tags=/.tags添加到你的/.vimrc文件里实现的。有了可用的标签索引文件,而且vi也知道了要到哪里去找到它,你现在就可以通过按[CTRL]]来跳跃到任何标识符上了。尽管这对于跳跃到你已经定义的方法、类和你自己编写的字段上很有用,但是如果你将Java核心类库加到你的标签索引里将会更加有用。现在,只用简单地对任何核心类库的类或者方法按[Ctrl] ],你就会跳跃到它完全使用javadoc所编写成的定义。.标签名的填充虽然跳跃到类、方法和字段定义所在的位置对于查看其javadoc以及检查其内容是有很用处的,但是更常见的情况是,你只是需要检查一个关键字的定义。在大多数IDE里,这一点是通过输入关键字完成的。但是,如果你已经将你的标签文件像前面一部分所讲的那样设置了,那么在vi里填入关键字就只是一个导向性的配置了。将set complete=.,w,b,u,t,I这一行放到你的~/.vimrc文件里,能够让你在插入模式下通过按[Ctrl]N自动地将任何类、方法或者字段名填满。连续按[Ctrl]N将移动到下一个相匹配的地方。当你看到你想要找的标签时,只用继续输入你源代码剩下的部分就行了。你可以在vim的Web网站上找到其他关于标签名填充的提示,包括使用Tab键来进行填充。方法的折叠好的实践经验告诉我们:你应该保持类的短小和简单,因为程序复杂性表现在类的层次性上,而不是500行的方法上。不幸的是,有些类已经脱离了控制,变得事实上无法移动操作了。IDE常常会在左边一个狭窄的框体提供一个列出了内容里方法的表格,以此来减轻开发人员查看冗长源代码的困难。与之相对的是,vi提供了一种它叫做“方法折叠(methodfolding)”的可折叠程序块。折叠允许你隐藏被缩排过的(indented)代码块开头和结尾之间的所有代码。要激活折叠,就要把set foldmethod=indent加到你的~/vimrc里。一旦方法的折叠被激活,你就可以使用:setfoldlevel=0来极大地精简一个Java的源文件。如果将折叠的层数设置为零,那么你就是在告诉vi只显示完全没有被缩排的命令行,而后者在大多数Java源文件里代表着包装、导入,以及类或者接口的定义行。设置foldlevel=1就是告诉vi说:除了没有被缩排的命令行,只缩排过一次的命令行也应该被显示,它们包括方法的签名以及其他一些不多的内容。要打开一个折叠夹并查看某个方法所隐藏的内容,你就要在被折叠的命令行上输入zO。通过设置foldlevel就能够很轻易地开启或者取消方法的折叠。我喜欢在调试的时候使用它,但是不喜欢在编写新代码的时候使用它。你要自己来决定它应该如何去适应你的工作方式。IDE不仅仅只是用于编辑;它们还是编译环境。Vi在不需要使用外部编译器和剖析结果信息上的工作做得非常好。现在很多Java的项目都将易于编写脚本的Ant作为一个创建环境。我没有向.vimrc文件里加载很多Ant专用的设置,而是单独创建了一个做作vimAnt脚本,见Listing B。这个脚本调用了一个带有几个参数的Ant可执行文件,然后对输出进行过滤,让其只包含编译器输出。你现在几乎就准备好从vi里调用Ant了。你只需要将Listing C里的命令行加到你的~/.vimrc文件里。这些命令行告诉vi要调用你所创建的vimAnt脚本,并提示它如何剖析Ant的jikes输出。在你的系统路径下有了vimAnt脚本之后,你现在就可以使用:make命令来初始化编译了。当前目录及其所有的父目录都会被搜索,以寻找一个build.xml文件,这个文件的类对象会被调用。错误输出会被vi自动地剖析。一旦你在vi里进行了带有错误的编译,你就可以使用快速修复(quick fix)模式来迅速地到达错误地点,进行及时的修补。:cn命令会把你带到下一个出错地点,而不考虑它在什么文件里。:cc命令会向你显示当前错误的编译器输出信息;而:cl会生成一个列有项目所有错误的列表,以供浏览这些错误。修补好你的错误,你就离成功的编译只有一:make之遥了。

查看进程,kill进程:

  • ps 命令用于查看当前正在运行的进程。grep 是搜索例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程信息2、ps -aux | grep java -aux 显示所有状态ps 3. kill 命令用于终止进程例如: kill -9 [PID] -9 表示强迫进程立即停止通常用 ps 查看进程 PID ,用 kill 命令终止进程
  • 看端口:直接使用 netstat   -anp   |   grep  portno

posted @ 2024-04-22 09:52  木头左  阅读(6)  评论(0编辑  收藏  举报