欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

mac macos【Mac懂一点命令行】 视频教程 有大用 有大大用

来自  https//space.bilibili.com/522319853/channel/seriesdetail?sid=666503


【Mac懂一点命令行】#1:快速了解Mac下的命令行

命令行可以做什么: 文件管理 系统管理 软件安装 网络操作

image.png

来自  https://www.bilibili.com/video/BV1xg4y1z7v6/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228


【Mac懂一点命令行】#2:命令行操作目录和文件的常见用法

pwd 显示当前命令所处的位置

cp 复制文件/目录

Is 查看目录下的内容

rm 删除文件/目录

cd 进入一个指定的目录

du -sh 查看文件/目录的大小

mkdir 新建一个目录

man 查看命令的帮助信息

mv 重命名或移动文件/目录


image.png

修改终端字体大小,,修改完之后终端退出再打开

image.png


# ls -l

image.png

# ls -la         # a 表示显示出来隐藏的文件  文件前面有点号表示隐藏的文件,,,隐藏的文件在图形界面下是看不到的

image.png

# mv image2/  ../    #将文件夹移动到上一级目录


# cp -R  视频文件夹 视频文件夹2    #复制文件夹要加一个 -R 参数  -R(表示 recursion 递归)


# rm -f  2.png     # 强制删除一个文件  -f (force 强制,不需要确认的提示) 

# rm -Rf 视频文件夹2      # #强制删除 文件夹要加一个 -R 参数  -R(表示 recursion 递归)   要加一个 -f (force 强制,不需要确认的提示) 


# du -sh  #这里表示这个当前文件夹的总的大小是 88M

image.png

# du -sh   文件名    #这里表示这个"文件名"的大小 

# du -sh   文件夹名    #这里表示这个"文件夹名"的总大小 

# du -sh   *     #表示当前目录所有

image.png


# man du  #查看 du 命令的帮助文档


来自  https://www.bilibili.com/video/BV1Sf4y1m71h/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228


【Mac懂一点命令行】#3:终端操作文件,新建、打开、查找文件等

touch 创建文件

rm -Rf 删除所有文件

open 打开文件(使用默认程序)

cd ~ 快速进入用户主目录

vim 打开/编辑文本文件

find 查找文件

file 查看文件类型


终端里常用的快捷键


Control + C  中断命令的执行

Control + A   返回行首

Control + E   返回行尾

image.png

# open 1.txt         #打开一个文件,会以默认的程序打开

image.png

# open test.docx        #打开一个docx文件,会以默认的word程序打开

image.png


# vim 1.txt

# find ./ -name "*. png"       #在当前目录下面查找 包含 .png 的文件

image.png




# find /etc/ -name "* . ini " bogon:clbjjs chenyuanlong$ find /etc/ -name "* . ini " #查找时,目录的后面要有斜杠,表示在 /etc/ 文件夹(目录)下,

/etc//php .ini

find: /etc/ /cups/certs: Permission denied

find /etc -name  "*. ini”  #查找时,如果目录的后面没有斜杠,表示在 /etc 文件下,所以查不到

find ./ -name "1-2. png"   #不用能通配符星号 * ,直接指定文件名

.//文件夹2/1-2. png 

bogon: clbjjs chenyuanlong$

image.png

# file LINUX-LOGO.png   #查看文件类型 (文件信息)

image.png

# rm -Rf *          #删除当前文件夹下面的所有

# cd ~            #进到用户的主目录





来自  https://www.bilibili.com/video/BV16f4y1m7wG/?spm_id_from=autoNext&vd_source=346847773d1f74962a4daab9ddf7f228



【Mac懂一点命令行】#4:Mac终端下的常用的网络命令(1)

image.png

ping

netstat

ifconfig

lsof

networksetup

traceroute

ipconfig

image.png

image.png

# networksetup -listallhardwareports  查看网络接口简写信息

image.png


ifconfig查看指定网卡信息

ifconfig interface-name

例如:

# ifconfig en0 

image.png


ipconfig

查看/配置

网络接口(网卡)信息

ipconfig getifaddr interface-name   #获取ip地址

例如:

# ipconfig getifaddr en0     #获取ip地址

image.png


ipconfig getoption interface-name (option-name | option-code)  ipconfig   #获取网关router的ip地址

