命令行已经成为前端程序员必备的一项基础技能。如今的前端开发严重依赖命令行,通过 node 部署前端开发环境,通过 git 实现版本管理,命令行还可以更有效地控制操作系统(mac 尤甚)。熟练地掌握命令行,可以极大地提升工作效率,本文将介绍前端开发所需要的常用命令行操作

 

定义

命令行( command line ) 是一个应用程序,它是一个基于文本(或者说基于命令)的进行文件操作的应用程序,类似于 mac 中的 Finder 或者 Windows 中的资源管理器,但是没有图形界面

一般地,命令行( command line )又代指命令行界面( command line interface ),简称为CLI,也称为字符用户界面。在 Windows 中称为 cmd 或者 命令提示符,在 Mac 中称为 终端 或者 控制台,在 Linux 中称为 shell(常见的是 bash )

bash_thumb

 

常用命令

DOS 系统和 Linux 系统的命令有些不同,下面主要介绍 Linux 系统下的 bash 命令

 

一般规则

在了解命令行常用命令之前,要先了解命令行的一般规则。如果命令行正确执行,则界面不会有任何反馈;如果错误执行,则会提示报错信息

 

特殊符号

# 代表注释

\ 代表转义字符,可以将特殊符号变成一般字符

$ 代表的是目前这个 Shell 的线程代号,即是所谓的 PID(process ID),使用echo $$,出现的数字就是 SHELL 的 PID 代码

$ echo $$ # 5477

? 是一个特殊的变量,代表上一个执行的命令所回传的值。如果成功执行该命令,则会回传一个 0 值,如果执行过程发生错误,就会回传一个非 0 的值

$ echo $?  # 0

 

缩写

所谓的命令实际上就是单词的缩写,有以下几种常见缩写方式:

1、最常见的缩写是取每个单词的首字母

cd Change Direcroty 切换目录

2、如果首字母后为h,则保留h

chmod CHange MODe 切换文件权限

3、 如果只有一个单词,通常取每个音节的首字母

cp Copy 文件拷贝

4、取前几个字母作为缩写

diff DIFFerences 比较文件差异

 

操作命令

clear 清屏
unset 取消变量
$ unset abc # 取消变量 abc

alias 用来设置别名,单独使用alias,可以查看当前已经设置的别名;unalias 用来取消设置的别名

$ alias # 查看当前已经设置的别名
$ alias lm='ls -l | more' # 设置别名 lm
$ unalias lm # 取消别名 lm 的设置

open 可以使用默认方式打开文件,使用 aliasopen 配合,可以使用命令行来打开网页

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 '111\n222' # 输入多行内容,需要使用-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 文件存储到专门的文档文件夹里

1、新建并打开脚本文件

$ touch mvExl.txt
$ chmod + x mvExl.txt
$ code mvExl.txt

2、修改脚本文件,将 Downloads 目录下所有的 excel 文件都移动到 backup 目录下的 xls 目录中

mv /Users/xiaohuochai/Downloads/*.xls /Users/xiaohuochai/Desktop/backup/xls

3、执行该文件即可

sh mvExl.txt
# 或者
sh ./mvExl.txt

当然,可以利用传参,将其他类型的文件比如 zip 文件也移动到 backup 目录下的 zip 目录中

# 设置变量
basePath=/Users/xiaohuochai
targetPartPath=Desktop/backup

# 如果不存在 $1 文件夹,则新建 $1 文件夹
    # $1 表示第一个参数
    # -d 表示该文件名是否存在且是一个目录
if [ -d $basePath/$targetPartPath/$1 ]; then
 echo 'exist'
else
 cd $basePath/$targetPartPath
 mkdir $1
fi
# 移动文件
# 注意,如果加上引号,写成"$basePath/Downloads/*.$1",则 * 只表示 * 本身,而不表示任意字符
mv $basePath/Downloads/*.$1 $basePath/$targetPartPath/$1
echo 'done'

bash_result

 

最后

本文只介绍了常用的基本命令,更详细的命令可查看下面的文章

Linux 常用命令

Linux 命令大全

bash 中文速查

bash 英文速查

命令行解释

版权声明:本文为xiaohuochai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaohuochai/p/12045336.html