Linux 实用操作命令

1. ssh远程连接服务器命令  ssh [username@]hostname

2. 查看远程服务器近期登陆记录  last

3. 用户及其主目录的创建

  1.  useradd –d /home/lb -m 用户名  可以创建一个名为lb的用户,主目录为/home/lb,选项-m表示如果主目录不存在则创建。

  2. userdel 用户名  删除一个用户

  3. passwd 选项 用户名  用于对口令做一些更改

  4. usermod 选项 用户名  用于对用户的配置做修改,与useradd中的选项一样。

  5. cat /etc/passwd  用来察看所有的用户

4. 将新建的用户加入sudo用户组

  使用root用户权限修改 vi /etc/sudoers 加上 user_name ALL = (ALL) ALL 一行。

5. 切换用户使用 su 命令

  su username  切换用户,但是不更改环境变量

  su - username  切换用户,并更改到当前用户的环境变量

6. 从网络上下载资源文件

  curl -O http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  从支持的http,ftp等协议从给定的URL执行操作,选项-O表示下载到的文件就以资源文件的名字命名。如果出现下载失败,可能是当前用户组对目录不具有w权限,需要使用sudo命令。

7. 查找当前已经安装的软件包

  rpm -qa  会显示所有安装的软件包

  rpm -qa | grep ssh  会显示与ssh相关的软件包

