the linux command line
Table of Contents

    p3

    终端仿真器(terminal emulater)与 shell 进行交互,让用户访问 shell.

    p11

    Linux 没有文件扩展名的概念,类 Unix 不使用文件扩展名来决定文件内容或用途,但 有些应用程序却这么做了.

    文件名中不要嵌入空格,这回事很多命令行任务变得困难,使用下划线吧.

    p15

    ls [-a, -d, -F, -h, -l, -r, -S, -t]
    

    p17

    less 命令:

    PgUp / b          后翻一页
    PgDn / Spacebar   前翻
    向上/下箭头       向上/下一行
    G / g             文本末尾/开头
    /chr              查找
    

    p19

    p24

    通配符:

    字符类:

    p26

    cp [-a, -i, -r, -u, -v]
    

    p27

    mv [-i, -u, -v]
    

    p28

    rm [-i, -r, -f, -v]
    

    p29

    ln [-s] item link
    


    p47

    p50


    p60

    echo

    路径名扩展,破浪线扩展,算术扩展(echo $((2+2))), 花括号扩展,参数扩展

    双引号,单引号,转义


    p70

    光标移动

    组合键 作用
    ctrl-a 光标移动到行首
    ctrl-e 光标移动到行尾
    ctrl-f 同右方向键
    ctrl-b 同坐方向键
    alt-f 向前一个字
    alt-a
    ctrl-l 等于 clear

    修改文本

    组合键 作用
    ctrl-d 删除光标处的字符
    ctrl-t 光标处的字符和它前面的字符对调
    alt-t 光标处的字和它前面的字对调
    alt-l 光标到字尾的字符转成小写
    alt-u 光标到字尾的字符转成大写

    p71

    剪切和粘贴文本

    组合键 作用
    ctrl-k 剪切从光标到行尾的文本
    ctrl-u 剪切从光标到行首的文本
    alt-k 剪切从光标到当前词尾的文本
    alt-backspace 剪切从光标到词头的文本
    ctrl-y 把 kill-ring 缓冲区的文本粘贴到光标的位置

    p75

    历史记录扩展命令

    序列 行为
    !! 重复最后一个执行的命令
    !number 重复第 number 个命令
    !string 重复最近的以 string 开头的命令
    !?string 重复最近的包含 string 的命令

    id, chomd, umask, su, sudo, chown, chgrp, passwd

    p80

    权限对文件和目录的意义

    p83

    u, g, o, a

    p85

    umask-设置默认权限; 减; 设置的掩码值只在当前 shell 会话中有用

    p86

    set uid; set gid; sticky bit

    p88


    p95

    ps; top; jobs; bg; fg; kill; killall; shutdown.

    top

    kill 常用信号

    killall 发送信号给多个进程

    pstree 树形模式输出进程列表


    p109

    printenv; set; export; alias

    set 会显示 shell 变量和环境变量; printenv 只会显示环境变量

    login shell 会话: 会提示用户输入用户名和密码

    启动文件

    non-login shell 启动文件


    p128

    J 合并行

    /CHAR 搜索

    :%s/old/new/gc

    p131


    debian系软件包: 低级工具 dpkg; 高级工具 apt-get aptitude

    查找

    apt-get udpate; apt-cache search NAME
    

    安装

    apt-get udpate; apt-get install NAME
    dpkg --install NAME.deb
    

    删除

    apt-get remove NAME
    

    更新

    apt-get udpate; apt-get upgrade
    dpkg --install NAME.deb
    

    列出

    dpkg --list
    

    是否安装

    dpkg --status NAME
    

    已安装软件相关信息

    apt-cache show NAME
    

    某具体文件由哪个软件包安装得到

    dpkg --search FILENAME
    



    locate search_string 依赖搜索数据库,使用 sudo updatedb 更新

    find test action options

    操作符:使用括号来分隔显得更清楚,注意转义

    用户自定义的操作: -exec command '{}' ';' {}表示当前路径,分号表示命令结束 使用 ok 代替 exec 使得每次执行前询问

    处理文件名中有空格: find ~ -iname '*.jpg' -print0 | xargs --null ls -l


    gzip; bzip2; tar

    tar -jcv -f filename.tar.bz2 /path/or/file tar -jxv -f filename.tar.bz2 -C /path/to/extract z for gzip, j for bzip2(高质量压缩,牺牲点速度)

    tar 利用标准输入输出的有趣用法

    $ find playground -name 'file-A' | tar cf - --file-from=- | gzip
    and
    $ ssh remote-sys 'tar cf - Documents | tar xf -'
    

    rsync -a|-v|--delete


    cat; sort; uniq; cut; paste; join; comm; diff; patch; tr; sed

    sort -f --ignore-case
         -n --numeric-sort
         -r --reverse
         -k --key=filed1[,field2]
         -t --field-seprator=char
    
    diff -c output NUM (default 3) lines of copied context
         -u output NUM (default 3) lines of unified context
    
    # GNU 文件系统建议采用以下方式使用 diff
    diff -Naur old new > diff_file
    patch < diff_file
    
    sort
    $ echo 'front' | sed '2s/front/back'
    N            行号
    $            最后一行
    addr1,addr2
    first~step
    addr1, +n
    addr!
    
    =                      输出当前行号
    a                      在当前行后附加文本
    d                      删除当前行
    i                      在当前行前输入文本
    p                      打印当前行
    s/regexp/replacement/
    y/set1/set2            转换,要求等长