zoukankan      html  css  js  c++  java
  • ###Linux基础

    点击查看Evernote原文

    #@author:       gr
    #@date:         2014-10-13
    #@email:        forgerui@gmail.com
    

    一、Linux基础命令2

    1. mount: 挂载U盘,虚拟镜像
      一般形式:mount [-t vfstype] [-o options] device dir
      -t vfstype表示类型,常用类型有:
      光盘或光盘镜像:iso9660
      DOS fat16文件系统:msdos
      Windows 9x fat32文件系统:vfat
      Windows NT ntfs文件系统:ntfs
      -o options 主要用来描述设备或档案的挂载方式。常用的参数有:
      loop:用来把一个文件当成硬盘分区挂接上系统
      ro:采用只读方式挂接设备
      rw:采用读写方式挂接设备

       # 挂载windows文件系统/mnt目录下
       mount -t ntfs /dev/sda1 /mnt
       # 挂载光盘
       mount -t iso9660 -o loop a.iso /mnt
      
    2. umount: 卸载设备

       # 卸载到/mnt的设备
       umount /mnt
      
    3. find: 在目录中查找文件
      一般形式:find path -name filename

       # 在当前文件下
       find ./ -name 'test'
      
    4. grep: 在文件中查找字符

       # 在a.txt中查找abc字符串
       grep abc a.txt
       # 利用管道查找文件内容
       cat a.txt | grep abc
       # 在当前目录的所有文件中查找abc字符串
       grep abc -R ./
       # 查找没有注释的行
       grep -v "^#" a.txt
      

      grep

    5. tar: 解压缩命令
      Linux下打包和压缩是两个概念,可以使用tar进行打包,然后使用不同的压缩方式压缩。tar可以将这两个过程连接起来,调用压缩程序进行压缩。下面是其调用的对应关系:
      gzip .gz zxvf
      compress .Z Zxvf
      bzip2 .bz2 jxvf
      使用上面的对应关系,便可以进行文件的解压缩。

       # 解压test.tar.gz
       tar zxvf test.tar.gz
       # 把test目录打包,不压缩
       tar cvf test.tar test/
       # 把test目录打包压缩成.bz2的格式
       tar jcvf test.tar.bz2 test/
      
    6. top: 查看系统中的进程对cpu、内存等的占用情况。
      up 5:37: 系统启动时间,5小时37分钟。
      4 users: 4个用户
      load average: 负载情况,第一位:表示最近1分钟平均负载; 第二位:表示最近5分钟平均负载; 第三位:表示最近15分钟平均负载。
      # 查看cpu核心数
      grep 'model name' /proc/cpuinfo | wc -l
      单核如果load average = 1, 表明已经满载,如果是多核,应该除以核心数。我的0.7 / 4 = 0.17也还是特别高。
      Task 224 total: 224个进程,222个休眠,1个running, 1个僵尸
      CPU状态: 79.6 id 表示cpu有79.6是idle空闲的,越大越好
      Mem状态:只生剩下367M内存了,看来我的程序跑的比较多。
      SWP: 虚拟内存,大概8G左右,我已经使用了虚拟内存,看来我的内存确实有问题了,一般会使用完内存的时候,再用虚拟内存,将内容写到磁盘上。

       # 10秒刷新一次
       top -d 10
       # u选择用户程序
       # q退出程序
      

      top

    7. ps: 显示当前的进程信息

       # 查看当前所有进程信息
       ps aux
      

      a 显示终端上的所有进程,包括其他用户的进程。
      u 以用户为主的格式来显示程序状况。
      x 显示所有程序,不以终端机来区分。
      Alt text

    8. kill: 杀死正在运行的进程
      每个进程都有一个pid,可以使用kill命令去结束这个进程。

       # 删除pid为2440的进程
       kill 2440
       # -9 表示强制删除
       kill -9 2440 
      
    9. history: 显示历史命令
      历史命令存放在.bash_history中。
      HISTFILESIZE 定义了在 .bash_history中保存命令的记录总数.默认大小为1000.
      HISTSIZE 定义了 history 命令输出的记录数.

       # 执行history中第789个命令
       !789      
       # `!cmd` 执行上个histroy中最近的命令
       !cat      #执行最上次执行的cat命令
      
    10. man: 用户帮助页
      不可能记住每个命令的用法,这时可以使用man去查看帮助。如下list的man page:
      Alt text

    Linux命令到此为止,实际上还有许多Linux命令,包括一些文本处理的命令,可以参见博客《Linux基本文本处理》,此外可以了解Sed《Sed基础入门》, AWK等工具。

    二、编辑器

    掌握Linux下基本的文本编辑器,增强在纯文本下编程的能力。这里主要使用主流的VIM

    1. 初识VIM
      vim是vi的improved版本。它是一个优秀的文本编辑器(神器)。刚开始使用vim可能感觉不习惯,但时间长了以后,你会喜欢上它的。它避免了频繁在鼠标与键盘之间切换,提高效率。可以安装自己的插件,打造自己的IDE环境。

    2. VIM的三种模式
      变通模式:在普通模式下,可以进行光标移动,h,j,k,l分别表示左,下,上,右,当然也可以使用上下左右键,但不建议这么做。
      插入模式:普通模式按i键便进入插入模式,插入模式可以输入删除文本。
      命令行模式:又称尾行模式,可以执行一些命令。

    3. 打开一个文件
      vi a.txt

    4. i插入模式,使用<ESC>键返回普通模式。使用:wq保存退出。

    5. 普通模式中的操作

       # 普通模式下的命令
       • yy: 复制当前光标所在行
       • [n]yy: n为数字,复制当前光标开始的n行
       • 0: 光标移至行首
       • $: 光标移至行尾
       • n$: 光标移至第n行的行尾
       • p:  粘贴复制的内容到光标所在行
       • dd: 删除当前光标所在行
       • [n]dd: 删除当前光标所在行开始的n行
       • /name: 查找光标之后的名为“name”的字符串
       • G: 光标移动到文件尾(注意是大写)
       • u: 取消前一个动作(注意是小写)
       • *: 向下查找光标处的单词
      
    6. 尾行模式:

       • :w 保存
       • :q 退出vi(系统会提示保存修改)
       • :q! 强行退出(对修改不做保存)
       • :wq 保存后退出
       • :w [filename] 另存为filename的文件
       • :set nu 显示行号
       • :set nonu 取消行号
      

    三、进一步使用Shell

    1. 配置环境变量
      我们在Windows下可能也配置过一些环境变量,以方便让程序打到可运行的程序,同样,在Linux下有时也需要配置环境变量。
      一般可以在/etc/bashrc和/etc/profile中可以配置所有用户的变量,在~/.bashrc和~/.profile中可以配置自己用户的环境变量。
      环境变量使用export表示全局变量。

       # 配置texlive环境
       PATH=/usr/local/texlive/2013/bin/x86_64-linux:$PATH; export PATH
       MANPATH=/usr/local/texlive/2013/texmf-dist/doc/man:$MANPATH; export MANPATH
       INFOPATH=/usr/local/texlive/2013/texmf-dist/doc/info:$INFOPATH; export INFOPATH
       # 配置history相当变量
       export HISTSIZE=1000000
       export HISTFILESIZE=1000000
       # 配置Java环境变量
       export JAVA_HOME=/usr/share/jdk1.6.0_14 
       export PATH=$JAVA_HOME/bin:$PATH 
       export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
      
    2. 重定向
      Linux有三种常见重定向,即如下:

       # STDIN   0   标准输入
       # STDOUT  1   标准输出
       # STDERR  2   标准错误
      
       # 把当前目录文件列表输出到mylist.txt
       ls -al > mylist.txt
       # 标准错误输出到err_file.txt中
       myprogram 2> err_file.txt
       # 标准输入
       wc -l < /etc/passwd 
      

      如果需要进一步学习重定向,请看《Linux输入输出重定向》。

    3. 管道
      Shell提供管道命令"|"将命令前后衔接在一起。把前一个命令的结果提供给后一个程序当作参数

       # 查找/etc/passwd中gr字符串
       cat /etc/passwd | grep gr
       # 以排序查看当前目录(不包含子目录)的磁盘占用情况
       du -S | sort -n
      
    4. 命令替换
      一般形式:cmd1 `cmd2`,这里的`符号是Tab键上方的键。

       echo `date`
       g++ test.cpp -o test `pkg-config  --libs --cflags opencv`
      
    5. 命令聚合

       # 顺序执行
       $ cmd1; cmd2
       # 当cmd1执行成功时运行cmd2
       $ cmd1 && cmd2
       # 当cmd1执行失败时运行cmd2
       $ cmd1 || cmd2
      

    四、Shell脚本编程

    这里就不说了,大家如果想学的话,可以自己学习o_)

  • 相关阅读:
    JAVA面试问题与解答(1-15)
    17个经典的Spring面试问答
    Linux下载——下载文件的命令
    MySQL入门——在Linux下安装和卸载MySQL
    MySQL入门——在Linux下安装和卸载MariaDB
    MySQL入门——MySQL数据库和SQL语言
    Linux性能分析——分析系统性能相关的命令
    Linux网络——查看网络连接情况的命令
    Linux网络——配置网络之iproute家族命令
    Linux网络——配置网络之ifconfig家族命令
  • 原文地址:https://www.cnblogs.com/gr-nick/p/4069789.html
Copyright © 2011-2022 走看看