8. 利用ssh连接进行远程拷贝命令

  scp /Users/hope/Downloads/hadoop-2.8.0.tar.gz lb@10.3.242.98:/home/lb

  将本地路径下的 hadoop-2.8.0.tar.gz 拷贝到远程服务器 [[用户名 @ ] 主机地址 : 路径

  如果是拷贝文件夹的话,需要加上选项 -r

9. 察看服务器和操作系统相关信息

  uname -a  服务器信息

  cat /etc/issue  操作系统的发行版本  

10. 查找指定目录下以y开头的文件

  find ./ -name "y*"

11. 察看当前所有的进程及占用端口

  netstat -a -t --numeric-ports -p

12. 解压缩命令

  1. 解压命令

    tar -zxvf jdk-8u131-linux-x64.tar.gz -C temp/ 将压缩包解压到当前目录的 temp 子目录下

  2. 压缩命令

    tar -zcvf tmp.tar.gz ./test 将当前目录下的 test 文件夹,按照 zip 压缩方式压缩成 tmp.tar.gz 

13. 关于 /etc/profile 配置文件和环境变量的写法

  关键字的含义:

  PATH:告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还应到哪些目录下去寻找。

  CLASSPATH:告诉 Java 执行环境,在哪些目录下可以找到执行 Java 程序所需要的类或者包(如.jar文件)。

  特殊字符的写法:

  : 表示并列含义,如果一个环境变量有多个,用:号进行分离。

  . 表示执行操作的当前目录。

  所以经常看到 export $PATH = /usr/java/jdk1.8.0:$PATH 表示环境变量在之前的环境变量上加上 Java 的安装路径,相同名字的环境变量后写入的起作用。

  另外:~/.bash_profile 存储的是当前用户的环境变量,如果只是想使用此用户时有特定的环境变量,可以直接在该文件中作更改,同样是使用 source ~/.bash_profile 使文件生效。

  /etc/profile 和 ~/.bash_profile 都是在用户登录时执行一次的 bash 信息和环境变量配置情况。~/.bashrc 是每一次启动 bash shell 都会读取的文件,~/.vimrc 类似,因此修改以上两个文件后不需要使用 source 命令让其生效,直接重新打开 bash 或者 vim 时会自动读取生效。

14. Jar (Java ARchive 文档)

  是一种与平台无关的文件格式,可以将多个文件合成一个文件,支持压缩。可以用于将写好的类进行打包,方便类库的发布和传输。与ZIP文件的区别在于,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。

  1. jar 创建并显示打包过程

    jar cvf hello.jar hello/*

  2. 显示 jar 包里的所有内容

    jar tvf hello.jar

  3. 解压 jar 包

    jar xvf hello.jar

  4. -C 选项用于先切换到指定目录下再执行该条 jar 命令

 15. source 命令的功能是执行一个shell,它和直接执行 ./a.sh 的区别在于:

  比如你在一个脚本里export $KKK=111 ,如果你用./a.sh执行该脚本,执行完毕后,你运行 echo $KKK ,发现没有值,如果你用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是source不同它就是在本shell中执行的,所以可以看到结果。

 16. crontab 命令用于定时执行 shell 命令

  基本格式 : 
  *  *  *  *  *  command 
  分 时   日   月  周   命令 

  例子: */2 0,12 * * * python /home/libo/bjh_search.py

  表示在0时和12时每隔两分钟执行一次 python 程序。
  第1列表示分钟1~59 每分钟用*或者 */1表示 
  第2列表示小时1~23(0表示0点) 
  第3列表示日期1~31 
  第4列表示月份1~12 
  第5列标识号星期0~6(0表示星期天) 
  第6列要运行的命令 

  记住几个特殊符号的含义:

         “*”代表取值范围内的数字,
         “/”代表”每”,
         “-”代表从某个数字到某个数字,
         “,”分开几个离散的数字

  在命令行输入 crontab -e 即可创建时程表,wq 保存即可。

  用 crontab -l 命令可查看当前的 crontab 。

  /sbin/service crond start 用于启动服务。

  如果 crond 服务事先已启动,那么当前用户直接编辑保存后即可生效。

  注:在定时执行 python 程序时,如果涉及文件的 IO 操作,一定要写完整路径。因为脚本在执行时,是通过 crontab 去执行的,因此执行目录会变成当前用户的 home 目录,如果是 root ,就会在/root/下执行。

  1. 路径问题

    使用 crontab 部署定时任务时,默认的当前路径为部署任务的用户的home路径下,比如用户名为spider的用户为/home/spider。可以在执行命令中做目录变更。

  2. 环境变量问题

    因为 crontab 启动的命令并不读当前的 .profile ,因此所有程序的环境变量需要用程序或shell自己去设置,解决方法就是在执行shell脚本的业务逻辑前先初始化操作系统的环境变量配置文件.profile或.bash_profile。比如:*/1 * * * * source ./.bash_profile && cd ./libo/email_auto && python rep_timeliness.py

  3. 执行日志

    在 /var/log/cron 中,察看需要有root权限

17. ctrl + R 输入搜索字符,可以察看相关的历史命令

18. echo ftp://`hostname``readlink  -f tmp.tar.gz `

  可以输出当前文件夹下 tmp.tar.gz 文件的ftp地址:

  ftp://cp01-scholar-offline-dev02.epc.baidu.com/home/work/tmp.tar.gz

  wget 上述地址可以获取这个文件

19. Vim 快捷键

  1. 屏幕滚动

   gg 快速跳到文档头部

     G 快速跳到文档底部

     Ctrl + U 向上滚动半屏

   Ctrl + D 向下滚动半屏

   Ctrl + B 向上滚动一屏

     Ctrl + F 向下滚动一屏

  2. 修改 Vim 的配置文件

   vim ~/.vimrc

     set tabstop=4
   set softtabstop=4
     set shiftwidth=4
         set noexpandtab / expandtab

   set autoindent

     其中:

     tabstop 表示一个 tab 显示出来是多少个空格的长度,默认 8。

    softtabstop 表示在编辑模式的时候按退格键的时候退回缩进的长度,当使用 expandtab 时特别有用。

    shiftwidth 表示每一级缩进的长度,一般设置成跟 softtabstop 一样。

     当设置成 expandtab 时,缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进。官方建议缩进用空格表示,即 expandtab。

     设置 autoindent 自动缩进,即按回车时每行的缩进与上一行相同,设置 noautoindent 取消缩进。

   set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

   上述设置可以让vim自动识别文件编码,(可以自动识别UTF-8或者GBK编码的文件)其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。有时vim显示中文乱码,是因为没有识别出文件的编码方式导致的。

  3. 行首、行尾快速移动

    1. 0 移至行首

    2. $ 移至行尾

  4. 查找操作

    在命令行:后输入/查找字段即可。例如 :/status 查找status字段。

    n 键可以跳到下一个,N 键跳到上一个。

  5. Vim 中复制

    由于直接进行复制,vim 会认为粘贴过来的内容是手动输入的,因此会自动继承上一行的缩进,加上复制内容原本格式中包含的缩进,导致格式错乱。

    因此在进行粘贴之前,使用 :set paste 命令进入粘贴模式,粘贴完再使用 :set nopaste 解除粘贴模式。粘贴模式实际上是对自动缩进等内容进行了暂时的设置。

  6. 窗口分割

    1. :split test.py

      用于在当前窗口进行水平分割并打开 test.py 文件,vsplit 命令用于水平分割。

    2. ctrl + w

      用于在分割窗口间跳转

    3. :wall

      保存所有窗口打开文件的修改

    4. :only

      退出其他所有窗口,只留下当前窗口

  7. 粘贴复制

    1. yy 命令用于复制当前行

    2. p 命令用于在当前行的下一行进行粘贴,并将光标移动到下一行的行首

    3. P 命令用于在当前行的上一行进行粘贴,并将光标移动到上一行的行首

  8. 显示不可见字符

    :set list  用于显示不可见的空格、tab、换行等符号

  9. 通过管道符将内容使用 vim 编辑器察看

    echo "test" | vim -

    使用 vim - 可以获取从终端传入的值

  10. vim 打开文件后执行 :set fileencoding 可以查看文件的编码类型

20. tail -f 文件名

  可以监控文件尾部的更新

21. 命令模式下 shift + '#' 可以高亮搜索当前字符串

  :nohlsearch 取消搜索 或者简写为 :noh

22. Linux 命令行光标移动命令

  ctrl + 'a' 迅速移动到行首

  ctrl + 'e' 迅速移动到行尾

23. sendmail 服务 /usr/sbin/sendmail

  1. 邮件系统解释

    邮件服务器构成了邮件系统的核心。每个收信人都有一个位于某个邮件服务器上的邮箱(mailbox)。首先,当你将 E-mail 输入到你的计算机开始发送时,会根据 SMTP(Simple Mail Transfer Protocol) 和 TCP/IP 协议将你的信件打包,并加注信件头后送到你所属服务商的服务器上,然后邮件服务器会根据你加注的信件头传到下一个邮件服务器,依次往下传输,直到到达接收用户所属服务商的邮件服务器,保存在服务器上用户的 E-mail 邮箱里,用户个人终端通过与服务器的连接取走邮件。

  2. 名词解释

    1. MUA (Message User Agent)

      邮件用户代理,通常我们的 Client 端电脑都没法直接寄信,所以需要通过 MUA 来帮助我们传递信件,不管是收信还是寄信,都要依赖各个系统提供的 MUA (Foxmail 和 Outlook) 帮我们传递信件才能使用邮件系统。

    2. MTA (Message Transfer Agent)

      邮件传输代理,MUA 是用在客户端上的软件,MTA 就是用在主机上的软件,用于监视 MUA 的请求,找出对方的 MTA,把信送到对方的 MTA 服务器,或者把信收到邮件队列。

    3. MDA (Message Deliver Agent)

      邮件投递代理,把信最终投递到具体的用户;主要功能是将MTA所收到的信件,依照信件的流向(送到那里去)来将该信件放置到本机账户下的邮件档案中(mailbox_收件箱),或者再经由MTA将这个信件发送到下个MTA。

  3. sendmail 服务

    通过脚本调用 sendmail 服务配合 crontab 就可以完成邮件的定时自动发送,主要包括指定接收方的邮箱地址和完成邮件内容的书写,邮件内容可以选择传递 html 格式的内容。比如使用 python 调用服务时,就将对应每行的 html 内容从上到小组织成一个列表,然后将列表的每行用 ' ' 连接起来组成完整的 html 语句,进行传递即可。

  send_mail = 'formail -I  "MIME-Version:1.0" -I "Content-type:text/html;charset=utf-8" -I "Subject:=?utf-8?B?%s?=" -I "TO:%s" | /usr/sbin/sendmail %s' % (subject, users, users)

    sub = subprocess.Popen(send_mail, shell=True, stdin=subprocess.PIPE)

  slice_num = sub.communicate(html)

  上述语句是完成 sendmail 服务的调用,其中需要的参数 user 是用 ' ' 连接的多个邮件接收地址的字符串,html 为邮件的内容,subject 为邮件主题。

24. 清屏命令

  clear 或者快捷键 ctrl + l

25. wc 命令

  1. 命令格式

    wc [选项] 文件

  2. 命令功能

    统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

  3. 命令参数

    -c 统计字节数

    -l 统计行数

    -m 统计字符数

    -w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串

    -L 打印最长行的长度

26. & nohup 标准输入输出流

  1. 标准输入输出流

    操作系统中有三个常用的流:

      0:标准输入流 stdin

      1:标准输出流 stdout

      2:标准错误流 stderr

    一般当我们用 > console.txt,实际上是 1 > console.txt 的简略用法;< console.txt 是 0 < console.txt 的简略用法。

  2. 输出重定向 > 和 >> 的区别

    > 和 >> 都是输出重定向到文件,如果文件不存在,就创建文件。区别在于,如果文件存在,> 会将文件清空,然后再向文件输入;>> 会将新的内容追加到原有文件的尾部。

    重定向运算符可以实现原本为标准输出的内容重定向到文件中,原本屏幕输出的所有内容都会输出到文件中。

  3. & 命令

    当在前台运行某个作业时,终端会被该作业占据;可以在命令的尾部加上 & 实现后台运行,例如:sh test.sh &

    注意,需要用户交互的程序不要放在后台进行,否则机器会在后台等待用户交互。一般来说作业在后台执行一样会把结果输出到终端屏幕,这时我们可以选择将输出重定向,使后台执行的作业输出到我们指定的文件中。例如:command > output.file 2>&1 & 

    2>&1 将标准错误流重定向到标准输出流中,而标准输出流又在之前重定向到 output.file 文件中,所以所有的标准输出流和标准错误流都会输出到 output.file 文件中去。至于为什么必须将标准错误流重定向到标准输出流中,而不能直接重定向到文件,比如 2 > output.file 会出错,是因为标准错误流没有缓存区,而标准输出流 stdout 有缓存区。为什么直接要写为 2>&1 ,因为 2>1 系统会自动认为 1 是一个文件,而 & 与 1 结合为 &1 就代表了标准输出流。

  4. nohup 命令

    使用 & 命令在后台执行的作业,虽然当前控制台没有被占用,但是一旦把当前控制台关闭(退出账户时),作业就会停止运行。nohup (no hang up)命令可以帮助用户在退出账户后仍然继续执行相应的进程。

    如果使用 nohup 提交作业,在缺省情况下,该作业的所有输出都被重定向到当前目录下的 nohup.out 文件中,也可以使用重定向运算符自定义重定向。例如:nohup comand > out.file 2>&1 &

    使用 nohup 命令后,如果在当前账户非正常退出或结束的时候,命令也有可能自动结束了,所以最好是使用 exit 正常退出当前用户。

    1. 用nohup执行python程序时,print无法即时输出的问题

      nohup python test.py > nohup.out 2>&1 &

      发现nohup.out中显示不出来python程序中print的东西。

      这是因为python的输出有缓冲,导致nohup.out并不能够马上看到输出。

      python 有个-u参数,使得python不启用缓冲。

      nohup python -u test.py > nohup.out 2>&1 &

  5. ctrl + z

    将当前前台执行命令放到后台,并处于暂停状态

  6. ctrl + c

    终止前台命令

27. make 命令

  1. 命令作用

    根据 Makefile 文件的指示去构建文件。make 命令后给出需要构建的目标(可以有多个,用空格隔开),然后就根据 Makefile 文件中,每个目标的前置条件和执行命令来构建对应的目标(通常为文件)。例如:make clean && make result.txt

    上述命令先执行了 clean 伪目标将原有的结果文件删除,然后再构建新的 result.txt 文件。

  2. Makefile 文件结构

    由一系列的规则(rules)构成,每条规则的形式如下:

    <target>: <prerequisites>

    [tab] <commands>

    target:一般情况下为文件名,为该条规则想要生成的目标文件。也可以为伪目标用来执行对应的命令,如删除现有的某个文件。

    prerequisites:前置条件通常是一组文件名,它指定了“目标”是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的last-modification时间戳比目标的时间戳新),“目标”就需要重新构建。

    commands:为构建文件所需要执行的具体方法,命令前需要有一个 Tab 缩进。详细介绍见:http://www.ruanyifeng.com/blog/2015/02/make.html