例如:

#ipconfig getoption en0 router  #获取网关router的ip地址

image.png



ipconfig getoption interface-name (option-name | option-code)   #ipconfig获取DSN的ip地址

例如:

#ipconfig getoption en0 domain_name_server  #ipconfig获取DSN的ip地址




这里不全面 ,可以看看  /node-admin/19385

ifconfig/ipconfig配置IP信息

ifconfig interface name inet ip- addr netmask subnet-mask

ipconfig set interface-name (MANUAL | INFORM) ip-address subnet-mask

image.png

来自  https://www.bilibili.com/video/BV1aV411n7MW/?spm_id_from=333.999.0.0



【Mac懂一点命令行】#5:Mac终端下的常用的网络命令(2)


ping

netstat

ifconfig

lsof

networksetup

traceroute

ipconfig

image.png

netstat  查看  网络连接、端口、协议等

# netstat

image.png

网络连接状态

LISTEN、SYN_SENT、SYN_RECEIVED、 ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、

CLOSE_WAIT、CLOSING、 LAST_ACK、TIME_WAIT、CLOSED

ESTABLISHED 连接已建立

LISTEN 监听状态,套接字正在监听连接,等待连接

TIME_WAIT 我方主动关闭连接或者我方网络异常导致连接中断

CLOSE_WAIT 对方主动关闭连接或者对方网络异常导致连接中断

image.png

 

netstat常用选项

显示所有连接信息,包括常用于服务器的一些端口监听连接

不加-a的话,默认不显示LISTEN连接信息的

-n 不显示别名信息,用数字代替,可以加快命令的执行速度

比如: mysq|的端口用3306直接显示,而不是用mysq|这样的名称显示,推荐使用

-p protocol显示指定网络协议的连接,全部协议在/etc/protocols中

比如: -ptcp或者-pudp也可以是-p TCP或者-P UDP

-v 显示更多的信息,可以显示对应连接的进程ID (PID) 等

当需要查看网络连接是属于哪个进程时可以使用


image.png

#man netstat

image.png

image.png

#  netstat -a      #显示所有,如果没有-a,那么 listen状态就不显示了

#  netstat -n      #以数字显示,不解析名称,速度快

 netstat -v      #-v 就是 verbose,就是显示冗余,详细信息

# netstat -p tcp     #只显示TCP 的信息

image.png

# netstat -anp tcp          #所有,以数字显示,只显示tcp的信息

image.png


# vim /etc/protocols            #查看所有协议

image.pngimage.png

# netstat -anvp tcp          #所有,以数字显示,只显示tcp的信息,显示更详细的信息(包括进程的信息)

# pid 指的是进程的id号 process id 号

image.png# ps -p  792         #根据进程id显示出进程信息    #ps:  process state  (process show);查看进程的相关信息的专用命令

image.png

活动监视器,,,也可以根据pid找出对应的程序

image.png

netstat常用选项

-r 显示网络路由表信息

  查看网络数据包是如何一步一步路由出去的

-L 显示出监听队列的信息

  查看监听队列的大小信息,需要与-a-起使用,-aL

-l  (是 小L)显示出完整的IPv6的地址信息

  注意该参数在windows和linux.上的使用区别,mac下不建议使用

image.png


#netstat -r          #显示网络中的路由表信息

image.png

#netstat -aL    #显示哪些端口处于监听状态

image.png

#netstat -anL    #显示哪些端口处于监听状态,  加个  -n 表示以数字形式显示

image.png


netstat常用命令解读


netstat -a

netstat -r 

netstat -an

netstat -aL 

netstat -anv





netstat -anL

netstat -anvp tcp

netstat -al

netstat -anvp udp

netstat -anl

image.png


类unix的操作系统中,所有的一切都是当作文件,包括网络也当作文件

lsof      # lsof:   (list open files)是一个查看进程打开的文件的工具

查看系统打开文件信息

查看网络信息比netstat更加友好


lsof常用选项

-i 显示所有打开的网络连接  ( i internet 网络)

      -i4 => ipv4连接,-i6 => ipv6连接,-iTCP => tcp连接,-iTCP:8080 => tcp 8080端口连接

-s 与 -i配合使用时,用于指定特定的协议和特定的网络状态

    Isof -iTCP -sTCP:LISTEN         ( s state 状态 )

