zoukankan      html  css  js  c++  java
  • Linux——命令行展开,命令别名(alias),快捷键,I/O重定向,管道,文本处理工具(wc, cut, sort, uniq)

    1、命令行展开

    ~: 展开为用户的主目录

    ~USERNAME:展开为指定用户的主目录

    {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

    • /tmp/{a,b} = /tmp/a, /tmp/b
    • /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
    1 练习:
    2 (1) 如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a, /tmp/x/y2/b
    3     mkdir /tmp/x/{y1,y2}/{a,b}        
    4 
    5 (2) 如何创建x_m, y_m, x_n, y_n
    6     mkdir {x,y}_{m,n}
    7 
    8 (3) 如何创建/tmp/bin, /tmp/sbin, /tmp/usr, /tmp/usr/bin, /tmp/usr/sbin
    9     mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}
    View Code

    2、命令别名(alias)

    通过alias命令实现:

    (1) alias

    显示当前shell进程所有可用的命令别名;

    (2) alias NAME='VALUE'

    定义别名NAME,其相当于执行命令VALUE;

    注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;

    • 仅对当前用户:~/.bashrc
    • 对所有用户有效:/etc/bashrc

    小Tips:

    编辑配置给出的新配置不会立即生效,需要让bash进程重新读取配置文件:source /path/to/config_file 或 . /path/to/config_file

    撤消别名:unalias

    unalias [-a] name [name ...]

    Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"COMMAND";

    3、bash的快捷键

    Ctrl+a:跳转至命令开始处;

    Ctrl+e:跳转至命令结尾处;

    Ctrl+c:取消命令的执行;

    Ctrl+u: 删除命令行首至光村所在处的所有内容;

    Ctrl+k: 删除光标所在处至命令行尾部的所有内容;

    4、bash的I/O重定向

    程序:指令+数据

    读入数据:Input

    输出数据:Output

    打开的文件都有一个fd: file descriptor (文件描述符)

    标准输入:keyborad(键盘), 0

    标准输出:monitor(显示器), 1

    标准错误输出:monitor, 2

    I/O重定向:改变标准位置

    1)输出重定向

    COMMAND > NEW_POS, COMMAND >> NEW_POS

    >:覆盖重定向,目标文件中的原有内容会被清除;

    >>: 追加重定向,新内容会追加至目标文件尾部;

    # set -C: 禁止将内容覆盖输出至已有文件中;

    • 强制覆盖:>|

    # set +C:取消进制

    2>: 覆盖重定向错误输出数据流

    2>>: 追加重定向错误输出数据流

    标准输出和错误输出各自定向至不同位置

    COMMAND > /path/to/file.out 2> /path/to/error.out

    合并标准输出和错误输出为同一个数据流进行重定向:

    &>:覆盖重定向

    &>>:追加重定向

    COMMAND > /path/to/file.out 2> &1

    COMMAND >> /path/to/file.out 2>> &1

    2)输入重定向:<

    tr命令:转换或删除字符

    命令格式:tr [OPTION]... SET1 [SET2]

    HERE Documentation:<<

    # cat << EOF

    # cat > /path/to/somefile << EOF

    5、管道

    管道:一个命令的输出可以通过管道做为另一个命令的输入。

    管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。

    例:ls -alh | more  # 将当前路径下的文件的详细信息按照分页的方式打印在屏幕上

    1 练习:
    2 1、将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;
    3     # head -n 5 /etc/passwd | tr "a-z" "A-Z" > passwd.out
    4 2、将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中;
    5     # who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
    View Code

    6、文本处理工具:

    wc命令:

    命令格式:wc [OPTION]... [FILE]...

    • -l: lines
    • -w: words
    • -c: characters

    cut命令:

    命令格式:cut [OPTION]... [FILE]...

    • -d DELIMITER: 指明分隔符
    • -f FILEDS:
      • #: 第#个字段
      • #,#[,#]:离散的多个字段,例如1,3,6
      • #-#:连续的多个字段, 例如1-6
      • 混合使用:1-3,7
    • --output-delimiter=STRING

    sort命令:

    命令格式:sort [OPTION]... [FILE]...

    • -f: 忽略字符大小写
    • -r: 逆序
    • -t DELIMITER: 字段分隔符
    • -k #:以指定字段为标准排序
    • -n: 以数值大小进行排序
    • -u: uniq,排序后去重

    uniq命令:

    命令格式:uniq [OPTION]... [FILE]...

    • -c: 显示每行重复出现的次数;
    • -d: 仅显示重复过的行;
    • -u: 仅显示不曾重复的行;
    • Note: 连续且完全相同方为重复
  • 相关阅读:
    [Android]SharedPreferences
    [Android]XML界面布局常用属性概括
    [Android]XML解析技术
    [Android]Layout标签之-viewStub,requestFocus,merge,include
    [Android]JSON
    [Android]SQLite基本控制台命令简介
    [Android]流文件
    [HTML5]WebSQLDatabase-关系型数据库简介
    [Android]ADB和NavicatLiteSQLDBmanager的数据管理
    [Android]SqliteOpenHelper抽象类实现SQL_DB的管理
  • 原文地址:https://www.cnblogs.com/x54256/p/8143906.html
Copyright © 2011-2022 走看看