Linux指令和vim编辑器指令
Linux指令
cd ~
( 'cd' <=> change directory )回到根目录所在位置;
cd -
回到上次目录所在位置;
pwd
显示当前位置的路径;
ls -a
(显示包含目标目录下的隐藏文件。以".a"开头命名的文件会自动隐藏,正常模式下我们看不到);
ls -l
(以列表形式显示);
ls -h
(以合适的单位来显示文件大小);
ls -a -l -h
(等效于ls -alh
,命令的顺序不影响作用,例如:ls -a -l -h
等效于 ls -a -h -l
);
ll
与 ls -la
命令等效;
文件或文件夹操作(剪切、复制、删除、打开)
mkdir -p A
创建文件夹A, mkdir
也可以创建嵌套的文件夹,如下:
mkdir -p A/B/C/D
(Linux下是mkdir A/B/C/D -p),表示在A文件夹下的B文件夹下的C文件夹下创建D文件夹。关于-p
指令的作用:如果其中有某个层级不存在,系统会自动帮我们创建缺少的层级(例如A文件夹下面没有B,也就不存在C文件夹了,这个时候系统自动帮我们在A下创建B,然后在B下创建C,再在C下创建文件夹D)。
cp me.txt A/B/
将me.txt
复制到当前目录下的路径A/B/中;
mv
指令的两点作用:
① mv A AA
将文件夹A改名为AA,mv也可以修改文件的名称
,mv 2.txt file.txt
表示将文件2.txt重命名为file.txt;
② mv me.txt
AA/ 将'me.txt'文件移动到当前目录下的路径AA/中;
rm
删除指令(rm 就是 remove的缩写形式);
删除文件夹时使用 rm + 文件夹名,一般提示无法删除,需要使用rm -r 文件夹名or文件名
,例如rm -r D
(Linux系统是rm D -r
,可以通过rm —help
指令查看rm
指令在该系统下有哪些操作指令,没必要强记),表示删除D文件夹。 -r
指令其实就是递归删除。
open 文件名
打开文件(打开后可以自由编辑。在Linux上,可以使用gedit指令打开文件并自由编辑,可惜Unix上面没有gedit
)。[Tips:倘若该文件名太长不方便输入,可以敲入文件名的前1~n个字母,然后按tab键,终端会智能匹配最合适的文件名]
open 文件夹名称
显示文件夹。例如:open Test
,会打开Finder显示当前目录下的Test文件夹,功能类似于show in Finder
。
也可以使用通配符指令,如:open *.txt
打开当前目录下的所有.txt文件。
cat 文件名
查看文件内容,直接将文件内容显示在终端上面;
touch file.txt
新建一个file.txt文件。如果需要编辑,可以使用open file.txt
命令打开文件,然后自由编辑。也可以使用gedit
(Unix上面gedit指令无效😂);
history
指令用于查看历史指令记录。所有近期使用的指令都会按先后顺序列举出来,如 :
...省略前面n多条指令...
555 ..............................
566 cat vimTest.txt
567 ls
568 open vimTest.txt
此时,我们可以通过 ! 序号
(例如:!568),我们自己的terminate
此时即执行对应需要的指令,这里!568
表示 终端列表上面第568条指令,即open vimTest.txt
指令。
通配符
通配符有两种:
① *
, *
可以匹配0~n位;
② ?
, ?
只能匹配一位;
ls 1[1234]1.txt
也是通配符,表示只通配111.txt、121.txt、131.txt、141.txt这几个选项;
ls 1[1-4]1.txt
等价于ls1[1234]1.txt
,都表示中间只能是111.txt、121.txt、131.txt、141.txt这几个选项。
重定向
ls > xxx.txt
表示将当前文件夹下面ls指令应该显示出来的信息输入到xxx.txt文件中;
ls -alh > xxx.txt
"ls -alh"指令应该显示的信息输入到xxx.txt文件中;
ls -alh >> xxx.txt
追加文件内容到xxx.txt中;
>
与 >>
的异同点:
相同点:如果之前的文件xxx.txt不存在,这两者都会新建一个xxx.txt文件的。
不同点:>>
会往文件中追加内容,>
会覆盖原来的文件中的内容。
more 命令
ls | more
指令可以结合使用。这样可以不通过重定向这一步骤将文件写入到指定的文档中再查看。直接ls | more
可以翻页查看,|
表示通道的意思。
ls ; ls -alh
多个命令一起使用的时候,中间用;(英文分号)隔开;但是一般不这样用,毕竟低效嘛(这就好比买了辆法拉利,在高速上面开20km/h😸)
control c
撤销已经输入的指令(不执行已输入的指令。情景:一段指令输入错误,由于指令太长,删除起来麻烦,可以直接control+c另起一行,重新输入)。友情提示:control+c会不会与系统的热键重复?比如Mac上面QQ的截图功能就是control+c,如果想使用该键,可以在QQ的偏好设置中修改QQ的截图热键。
cat a.txt b.txt >> c.txt
(将a.txt 与b.txt文件内容合并到c.txt文件中,如果c.txt不存在,就自动创建c.txt)
grep "1" c.txt
在c.txt中查找含1的字段;
grep "^1" c.txt
在c.txt中查找开头为1的字段;
grep "xt$" c.txt
在c.txt中查找末尾为xt的字段;
软链接和硬链接
ln -s file.txt soft-link.txt
为file.txt创建一个软链接,软链接名称为 soft-link.txt
;
ln -s file.txt soft-link.txt
cat b.txt >> c.txt
将b.txt文件内容追加到c.txt中;
echo "I am fine!" >> me.txt
写入一段连续的字符串到me.txt文件中;
cat << EOF >> me.txt
> I am fine.
> Thanks.
> Have a good trip.
> EOF
通过cat << EOF EOF
的形式可以借助终端写入多段内容到me.txt中。
grep指令
grep
用来从文件里面搜内容
打包、解包、压缩、解压缩指令
tar -cvf test.tar *.txt
打包(test.tar打包后文件名, *.txt 该目录下需要打包的文件类型)
tar -xvf test.tar
解包
tar -zcvf test.tar.gz *.txt
压缩(test.tar压缩后文件名, *.txt 该目录下需要压缩的文件类型)
tar -zxvf test.tar.gz
解压缩;
tar -jcvf test.tar.bz2 *.txt
这种方式压缩后体积比.gz方式的大一点;
tar -jxvf test.tar.bz2
解压缩;
zip test.zip *.txt
.zip方式的压缩;
unzip test.zip
.zip解压缩命令;
unzip -d ./test test.zip
-d + ./xxx 指令表示支持解压到当前目录中test文件夹下;
tar -zxvf test.tar.gz -C ./GZ
(tar.gz方式解压到指定路径)
unzip -d ZIP test.zip
(zip方式解压到指定路径)
date "+%T-%Y-%m-%d"
查看程序占用内存情况
ps aux
查看内存占用情况,不直观;
top
查看内存使用情况(直观);
kill -9 内存PID号
强制杀掉PID号对应的进程;
文件权限基础及操作
drwxr-xr-x 5 zhouyong staff 160B 4 21 14:28 BZ2
拥有者 u
同组者 g
其让人 o
chmod u=rx c14.txt
chmod u=r,g=r,o=r c14.txt
(同时设置拥有者、同组者、其他人的权限)
chmod
修改文件权限,有两种方式:
① "字母法",也就是上述 u、g、o;
② “数字法”,其中r w x
位分别用 4 2 1数字表示有效,则指令chmod 7 4 1 test.txt
表示设置 test.txt文件的权限等价为:chmod u = rwx,g=w,o=x test.txt
;
系统重启、关机(定时)
sudo shutdown -h now
立即关机;
sudo reboot
重启计算机;
sudo shutdown -h +10
十分钟后自动关机;
sudo shutdown -r now
重启计算机;
sudo shutdown -r +1
一分钟后重启计算机;
vim 指令:
vim xxx.py
打开xxx.py
文件,如果xxx.py文件不存在,就自动创建一个xxx.py文件
;
i
表示切换到输入模式,esc
退出输入模式,并切换到指令模式;
yy
复制光标所在行内容;
pp
粘贴拷贝的内容 ;
esc
回到命令模式;
a
,i
均可切换到编辑模式。区别:a
为在光标后面插入, i
为在光标前面插入;
o命令切换到下一行;
O切换到光标所在行的上一行; 命令模式
A插入到光标所在行的行尾;
I`插入到光标所在行的行首;
n yy
(n为数字) ,表示复制光标行开始的n行。如5 yy
,则从光标位置开始往下复制5行内容;
dd
删除光标所在的行。n dd
(n为数字),表示从光标所在行开始往下删除n行内容;
dd
其实是剪切的功能, dd之后可以使用p粘贴剪切的内容;
光标定位功能
M
定位到屏幕可见区域中央;
L
定位到屏幕可见区域最下部;
H
定位到屏幕可见区域最上部;
control f
下一页
control b
上一页
control u
向上半屏
control d
向下半屏
n G
快速定位到第n行。
n G
快速定位到第n行代码。如18G
,快速定位到第18行;
G
快速回到整个代码最后一行;
gg
快速回到代码的第一行;
w
, 以单词进行划分,向后跳一个单词的长度,调到下一个单词的开头;
b
,向前跳一个单词的长度,调到上一个单词的开头;
D
从当前的光标开始剪切,一直到行末;
d0
从当前光标开始剪切,一直到行首;
u
撤销刚刚的操作;
control r
反撤销;
x
删除当前的光标后面的元素,每次只删除一个元素;
X
删除当前光标前面的元素,每次只删除一个元素;
选中一片代码:
v
V
>>
向右移动代码;
<<
向左移动代码;
.
重复执行上一次命令。
{
跳到光标所在段的段首;
}
跳到光标所在段的段尾;
dw
删除光标所在位置的这个单词的,光标的后面字符,包含光标所在的字符
r
替换当前字符;
R
替换当前行光标后的字符;
查找命令:
/
str查找
n
下一个
N
上一个
替换:
:%s/hello/hi/g
将hello全部替换为hi;
:11,16s/hello/hi/g
将line11~line16中的hello全部替换为hi;
末行模式:
w
保存
q
退出
wq
保存并退出
shift zz
相当于wq
。