-n不显示别名信息,用数字代替,可以加快命令的执行速度 (n number 数字)

    比如: mysql的端口用3306直接显示,而不是用mysq|这样的名称显示

-P不让端口号与端口名称之间转换,加快命令的执行速度  (P port 端口)

    -n -P一起使用,-nP可以大大加快命令的执行速度,推荐使用

image.png

# lsof        #输出一大堆东西,非常杂乱

image.png

image.png

# lsof -i  #输出所有关于  i ( internet )网络的信息

COMMMAND 表示是什么程序产生的网络连接

PID 表示进程的PID(process ID)

USER 表示是哪个用户

image.png

# lsof -i4        #显示ipv4的连接

# lsof -i6        #显示ipv6的连接

# lsof -iTCP        #显示intername TCP 的连接

# lsof -iTCP:3306         #显示intername TCP 3306端口 的连接

#没有结果,因为3306是由其它用户启动的,不是由登录的这个用户启动的

image.png

 # sudo lsof -iTCP:3306         #所以要用提权操作,

image.pngIsof -iTCP -sTCP:LISTEN            #用来显示TCP协议连接状态的,处于监听状态的网络连接,   sTCP要与 iTCP配合起来使用

#将电脑当中处于监听状态的TCP连接列举出来

image.png

Isof  -n  -iTCP -sTCP:LISTEN     # -n 显示数字,不显示别名,速度更快

Isof  -n -P  -iTCP -sTCP:LISTEN     # -P 对于端口号 显示数字,不显示别名,速度更快

#看不明白 -n 与 -P的区别,,,只要知道,讲师推荐我们 -n 与 -P 一起使用,会更快命令的执行速度



lsof常用命令解读

lsof -i                  lsof -iTCP -sTCP:L ISTEN

lsof -iTCP               lsof -iTCP -sTCP:LISTEN -nP

lsof -iTCP:8080          lsof -iTCP:3306 -sTCP:LISTEN -nP

Isof -iTCP:8080 -nP

配合sudo使用可以查看所有用户打开的网络连接,比如: sudo lsof -i 

不加sudo默认只能查看当前用户打开的网络连接

image.png       


#  lsof -iTCP:3306 -sTCP:LISTEN -nP  #-iTCP:3306表示以TCP的3306端口,-sTCP:LISTEN  表示监听状态,-nP,这两个表示以数字显示,加快执行速度

image.png

# sudo  lsof -iTCP:3306 -sTCP:LISTEN -nP         #加个sudo ,可以查看所有用户打开的网络连接 加了-nP,显示了数字3306

image.png

# sudo  lsof -iTCP:3306 -sTCP:LISTEN         #没有 -nP,显示了mysql名称,不显示数字了,,执行会慢一些

image.png


查看监听状态的端口

方法一

netstat -an | grep LISTEN       netstat -anv | grep -i listen

方法二:

Isof -iTCP -sTCP:LISTEN -nP

sudo lsof -iTCP -sTCP:LISTEN -nP

image.png


查看指定端口占用情况

方法一:

netstat -an | grep 3306

netstat -anv | grep 3306

方法二:

lsof -i:3306 -nP

可以配合sudo查看所有用户打开的连接

lsof -iTCP:3306 -sTCP:L ISTEN -nP

image.png


traceroute

查看路由追踪信息

traceroute追踪路由信息

traceroute 域名  或者    traceroute IP地址

例如:

traceroute www.baidu.com

traceroute 192.168.8.105

image.png

traceroute www.baidu.com      #追踪到百度的路由信息,得到每一跳的路由信息

image.png

来自 https://www.bilibili.com/video/BV1Dv41187iY/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228  


【Mac懂一点命令行】#6:Mac终端下的进程管理

ps kil killall pkil top

image.png


ps查看系统进程信息

ps:    process state  (process show);查看进程的相关信息的专用命令,,,瞬时状态

# ps 

image.png

# ps -A        # -A all,所有,,,,查看系统当中的所有用户的所有的进程信息

PID: 进程的id,,process id

TTY: 代表在哪个终端下面运行的

TIME: 代表进程的运行时间

CMD: 代表进程的命令

image.png

image.png