28. echo $?

  显示最近一次操作是否成功。0代表成功,非0为不成功。 

29. 管道符 |

  使用管道符 | 将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

30. grep 命令

  grep 命令用于文本搜索,支持正则表达式搜索,并将匹配的行打印出来。常用管道符配合使用。

  用法:grep match_pattern file_name 就可以实现在文件中每行搜索 match_pattern 字符串

       grep -E "[1-9]+"   -E 选项用于正则表达式搜索

     grep -o -E "[a-z]+."   选项 -o 只输出文件中匹配到的部分

  因此如果统计一个文件中出现特定字符串的个数,可以使用 grep -o objstr filename | wc -l

  详情见:http://man.linuxde.net/grep

  1. 字符串条件的或逻辑

    使用 | 符号来完成

    grep "hope|test" filename  查找包含"hope"或"test"的行,| 前需要使用转置符

  2. 与逻辑

    使用管道运算符依次过滤

    grep "hope" filename | grep "test"  查找即包含 "hope" 又包含 "test" 的行

31. ps 命令:用于查看进程

  1. ps aux | less

    a 选项:显示现行终端机下的所有程序,包括其他用户的程序

    u 选项:显示启动这个进程的用户和时间

    x 选项:显示所有程序,不以终端机作区分

    管道符 | less 命令使类似于文件的形式查看结果,less 命令类似于 more

  2. pgrep python

    pgrep 命令能查找对应条件的进程并返回 id

  3. pgrep -u root sshd

    查找进程名为 sshd,所有者为 root 的进程

  4. ps aux | grep vim

    一般用这条命令来查找对应进程。

