
命令行早已变成前端开发程序猿必需的一项基本专业技能。现如今的前端工程师比较严重依靠命令行,根据 node 布署前端工程师自然环境,根据 git 保持版本管理,命令行可以更合理地操纵电脑操作系统(mac 尤甚)。熟练地掌握命令行,可以极大地提升工作效率,本文将介绍前端开发所需要的常用命令行操作
定义
命令行( command line ) 是一个应用程序,它是一个基于文本(或者说基于命令)的进行文件操作的应用程序,类似于 mac 中的 Finder 或者 Windows 中的资源管理器,但是没有图形界面
一般地,命令行( command line )又代指命令行界面( command line interface ),简称为CLI,也称为字符用户界面。在 Windows 中称为 cmd 或者 命令提示符,在 Mac 中称为 终端 或者 控制台,在 Linux 中称为 shell(常见的是 bash )
常用命令
DOS 系统和 Linux 系统的命令有些不同,下面主要介绍 Linux 系统下的 bash 命令
一般规则
在了解命令行常用命令之前,要先了解命令行的一般规则。如果命令行正确执行,则界面不会有任何反馈;如果错误执行,则会提示报错信息
特殊符号
# 代表注释
代表转义字符,可以将特殊符号变成一般字符
$ 代表的是目前这个 Shell 的线程代号,即是所谓的 PID(process ID),使用echo $$,出现的数字就是 SHELL 的 PID 代码
$ echo $ # 5477
? 是一个特殊的变量,代表上一个执行的命令所回传的值。如果成功执行该命令,则会回传一个 0 值,如果执行过程发生错误,就会回传一个非 0 的值
$ echo $? # 0
缩写
所谓的命令实际上就是单词的缩写,有以下几种常见缩写方式:
-
最常见的缩写是取每个单词的首字母
cd Change Direcroty 切换目录
-
如果首字母后为h,则保留h
chmod CHange MODe 切换文件权限
-
如果只有一个单词,通常取每个音节的首字母
cp Copy 文件拷贝
-
取前几个字母作为缩写
diff DIFFerences 比较文件差异
操作命令
clear 清屏
unset 取消变量$ unset abc # 取消变量 abc
alias 用来设置别名,单独使用alias,可以查看当前已经设置的别名;unalias 用来取消设置的别名
$ alias # 查看当前已经设置的别名$ alias lm='ls -l | more' # 设置别名 lm$ unalias lm # 取消别名 lm 的设置
open 可以使用默认方式打开文件,使用 alias 和 open 配合,可以使用命令行来打开网页
alias cnblogs='open https://cnblogs.com'
目录命令
【特殊符号】
.表示当前目录
..表示上级目录
-表示前一次目录
~表示用户目录
【显示目录】
pwd # print work directory 显示当前工作目录的绝对路径
【切换目录】
cd # change directory 切换工作目录 # 如果不带任何参数,或使用波浪号(~),切换到用户目录
【创建目录】
mkdir # make directory 创建目录 $ mkdir a # 创建目录 a$ mkdir b c # 创建目录 b 和 c$ mkdir -p a/b/c # 创建有层级的目录(a/b/c),需要使用 -p 选项
【删除目录】
rmdir # 删除空目录rm -r # 删除目录及该目录下的所有目录及文件$ rm -r a # 删除目录 a # 千万不要使用 rm -rf /,该命令会删除所有文件
【复制目录】
cp # copy 复制文件(或目录)$ cp -r a b # 将目录 a 复制到目录 b
【移动目录】
mv # move 移动文件(或目录)),或者重命名$ mv a b # 将目录 a 从当前目录移动到目录 b 下$ mv a b # 如果没有目录 b,则目录 a 重命名为目录 b
文件命令
【特殊符号】
> 表示覆盖
>> 表示累加
【显示目录下文件】
ls # 显示该目录下的所有文件 list files,默认不显示以点开头的文件ls -a # 显示所有文件,包括隐藏文件ls -l # 显示每个文件的详细信息ls ./y # 显示指定路径 ./y 下的所有文件
【查看文件内容】
open # 使用默认软件打开文件
cat # 显示文件内容
其实,更常用的文件查看方式是使用 vscode
$ code a.txt # 使用 vscode 打开 a.txt 文件
要使用上述命令,需要进行如下设置:运行 vscode 并打开命令面板(⇧⌘P ),输入 shell command 找到: Install ‘code' command in PATH,并点击
【新建文件】
touch # 创建文件$ touch a.txt # 创建空文件a.txt,如果a.txt已经有内容,则修改文件最后更新时间
echo # 输出字符串,也可以新建或改写文件$ echo 123 # 输入字符串'123'$ echo -e '111n222' # 输入多行内容,需要使用-e选项$ echo 123 > 1.txt # 将1.txt的内容改写为'123'$ echo abc >> 1.txt # 向1.txt追加内容,则1.txt的内容为'123 n abc'
【删除文件】
rm # remove 删除文件 rm -f # 强制删除rm -i # 删除文件之前先询问确认,用户回复y或Y之后,文件才会真的被删除$ rm a.txt # 删除文件a.txt
【复制文件】
cp # copy 复制文件(或目录)$ cp 1.txt 2.txt # 将1.txt的内容复制到2.txt
【移动文件】
mv # move 移动文件(或目录),或者重命名$ mv 1.txt 2.txt # 如果在同一目录下,则将1.txt重命名为2.txt$ mv 1.txt a # 如果不在同一目录下,则将1.txt移动到指定的目录a下$ mv 1.txt a/2.txt # 也可以在移动到目录a的同时,重命名为2.txt
快捷键
在 Mac 下,iTerm2 需要设置才能使用 alt 快捷键
打开 Preferences > Profiles > Keys,left Keys 选择 Esc+
【光标移动】
ctrl + a 移动到命令行最左侧(ahead)ctrl + e 移动到命令行最右侧(end)alt + b 向左移动一个单词(back)alt + f 向右移动一个单词(forward)
【内容剪贴】
ctrl + k 剪切从光标位置到行尾的字符 (kill)ctrl + u 剪切从光标位置到行首的字符 (undo)ctrl + w 或 alt + backspace 剪切光标前的单词(word)alt + d 剪切光标后的单词(delete)ctrl + y 将剪贴板的内容粘贴到光标处
【控制】
ctrl + c 强制终止当前命令ctrl + l 清屏一次 tab 补全两次 tab 提示
命令组合
使用多命令执行符和管道符可以实现命令组合的目的
【多命令执行符】
命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑关系
命令1&&命令2 逻辑与,命令1成功,才会执行命令2
命令1||命令2 逻辑或,命令1不成功,才会执行命令2
【管道符】
命令1 | 命令2 命令1的正确输出作为命令2的操作对象
$ ls -al /etc | less
上面代码中,使用 ls 命令输出后的内容就能够被 less 读取,并利用 less 的功能,就能够前后翻动相关的信息了
脚本文件
脚本文件类似于DOS操作系统中的批处理文件.bat,它可以将不同的命令组合起来,并按确定的顺序自动连续地执行
比如,一个常见的需求是把 chrome 的下载目录中的 excel 文件存储到专门的文档文件夹里
-
新建并打开脚本文件
$ touch mvExl.txt$ chmod + x mvExl.txt$ code mvExl.txt
-
修改脚本文件,将 Downloads 目录下所有的 excel 文件都移动到 backup 目录下的 xls 目录中
mv /Users/xiaohuochai/Downloads/*.xls /Users/xiaohuochai/Desktop/backup/xls
-
执行该文件即可
sh mvExl.txt# 或者sh ./mvExl.txt
当然,可以利用传参,将其他类型的文件比如 zip 文件也移动到 backup 目录下的 zip 目录中
# 设置变量basePath=/Users/xiaohuochaitargetPartPath=Desktop/backup # 如果不存在 $1 文件夹,则新建 $1 文件夹 # $1 表示第一个参数 # -d 表示该文件名是否存在且是一个目录if [ -d $basePath/$targetPartPath/$1 ]; then echo 'exist'else cd $basePath/$targetPartPath mkdir $1fi# 移动文件# 注意,如果加上引号,写成"$basePath/Downloads/*.$1",则 * 只表示 * 本身,而不表示任意字符mv $basePath/Downloads/*.$1 $basePath/$targetPartPath/$1echo 'done'
本文来源于:前端学命令行-变化吧门户
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧门户观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。
- 赞助本站
- 微信扫一扫
-
- 加入Q群
- QQ扫一扫
-
评论