• linux(4) vi编辑/删除、复制、粘贴 /bash shell 环境变量设置/数据流重定向 | 的用法


    一.vi文字处理器
    1.vi与vim
    vi:文字处理器
    vim:程序开发工具
    2.vi介绍
    三种模式:一般模式(vi刚进入的,不可编辑),编辑模式(按i后,左下方是insert)和命令行模式(按esc退出,:wq类)

    hjkl(左下右上)
    3.一般模式常用命令
    (1)移动光标
    ctrl+f:向上
    ctrl+b:向下
    0:移动到这一行最前面
    $:移动到这一行最后面
    gg:相当于1G,移动到文件第一行
    G:移动到文件最后一行
    n(数字):光标向下移动n行
    (2)搜索和替换
    :n1、n2s/word1/word2/g :n1到n2行之间找到word1替换成word2(1、$s第一行到最后一行)
    gc替换前确认
    (3)删除,复制与粘贴
    x:向前删除,10x向前删除10个字符
    dd:删除光标所在行 ndd向下删除
    yy:复制 nyy:向下复制n行
    p:粘贴在下一行,P粘贴到上一行 (一定要和yy连用)
    u:复原上一个操作
    ctrl+r:重做上一个操(和u一起用)
    .:重复上一个操作(复制,粘贴)
    4.编辑模式常用命令
    a/i/o:插入
    r:替换
    5.命令行模式
    :w:写入硬盘中
    :wq! 强制写入退出
    中途遇到的问题(文件的恢复与暂存盘)
    未关闭文件就关闭终端,再次打开显示临时文件swap,选择r进行修复,并在tmp下删除,否则每次都提示
    6.vim设置
    alias vi vim
    alias lm='ls -l '
    set nu 在命令行模式下 :set nu 显示行号 set nonu 去掉行号
    vim的环境设置变量:建立一个 vi ~/.vimrc 直接编辑即可起效

    二. bash shell
    shell:开发者不同,版本很多,不止一个
    cd /etc/shells 可以看到linux有几个shell
    root的shell放在 /bin/bash中 ,linux默认的shell

    1.如何看命令是外部命令还是bash内置的命令?
    type -t 命令:结果为以下三种:
    (1)file:外部命令
    (2)alias:命令别名所设置的命令
    (3)builtin:bash内置的命令
    命令太长了用 转义
    2.如何查看环境变量的内容或者修改
    查看:echo $ PATH
    设置:name=内容
    累加:PATH=$PATH:/etc/huhu
    环境变量作用:家目录的修改,提示符的显示,执行文件搜索的路径
    查看有多少环境变量(系统的默认值):env
    查看有多少环境变量(系统的默认值+自定义的):set
    查看shell的进程号:echo $$
    查看shell变量:[yuanyuan@localhost Desktop]$ echo $SHELL 结果:/bin/bash
    查看返回状态:echo $?
    export 变量:父程序的变量可以被子程序引用的
    常用的情况:两个shell脚本,a.sh引用b.sh中的变量,则b中的变量只有export后才能被引用。否则无法找到,使用完后,变量无作用。
    (1)启动一个shell,os分配一块内存给shell,shell区域内的变量可以给子程序访问
    (2)利用export,将变量内容写到内存块中
    (3)加载另一个shell时(启动子程序,离开原来的父程序),子shell将父shell的环境变量的内存导入到自己的变量中

    3.数据流重定向(stdin,stdout.stderr)注意:输出的信息都是在文件中而不是目录中

    1.stdin(标准输入):代码为0,是<<或<
    2.stdout(标准输出):代码是1,是>>
    3.stderr(标准错误):代码是2,是2>或2>>
    例:(1)ls -al yy >d.txt (将yy文件夹下的文件信息都列到d.txt中,若有新的加入,则覆盖原来的)
    (2)find . -name yy >don 2>yy 查的正确的文件列表信息显示在don中,错误信息输入到yy中
    (3)输出的正确和错误信息保存在同一个文件中: 用 >aa 2>&1
    find . -name yy >don 2>&1
    (4)<常和cat一起用:用键盘输入的内容由文件代替 cat > we 接下来输入内容,ctrl+d后即可将内容保存到we文件中
    cat < a >b 将 a的内容输出到b
    cat >aa <<eof cat内容到eof停止输入,输出到aa中
    4.命令执行判断:
    (1); 按顺序执行
    (2)&& 前一个条件满足则执行
    (3)|| 前一个条件不满足则执行
    ls wyy && echo "yes" || echo "no" 若存在wyy,则输出yes,否则输出 no

    5.管道命令(pipe)

    管道命令只处理 前一个命令传来的正确信息,常用来进行选取命令和排序命令
    (1) 选取命令 (cut和grep) 前面一般为显示很多内容
    cut -d '分隔符’ -f 数字 或者 cut -c 12- 显示几个字符之后的内容
    例:echo $PATH | cut -d ':' -f 3 ,5 显示第三到第五个路径
    export | cut -c 12- 显示几个字符之后的内容
    last 显示这个月登陆者的信息
    grep 用于如果有该信息,就整行显示
    last | grep 'root' | cut -d ' ' -f 1
    (2)排序命令(sort,uniq,wc)

    cat /etc/passwd |sort

    如果使重复的数据显示一次,用 sort | uniq
    wc :显示行数,字数,字符数
    -l :显示行数 -w :显示字数 -m:显示字符数
    如:cat aa |wc
    (3)字符转换命令
    tr -d 'a' :删除a /也可以进行大小写替换
    join -t ':' file1 file2 将两个文件都各整行成同一行,用;隔开
    paste -d file 1 file2 :粘在一起
    split -b 文件大小 / -l 行数
    (4)xargs参数代换
        该命令的主要功能是从输入中构建和执行shell命令。       
        在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。  
        find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。  

    具体实例可见:
    http://www.cnblogs.com/peida/archive/2012/11/15/2770888.html

  • 相关阅读:
    BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP
    BZOJ_1916_[Usaco2010 Open]冲浪_分层图+拓扑排序+DP
    BZOJ_1915_[Usaco2010 Open]奶牛的跳格子游戏_DP+单调队列
    读入/输出优化模板
    BZOJ_4327_JSOI2012 玄武密码_AC自动机
    计算机网络学习笔记:第六章.应用层
    计算机网络学习笔记:第五章.传输层
    计算机网络学习笔记:第四章.网络层
    计算机网络学习笔记:第三章.数据链路层
    计算机网络学习笔记:第二章.物理层
  • 原文地址:https://www.cnblogs.com/alwayswyy/p/5163962.html
Copyright © 2020-2023  润新知