command-line 学习:操作文件

使用的电脑为 mac 。

参考:Learn Enough Command Line to Be Dangerous

  1. >>> 就算没有编辑器,也是可以把输出的一行字,新创建到一个文件中。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $ echo "From fairest creatures we desire increase," > sonnet_1.txt`
    # 这句命令就可以创建一个新的文件 sonnet_1.txt 并把 echo 后面的那句话放到这个文件中。
    $ cat sonnet_1.txt
    # 查看 sonnet_1.txt,会把 sonnet_1.txt 中的内容输出。(cat 是 concatenate 的缩写)
    $ echo "That thereby beauty's Rose might never die," >> sonnet_1.txt
    # 使用 >> 可以把一句话追加到文件中。
    $ diff sonnet_1.txt sonnet_1_lower_case.txt
    < That thereby beauty's Rose might never die,
    ---
    > That thereby beauty's rose might never die,
    # 快速比较两个文件的不同。
  2. ls

    列出当前目录所有的文件和文件夹。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ ls foo # 列出这个 foo 下所有的文件和文件夹。
    $ touch foo # 可以创建一个空的文件,名字是 foo.
    $ cd + 文件名 # 切换到这个文件下面。
    $ ls *.txt # 可以列出所有的以 .txt 结尾的文件
    $ ls -l *.txt # 可以列出所有以 .txt 结尾的文件,以及更改文件的时间等。时间前面的是这个文件的大小(字节)。
    $ ls -rtl # 可以按照修改时间排序,最近的在最后面。这个也可以拆开写 ls -r -t -l
    $ echo "*.txt" > .gitignore
    $ cat .gitignore
    *.txt
    $ ls # 不会列出隐藏的文件 .gitignore 。
    $ ls -a # 可以列出所有的文件包括隐藏的文件 .gitignore 。
  3. mv

    1
    2
    3
    4
    $ echo "test text" > test
    $ mv test test_file.txt
    $ ls
    test_file.txt

    重命名 text 文件变成 test_file.txt。

  4. cp copy 复制文件

    1
    2
    3
    4
    $ cp test_file.txt second_test.txt
    $ ls
    second_test.txt
    test_file.txt
  5. rm remove 删除文件

    1
    2
    3
    4
    $ rm second_test.txt
    remove second_test.txt? y
    $ ls second_test.txt
    ls: second_test.txt: No such file or directory
  6. Tab completion Tab 键自动补全

    1
    2
    3
    $ rm tes⇥ # 输入一半的时候可以按住 tab 键,便会自动补全后面的文件名。
    $ rm -f *.txt # 删除所有以 *.txt 结尾的文件。f 为 force 的缩写。

总结

翻译好累 😫,结合上面看吧。

Command Description Example
> Redirect output to filename $ echo foo > foo.txt
>> Append output to filename $ echo bar >> foo.txt
cat Print contents of file to screen $ cat hello.txt
diff Diff files 1 & 2 $ diff foo.txt bar.txt
ls List directory or file $ ls hello.txt
ls -l List long form $ ls -l hello.txt
ls -rtl Long by reverse modification time $ ls -rtl
ls -a List all (including hidden) $ ls -a
touch Create an empty file $ touch foo
mv Rename (move) from old to new $ mv foo bar
cp Copy old to new $ cp foo bar
rm Remove (delete) file $ rm foo
rm -f Force-remove file $ rm -f bar