# ps -e         #也是查看所有的进程信息  在 ps -e 命令中,e 是 "every" 的缩写。它代表 "所有进程"(every process)。使用这个选项时,ps 命令会显示系统上的所有进程,无论它们是否与当前终端相关联。因此,ps -e 命令用于列出所有正在运行的进程。

image.png

image.png

# ps -e  | less  #也是查看所有的进程信息,分屏查看

image.png

image.png


# ps -a         # -a (小写的a),显示的是在终端里面正在运行的所有的进程的信息

image.png


# ps -ax           #-ax 表示所有的进程     

# -a (all): 这个选项的作用是显示当前终端下的所有进程,包括其他用户的进程。但是,它并不包括没有控制终端的进程。

# -x: 这个选项的作用是显示没有控制终端(non-terminal)的进程。这通常包括那些由其他用户启动的、在后台运行的,或者由 init 系统(如 systemd)管理的进程。 那些不是由终端启动或者不需要交互式控制台的进程,比如守护进程(daemons)。

image.png

image.png

# ps -A 等于 # ps -e  等于 # ps -ax

image.png


# ps -ax | less    

image.png

image.png

# ps -ef | less        # -e 显示正在运行的所有的进程信息,-f 会显示更多的列项

在 ps -ef 命令中,f 并不是某个英文单词的缩写,而是该命令的一个选项标识符。这个 f 选项代表“全格式”(full format)。

当使用这个选项时,ps 命令会以全格式显示进程信息,这通常包括更详细的字段,如UID(用户ID)、PPID(父进程ID)、

C(CPU利用率)和STIME(进程启动时的系统时间 system time)。全格式输出提供了更丰富的进程信息,

有助于用户更全面地了解系统的运行状态。


UID:  user id ,用户id,即这个进程是由哪个用户产生的

PID: 进程的id,,process id

PPID: 父进程的id,,,,parent process id

TTY: 代表在哪个终端下面运行的

TIME: 代表进程的运行时间

CMD: 代表进程的命令

image.png

image.png


ps 配合管道语法使用

# ps -A | grep nginx    #查看有关nginx服务的进程  与 ps -e | grep nginx  和 ps -au | grep nginx 效果是一样的

# 这里显示的是自己这条命令所产生的进程,,,,,也就是说真正的nginx服务器进程没有开启


image.png

# nginx         #开启nginx服务进程

# ps -e | grep nginx 

image.png

ps -ef | grep nginx 


第一列代表UID, 这里 501 是 UID

image.png

ps -ef | less 

image.png

image.png

# id -nu 501        #根据uid 获取用户名

image.png

# ps -p 31399        #查看指定 pid 的进程

image.png

# ps -u root        #查看指定用户root产生的进程,,事实上 # ps -u 0 也可以  ,0是root 的 uid 

image.pngimage.png

# ps -U 0  #查看指定用户root产生的进程,,,0是root 的 uid,, 事实上 # ps -U root 也可以

image.png


ps 指定输出列项

ps -o keyword        #小写的o指定输出列的选项


# ps -A -o user        #-A是所有 -o 这里输出仅输出用户

image.png

image.png

# ps -A -o user -o pid       #-A是所有 -o 这里输出仅输出用户和pid

image.png

image.png


# ps -A -o user -o pid -o comm       #-A是所有 -o 这里输出仅输出用户和pid和命令名称  comm是command的缩写

image.png

image.png

# ps -A -o user -o pid -o comm  | less 

image.png

# ps -L     # 可以查看到 user,pid,comm等许多关键词

image.png

# man ps        #

image.png

image.png



# ps -A -o user -o pid -o command  | less         #comm,仅指命令,command包含命令和参数

image.png

image.png

# ps -A -o user -o pid -o comm  |  grep -i chome             #看看系统当中当前运行了多少chrome浏览器

image.png

image.png

# ps -A -o user -o pid -o comm  |  grep -i chome  | less           #看看系统当中当前运行了多少chrome浏览器

image.png

image.png


kill        #结束掉一个进程,杀死一个进程

# ps -ef | grep nginx   #查询有关ningx 进程

image.png

# kill -9 31399            #-9是一种信号代码

image.png


# ps -ef | grep nginx   #查询有关ningx 进程 ,可以看到刚刚有一个nginx进程被杀死了,没有了

image.png

HUP 1 挂起