32. kill 命令:用来删除执行中的程序和作业

  kill 可将指定的信息送至程序。预设的信息为SIGTEM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。只有第9种信号(SIGKILL)能无条件终止进程。

  kill -s 9 3268(进程号) 

    选项 s 指定要发出的信息

    选项 l 列出对应的信息名称,如果没有参数则列出所有的信息名称

33. Shell 语言

  Shell 是一种用C语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

  Shell 脚本 (shell script) 是用 shell 编写的脚本程序,其编写需要一个文本编辑器和一个能解释执行的脚本解释器就可以了。Linux 的 Shell 种类众多: 

    1. Bourne Shell(/usr/bin/sh或/bin/sh)

    2. Bourne Again Shell(/bin/bash)为我们常用的 Shell,也是大多数 Linux 系统默认的 Shell。

  Shell 脚本以 #!/bin/bash 开头,#! 是一个约定的标记,它告诉系统这个脚本需要用什么解释器来执行,即哪一种 Shell。

  执行 Shell 脚本的方法:

    1. 作为可执行程序

chmod +x ./test.sh    #使具有执行权限
./test.sh    #执行脚本

      注意一定要写成 ./test.sh 的形式来执行,不能直接写 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

    2. 这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

/bin/sh test.sh
/bin/php test.php

    3. 命令替换字符 `

      `command` 使 ` 引入的命令执行结果能赋给一个变量

