命令行学习
git bash可以相当于linux命令行 特别好用
windows下可用git bash,mac当然有更好的自带终端可用
在命令行窗口中,文件后缀名没任何作用,打开任何后缀的文件都是用指定打开方式。
而文件名后缀在windows下是有用的,因为对应了打开方式。
$ 表示当前可以输入命令了,没有实际意义
~ 代表用户所在目录,C:/Users/SuperX/
. 开头的文件是隐藏文件,需要用ls -a查看
命令中的 > 为重定向的意思,即指向某个文件(可以是新建文件)
/ 代表根目录(最顶层)。cd / 表示进入系统的根目录,最顶层目录,与./区分开!/..也是根目录(最顶层)
./或.代表当前目录,../或..代表上一层目录。`
目录名/..指目录名层返回上一层,其实就是本层,因为能看到目录名那么目录肯定在当前层的下一层,再返回上一层就是当前层了。 例如dirName1/..
Ctrl+C 中断
Ctrl+D 退出
start命令(常用)
start可以打开文件或文件夹,后跟文件名或文件夹名
start . 可以打开当前目录窗口
示例:start notepad++ demo.html
以notepad++方式打开demo.html
复制(copy)命令
cp -r 源路径 目标路径 cp复制单文件 cp -r复制文件夹
注意cp -r复制文件夹名的两种情况:- 在源路径内打这个命令,会把目录内的所有内容复制到目标路径,而不复制源文件夹(待定,可能报错no such file or directory)
- 在源路径外打这个命令,才可以把整个目录完整复制到目标路径,包括源文件夹
其他注意:
- 如果存在1.txt和2.txt ,里头都有内容 copy 1.txt 2.txt,则会把2.txt中的内容全删了 然后把1.txt中内容复制过去。overwrite
move命令
- 移动文件到其他目录,e.g move test.txt ../文件夹2/
- 重命名文件,e.g move test.txt test2.txt 相当于只是重命名文件,没有移动
- 除了重命名文件名,还可以重命名后缀名 e.g move 1.txt 1.md
rm(删除)命令
rm 删除文件
rm -r 递归删除 , 删除目录
rm -f 强制删除,别再问我了!
- 切记切记,使用rm -r在目录内是无法删除目录的!
会提示找不到目录。也无法删除目录内的文件。
touch命令
- 可以同时新建多个文件,touch 1.txt 2.txt 3.txt
- 改变文件更新时间
创建目录(mkdir)命令
mkdir,创建一层目录
mkdir 可创建多个目录 e.g mkdir dir1 dir2
同时创建dir1目录和dir2目录
和mkdir “dir1 dir2” 区分开,加了引号仍创建一个目录,但名字为 dir1 dir2。
mkdir -p ,创建多层目录。e.g mkdir -p 1/2/3/4
创建时注意绝对路径和相对路径区别,特别是
e.g 定位到C盘,mkdir -p /c/d/e/f/ 与 mkdir -p c/d/e/f结果并不一样,/c/d/e/f为绝对路径
ls命令
ls后跟空格跟目录名,可看到那个目录下的内容
这个目录名既可以是相对路径,也可以是绝对路径ls -a : 显示所有隐藏的目录/文件,包括. /../ .开头的隐藏文件
ls -l : 显示更多信息,包括权限、用户、用户组、大小、日期等
drwxr-xr-x 可以这样拆分来看
d|rwx|r-x|r-x
第一个字母d代表这是一个目录,若为
-则代表是文件。r可读,w可写,x可执行
第一组rwx代表管理员权限
第二组rwx代表用户所在组的权限
第三组rwx代表其他用户的权限
ls -al / ls -la : 显示包含隐藏文件、隐藏目录的详细信息
echo命令
echo content > 1.txt
若没有文件则新建文件并写入content,
若文件存在就先删除所有内容再写入content
echo content >>1.txt
给1.txt文件追加内容content,若没有文件也会新建文件
其他命令
cat 查看文件内容
下载文件 curl -L 地址 > 重定向命名.xxx
curl -L https://www.baidu.com > baidu.html
curl -L https://code.jquery.com/jquery-3.3.1.min.js > jquery.js
拷贝网页 wget -p -H -e robots=off https://www.baidu.com (windows又不支持?:sob:)
下载包括css、img等资源,神技!下载资源用于静态网页模仿
磁盘占用 df -kh
当前目录大小 du -sh
各文件大小 du -h
好用网站
- explainshell.com 查看命令(可带上参数)的具体意义
- tldr too long didn’t re
常用单词
| 英文 | 翻译 |
|---|---|
| directory | 目录/文件夹 |
| file | 文件 |
| make | 新建 |
| remove | 删除 |
| move | 移动/重命名 |
| copy | 复制 |
| list | 罗列 |
| link | 链接 |
| find | 查找 |
| change | 改变 |
| touch | 触摸 |
| echo | 发出回音/重复 |
常见缩写
| 命令 | 全写 | 缩写 |
|---|---|---|
| 创建目录 | make directory | mkdir |
| 删除 | remove | rm |
| 移动/重命名 | move | mv |
| 复制 | copy | cp |
| 罗列 | list | ls |
| 改变目录 | change directory | cd |
| 显示当前目录 | print working directory | pwd |
| 显示当前用户 | whoami | whoami |
脚本学习
脚本概念
- 脚本原为编剧术语,指表演戏剧、拍摄电影等所依据的底本或者书稿的底本。演出者按照脚本所说的照做即可。
- 编程领域的脚本也类似,提供文本,计算机按照文本的内容执行动作。
npm一些config set配置,储存在~/.npmrc中,可以随时修改。
命令行打echo 1 相当于 console.log(1)
exit 0; 执行成功 返回0个错误
&&, ||, ;
与、或 有短路现象
命令1 && 命令2
- 命令1返回成功才执行命令2,命令1返回失败则结果必定是失败
命令1 || 命令2
- 命令1返回失败才执行命令2,命令1返回成功则结果必定是成功
命令1 ; 命令2
- 命令1执行完后执行命令2,不管命令1返回结果如何。
.bashrc中设置alias缩写
打开.bashrc文件,可在最后一行加上
alias mkdir='mkdir -p'
重新打开bash命令行后,将来使用mkdir即可直接创建多层目录了。
设置环境变量PATH
若某个命令例如cp,想用新的网上下载的工具代替系统的,只需要将下载工具的环境变量顶在系统自带cp的环境变量前,即可先找到他,就默认使用它了。Windows系统还是得在高级系统设置环境变量貌似才能生效,用户变量是只对当前用户生效,系统变量对所有用户生效。
临时设置PATH
export PATH=”脚本所在目录绝对路径:$PATH”,设置后任意地方可直接运行脚本文件。直接输入xxx.txt或sh xxx.txt均可。
是临时的设置,重启bash命令行后会失效。
永久设置PATH(在.bashrc或bash.bashrc)
- 创建 ~/.bashrc:
touch ~/.bashrc - 编辑~/.bashrc:
start ~/.bashrc - 在编辑器里添加一行字:
export PATH="脚本所在目录绝对路径:$PATH" - source ~/.bashrc 让脚本立刻生效而不用重新登录。
- 创建 ~/.bashrc:
C/Users/SuperX/Desktop/命令行练手/local :windows下错误,linux正确
windows正解:C:\Users\SuperX\Desktop\命令行练手\local
- PATH 的作用
你每次在 Bash 里面输入一个命令时(比如 ls、cp、demo),Bash 都会去 PATH 列表里面依次寻找对应的文件,如果找到了就执行。所以排在前面的会先执行。
shebang的作用 蛇棒
shebang即#!
作用为指定执行环境。
e.g.
我们每次执行 jsdemo.js 都要用 node 来执行,能不能做到不加 node 也能执行呢,可以,在 jsdemo.js 第一行加上这一句即可:
1 |
- #!/usr/bin/node是告诉操作系统执行这个脚本的时候,调用/usr/bin下的node解释器;
- #!/usr/bin/env node这种用法是为了防止操作系统用户没有将node装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找node的安装路径,再调用对应路径下的解释器。(带env更智能)
JS脚本创建目录及文件代码实例
jsdemo.js
1 | console.log(process.cwd()) // 打印当前目录 |
执行时,使用:node jsdemo.js param(参数/即目录命)
