文件系统中的目录与切换操作命令

502次阅读  |  发布于2年以前

1 . cd

cd,change directory,切换当前工作目录。

除指定目录外,还有以下特殊目录。

另外,cd - 为进入上一次的工作目录,如同 git checout - 切回上次的分支一样。

$ cd ~
$ cd -
$ cd $HOME

cd 外,有一个拥有强大功能切换目录的小工具 autojump1。

# 切换至含有 foo 子字符串的某个目录
$ j foo

Q: 你知道 autojump 原理吗,你可以写出来一个 autojump 命令行小工具吗?

2 . pwd

pwd,print working directory,打印当前工作目录。

# 打印当前路径,该目录为 react 源码内容
$ pwd
/Users/shanyue/Documents/react

3 . ls

ls,列出某个工作目录的内容。

ls 单指令不会列出以 . 开头的文件,比如 .git.babelrc.eslintrc 均不会默认显示。「而使用 -a,将会把所有文件列出。」

在日常工作中,常使用 ls -lah 列出工作目录内容。

# -l: 使用长列表格式
# -a: 列出所有文件,包括以 . 开头的文件
# -h: 以可读的形式表示文件体积,比如 100M
$ ls -lah
total 2176
drwxr-xr-x    36 shanyue  shanyue   1.1K  6 10 15:45 .
drwx------@  242 shanyue  shanyue   7.6K  5 29 09:37 ..
drwxr-xr-x     3 shanyue  shanyue    96B  6 10 15:45 .circleci
drwxr-xr-x     3 shanyue  shanyue    96B  6 10 15:45 .codesandbox
-rw-r--r--     1 shanyue  shanyue   294B  5 22  2021 .editorconfig
-rw-r--r--     1 shanyue  shanyue   759B  6 10 15:45 .eslintignore
-rw-r--r--     1 shanyue  shanyue   8.4K  6 10 15:45 .eslintrc.js
drwxr-xr-x    14 shanyue  shanyue   448B  6 10 15:45 .git
-rw-r--r--     1 shanyue  shanyue    12B  5 22  2021 .gitattributes
drwxr-xr-x     6 shanyue  shanyue   192B  9  8  2021 .github
-rw-r--r--     1 shanyue  shanyue   881B  6 10 15:45 .gitignore
-rw-r--r--     1 shanyue  shanyue   7.6K  5 22  2021 .mailmap
-rw-r--r--     1 shanyue  shanyue     9B  6 10 15:45 .nvmrc
-rw-r--r--     1 shanyue  shanyue   546B  6 10 15:45 .prettierignore
-rw-r--r--     1 shanyue  shanyue   363B  5 22  2021 .prettierrc.js
-rw-r--r--     1 shanyue  shanyue     3B  5 22  2021 .watchmanconfig
-rw-r--r--     1 shanyue  shanyue    42K  5 22  2021 AUTHORS
-rw-r--r--     1 shanyue  shanyue   198K  6 10 15:45 CHANGELOG.md
-rw-r--r--     1 shanyue  shanyue   3.5K  5 22  2021 CODE_OF_CONDUCT.md
-rw-r--r--     1 shanyue  shanyue   216B  5 22  2021 CONTRIBUTING.md
-rw-r--r--     1 shanyue  shanyue   1.1K  5 22  2021 LICENSE
-rw-r--r--     1 shanyue  shanyue   5.1K  6 10 15:45 README.md
-rw-r--r--     1 shanyue  shanyue   1.5K  6 10 15:45 ReactVersions.js
-rw-r--r--     1 shanyue  shanyue   400B  5 22  2021 SECURITY.md
-rw-r--r--     1 shanyue  shanyue   671B  9  2  2021 appveyor.yml
-rw-r--r--     1 shanyue  shanyue   1.0K  5 22  2021 babel.config.js
drwxr-xr-x     6 shanyue  shanyue   192B  9  4  2021 build
drwxr-xr-x     2 shanyue  shanyue    64B  9  4  2021 build2
-rw-r--r--     1 shanyue  shanyue   7.5K  6 10 15:45 dangerfile.js
drwxr-xr-x    23 shanyue  shanyue   736B  6 10 15:45 fixtures
-rw-r--r--     1 shanyue  shanyue   220B  5 22  2021 netlify.toml
drwxr-xr-x  1426 shanyue  shanyue    45K  9  2  2021 node_modules
-rw-r--r--     1 shanyue  shanyue   7.2K  6 10 15:45 package.json
drwxr-xr-x    39 shanyue  shanyue   1.2K  6 10 15:45 packages
drwxr-xr-x    22 shanyue  shanyue   704B  9  2  2021 scripts
-rw-r--r--     1 shanyue  shanyue   733K  6 10 15:45 yarn.lock

