长达万字的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:上一行

宏操作

  1. 回到命令模式
  2. 按下q+其他按键例如按下 q + a
  3. 此时出现recoding的字样表明正在录制
  4. 开始录制
  5. 按下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.此时一有两条路走:

  1. 直接编译安装,运行了makefile文件,调用默认的配置也就是configure文件。
  2. 设置一下配置文件,也就是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基本使用的主要内容,如果未能解决你的问题,请参考以下文章

sizeToFit 不会触发带有长字的新行

语音快速转成文字的方法

❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️建议收藏

你见过最垃圾的代码长什么样?(来长长见识)

Sphinx - 在代码块片段中使用省略号 (...)

Sphinx、reStructuredText 显示/隐藏代码片段