Linux 实用操做命令

1. ssh远程链接服务器命令  ssh [username@]hostnamephp

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

3. 用户及其主目录的建立java

  1.  useradd –d /home/lb -m 用户名  能够建立一个名为lb的用户,主目录为/home/lb,选项-m表示若是主目录不存在则建立。python

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

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

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

  5. cat /etc/passwd  用来察看全部的用户正则表达式

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

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

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 内容从上到小组织成一个列表,而后将列表的每行用 '\n' 链接起来组成完整的 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 命令配合管道符能够实现对文件的自测。

相关文章
相关标签/搜索