34. 比较符号的含义

  EQ 就是 EQUAL等于

  NQ 就是 NOT EQUAL不等于 

  GT 就是 GREATER THAN大于  

  LT 就是 LESS THAN小于 

  GE 就是 GREATER THAN OR EQUAL 大于等于 

  LE 就是 LESS THAN OR EQUAL 小于等于

35. 在指定目录下查找文件

  find path -name "test" -type d

  可以在 path 包含的目录下查找名为 test 的指定类型的文件

36. netstat 命令

  用于查看系统中网络的状态信息

  -l 打印监听端口

  -t 打印使用 TCP 传输协议的端口

  -u 打印使用 UDP 传输协议的端口

  -n 将主机名转换为 ip 地址的形式显示(numeric)

  例如:netstat -ltn  打印处于监听状态使用 TCP 传输协议的端口信息

37. lsof 命令

  用于查看进程打开的文件,打开文件的进程,占用的端口号。

  -i 按照条件打印

  例如:lsof -i :9001  查看占用9001端口的进程号,配合 kill -9 进程号 可以释放被占用的端口。

38. nc/netcat 命令

  用于设置路由器

  concatnate files and print on the standard output

  nc -lp 端口号  可以用来监听端口  

Server1:nc -lp 1234
Server2:nc 192.168.228.222 1234

  以上命令可以实现两台主机间简单聊天