INT 2 中断

QUIT 3 退出

kill 9 代表发送结束的信号给进程,强制中断

TERM  5 从头到尾释放资源整个过程,然后结束进程

image.png

杀死其它用户的进程,可能需要 sudo 提权限来结束掉某个进程


killall 也是结束掉一个进程,但是后面跟的是进程的名字

# killall -9 nginx    

image.png

# ps -ef | grep nginx   #查询有关ningx 进程  ,看到nginx进程全部被杀死了,只有本命令所产生的进程

image.png

killall  支持批量操作,, 后面的信号码与kill 类似


pkill 也是结束掉一个进程,后面可以跟进程名称 或 部分的进程名称,,也支持批量操作,后面的信号码与 kill 类似

image.png

image.png

top 查看系统中的动态的进程信息

image.png

# top         #查看系统中的动态的进程信息,与活动监视器是一样的,是不断变化的

image.png

image.png

来自  https://www.bilibili.com/video/BV1op4y187Nu/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228



【Mac懂一点命令行】#7:Mac终端获取电脑运行温度、风扇转速、硬盘读写速度等

power   一次tab补齐,两次tab列出所有命令


## sudo powermetrics    #需要提权执行,获取 Mac终端实时的电脑运行温度、风扇转速、硬盘读写速度等 

image.png

image.png

## sudo powermetrics -s smc   # -s,这里讲师说 (samplers采样器),  在 powermetrics 工具中,-s 参数通常是 --summary ("总结"或者"摘要") 的缩写。这意味着使用 -s 选项时,powermetrics 会输出一个摘要报告,而不是详细的数据流。 这里 只会输出 smc  sensor(传感器)的概要信息,,,,,,SMC就是系统管理控制的意思

image.png


powermetrics -h  # -h 是 help 帮助的意思

帮助文档里面可以看到 samplers采样器 有 battery(电源) ,disk(磁盘) 等许多

image.png

image.png

## sudo powermetrics -s disk         #看看实时的disk硬盘情况

image.png

image.png


## sudo powermetrics -s smc  -n 1     # -n表示number ,这里是表示只执行一次,不实时更新

image.png

image.png

# sudo powermetrics -s smc  -n 1  | grep CPU        #使用管道

image.png

iStat Menus 6 是第三方工具 查看 cpu 温度,风扇转速等 

image.png

来自  https://www.bilibili.com/video/BV1Qb4y1D7qP/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228


【Mac懂一点命令行】#8:Mac终端下定时关机、重启、睡眠等

Mac懂-点命令行

第8讲Mac终端下定时关机、重启、睡眠

image.png

shutdown

reboot

halt

image.png

shutdown [ -h | -s | -r] time [提示信息]

  -h: halt,关机

  -s: sleep,睡眠

  -r: reboot,重启

time 就是执行动作(关机,睡眠,重启)的时间,有4种形式

    now         #立刻

    +分钟数        #多少分钟后执行动作

    hh:mm                 #今天的几时几分        #今天的几时几分执行动作

    yymmddhhmm                #指定年份、月份、日期、小时、分钟

    

[提示信息],就是执行动作(关机,睡眠,重启)时界面的提示信息,一般也没什么用,不推荐使用

image.png

# sudo shutdown -s +10            #需要提权,,,,,,10分钟之后睡眠

image.png

# ps -A | grep shutdown       #可以看到10分钟之后睡眠的进程     

image.png

# sudo kill -9 1747        #需要提权,,,,,,杀死这个进程,也就是取消这个10分钟之后睡眠的进程  

image.png

# ps -A | grep shutdown       #可以看到10分钟之后睡眠的进程没有了     

image.png

# sudo killall -9 shutdown        #kill 后面跟的是进程的名字, 这里名字是 shutdown,不是 pid,,,,,这里会将所有存在shutdown的命令的进程给杀死

image.png

# sudo shutdown -h now        #立刻关机

image.png

# sudo shutdown -r now        #立刻重启

image.png

# sudo shutdown -s now        #立刻睡眠

image.png

# sudo shutdown -s 20:00        #今天晚上8点睡眠,,,这里应该是24小时制的时间格式

image.png

# sudo killall -9 shutdown            #把这个定时任务给关了

image.png

