长达万字的linux基本使用
Posted HUTEROX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长达万字的linux基本使用相关的知识,希望对你有一定的参考价值。
文章目录
用户相关指令
用户创建
在Linux当中用户分为两大类一个是普通用户,另一个是有更高权限的给管理员用户,其中等级最高的是默认的ROOT用户。所有的软件的安装都需要有足够的权限,换一句话说普通用户在安装软件时都需要使用sudo命令来获取权限
useradd 命令创建用户
参数:
-m 创建home目录(在Ubuntu当中加入此参数创建,在Centos当中则不需要,会默认)
-M 不创建home目录
-s 指定shell解析脚本
示例:
useradd huterox -m -s /bin/bash
用户删除
userdel 删除用户
参数:
-r 删除用户的同时删除home目录
-f 强制删除
示例:
useradd huterox
useradd -rf huterox
密码修改
passwd username
当不指定username的时候,会修改当前用户的密码
whoami 命令查看当前用户是谁
pwd 命令查看当前所在目录
用户组的操作
组是可以更好的管理用户,给予用户相应的权限。在创建用户时,会自动创建用户组。
groups username 查看当前用户所在组
<用户名> <组名>
添加组
gpasswd -a <组名> <用户名>
gpasswd -a huterox boy
删除
gpasswd -d <组名> <用户名>
gpasswd -d huterox boy
高权限用户
在很多适合我们需要另一个和ROOT一样具有足够权限的用户,因此我们需要提高用户的权限。这些过程需要使用ROOT用户或者与之有一样权限的用户才能操作。
一.添加用户组
将普通用户添加入具有高权限的用户组。
修改sudoers文件添加用户
在Centos也Ubuntu当中有所区别的是,Ubuntu所添加的组为sudo
gpasswd -a huterox root(centos)
gpasswd -a huterox sudo(ubuntu)
特殊用户目录
/etc/passwd 查看用户名
/etc/shadow 查看用户密码(已加密)
软件安装
apt&yum自动安装
在Ubuntu是使用apt源进行安装而centos是yum,用法都类似
apt
apt install 包 下载与安装
apt search 包 搜索仓库是否有这个包
apt info 包 查看包的信息
apt remove 包 卸载包
apt autoremove 自动卸载
apt list --installed 列出已安装
--upgradeable 可更新
apt update 包,不加包全部检查 检查更新,但是不跟新
apt upgrade 包,不加包全部检查 检查并更新
yum
yum install 包 下载与安装
yum search 包 搜索仓库是否有这个包
yum info 包 查看包的信息
yum remove 包 卸载包
yum autoremove 自动卸载
apt list installed 列出已安装
upgradeable 可更新
yum update 包,不加包全部检查 检查更新,但是不跟新
yum upgrade 包,不加包全部检查 检查并更新
手动安装
手动安装需要先下载到源文件,之后进行编译安装,配置环境变量。下面以安装python3 为例子
一.到官方下载包
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
二.解压
tar -zxvf Python-3.7.0.tgz
三.进入文件
cd Python-3.7.0/
四.指定目录安装(启动优化,指定在usr目录下安装,指定ssl)
./configure --enable-optimizations --prefix=/usr/local/python3.7/ --with-ssl-default-suites=openssl
五.构建安装
make & make install
最后一步配置环境变量
环境变量配置
Ubuntu
1.修改 /etc/bash.bashrc文件或者/etc/profile(相当于系统环境变量win)
如果没有PATH选项的化安装这个添加,如果有那么直接在PATH后面添加 :目录 ```
2.直接修改当前用户下的.bashrc文件(相当于用户变量) 按照刚刚的方式添加
Centos
和上面的一致但是修改 /etc/bash_profile 或者 ~/.bash_profile
变量生效
要么重启
要么使用source执行文件,例如:
source .bash_profile
文件权限
首先使用chmod修改文件权限
r 读的权限 4
w 写的权限 2
x 执行权限 1文件权限显示
下面是一个例子
修改文件执行权限> chmod a+x hello.txt > chmod a=wrx hello.txt > chmod 777 hello.txt > chmod 774 hello.txt
文件删除,移动,拷贝
rm 删除文件
rm -r 删除文件目录(文件夹)
rm -f 删除文件不提示,直接删除
rm -rf
常用指令 rm -rf / (开个玩笑,试试就逝世)
mv 文件 移动目录
这玩意还可以用改名字
cp 文件 复制目录
VIM编辑器的简单使用
命令模式
按下ESC 切换为命令模式
dd 删除一行 ndd删除n行
u 撤销
ctrl + r 反撤销
yy赋值一行 nyy赋值n行(往下复制)
p 粘贴
G 定位最后一行
0 行首
end 行尾
x删除光标右边的一个文字 nx删除n个
X删除左边的 nX删除n个
shift +z +z 保存退出
底线命令模式
在命令模式下按下:进入
w 保存修改
q 退出
q! 不保存强行退出
wq 保存退出
e! 放弃修改
n 光标定位到n行
/x 查找x(从上往下找)
?x 查找x(从下往上)
查找替换
查看此命令:1,100/0/100/cige
解析:从1,到100行查找0替换为100(1,100/0/100)
c:是否确定修改
i:忽略大小写
g:全局模式当同一行出现多个符合情况的匹配项是
e:忽略报错
(/cige)
编辑模式
同样需要先切换为命令模式
i:进入插入模式
I:在第一个非空字符下插入
a:在光标右边插入
A:在光标所在行行尾插入
s:删除光标所在位置的文字插入
S:删除所在行插入
o:光标所在行下一行
O:上一行
宏操作
- 回到命令模式
- 按下q+其他按键例如按下 q + a
- 此时出现recoding的字样表明正在录制
- 开始录制
- 按下q结束录制
播放宏
n@a
n(执行次数,从上往下)
@a (执行在a里面保存的录制操作)
多文件操作
vim 文件1 文件2
底线命令模式下
:ls查看文件
:b n 切换第几个
`
:vs 垂直显示
:sp 水平显示
crtl + w +w 切换文件(也可以)
查找&过滤
find 查找
man find 查看手册
常用参数如下:
-name 按照名字来找
-size +10M 找大于10mb的文件(-10M小于的)
-ctime 0 当天创建的
-mtime 0 当天修改的(1一天前修改的)
-atime 最后访问时间
-type 文件类型(d f l …)
使用例子:
find 目录 -name "*.html"
在目录下寻找html文件
find ~/ -iname "*.html"|grep a
在用户目录下忽略大小写按照名字寻找html文件将信息过滤含有文件名含有字母a的html文件
find与其他命令配合
命令格式
find 目录 模式(-name...) 查找内容 -exec 命令 {} \\;
{}为每次寻找到的结果
\\;是为了闭合命令,必须要加
示例:
find ~ -name "*.html" -exec cp -f {} /html/ \\;
grep
管道过滤
主要是对结果进行过滤常常与许多命令配合使用
grep 目标 文件
或者 xx命令|grep 目标
grep hello hello.txt在hello文件里面寻找hello
grep -E "\\<\\/?Script\\>" index.html
-E支持正则
常用远程命令
ssh远程连接
ssh username@IP
scp远程安全拷贝
scp /home/hello.txt username@IP:/home/
将本地的hello文件拷贝到另一个服务器(或者用户)的home目录下
sftp安全文件操作
1.连接目标
sftp username@IP
此时命令分为两大类
l+命令表示本地操作命令
反之为远程主机的操作命令
get hello.txt /home/
将远程主机的hello文件下载在home目录下
(get hello.txt 下载到当前目录下)
put hello.txt 上传
put hello.txt /home/ 上次到远程主机的home目录下
man文档查看
更多操作命令可以使用
man + 命令查看
例如:
man ls
man scp
按下crtl+z关闭
网络查看命令
Ping 命令
首先ping使用的是icmp协议,此命令可以用于检测网络通讯是否正常。
这里解释一下ttl是什么东西。这个呢是指转发次数,也就是这条信息,这个包可以被路由转发几次。这里默认是64次,现在剩余55次,也就是被转发了11次之后到达了百度服务器。
ifconig 命令
这个就不用多说了,类似与windows的ipconfig指令。
此外还有一条代替的指令IP
网络状态查看
使用netstat命令
参数:
-n 禁止域名解析,默认会域名解析速度较慢。
-a 查看所有
-p 查看进程
-t 查看tcp协议
-u 查看udp协议
-c 持续更新状态
过滤查看nginx端口使用(现在没有开启服务)
文件压缩
tar 命令压缩文件
tar 可以解压,创建常见的.tar /.tar.gz /.tar.xz 文件
参数如下:
-z 针对.gz文件
-x 解压
-v 查看解压过程
-f 目标文件
-J 针对.xz文件
-c 创建压缩文件
常用使用命令:
-zxvf xx.tar.gz 解压目录(可不写,在当前目录下解压)
-xvf xx.tar 解压目录
-xvJf xx.tar.xz 解压目录
//压缩
-cvf xx.tar 压缩目录
-zcvf xx.tar.gz
-cvJf xx.tar.xz
ZIP&RAR
zip & rar 参数类似一致
参数:
zip xx.zip 压缩文件
zip -r xx.zip 压缩目录
unzip xx.zip 解压目录(可不写,在当前解压)
rar xx.zip 压缩文件
rar -r xx.zip 压缩目录
unrar xx.zip 解压目录(可不写,在当前解压)
服务管理
service 管理
这个的话比较老旧了,使用参数也很简单.
service xxx服务 start
restart
stop
systemctl 管理
这个方法比较推荐
参数如下:
start
restat
stop
enable 开机自启动
disable 关闭开机启动
status 查看状态
进程管理
这里要单独说一下是涉及到应用的后台
加入后台
直接在指令后面加入&符号就可以进入后台。
此时就已经进入后台了
此外按下crtl + z也可以进入后台,但是此时会停止运行
后台查看运行
jobs 查看运行进程
top 类似于windows的任务管理器
fg %编号
bg %编号
进程查看ps
这个ps 的指令是比较多的,但是常用的就两三个。具体怎么用可以去查看中文linux社区的文档
或者查看本地的文档。
man ps
ps -aux
ps -ef
都是查看所有进程,只是显示上有点区别
后面的|grep -v nginx是指忽略过滤的指令,只显示需要查询的进程
常用服务环境安装
nginx mysql redis tomcat这几个基本上都是常用的,需要掌握的。而安装又分为两种,一种是通过apt yum 自动安装,缺点是没有很好的去完成指定版本的安装。还有就是直接源代码安装,缺点是需要自己补充第三方依赖,编译安装,在这里本文只是简单介绍如何使用自动安装,及手动安装的套路。
此外tomcat的安装较为繁琐,主要是tomcat是由java开发而来,作为一个服务容器用来支持java web的开发,例如tomcat + servlet + jsp就是非常典型的搭配(上古时代),以tomcat与servlet配合。这里的话不阐述,后面的话等我本人有需求的时候在说。
自动安装
这里以ubuntu 为例子,centos使用yum即可,用法一致。
对了这里需要说明一下的就是usr这个目录,这个不是用户目录的缩写,这个其实是默认的软件安装目录,这个就和你在windows系统上的c盘默认安装目录一样。我们一般都是指定/usr/local/的
nginx 安装
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl status nginx
这个应该不用解释了吧
默认 80 端口
mysql安装
这个要说明一下由于某些原因,我们这里使用的是mariadb 这个是mysql的开发者发出的开源版本,类似于mysql 5.7版本。
sudo apt install mariadb-server
sudo systemctl start maradb.service
默认3306端口
redis安装
sudo apt install redis-server
sudo systemctl status redis-server
sudo systemctl stop redis-server
sudo systemctl disable redis-server
这个安装之后是默认启动的,而且是开机自启动,所以需要检查状态,关闭
手动安装的套路流程
1.获取源代码,从官网,从镜像站,随意。
2.解压,进入目录,注意到目录里面应该有两个文件
------------------------Makefile
------------------------Configure
3.此时一有两条路走:
- 直接编译安装,运行了makefile文件,调用默认的配置也就是configure文件。
- 设置一下配置文件,也就是configure文件。例如设置安装目录,启动优化:
1.1 执行configure文件
./Configure --prefix=/usr/local/ --enable-optimizations
4 .编译安装(配置安装)
make && make insatll
5.配置环境,如果有需要的话,例如上一篇博客安装python
Git使用
都将到这里了,那么这个版本控制是绕不开的,毕竟谁会安装linux就算装个13而不去搞开发呢。
安装
还是两种方式,这里直接
sudo apt insatll git
Git 大致控制流程
接下来分几个流程说明怎么具体使用
(暂存区存取的是当前的代码版本,或者说是当前版本被本地上传了暂存区的文件)
本地操作
创建本地仓库
选一个工作目录
git init 创建仓库
git status 查看目前状态
添加文件到暂存区
git add 文件
git add . 加入整个目录到暂存区
记住每一个环都是相对独立的,只有你上传了之后才会改变.
当你删除了本地的代码,而没有上传时,你的暂存区是不会改变的.
将暂存区的文件拉到本地工作目录
git checkout --. 所有文件
git checkout -- 文件
上传本地仓库。
git commit -m '描述‘
这个时候可能会报出警告,如果你是第一次使用的话,需要你填写邮箱和姓名。这个主要是用来说明这个是
谁修改的,叫什么名字。不是你代码托管平台的账号。
git config --global user.email "your email"
git config --global user.name "your name"
如果不小心删除了本地的,代码而没有上传到暂存区,那么可以通过这种方式来恢复文件
版本切换
最简单的情况就是当你的暂存区的,本地代码都搞乱了,需要恢复的情况,或者最新修改的版本有BUG需要退回去未的修改版本。
版本查看
git log 这个只能查看当前切换的和该版本以前的版本,换句话说就是,假设你从第10版本切换到第五版本,
那么显示的只有1到五版本。
git reflog 这个则是可以查看所有版本,不管你怎么切换。
git reset 2e55793(commit的哈希值前几位就可以了)
这个是切换版本,但是此时你的本地的工作目录是没有改变的。但是你的暂存区是变了的
git reset --hard 2e55793
这样就一起本地工作目录也切换了
此外删掉某个版本执行这个:
git rebase -i 哈希值
然后会打开vim你需要删除版本注释
与代码平台操作
我这里以我在github上的一个开源项目为例子。
其他的代码托管平台也是可以的,例如gitee ,coding等
下载代码仓库到本地
git clone 网址
例如:
git clone https://github.com/Huterox/FixPicTools.git
这个拉取下载是不用帐号密码的,只有在上传的时候需要你的github账户,密码(或者gitee的)
更新远程仓库
git push 上传本地仓库
git pull 下载远程仓库(如果被更新了)
这一步的操作是需要提供用户名和密码认证的
总结
以上就是linux的常用基本操作了,后续可能会不断补充。
以上是关于长达万字的linux基本使用的主要内容,如果未能解决你的问题,请参考以下文章