掌握命令行操作:文件系统导航

在日常工作中,无论是开发项目还是执行运维任务,经常需要在命令行界面中操作。尽管可能已经习惯了使用各种命令行程序,但有时仍然会切换到更直观的图形界面来处理文件和目录。本文将介绍如何在命令行中直接执行文件和文件夹操作,以提高工作效率

第一部分:命令行导航

首先,需要熟悉如何在命令行中定位当前工作目录。最常用的命令是pwd(print working directory),它会显示当前的绝对路径。此外,还可以使用环境变量$PWD来获取当前路径:

$ pwd /Users/dave/repos/github/dwmkerr/effective-shell $ echo $PWD /Users/dave/repos/github/dwmkerr/effective-shell

在某些shell或命令行设置中,当前工作目录可能会直接显示在命令行提示符中。

第二部分:切换目录

接下来,学习如何切换目录。cd(change directory)命令是最熟悉的命令之一,它用于改变当前目录:

$ pwd /Users/dave/repos/github/dwmkerr/effective-shell $ cd $ pwd /users/dave $ cd - ~/repos/github/dwmkerr/effective-shell $ pwd /Users/dave/repos/github/dwmkerr/effective-shell $ cd ~ $ pwd /users/dave

这里看到,不带参数执行cd命令会将带到用户的home目录,这个目录总是可以通过环境变量$HOME访问。执行cd -会切换回上一个目录,这在需要快速跳转到某个位置然后返回时非常有用。

可以使用~作为家目录的别名,快速移动到个人文件夹,例如:cd ~/Downloads

第三部分:目录探索

当进入一个目录后,经常需要查看目录内容。这时,ls(list directory contents)命令就派上用场了:

$ pwd /Users/dave/repos/github/dwmkerr/effective-shell $ ls 1-navigating-the-command-line LICENSE 2-clipboard-gymnastics README.md 3-getting-help sed.1 4-moving-around

默认情况下,ls命令会列出文件和目录。可以使用-l(long format)标志来显示更多信息:

$ ls -l total 48 drwxr-xr-x 6 dave staff 192 Mar 5 16:01 1-navigating-the-command-line drwxr-xr-x 5 dave staff 160 Oct 10 2017 2-clipboard-gymnastics drwxr-xr-x 4 dave staff 128 Dec 19 2017 3-getting-help drwxr-xr-x 3 dave staff 96 Mar 7 15:39 4-moving-around -rw-r--r-- 1 dave staff 1066 Jun 10 2017 LICENSE -rw-r--r-- 1 dave staff 561 Mar 7 15:30 README.md -rw-r--r-- 1 dave staff 15707 Mar 5 16:01 sed.1

现在可以看到权限、链接计数(这个在不同平台上可能不太有用)、所有者、组、大小和修改日期(以及名称)。

可以使用更多的标志,如-h(human readable)和-S(sort by size),使大小更易于阅读,并按大小排序:

$ ls -lhS total 48 -rw-r--r-- 1 dave staff 15K Mar 5 16:01 sed.1 -rw-r--r-- 1 dave staff 1.0K Jun 10 2017 LICENSE -rw-r--r-- 1 dave staff 561B Mar 7 15:30 README.md drwxr-xr-x 6 dave staff 192B Mar 5 16:01 1-navigating-the-command-line drwxr-xr-x 5 dave staff 160B Oct 10 2017 2-clipboard-gymnastics drwxr-xr-x 4 dave staff 128B Dec 19 2017 3-getting-help drwxr-xr-x 3 dave staff 96B Mar 7 15:39 4-moving-around

ls命令有很多选项。在“获取帮助”章节中,将学习如何获取更多关于命令的信息。

第四部分:目录栈管理

有时,可能需要移动到多个目录,然后返回到起始位置。这在编写脚本时特别有用。可以使用pushd(push onto directory stack)和popd(pop from directory stack)命令将目录添加到或从堆栈中移除:

$ pwd /Users/dave/repos/github/dwmkerr/effective-shell # 现在正在写文章,但想检查一下下载文件夹,然后马上回来... # 移动到下载文件夹... $ cd ~/Downloads $ ls aws-nuke-v2.8.0-darwin-amd64 # 好的,下载的工具已经到了,让使用它... cd aws-nuke-v2.8.0-darwin-amd64 ./aws-nuke # 现在想回到文章... $ popd '~/Downloads' '~/repos/github/dwmkerr/effective-shell' '~/Downloads' $ popd '~/repos/github/dwmkerr/effective-shell'

在这种情况下,使用cd -是不够的——它只会将从aws-nuke文件夹切换到Downloads,然后再切换回来。但是通过使用目录栈,可以保存当前位置,移动,然后“pop”回起始位置。

第五部分:自动补全

在使用像cd这样的命令时,按下tab键通常会显示一个自动补全菜单:

$ cd ~/repos/ # 现在按 'tab'... github/ gitlab/ local/ scratch/

再次按下tab键将循环浏览选项,shift-tab将反向循环。按回车键将选择一个选项,按Esc(或Ctrl-C)将取消。

一些shell,如zsh,支持更高级的自动补全。例如,可以自动补全部分指定的目录名:

% cd ~/r/g/d/e # 现在按 tab... % cd ~/repos/github/dwmkerr/effective- effective-container-engineering/ effective-shell/
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485