39. Git 命令

  Git 是最流行的分布式版本控制系统。集中式版本控制系统的特点是版本库是存放在中央服务器的,每个人进行修改时必须联网从中央服务器取得当前的代码,修改之后然后再上传,这种方式受到网络传输延迟的约束,代表是 SVN;分布式版本控制系统的特点是每个人的电脑上都可以获取完整的代码库,这样工作的时候就不必联网了,将修改的部分直接推给合作的人即可。

  1. 创建版本库

    版本库又称仓库,英文名为 repository,可以简单的理解为一个目录。Git 能够追踪当前目录下所有文本文件的改动,而不能追踪图片、视频等二进制文件的改动。当前版本库目录下的 .git 目录是用来跟踪管理版本库的,不要私自改动。

mkdir learngit     #创建版本库想存放的文件夹       
cd learngit      #进入对应的文件夹    
git init      #将当前文件夹初始化为Git版本库

    在版本库目录下修改文件后,使用 git add 命令将修改的文件放入 git 的缓存区,然后使用 git commit -m "remarks" 命令来确认版本库文件的修改和删除(可以同时确认当前所有的修改)-m 参数后为本次提交的说明,方便从历史记录找到修改记录。

  2. 分支操作

    1. 察看所有分支情况

      git branch

    2. 创建分支

      git branch <name>

    3. 切换到某一分支

      git checkout <name>

    4. 创建+切换分支

      git checkout -b <name>

    5. 合并某分支到当前分支

      git merge <name>

    6. 删除分支

      git branch -d <name>

40. 终端、Vim、ls 风格设置

  1. Vundle 是用来对 Vim 插件进行管理的软件

    1. 获取方式

      git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.    

    2. 在 ~/.vimrc 中书写配置文件