那在 ls 每一行都代表什么信息?在下一节内容讲述。

Q: 如何配置颜色区分目录和文件呢,见下截图。

4 . exa

一个 ls 的替代品,拥有更友好的色彩更丰富的输出,同时支持更丰富的选项。

# 支持查看 git 情况
$ exa -lah --git

5 . tree

tree,以树状图的形式列出文件。

该命令需要手动下载。

# macos
$ brew install tree

# centos
$ yum install tree

可通过 -L 指定层级,平常工作可使用以下指令。

# -a: 列出所有文件
# -F: 对目录末尾添加 /,对可执行文件末尾添加 *
# -L: 指定层级
$ tree packages/react-dom -aF -L 2
packages/react-dom
|-- README.md
|-- client.js
|-- index.classic.fb.js
|-- index.experimental.js
|-- index.js
|-- index.modern.fb.js
|-- index.stable.js
|-- npm/
|   |-- client.js
|   |-- index.js
|   |-- profiling.js
|   |-- server.browser.js
|   |-- server.js
|   |-- server.node.js
|   |-- test-utils.js
|   `-- unstable_testing.js
|-- package.json
|-- server.browser.js
|-- server.js
|-- server.node.js
|-- src/
|   |-- __tests__/
|   |-- client/
|   |-- events/
|   |-- server/
|   |-- shared/
|   `-- test-utils/
|-- test-utils.js
|-- unstable_testing.classic.fb.js
|-- unstable_testing.experimental.js
|-- unstable_testing.js
|-- unstable_testing.modern.fb.js
`-- unstable_testing.stable.js

8 directories, 25 files

同时,也可以使用更高级的 exa -T 打印树状文件。


# -T: --tree,以树状图的形式列出文件
# -L: --level,指定层级
$ exa -lah -T -L 2 packages/react-dom

6 . 作业

  1. 熟悉 cd、pwd、ls、exa、tree 等命令
  2. ls 单指令列出文件列表时为何不显示 .git 目录,应如何显示
  3. 在 Node.js 或其它语言中如何获得 pwd
  4. 在 Node.js 或其它语言中如何获得 ls 子文件列表。参考 fsp.readdir2 及 readdir3

7 . 第一期 Linux 技能训练营

首期99元,包括 4核16G 服务器一个多月的使用权。训练营为期一个月,七月上旬开始,完成打卡返现49。

  1. 文字专栏免费,视频专栏付费
  2. 对于每一章节留有若干思考题,将会对若干思考题进行视频直播讲解,每四天一次
  3. 每周双向问答直播 (最终人数多于 100人)
  4. 以任务与打卡的形式完成训练营,「完成训练营返现 49 元」
  5. 在训练营结束前,可免费使用山月的4核16G的服务器进行练习 (禁止非学习用途)

你将学会:

  1. 熟悉常见 linux 命令,可独立维护个人服务器
  2. 可使用 linux 命令进行常见文件操作及数据处理
  3. 熟悉使用 vim,并可快速编辑服务器中的各个文件
  4. 免密码登录服务器,快捷方便
  5. 熟悉使用 linux 分屏,并保存各个窗口工作场景,下次登录可复用,无需再进入某个目录进行某种操作

参考资料

[1]autojump:https://github.com/wting/autojump/blob/master/bin/autojump.bash

[2]fsp.readdir:https://nodejs.org/api/fs.html#fspromisesreaddirpath-options

[3]readdir:https://man7.org/linux/man-pages/man3/readdir.3.html

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8