命令行采坑记

作者: 塘朗山小钻风 | 来源:发表于2019-09-25 16:34 被阅读0次

    1. 文件展开

    find . -name *.txt

    报错:unknown primary or operator

    这是因为命令行执行前先要执行波浪号~展开,变量替换,文件替换。这个 *.txt就会文件替换。

    ls *.txt
    crontab.txt log.txt out.txt svnlog.txt

    使用双引号能避免文件替换。这样写就好了:find . -name "*.txt"

    2. 一行中的空格

    cat test.txt
    a b
    cd

    如下这样用for会让空格分隔的变成两个各自处理

    for a in `cat test.txt`
    do
    echo $a
    done
    a
    b
    cd

    因为等价于 for a in a b

    这样写就可以避免:

    cat test.txt | while read space_name; do echo $space_name; done

    这只是缩写成单行模式了。有些文件名含有空格就很痛苦。

    3. 换行符的定义

    Dos 和 windows 采用 "回车+换行",即 "CR + LF" 表示下一行,即敲一下回车键,相当于同时执行了 "回车+换行",即 ^M$($ 不是换行符的表示,换行符没有表示出来,$ 是文本结束 EOF 的表示)。
    而 UNIX/Linux 采用 "换行符",即 "LF" 表示下一行,即 "\n";
    苹果机(MAC OS系统)则采用 "回车符",即 "CR" 表示下一行,即 "\r";

    Carriage Return(\r ascii:13)+Line Feed(\n ascii:10)

    有时在Windows中编辑的文档是是按CRLF保存的,给Linux系统使用的时候在解析处理时\n当成换行符。\r是有效字符

    src=$1

    这样处理后src尾巴带了个\r

    只需要notepad++编辑时右下角指定用对应换行符就可。

    相关文章

      网友评论

        本文标题:命令行采坑记

        本文链接:https://www.haomeiwen.com/subject/nkqwuctx.html