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_)

  • 相关阅读:
    PAT (Advanced Level) 1086. Tree Traversals Again (25)
    PAT (Advanced Level) 1085. Perfect Sequence (25)
    PAT (Advanced Level) 1084. Broken Keyboard (20)
    PAT (Advanced Level) 1083. List Grades (25)
    PAT (Advanced Level) 1082. Read Number in Chinese (25)
    HDU 4513 吉哥系列故事――完美队形II
    POJ Oulipo KMP 模板题
    POJ 3376 Finding Palindromes
    扩展KMP
    HDU 2289 Cup
  • 原文地址:https://www.cnblogs.com/gr-nick/p/4069789.html
Copyright © 2011-2022 走看看