Linux基础
致未来的自己
1.01的365次方=37.8
1.02的365次方=1377
0.99的365次方=0.03
0.98的365次方=0.0006
不积跬步无以至千里。
1.03的3次方*0.99的2次方=1.01
三天打鱼两天晒网
无操作系统--裸机
用户--应用程序--系统调用--计算机硬件
(桌面,服务式,嵌入式,移动设备)操作系统
桌面操作系统:
Windows稳定性,安全性略差
MacOS适用开发
Linux应用软件少
服务器操作系统:
Linux安全,稳定,免费,占有率高
Windows Server付费,占有率低
嵌入式操作系统:
Linux
移动设备操作系统:
IOS
Android(基于Linux)
Linux内核是核心Ubuntu没有盘符,/是根目录,子目录有:
/bin #可执行的二进制文件
/etc #系统配置
/home #用户登录后的目录
/lib
/usr
ctrl shift = #放大终端字体
ctrl - #缩小终端字体
B KB MB GB TB PB EB ZB YB
-------------------------------------目录相关命令------------------------
/******命令区分大小写******/
基本使用:
ls (list) #查看文件夹内容
ls -a #查看文件包括隐藏文件
ls -l -h #包括文件大小
pwd (print work directory) #查看当前所在文件夹
cd (change directory) #切换文件夹
cd/cd ~ #切换到当前用户的主目录(/home/用户目录)
touch (touch) #如果文件不存在,新建文件
touch .a.txt #创建隐藏文件
mkdir (make directory) #创建目录
mkdir -p a/b/c/d #递归创建目录
rm (remove) #删除指定的文件名
rm -r 文件夹名 #删除文件夹
rm -f #强制删除,忽略不存在的文件
rm -r #递归删除目录下的内容(删除整个文件夹)
tree #以树状图列出目录结构
cp ~/Document/a.txt ./b.txt #复制文件并重命名
cp -i ~/Document/a.txt #提示是否覆盖已存在的文件
cp -r a b #复制整个文件夹到b
mv 源文件 目标路径+文件 #移动文件
mv -i 源文件 目标路径+文件 #移动前提示是否覆盖
mv可间接改目录名
cat (concatenate) #查看文件内容
cat -b 文件 #显示行号+文件内容(跳过空行)
cat -n #显示所有行号+内容
more #显示部分内容(80%),分屏显示文件内容
grep 搜索内容 a.txt #搜索文件中的内容
grep -n 搜索内容 a.txt #显示包含搜索内容的行
grep -vn 搜索内容 a.txt #显示所有行号+搜索内容
grep -i 搜索内容 a.txt #忽略大小写的搜索内容
模式查找(正则表达式)
^a 行首,搜寻以a开头的行
b$ 行尾,搜寻以b结尾的行
clear (clear) #清屏
命令 --help #查看命令帮助
ctrl c #不执行当前命令
通配符 * #代表任意多个字符
? #只能代表一个字符
[] #可写多个
重定向:将本应输出到终端中的内容输出到指定文件中(>表示输出,会覆盖原有文件的内容;>>表示追加输出)
echo 可显示文件内容
可以把一个命令的输出作为另一个命令的输入
ls -sh ~ -a | more 显示主目录的所有文件(包含隐藏文件)分屏显示
ls -sh ~ -a | grep do 查询包含do的文件或文件夹
-------------------------------远程管理命令------------------------------
shutdown -r now 重新启动系统
shutdown now 立即关机
shutdown 20:25
shutdown +10 10分钟后关机
shutdown -c 取消操作
网络与ip
ifconfig 网卡信息
ifconfig | grep inet 管道查询关键字
ping 检测目标ip地址的连接是否正常
ctrl C 停止ping
SSH或XShell都可以连接
ssh客户端————ssh服务器
数据加密、压缩传输,安全
域名与端口号
SSH服务器——22
Web服务器——80
HTTPS——443
FTP服务器——21
ssh -p 22 hadoop@172.12.23.123
sudo shutdown -r now #以超级用户身份执行重启
scp(secure copy)远程拷贝文件
scp -P a.txt hadoop@python:/usr/hadoop #把Ubuntu下的a.txt拷贝到后者
scp -P -r a hadoop@python:/usr/hadoop #把Ubuntu下的a文件夹及内容拷贝到..
免密登录
~/.ssh$ ssh-keygen 按几次回车
~/.ssh$ ssh-copy-id hadoop@10.10.66.129
SSH非对称加密算法:
使用公钥加密的数据,需要使用私钥进行解密,
使用私钥加密的数据,需要使用公钥进行解密。
客户端(私钥加密)——>服务器(公钥解密)
服务器(公钥加密)——>客户端(私钥解密)
配置别名:
~/.ssh/config (创建此文件)
Host jery
HostName 10.10.66.129
User jery
port 22
----------------------------------用户权限---------------------------------------
对文件/目录的权限——可读,可写,可执行(excute)
对用户和管理员进行分组,给组设置权限
ls -l 详细信息(从左到右依次)
权限:第一个字符如果是d表示目录;
硬连接数:有多少种方式可以访问到当前目录/文件;
拥有者:家目录下的拥有者,也就是当前用户;
组:组名和用户名可以相同;
大小:;
时间:;
名称:;
chmod +/-rwx 文件名/目录名 #修改文件/目录权限
./文件名 #执行文件
目录需要可执行权限才能打开和执行其下文件
超级用户(root)
sudo (substitute user)使用另一个用户的身份
使用sudo时,必须先输入密码,之后有5分钟的有效期限,过期必须重新输入密码
--------------------------------组管理-------------------------------------------
groupadd 组名 #添加组
groupdel 组名 #删除组
chgrp -R 组名 文件/目录名 #递归修改文件/目录的所属组
-----------------------------------用户管理-------------------------------------
useradd -m -g组 用户名 #-m自动创建用户的家目录并设置目录权限
sudo passwd 密码 #添加密码
id #查看当前用户的登录信息
默认创建的用户无法执行sudo命令,
usermod -G sudo 用户名 #添加到sudo的附加组
which 命令
su - 用户名 #切换其他用户,su后不接内容,则直接转到root用户
修改文件权限
chown 用户名 文件名/目录名 #修改拥有者
chgrp -R 组名 文件名/目录名 #修改组
chmod -R 755 文件名/目录名 #755表示拥有者|组|其他用户的权限
可读权限数字为4 可写权限为2 可执行权限为1
7=4+2+1为最高权限
---------------------------------------系统信息---------------------------------------------
date #查看系统时间
cal #查看日历
磁盘信息:
df -h #disk free显示磁盘剩余空间
du -h目录名 #disk usage显示目录下的文件大小
进程信息:
ps aux #process status查看进程的详细情况
a #终端上的所有进程,包括其他用户的进程
u #显示进程的详细状态
x #显示没有控制终端的进程
结束进程:
top #动态排序显示进程详细情况,按q退出
htop #彩色显示
kill 进程代号 #进程代号就是PID
-----------------------------------其他命令-----------------------------------------
查找文件:
find 路径 -name "*.txt" #通配符查找
软链接:(类似快捷方式)
ln -s 被链接的源文件 链接文件名 #源文件要绝对路径全名。
打包解包:
tar -cvf 打包文件.tar 被打爆的文件/路径
tar -xvf 解包文件.tar
#c创建打包文件
#x解开档案文件
#v列出详细过程,显示进度
#f指定文件名称,后跟.tar文件
压缩/解压缩:
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
tar -zxvf 解包文件.tar.gz
tar -zxvf 解包文件.tar.gz -C 目标路径
bzip2:
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径
tar -jxvf 解包文件.tar.bz2
tar -jxvf 解包文件.tar.bz2 -C 目标路径
软件安装:(apt ——Advanced Packaging Tool)
sudo apt install 软件包
sudo apt remove 软件包
sudo apt upgrate 软件包 #升级,自动检查更新
apt安装先查找主服务器,(提供所有安装包的软件源)
-----------------------------------vi编辑器-----------------------------------------------
(visual interface)vim是升级版
vi 文件名 #若文件不存在,则会自动生成
yy 100p #复制该行100次
u #撤销(undo)
ctrl r #恢复撤销(redo)
vi 文件名 +行数 #直接跳到该行
vi被强行退出后,打开可以先删除交换文件
三种工作模式:
命令模式:打开后的模式,定位,翻页,复制,粘贴。删除......
i——insert
Esc
wq——write&quit
插入命令:
l #在首行插入文本
o #当前行后插入空行
O #当前行前插入空行
a #在当前字符后添加文本
A #在行末添加文本
左右移动:
h向左 j向下 k向上 l向右
w向后移动一个单词(word)
b向前移动一个单词(back)
0行首 $行尾
行数移动:
gg #文件顶部
数字gg/数字G #跳转到具体行数
屏幕移动:
ctrl b #向上翻页
ctrl f #向下翻页
H(head) #屏幕顶部
M(middle) #屏幕中间
L(low) #屏幕底部
移动:
段落移动:
{ #向上寻找段落
} #向下寻找段落
%——在段落括号之间快速切换
标记:(某一块代码需要参考其他位置的代码,稍后处理)
mark a~z #也就是m 标记名称
’标记名称 #快速返回
选中文本:(需转到可视模式)
v #可视模式(正常模式选择文本)
V #可视行模式(选中光标经过的完整行)
ctrl v #可视块模式(垂直方向选中文本)
删除命令:
x #删除所在字符(cut)
d #和移动命令结合(delete)
dd #删除所在行
D #删除到行尾
数字+上述命令也可执行
dw #从光标位置删除到单词末尾
d0 #从光标位置删除到一行的起始位置
d} #从光标位置删除到段落结尾
ndd #从光标位置删除向下删除n行
d代码行G #从光标所在行删除到指定代码行 之间的所有代码
d'a #从光标所在行删除到 标记a之间的所有代码
复制和粘贴:
y #复制(copy)
yy #复制一行
nyy #复制多行
p #粘贴(paste)
替换命令:
r #替换当前字符串
R #替换光标后的字符
缩排与重复执行:
>> #向右一次性增加四个空格
<< #向左一次性减少四个空格
. #重复上次命令
查找:
/内容 #查找指定内容
n #查找下一个
N #查找上一个
* #从光标所在位置向下寻找所在单词
# #从光标所在位置向上寻找所在单词
:%s/旧文本/新文本/g #全局替换
s/旧文本/新文本/g #可视区域替换,首先选中替换文字的范围
确认替换:
:%s/旧文本/新文本/g #y 替换 n 不替换 a 替换所有 q 推出替换
编辑命令和数字连用:
输入10,表示要重复10次;
输入i,进入编辑模式
输入要重复的内容;
ESC返回命令模式,将自动操作
******正常开发时,进入编辑模式之前,不要输入任何数字。*******
可视块模式给多行代码增加注释:
移动到要添加注释的第一行代码,按^跳到行首;
按ctrl v 进入可视块模式;
使用j向下连续选中要添加的代码行;
输入i进入编辑模式,在行首插入,一定要使用l;
输入注释符号#;
ESC返回命令模式
笔记有点乱,望理解!