set nocompatible  " be iMproved, required
filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim  "指定插件安装默认路径 call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim'  "对其本身进行管理 " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive'  "为插件列表,路径为安装插件对应的 GitHub 路径的用户名和仓库名,Vundle 会自动从 https://github.com/tpope/vim-fugitive 获取插件代码 " plugin from http://vim-scripts.org/vim/scripts.html " Plugin 'L9' " Git plugin not hosted on GitHub Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line

    3. 插件安装

      打开 vim ,命令行输入 :PluginInstall 即可完成所有插件的自动下载安装

    4. 插件卸载

      在 ~/.vimrc 文件中删除该插件的配置语句,然后使用 vim 命令行 :PluginClean 完成默认安装目录下对应插件的卸载

  2. 终端和 Vim 的 Solarized 风格配置

    建议 Mac 使用 iTerm2,自带的 Terminal 终端和 Vim 的颜色之间总是会出现干扰

    1. 终端在官网上下载对应的 Solarized 风格文件,双击即可引入。

    2. Vim 使用上述 Vundle 工具可以直接进行下载,完成后在 ~/.vimrc 中对应配置即可:    

syntax enable
set background=dark
colorscheme solarized

  3. ls 颜色设置

    在 ~/.bash_profile 中设置 LS_COLORS 如下:

export LS_COLORS='no=00:fi=00:di=01;33:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;35:*.cmd=01;35:*.exe=01;35:*.com=01;35:*.btm=01;35:*.bat=01;35:*.sh=01;35:*.csh=01;35:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:'

    用冒号分离,字母代表文件类型,分号前面的数字代表效果列表,后面的数字表示颜色。

    在 ~/.bash_profile 加上 alias 命令:alias ls='ls -G' (Mac) 在 Linux 上为 alias ls='ls --color=auto' 。即可在每次登录时进行命令别名的替换。

41. 使用 SecureCRT 可以完成服务器和本地之间文件传输

  1. sz 命令

    send 服务器向本地发送文件,参数为发送的文件名

  2. rz 命令

    receive 服务器接收文件

42. mkdir -p dirName

  -p 选项可用来确定参数目录是否存在,如果不存在则新建对应的目录

43. touch

  touch 命令可以用在在当前目录下新建文件,touch filename 可以新建 filename 文件

44. Linux 运算符

  1. 文件测试运算符

操作符说明举例
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。

    

45. 清空某个文件

  : > filename  #即可清空 filename 文件,:是占位符,不产生任何输出

46. date 时间输出命令

  date -d "1 day ago" +"%Y-%m-%d"

  -d 选项用于输出字符串指定的时间, +"%Y-%m-%d" 按照指定的格式输出

47. xargs 参数传递命令

  xargs 命令用于从管道给其他命令传递参数,如果没有其他命令,则默认为 echo 命令。xargs 可以将管道传递给 xargs 的包含空白和换行的内容转换为仅由空格分隔的字符,因此可以很方便的给命令传递参数。

  比如:find ./ -name "*.jpg" | xargs rm -rf   可以将当前目录下所有以 .jpg 为后缀的文件删除

48. wget 命令

  wget 的方式可以递归地从 http 链接上下载文件:

  wget -rc http://dm.postech.ac.kr/~cartopy/ConvMF/data/

49. du 命令

  du -h 以人类便于理解的方式察看文件大小

50. Shebang(Hashbang)

  在Unix术语中,井号通常被称为 sharp、hash或mesh,叹号一般被称为 bang。因此将 #!序列称为 Shebang,其出现在文本文件的第一行的前两个字符。 在文件中存在 Shebang 的情况下,类 Unix 操作系统的程序载入器会分析 Shebang 后的内容,将这些内容作为解释器指令,并调用该指令,并将载有 Shebang 的文件路径作为该解释器的参数。

51. tail 命令

  tail 命令用于显示文件的尾部内容,默认显示末尾10行。

  tail -n 20 file #-n参数可指定显示行数

  tail +20 file #数字前带+号表示从文件的第 n 行开始显示一直到文件结尾

52. 复制 SSH 会话,避免多次输入密码

  在准备登陆到远程服务器的终端机上配置 SSH,在 ~/.ssh/config 文件中加入以下内容:

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

53. 上传 下载文件

  rz -bey

  sz filename

54. echo -e 激活转义字符

  export 输出环境变量

  使用 echo 命令配合管道符可以实现对文件的自测。

原文地址:https://www.cnblogs.com/hopelee/p/7049831.html