命令行提示符
- hzh: 这是当前用户的名字
- @:表示英语里的at,是“在…里”的意思。@前面是用户名,后面是所在的域
- huangzhanghuandeMacBook-pro:这是当前电脑/主机的名字
- ~:这是当前目录所在目录的名字,会随着用户进入不同目录而改变。~表示当前用户的家目录
- 冒号:分隔符,没什么特别的含义
- $:表示普通用户,有权限的限制
- #:表示超级用户,也就是root(Ctrl+D退出root)
命令和命令参数
date
显示当前时间和日期
ls
ls是list的缩写,表示列出当前目录下的文件和目录
命令参数
短参数(一个字母)
最常用的参数形式就是一个短横线后接一个字母,要一次加好几个短参数,可以用空格隔开,多个短参数也可以合并在一起
如:ls -a 列出当前目录下的所有文件,包括隐藏文件
赋值:command -p 10 表示把10赋值给p参数
长参数(多个字母)
短参数是以一个短横线开始,而长参数是以两个短横线开始的,如果有多个长参数,是不能像多个短参数那样合并写的,而是只能以空格隔开
如:ls -all
赋值:command --parameter=10
如何找到一个命令
Tab键不仅可以补全命令,还可以补全文件名、路径名(按Tab键两次)
查找:例如输入c,按两次Tab,那么终端将会提示所有以字母c开头的命令
- 空格键:跳到下一页
- 回车键:跳到下一行
- q:退出列表
命令的历史记录
- 向上键:按时间顺序向前查找用过的命令,每按一次就前进一个命令
- 向下键:按时间顺序向后查找用过的命令,每按一次就前进一个命令
history
history这个命令,用于列出之前使用过的所有命令, 前面有编号,如果要重新运行对应编号的命令,可以用!编号
实用快捷键
- Ctrl + L 清屏,相当于clear
- Ctrl + D 文件结束符,如退出root身份或关闭当前终端
- Shift + PgUp 用于向上滚屏,与鼠标的滚轮向上滚屏是一个效果
- Shift + PgDn用于向下滚屏,与鼠标的滚轮向下滚屏是一个效果
- Ctrl + A 光标跳到一行命令的开头,相当于Home
- Ctrl + E 光标跳到一行命令的结尾,相当于End
- Ctrl + U 删除所有在光标左侧的命令字符
- Ctrl + K 删除所有在光标右侧的命令字符
- Ctrl + W 删除光标左侧的一个 “用空格隔开的一个字符串”
- Ctrl + Y 粘贴上面三个删除的字符串
文件的组织
根目录
Linux中有且只有一个根目录,就是/,根目录就是Linux最顶层的目录
目录的结构
Linux中,用斜杠/来表示目录的层级与包含关系,如/user/bin,表示bin这个目录是user这个目录的一个子目录
根目录的直属子目录
- bin:binary的缩写,表示“二进制文件”,包含了被所有用户使用的可执行程序
- boot:与Linux启动密切相关的文件
- dev:device的缩写,表示“设备”,它里面的子目录,每一个对应一个外设
- etc:包含系统的配置文件
- home:用户的私人目录
- lib:library的缩写,表示库,包含程序所调用的库文件
- media:媒体,外设如(USB、SD卡、DVD、光盘)插入
- mnt:mount的缩写,用于临时挂载一些装置
- opt:可选的应用软件包,用于安装多数第三方软件和插件
- root:超级用户的主目录
- sbin:system binary,系统级的重要可执行程序
- srv:service,包含一些网络服务启动之后需要取用的数据
- tmp:temporary,存放临时文件的文件
- user:安装了大部分用户要调用的程序
- var:variable的缩写,包含一些log文件
pwd命令和which命令
pwd:显示当前目录的命令
which:获取命令的可执行文件的位置
每一条命令对应一个可执行程序,在终端输入命令,再按回车,其实就是执行了对应的程序
which命令接受一个参数,返回其可执行程序位于哪里
cd:切换目录
回到上一级目录:cd ..
连续后退两个层级:cd ../..
回到用户的家目录:cd
相对路径
不加 / ,相对当前目录而言
绝对路径
加 / 开头,表示根目录
do:显示目录包含的文件大小
du -h
:以Ko,Mo,Go的形式显示文件大小du -a
:显示文件和目录的大小du -s
:只显示总计大小
cat 和 less:显示文件内容
cat
cat 文件路径:显示文件的所有内容,适合处理小文件
cat -n 再显示的文件内容上加上行号
cat命令后面可以接不止一个文件
less
less 文件路径:分一页一页地显示文件内容
- 空格键:下一页
- 回车:下一行
- b:上一页
- y:上一行
- q:停止
head和tail:显示文件开头和结尾
head
head:默认显示文件的头10行
指定显示的行数,用 -n
tail
tail:默认显示文件的尾10行
指定显示的行数,用 -n
实时追踪文件的更新 -f
touch和mkdir:创建文件和目录
touch
如果touch命令后面跟着的文件名是不存在的,那么它就会新建一个空白文件
如果存在,就可以修改文件的创建时间或修改时间
touch也可以同时创建多个文件
文件名字有空格就加上双引号
mkdir
mkdir可以创建一个dir,可以同时创建好几个
还可以使用 -p 参数递归创建目录结构,如下命令会先创建one这个目录,再在里面创建two这个目录,在two里面再创建three这个目录
mkdir - p one/two/three
cp和mv:拷贝和移动文件
cp
可以拷贝单个文件,可以拷贝多个文件,可以拷贝目录
cp file newFile
复制文件到另一个目录,如下命令就是把file文件拷贝到了one这个目录中
cp file one/
复制文件到另一个目录,取新名字
cp file one/newFile
拷贝目录,在cp命令后加上-r或-R,目录中的所有内容都会被拷贝
cp -r dic newDic
*号通配符可以替代任何字符串,如下就是把目录下所有txt文件拷贝到folder目录下
cp *.txt folder
mv
mv是单纯的移动,相当于windows中的“剪切+粘贴”,如下命令就是把newFile文件移动到one这个目录
mv newFile one
移动文件夹,如下把folder下的所有移动到one这个目录中
mv folder one
通配符* ,如下把当前目录下所有txt文件移动到one目录下
mv *.txt one
mv可以用于重命名,如下命令将file重命名为renamed_file
mv file renamed_file
rm:删除文件和目录
rm可以删除一个文件、多个文件、目录,甚至整个Linux系统
rm file
加上 -i 参数,终端会向用户确认是否删除
rm -i file
加上 -f 参数,不会询问是否删除,强制删除
rm -f file
加上 -r 参数,递归删除其包含的子目录和文件
rm -r file
rm -rf 危险指令,用之前先搞清楚自己所在的目录,以及后面所加的路径。以免铸成大错!
ln:创建链接
ln命令用于在文件之间创建链接(快捷方式)
硬🔗
ln file1 file2
软🔗
ln -s file1 file2
sudo:以root身份运行命令
sudo 是 Substitute User DO 的缩写,就是“替换用户来执行…”的意思
sudo su 可以一直成为 root,exit回到个人用户
- adduser:添加新用户
- passwd:修改密码
- deluser:删除用户
- addgroup:创建群组
- usermod:修改用户账户
- delgroup:删除群组
- chown:改变文件的所有者
- chmod:修改访问权限
Nano文本编辑器
文本编辑器:编辑和查看文本文件,但不能对文字做格式处理
nano
#打开Nano文本编辑器
此时可以在此输入了
底部的^符号表示Ctrl键
Ctrl+G:显示帮助文档 | Ctrl+O:保存文件 | Ctrl+R:打开其他文件 | Ctrl+Y:上一个屏幕 | Ctrl+K:剪切当前一行 | Ctrl+C:显示光标所在的位置 |
---|---|---|---|---|---|
Ctrl+X:退出 | Ctrl+J:把多行内容合并到第一行 | Ctrl+W:查找 | Ctrl+V:下一个屏幕 | Ctrl+U:粘贴刚剪切的内容 | Ctrl+T:拼写检查 |
nano的参数
nano file.txt
#打开某文件名,如果没有则创建个空文件打开
- -m:激活鼠标
- -i:激活自动缩进
- -A:激活智能Home键:按下键盘的Home键,光标就回跳到一行的最开始或缩进处
nano -miA file.txt
#同时激活三个属性
通过.nanorc来配置nano
一般Linux中的配置文件大多以点开头,并且多以rc结尾。比如vim的配置文件 .vimrc; Bash Shell 的配置文件 .bashrc。这些前面有个点的表示隐藏文件。这些配置文件用 ls -l 列不出来,需要用 ls -a 来列出
在家目录中,可能有或没有.nanorc文件,如果没有则创建一个
nano .nanorc
每一行一行配置语句,以set(激活)或unset(关闭)开头
set mouse
# 设置激活鼠标,之后每次启动nano不用再用-m参数了
set autoindent
# 激活自动缩进,相当于-i参数
set smarthome
# 激活智能home键,相当于-A参数
/etc/nanorc :全局的配置文件,是为系统上所有用户所共用的,只能被root修改,用sudo命令修改
Linux下载软件
Ubuntu下的软件包是软件所有文件的压缩包,后缀名 .deb ,不需要搜索下载,都放在软件仓库中(开源自由),全球有很多软件仓库服务器,里面的软件是一样的
当软件有依赖关系时,比如Eclipse依赖Java环境,Linux中,包管理系统会自动寻找安装缺失的依赖程序
#软件包缓存的更新
sudo apt update
#搜索软件包
sudo apt search xxx
#安装软件包
sudo apt install xxx
#删除软件包
sudo apt autoremove xxx
#升级所有已安装的软件包
sudo apt upgrade
阅读手册
man 这个词在英语中是“男人的”意思,所以Linux和Unix中流行着一句有趣的话:不懂就问一问“男人”
man xxx
如 man ls
,显示ls命令的使用手册
- NAME:手册页对应的命令和函数名字,后接简单描述
- SYNOPSIS:概要。使用该命令的所有方法
- DESCRIPTION:更深入的描述,包括所有参数和用法
- AUTHOR:作者
- REPORTING BUGS:bug汇报方式
- COPYRIGHT:版权
- SEE ALSO:扩展
apropos:查找命令
apropos xxx
# 根据关键字在手册中查找相关的命令
whatis:精简版
whatis ls
#手册的精简版
查找文件
locate:快速查找
locate filename
#查找文件
- 优点:方便快捷,易于使用
- 缺点:1.列出所有找到的内容 2.不能找到刚创建的文件(不在硬盘中查找而是在数据库里查找)
find:深入查找
find “何处” “何物” “做什么”
#查找文件(遍历实际硬盘)
- 何处:目录,默认当前目录及其子目录
- 何物:必传
- 做什么:后续处理,默认只找到文件不做处理
find -name filename
#根据文件名查找
find path -name filename
#在path路径下查找
#根据文件大小查找
find path -size +10M #查找path路径下大小超过10MB的文件
find path -size -50K #查找path路径下大小小于50KB的文件
#根据文件的最近访问时间查找
find -name "*.jpg" -atime -7 #七天内在家目录中访问的JPG格式的图片
#仅查找目录或文件
find -name filename -type d #仅查找目录类型
find -name filename -type f #仅查找文件类型
#删除查到的文件
find -name filename -delete
数据处理
grep:筛选数据
grep:在文件中查找关键字,并且显示关键字所在的行
不仅可以实现简单的查找,而且可以配合正则表达式来实现比较复杂的查找
#text 代表要搜索的文本,file代表供搜索的文件
grep text file
#忽略大小写
grep -i text file
#显示行号
grep -n text file
#只显示文本不在的行
grep -v text file
#在所有子目录和子文件中查找
grep -r text file
正则查找
grep -E 正则 file
sort:为文件排序
# 排序(不区分大小写)后只显示在终端上
sort filename
# 排序后写入新文件
sort -o filename
# 倒序排列
sort -r filename
# 随机排序
sort -R filename
# 对数字排序
sort -n filename
wc:文件统计
# 返回 行数 单词数 字节数
wc filename
# 统计行数
wc -l filename
# 统计单词数
wc -w filename
# 统计字节数
wc -c filename
# 统计字符数
wc -m filename
uniq:删除文件中的重复内容
# 去重后显示在终端
uniq filename
# 去重后保存为新文件
uniq newFilename filename
# 去重后保存为新文件
uniq -c newFilename filename
# 只显示重复行的值
uniq -d filename
cut:剪切文件的一部分内容
# 只保留第二至第四个字符
cut -c 2-4 filename
<和<<:从文件和键盘读取
#将键盘输入的数值从小到大进行排列(回车键换行,END结束)
sort -n << END
监视系统活动和查看进程
w:快速了解系统中有哪些用户登录着,他们在干什么
uptime
up 4:49 表示开机到现在经过了四小时49分钟
load averages:表示负载(系统活动的一个指标),2.79表示一分钟以内的平均负载,3.06表示五分钟以内的平均负载,2.89表示15分钟之内的平均负载
ps:进程的静态列表
top:进程的动态列表
交互性的,并且实时更新
Ctrl+c:停止终端中正在运行的进程
Ctrl+c在终端中可以终止正在运行的程序,而在终端中拷贝,需要用“Ctrl+shift+C”和“Ctrl+shift+V”
halt:关闭系统
sudo halt
halt:关闭系统
sudo halt
reboot:重启系统
sudo reboot
vim
在Linux文本编辑器中,Vim和Emacs比较出名
在大部分linux系统中vim是默认安装的,如果没有则输入sodu apt install vim
就可以安装,然后输入vim
就可以启动vim了
vim工作模式
- 交互模式:vim的默认模式,不能输入文本。但可以在文本间移动,删除一行文本,复制粘贴文本,跳转到指定行,撤销操作等等
- 插入模式:按键盘 i 进入插入模式,按esc退出。可以在光标处输入文本
- 命令模式:在交互模式下 按下冒号,输入命令后再按回车,可以执行命令,然后又回到交互模式。命令模式主要是运行一些命令
vim的好处就是只需要键盘就可以操作,完全不需要鼠标
vimtutor:vim的教程
输入vimtutor
就可以进入教程
打开vim
vim 文件名
h i j k 上下左右移动
用方向键也可以(插入模式只能用方向键)
0和$ 移动到行首和行末
将光标移到一行的开始位置,按下0
将光标移到一行的末尾,按下 $
w 一个单词一个单词地移动
在交互模式下,w可以一个单词一个单词地移动
:w 保存文件
:q 退出
:q! 强制退出,不保存修改
:wq 保存后退出
x 删除字符
交互模式下 按x可以删除字符,4x可以删除光标后4个字符,nx可以删除光标后n个字符
dw 删除单词
如果光标在单词首字母,删除整个单词
如果光标在单词中间,删除光标到下一个空格前的字符
3dw 删除三个单词,ndw 删除n个单词
dd 删除行
2dd可以删除光标后两行,ndd可以删除光标后n行(剪切,后面可以粘贴)
d0 删除行首
删除从光标处到行首所有字符
d$ 删除行末
删除从光标处到行末所有字符
yy 复制
yy复制一行,yw复制一个单词,y$复制当前光标到行末的所有字符,y0复制当前光标到行首所有字符
p 粘贴
r 替换某个字符
r(replace)后写入字符,则把当前光标的字符替换为写入的字符 R 可以替换多个字符
u 撤销
g 跳转到指定行
7gg 跳转到第7行
G 跳转到最后一行
gg 跳转到第一行
/ 查找
按下/可以进入查找,输入要查找的字符串,即可查找
,n是跳转下一个匹配项
😒 查找并替换
# 只替换当前行的第一个匹配的
:s/旧字符串/新字符串
# 替换当前行所有匹配的
:s/旧字符串/新字符串/g
# 替换第line1行到第line2行的所有匹配字符串
:line1,line2 s/旧字符串/新字符串/g
# 替换文本汇总所有匹配的
:%s/旧字符串/新字符串/g
:sp 横向分屏
vim配置
网上有很多.vimrc