常用命令学习

命令行学习


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,若没有文件也会新建文件

ln -s软链接命令和tree命令 windows系统不支持
其他命令

好用网站
  • 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

脚本学习


脚本概念

  • 脚本原为编剧术语,指表演戏剧、拍摄电影等所依据的底本或者书稿的底本。演出者按照脚本所说的照做即可。
  • 编程领域的脚本也类似,提供文本,计算机按照文本的内容执行动作。
sh命令可以执行xxx.sh文件也可以执行xxx.txt文件

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 让脚本立刻生效而不用重新登录。
注意路径,windows要使用”\”,linux使用”/“

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/env node
  • #!/usr/bin/node是告诉操作系统执行这个脚本的时候,调用/usr/bin下的node解释器;
  • #!/usr/bin/env node这种用法是为了防止操作系统用户没有将node装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找node的安装路径,再调用对应路径下的解释器。(带env更智能)
JS脚本创建目录及文件代码实例

jsdemo.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
console.log(process.cwd()) // 打印当前目录

var fs = require('fs')
var dirName = process.argv[2] // 传的参数是从第 2 个开始的

fs.mkdirSync("./" + dirName) // mkdir $1
process.chdir("./" + dirName) // cd $1
fs.mkdirSync('css') // mkdir css
fs.mkdirSync('js') // mkdir js

fs.writeFileSync("./index.html", "")
fs.writeFileSync("css/style.css", "")
fs.writeFileSync("./js/main.js", "")

process.exit(0)

执行时,使用:node jsdemo.js param(参数/即目录命)

Author: superman285
Link: https://skr.dog/2018/08/31/常用命令学习/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.