一、 Linux命令行基础
我们常用的操作系统基本上是图形界面的,展示在我们面前的不是一个黑黢黢的dos窗口而是丰富多彩的可视化界面,但这并不意味着命令行已经out了,这里不讨论它存在的必要性或者说有多方便什么的……反正我是没看出来有多好用。不过总还是要会一点基础的,不然也不好意思说咱是学计算机的不是?
首先明确几个概念:命令行、终端、shell、bash。
1. 命令行是在dos(Disk Operation System 磁盘操作系统)下运行的命令,通俗地讲,就是你输入的那一串串字符。。。
2. 终端是写命令行的地方,比如windows下的命令提示符、mac和Linux下的终端、windows下安装的cmder或者是gitbash。
3. shell用于执行在终端上写的命令,读取字符串并执行,所以应该算是——脚本语言?百度来了一个专业名词叫命令解释器。
4. bash是实现shell功能的一个东西,是shell的一个实例。
综上,终端是一种设备,直接获取输入呈现输出(比如说键盘显示屏…),终端承载shell,但是shell是一种通用称呼,bash则是shell的一个实例,shell读取命令之后与内核交互然后给出反馈输出到终端。
使用命令行之前我们先来学几个单词吧!
虽然很简单,但是你相信我,它很有用的。单词完了该看看它们的缩写了。
该是正文了,一些简单的命令,建议自己敲一遍,加深一下印象。
-
进入(切换)目录 cd
cd ../ 返回上一级
cd / 回到根目录(这里小小的解释一下,根目录并不是指C盘或者是其它盘的根目录,c盘的正确表示方法应该是/c)
cd ~ 回到home目录 即指定用户文件目录
-
显示当前目录(查看当前完整路径)pwd
-
创建目录(创建文件夹)
mkdir 目录名(文件夹名)
mkdir -p 目录路径 //两个都是用来创建文件夹的,我不知道为什么要加-p,我在windows上不加-p也可以直接加目标路径创建文件夹
/*
如果文件夹名中包含空格或者其它的什么奇奇怪怪的字符的话记得用单引号把文件夹名括起来,
不然可能会有些奇奇怪怪的问题,比如多创建一个文件夹
*/
-
显示当前用户名(我是谁)whoami
-
查看当前目录下的文件 ls
ls -a //列出所有文件包括以"."或者是".."开头的隐藏文件;
ls -l //列出文件具体信息
/*文件具体信息可以在下边看见。
第一个字符如果是d的话表明这是一个文件夹,为-表示这是一个文件;
接下来的三个指的是管理员权限,是否可读 是否可写 是否可执行;
接下来的r-x用户所在的组的权限;
再后边的r-x 任意用户的权限;
然后就不知道了。。。自己Google
*/
-
创建文件
touch 1.txt //无法指定文件内容,可以改变文件最后的更新时间,文件不存在的话会创建新的文件
echo 'hahaha'>1.txt //将字符串‘hahaha’保存到1.txt中,如果该文件不存在会创建文件。windows下文件存在的话会重写文件内容,Linux下会报错。
echo 'hahaha'>!1.txt //强制创建文件,如果文件存在的话会直接重写文件内容。
echo 'zhuijia'>>1.txt //给1.txt追加内容
-
删除操作
rm 1.txt //删除文件(remove)
rm -f 1.txt //强制删除(force)
rm -r 文件夹名 //删除目录(递归操作)
rm -rf 文件夹名 //强制删除目录
/*对于Windows操作系统可以不加-f,会直接强制删除。对于Linux如果不加的话会提示你是否要删除该文件*/
-
剪切文件/文件夹 mv folderA folderB –将folderA放到folderB下,前提是两个文件夹都客观存在。由于剪切和重命名都是使用同样的命令,如果floderB不存在的话会默认将folderA重命名为folderB而不是剪切。
-
复制文件/文件夹 cp folderA folderB –将文件夹folderA复制到folderB下。同样的,此时如果说folderB文件夹原本不存在的话,系统会将folderA重命名为folderB然后再粘贴到当前目录下,与原先的文件夹folderA存在于同级目录下。如果原先存在的话会将folderA复制到folderB目录下成为folderB的子文件夹。
How to learn it? 1. rm --help—–windows下查看指令rm的使用方法 2. tldr rm—–查看指令rm的常见用法(too long didn’t read),用这个的话你需要先安装tldr,用命令npm install -g tldr,如果不成功的话先检查你有没有安装npm,我是安装node的时候自带的。如果你安装了npm还是不成功的话试试在这条命令之前加sudo。
你可能永远不会用上的命令—— 1. 浏览网页 curl -L http://www.baidu.com 2. 保存网页(将网页写入到baidu.html文件中) curl -L http://www.baidu.com > baidu.html 3. 拷贝网页 wget -p -H -e robots=off https://www.baidu.com—-这个可以用来批量下载网页上的图片。。 4. 打开网页 start baidu.html 5. 查看目录结构 tree //windows不支持 6. 软链接 In -s demo demo-link //windows不支持—–demo和demo-link两个文件其实是同一个东西,你在demo里边进行了修改,demo-link也同样会进行相应的修改。反之亦然。 7. 磁盘占用 df -kh 8. 当前目录大小 du -sh . //disk usage summary human 9. 各文件大小du -h 10.
二、vim基本操作
How to learn it? 运行vimtutor指令可以进入vim教程,我的建议是全部捋一遍。下边列一些常用命令。
-
vim a.txt 初始进入编辑器vim命令模式(这里如果说该文件原先并不存在的话会先创建文件然后再打开)
-
i/a/A ——insert/append 进入编辑模式(在命令模式下是不可以编辑文本的,只能响应命令,只有进入编辑模式下才可以往文件里边写入东西)。其中a是在光标后插入,A在行尾插入,i是在光标前插入。
-
按键盘上的esc键退出编辑模式,重新进入命令模式
-
:w ——write写入
-
:q ——quit 退出
-
:wq ——保存退出,:q! ——不保存强制退出
-
快速定位到开头 0
-
快速定位到结尾 $
-
移动光标用HJKL,H左L右,K上J下。(想象一下J是一个往下的钩)
-
NG移动光标到第N行。gg到第一行,相当于1G。G到最后一行。
-
快速翻页可以直接按键盘上的pageup和pagedown。
-
复制文本 y (ye从当前位置拷贝到本行最后一个字符)
-
剪切整行 dd
-
x—-删除光标右边的一个字母
-
输入 r 和一个字符替换光标所在位置的字符。
-
cw 和 ce都可以改变一个单词,c$ —–改变到行末。
-
粘贴文本 p(2dd删除两行–从段尾开始删,可以一直删到光标所在地方,3p粘贴3次…诸如此类)
-
u撤销当前操作,U撤销当前行的所有操作—–只能从上一次修改的哪一行开始(如果两行都修改了的话,不论你光标在哪里,都会默认撤销最后一次修改的那一行)
-
ctrl+r—-撤销掉之前的那次撤销
-
/pattern 搜索pattern的字符串,若有多个匹配按n到下一个。
-
在正常模式下修改命令的格式是: operator [number] motion 其中: operator - 操作符,代表要做的事情,比如 d 代表删除 [number] - 可以附加的数字,代表动作重复的次数 motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。(注:w到下一个单词开头 e到下一个单词结尾 ) 感觉着以上差不多够存活了。。。后续可能会继续更新。。也可能不会。。 更详细的操作看这里 常用命令合集点这里 一个小游戏about vim