# sudo shutdown -h 2104200900   #在2021年04月20日 09:00关机   2104200900 的格式是 两位年两位月两位日两位时两位分

\image.png


# sudo shutdown -r now        #立刻重启

image.png

# sudo reboot       #也是立刻重启

image.png

# sudo shutdown -h now        #立刻关机

image.png

# sudo halt              #也是立刻关机

image.png

来自  https://www.bilibili.com/video/BV18U4y1b7g1/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228  


【Mac懂一点命令行】#9:快速掌握vim编辑器

image.png

掌握vim的常见用法

理解vim的三种模式

1.命令模式:输入的内容当做命令看待

2.输入模式:输入的内容当文本内容看待

3.底线命令模式(末行模式):输入的内容当命令看待,在底部显示

image.png

image.png

 i  I    # insert  插入的意思,,,  是输入模式 ,,, 小写i,在当前光标的前面进行输入,,,大写I,就是光标定位到当前行的行首进行输入

 a A   # append 追加的意思,,, 也是入模式,,,小写a,在当前光标的后面进行输入,,,大写A,就是光标定位到当前行的行尾进行输入

 o O  # open 打开的意思,,, 同样也是入模式,,,小写o,就是在当前行的下面新起一行, ,,, 大写O 就是在当前行的上面新起一行

 r R   # replace 替换的意思,,, 替换后是命令模式(按下r 或 R 时是替换模式),,,小写r,就是当前光标进行替换,,大写R,就是当前光标及后面进行一直替换,,

image.png

 h        相当于左箭头,光标向左移动一个字符

 j        相当于下箭头,光标向下移动一个字符

 k       相当于上箭头,光标向上移动一个字符

 l        相当于右箭头,光标向右移动一个字符


 G            # 移动到最后-行

 gg           # 移动到第一行

 0 或者 home            # 数字 0 ,移动到行首

 $ (美元符) 或者  end           # 移动到行尾

image.png

        在vim中,gg 是 "go to the top of the file" 的缩写

        nG 

          在 Vim 编辑器中,nG 命令用于跳转到文件的第 n 行。这里的 "n" 是一个数字,代表目标行号,而大写字母 "G" 代表 "Go" 或 "Goto"          的含义,即跳转到指定位置。

       n<Enter>   n为数字,然后输入回车,光标向下移动n行

  • Ctrl+f:这个组合键用于向前翻一页,即将屏幕内容向下滚动一页,显示出文本的下一页内容。这里的 "f" 字母可以理解为 "forward"(向前)的简写,表示向文档的更深层次或后续部分移动。

  • Ctrl+b:这个组合键用于向后翻一页,即将屏幕内容向上滚动一页,显示出文本的上一页内容。字母 "b" 在这里代表 "backward"(向后)的简写,表示向文档的更早部分或前一页移动。

  • Ctrl+d:这个组合键用于向下翻半页。这里的 "d" 字母可能让人联想到 "down"(向下),表示其功能是将屏幕滚动至下方,显示下一部分文本内容。

  • Ctrl+u:这个组合键用于向上翻半页。字母 "u" 在这里可能让人联想到 "up"(向上),表示其作用是将屏幕滚动至上方,显示上一部分文本内容。

image.png

在 Vim 编辑器中,命令 dd 也不是对某个英文单词的直接缩写。 dd是"delete line"的缩写。

  • "d":在 Vim 中,单个字母 "d" 通常用于触发删除操作。当它与其他字符结合形成双字符组合时,可以指定具体的删除范围或对象。

  • "d"(第二个 "d"):在 "dd" 命令中,第二个 "d" 与第一个 "d" 结合,共同指示 Vim 删除当前光标所在的整行。


  ndd 就是删除当前行及下面的总共n行  ,,,,先是 gg,然后99999dd,能删除整个文档 (或者 gg dG 也能删除整个文档)

  u 表示撤销的操作

  x 往后删  (相当于delete)

  X 往前删 (相当于backspace)

  nx 连接往后删n个字符

  nX 连接往前删n个字符

 

  • "y":在 Vim 中,单个字母 "y" 通常用于触发复制(yank)操作。当它与其他字符结合形成双字符组合时,可以指定复制的具体范围或对象。

  • "y"(第二个 "y"):在 "yy" 命令中,第二个 "y" 与第一个 "y" 结合,共同指示 Vim 复制当前光标所在的整行。

 

 yy#复制当前行

 nyy #n为数字,复制n行               #就是复制当前行及下面的总共n行

 p, P # paste 粘贴,,粘贴复制的内容                  #小写p在当前光标行的下面进行粘贴,,,大写P在当前光标行的上面进行粘贴,,,          

 v, V, Control + v#visual,可视化模式


