基本单词
英文 | 翻译
----------|----------------|
directory | 目录、文件夹
file | 文件
make | 新建
remove | 删除
move | 移动
copy | 复制
list | 罗列
link | 链接
find | 查找
echo | 发出回音、重复
touch | 触摸
基本概念
- 没有盘符,整个硬盘就是
/
,叫做根目录 - 文件、目录、路径、节点
- 文件
- 目录,就是文件夹
- 当前目录,用
.
表示 - 父目录,用
..
表示
- 当前目录,用
- 节点 = 文件 或者 目录
- 路径
- 绝对路径,以
/
开头,能唯一确定一个节点- 如
/tmp/a/1.txt
- 如
- 相对路径,不以
/
开头,是一个相对值- 如
a/
,./a/
- 如
b.txt
,./b.txt
- 如
a/b.txt
,./a/b.txt
- 如
../c/d.txt
- 如
- 绝对路径,以
- 大部分事情,图形界面(Graphical Interfaces,GUI)能做,命令行也能做,只是方式不同
| 输入 | 输出
--------|--------|----------|
图形界面 | 鼠标点击 | 弹出对话框
命令行 | 输入文字 | 输出文字
// 比如浏览网页
crul -l http://www.baidu.com
文件相关操作
~
表示用户目录。假设你的用户名是 administrator,那么
- 在 Windows 系统,
~
表示/Users/administrator/
目录(一般在C盘) - 在 Linux 系统,
~
表示/home/administrator
目录 -
.
表示目前所在的目录 -
..
表示目前目录位置的上一层目录
命令 | 说明 |
---|---|
cd 路径 | 切换工作目录 |
pwd | 显示当前的完整路径 |
mkdir 目录名 | 创建目录 |
mkdir -p 目录路径 | 创建目录 |
- | - |
ls 路径 | 查看当前目录下的文件(不包括隐藏文件) |
ls -a 路径 | 查看当前目录下的所有文件(包括隐藏文件) |
ls -l 路径 | 查看当前目录下的文件(不包括隐藏文件)的详细信息 |
ls -al 路径 | 查看当前目录下的所有文件(包括隐藏文件)的详细信息 |
- | - |
open 路径 | 打开文件 |
- | - |
echo '1' > 文件路径 | 创建文件(重定向) |
echo '1' >! 文件路径 | 强制创建文件 |
echo '1' >> 文件路径 | 创建文件,追加内容 |
touch 文件名 | 创建文件,如果文件不存在,就创建这个文件,如果文件存在,就把更新时间改为当前时间 |
- | - |
cp 源路径 目标路径 | 复制文件 |
cp -r 源路径 目标路径 | 以递归(recursion)的形式复制目录 |
- | - |
mv 源路径 目标路径 | 移动节点(重命名文件) |
- | - |
rm 文件路径 | 删除文件 |
rm -f 文件路径 | 强制删除文件(force) |
rm -r 目录路径 | 删除目录(recursion) |
rm -rf 目录路径 | 强制递归的形式删除目录 |
- | - |
tree | 查看目录结构(mac终端下测试未支持) |
ln -s 真实文件 链接 | 建立软链接 |
- 举例
ls
在桌面上 cal 文件夹下,包含:app.js文件、app.json文件、 pages文件夹
在终端切换到这个文件夹下输入 ls,输出
app.js app.json pages
输入 ls -a,输出
. .. app.js app.json pages
输出 ls -al,输出
total 0
drwxr-xr-x 5 xxx staff 170 7 5 11:45 .
drwx------+ 12 xxx staff 408 7 5 11:45 ..
-rw-r--r-- 1 xxx staff 0 7 5 11:45 app.js
-rw-r--r-- 1 xxx staff 0 7 5 11:45 app.json
drwxr-xr-x 2 xxx staff 68 7 5 11:45 pages
以app.js为例,其中
-rw-r--r-- 代表 文件类型与权限
1 代表链接占用的节点(i-node)
xxx 代表文件所有者
staff 代表文件的所有者的用户组
0 代表文件大小
7 5 11:45 代表文件的创建时间/最近修改时间
app.js 代表文件名称
open
open . 打开当前文件
cd
假设我们要切换到桌面,那么可以这样输入 cd Desktop ,就可以切换到桌面
假设我要切换到桌面的上一级,那么可以这么输入 cd ../ ,就可以切换到上一级
假设我要切换到根路径,那么在终端输入 cd / 就可以了
touch
比如我要创建 x.html,那么我在终端可以输入 touch x.html
rm
比如我刚才创建 x.html,我现在要把 x.html删掉,那么我在终端可以输入 rm x.html ,就可以删掉了
比如我要删除 x 文件夹,在终端上输入 rm -rf x,这样就可以删除了
mv
比如我现在要将 1.html改为 2.html,那么在终端上可以输入 mv 1.html 2.html
echo
在桌面路径下,输入 echo 'like'>1.txt,会发现创建了 1.txt文件,且写入了内容 like
输入 echo 'hello'>1.txt,会发现 1.txt文件里的内容 like 被替换成了 hello
如果要追加内容,输入 echo 'world' >> 2.txt
cp,如果要复制文件夹中的内容,使用 *
cp a/* b 只复制文件
cp -r a/* b 既复制文件,也复制目录
桌面创建两个文件夹a、b,a中包含:1.txt文件、b.mp3文件、xxx文件夹(其中又包含 j.json 文件)
在终端中,在桌面路径下,输入 cp a/* b,输出
cp: a/xxx is a directory (not copied).
输入 ls ./b,输出
1.txt b.mp3
可以看到,a/xxx 文件夹及其内容并没有被复制过去。输入 cp -r a/* b && ls ./b,输出
1.txt b.mp3 xxx
ln -s 真实文件 链接
桌面上创建 1.txt、2.mp3两个文件,输入 ln -s 1.txt 2.mp3(如果事先未创建 2.mp3 文件,这里也会自动创建)。输出
ln: 2.mp3: File exists
强制执行,输入 ln -sf 1.txt 2.mp3 && open 2.mp3,可以看到打开的是 1.txt
关闭打开的 1.txt,终端继续输入 rm 1.txt && open 2.mp3,输出
rm: 1.txt: No such file or directory
因为 1.txt被我们删除后,2.mp3找不到它的原始项目了
技巧
操作 | 命令
-------------------------|-------------------------------|
回到刚才的目录(返回) | cd -
使用上一次的命令 | 键盘上的 上 方向键
使用上一次的命令 | !!
使用上一次的最后一个参数 | <kbd>alt</kbd> + <kbd>.</kbd>
一句话执行两个命令 | xxx; yyy (; 前面失败了,后面也会执行)
一句话执行两个命令 | xxx&& yyy (&& 前面成功了,后面才会执行)
- 如何在命令里面打回车?
- 在需要回车的地方,先输入反斜杠 \ 再回车,这样命令不会被执行,而是进入一个中间状态,等你在下一行继续输入
- 什么时候加引号?
- 有空格等特殊字符的时候加引号,将其看作一个整体
如何自学命令行?
man ls
-
ls -h
:mac终端测试未支持 -
ls --help
:mac终端测试未支持 - 网站:explainshell.com
如何快速查找文件
- Everything(Windows下)
- 命令
find . -iname xxx -type d
桌面存在三个文件 10.txt、11.txt 、12.txt
在桌面路径下,终端输入 find . -name '*.txt'(或 find . -iname '*.txt'),. 代表当前目录。这里使用了模糊匹配,输出
./10.txt
./11.txt
./12.txt
还可以进一步指定搜索的类型,-type d 代表仅搜索文件夹(目录),-type f 代表仅搜索文件
命令行与 图像界面(GUI) 融为一体
- 如何在命令行中调用 GUI
- Windows:
start .
或者explorer .
- macOS:
open .
- Windows:
- 如何从 GUI 进入命令行
- Windows: 使用 Everything 查找文件,打开目录,右键,「Git Bash here」