visual:就是可视化的意思

v:进入可视化, 可以按住h j k l 进行一个一个单词的选中,然后按y进行复制

V:进入可视化,可以按住h j k l 进行以行为单位进行选中

contrl+v ,(ctrl+v):进入可视化,可以按住h j k l 进行以一块一块的(行列)为单位进行选中

image.png


/         斜杠进行搜索,搜索关键词,注意是从当前光标往下搜索  如何高亮显示关键词

    /foo\c  这里表示大小写不敏感的查找 c是case的意思

    :set ic  (set  ignorecase) 也可以先设置一下,大小写敏感,然后再查找

:set hlsearch     #高亮显示搜索的结果 hight light search  ,它只生效一次

image.png

# vim ~/.vimrc            #在这个文件里面设置一下,永久生效

set hlsearch

image.png


?         问号进行搜索,搜索关键词,注意是从当前光标往上搜索,用得不多


:set nu         #nu就是number,显示行号 , ,它也只生效一次

image.png

# vim ~/.vimrc            #在这个文件里面设置一下,永久生效

set hlsearch

set nu

image.png

:set nonu        #no number 不显示行号

image.png


搜索替换关键词

:n1,n2s/word1/word2/g      :1,$s/word1/word2/g         :1,$s/word1/word2/gc

这里 s 表示switch,substitute,切换替换的意思     g全局的意思,在一行内全局替换  表示comfirm确认的意思,即替换时提示确认


:1,$s/macOS/OSX/g            #$表示最后一行,,,,,,这个命令行表示从第一行到最后一行,把所有的macOS替换为OSX

 :%s/macOS/OSX/g            #这里 1,$可以用%来代替,%也表示从第一行到最后一行,即整个文件内的全局替换

 :%s@macOS@OSX@g      #这里 斜杠/ 也可以用其它符号如@来表示

 :%s@macOS@OSX@gi      #这里 i 表示查找时大小写不敏感的替换 如果是大写I就是查找时大小写敏感的替换

查找与替换

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}

例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

作用范围

作用范围分为当前行、全文、选区等等。

当前行:

:s/foo/bar/g

全文:

:%s/foo/bar/g

选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>

:'<,'>s/foo/bar/g

2-11行:

:5,12s/foo/bar/g

当前行.与接下来两行+2

:.,+2s/foo/bar/g

替换标志

上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

:%s/foo/bar

i表示大小写不敏感查找,I表示大小写敏感:

:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar

c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

:%s/foo/bar/gc

回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

replace with bar (y/n/a/q/l/^E/^Y)?

按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E^Y是光标移动快捷键,参考: Vim中如何快速进行光标移动




:1,$s/macOS/OSX/g      

image.png


:1,$s/OSX/macOS/gc      # c就是confirm,让你替换前有个确认      

image.png


u, Control + r                u是撤销,Control + r是重做

image.png


vim常用底线命令(底线命令模式)

保存文件:w (write)                强制保存:w!(感叹号!有强制的意思)

退出文件:q  (quit)                强制退出,不保存修改:q! (感叹号!有强制的意思)

保存退出文件:wq         另存为其他文件:w filename 

显示行号:set nu           取消显示行号:set nonu

image.png



























来自  https://www.bilibili.com/video/BV1Qo4y1f7KW/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228



【Mac懂一点命令行】#10:本课程总结、建议及拓展

image.png

image.png

image.png

image.png

https://ss64.com/osx/

image.png


image.png


https://brew.sh/zh-cn/     macOS (或Linux)缺失的软件包的管理器,可以用它安装各种软件

image.png



https://iterm2.com/features.html    一款终端工具iterm2 iterm 2 ,比macos自带的终端强大

image.png


来自   https://www.bilibili.com/video/BV1m5411c7Dm/?spm_id_from=333.999.0.0&vd_source=346847773d1f74962a4daab9ddf7f228



普通分类: