Linux-基础命令

常用快捷键:
ctrl+d 退出终端
ctrl+c 退出程序
ctrl+z 当前程序后台执行,fg恢复
ctrl+a/Home 光标移至输入行头
ctrl+e/End 光标移至输入行末
ctrl+w 向左删除一个单词
ctrl+k 向右删除全部
ctrl+u 向左删除全部
ctrl+y 粘贴上次删除的指令
ctrl+l 清屏
Alt+space 向前删除一个单词
up/down 恢复之前输入的指令

pwd - 返回用户当前所处的路径
table - 自动补全

cd 目录 - 切换到指定目录
cd .. - 回到上层目录
cd /home - 回到主目录
cd - 返回当前用户主目录
cd / - 返回系统目录
cd ~ - 进入电脑根目录
cd 相对路劲/绝对路劲 - 进入指定目录

ls 目录/绝对/相对 - 显示目标当前/目标文件下的内容
-a 显示当前文件下所有内容(包括隐藏)
-l/-lh 显示当前文件下所有内容详细信息 字节/kb
-r 倒序排序显示
-R 递归显示
-S 从大到小排序
-Sr 从小到大
-t 创建时间排序
-RS 递归从大到小

mkdir 目录名/相对/绝对 - 当前/指定目录下创建目录
mkdir -p 递归创建目录,如果不存在就创建
mkdir -p 目录/{目录1,目录2}/{目录1,目录2,目录3} 递归遍历创建

touch 文件名/相对/绝对 - 当前/指定目录创建指定文件
cat 读取文本信息
tac 逆序读取文本信息

vim 写入操作
1.vim 文件名 - 打开文件
2.按i输入内容
3.按Esc退出输入模式
4.wq保存并退出

rm - 删除文件
rm 文件路径 - 删除指定文件,y确定/n取消
rm -f 文件路径 删除不询问,直接删
rm -r 文件夹路径 删除指定文件夹

-f 强制
-i 询问
-n 不覆盖

rmdir 文件夹路径 删除指定文件夹(必须为空)

cp - 拷贝
cp 文件路径1 文件路径2 - 将文件1复制到文件2
不存在就创建 存在就询问
cp 文件路径 文件夹路径 - 将文件复制粘贴到指定文件夹中
cp -r 文件夹1 文件夹2 将文件夹1所有内容复制到文件夹2中

mv 文件路径1 文件路径2 - 将文件1移动到文件2
如果前面路径相同,就相当于重命名
mv 文件 文件夹 - 将文件直接移动到指定文件夹
mv 文件夹路径1 文件夹路径2 将1移动到2(非空也行)

6.history指令 获取历史记录(指令的历史记录) history .显示当前系统已经执行过的所有的指令#如果想要显示历史记录的时候显示指令执行的时间需要修改-/.bashrc文件:export HISTTIMEFORMAT-" [%y-m-%d%T]" 1#修改完成后需要通过指令: source-/.bashrc去执行这个配置文件, 最后历史记录的时间才会生效

创建链接:
1)创建软连接(掌握)
ln -s 源文件路径 软连接文件地址 - 给源文件在指定位置创建一个软连接(本质就是保源文件的绝对地址,可以理解为windows的快捷方式)
注意:必须写绝对路径!移动或者删除,软连接无效

2)创建硬链接
In 源文件路径 硬连接文件地址 -给源文件在指定位置创建一个硬链接
硬链接本质是新的引用,删除或者移动不影响源文件,只是变为普通文件

进程相关指令
1)ps - 查看当前进程信息
ps -aux 查看当前所有进程信息
ps grep 进程名/ID - 根据进程名/进程id查看指定进程

2)top - 实时查看当前所有进程和系统信息
top -p pid1,pid2,...实时查看指定进程信息

3)free - 显示当前内存信息,kb为单位
free 单位 - 显示指定的单位显示内存信息

4.kill指令
kill 进程id - 杀掉指定id进程
kill -1/-9/-15 进程id -
-1:不间断重启
-9:强制杀死进程
-15:正常结束

pkill 进程名 - 杀死指定进程名对应的程序
killall 进程名 - 杀死和进程名相关的所有进程

5)uptime 获取系统信息

用户管理
一个Linux操作系统可以有多个user,也可以有多个group;

users - 查看当前用户
groups - 查看当前分组
groupadd 分组名 - 创建分组(管理员才能创建,可以通过查看/etc/group 文件查看所有分组)

useradd 户用名 - 添加指定用户(1.用户创建成功后系统会自动在/home目录下创建一个和用户名同名的文件夹;2.会自动创建和用户名同名的分组,并且将当前的用户添加到分组中)

useradd -G 分组1,分组2,....创建指定用户,并且将用户添加到指定分组中,
usermod -G分组列表 用户名 -修改分组 root才有权限

passwd 用户名 - 修改密码 root才有权限
passwd - 修改当前账户

su 用户名 - 切换用户(root不要密码,其他用户要密码)

sudo - 在命令前sudo是以管理员身份执行指令
注意:不是所有用户都可以添加sudo命令
如果想用sudo必须添加配置
a.ubuntu:将需要有管理员身份的账号添加到sudo分组中
b.redhat 和 centos:在/etc/sudoers配置文件中添加代码:

Allow root to run any commands anywhere

root ALL=(ALL) ALL (默认的)
xiaoming ALL=(ALL) ALL (添加的)

11.文件权限
默认情况下文件和文件夹的权限:文件所有者有读写权限,同组用户和其他用户都是只读权限

1)chmod指令
chmod权限值 文件路径 - 将指定文件的权限修改成指定值

权限: rwx r-- rw-
权限二进制:111 100 110
权限值: 7 4 6
chmod [a,u,g,o]/[+-]/[r,w,x] 文件地址 - 给指定用户添加或删除指定权限
a - 所有用户
u - 文件所有者
g - 同组用户
o - 其他用户

  • 添加权限
  • 删除权限
    

r - 读权限
w - 写权限
x - 执行权限
chmod a-x 文件地址 删除所有用户的执行权限
chmod u+w 文件地址 给文件所有者添加写的权限

12.日志管理
1)显示文件内容

a.cat指令 - 直接显示文件中所有的内容

cat 文件 - 直接查看文件所有内容

总结: 查看文件内容的时候可以加参数-n,让内容在显示的时候显示行号

b.查看部分内容

head N 文件地址 - 显示指定文件前N行内容(-n参数无效)

tail N 文件地址 - 显示指定文件最后N行内容(-n参数无效)

c.分页显示

less 文件 - 按页显示文件内容(通过快捷键控制内容显示过程; 文件内容不会打印到shell/终端里)

less -N 文件 - 按页显示文件内容,每次翻页的时候翻N行

more 文件 - 按页显示文件内容(通过快捷键控制内容显示过程; 文件内容会打印到shell/终端里)

more -N 文件 - 按页显示文件内容,每次翻页的时候翻N行

快捷键:

- 按 j 向下一行

- 按 k 向上一行

- 按 f 向下翻一页

- 按b 向上翻一页

- 按 g 到全文开头

- 按 G 到全文结尾

- 按 Q 退出 
2)结果的处理

凡是有的打印结果的指令,我们都可以通过相关指令对应结果进行处理

a. 管道 - |

如果需要对某一个指令的结果使用另外的指令进行二次处理的时候,就需要用到管道(|)

b.sort - 排序

sort - 从小到大排序(将一行内容作为一个字符串,按字符串大小对应内容进行排序,默认不区分大小写)

cat a.txt |sort      # 对a.txt的文件内容从小到大排序显示

sort的参数:
-r   - 逆序
-nk 1  - 数值大小排序
-nk 2  - 字符大小排序(默认)

cat a.txt|sort -nk 1    # 对a.txt的文件内容按数字大小从小到大排序
cat a.txt|sort -rnk 1    # 对a.txt的文件内容按数字大小从大到小排序
cat a.txt|sort -nk 2    # 对a.txt的文件内容按字符大小从小到大排序(默认)
cat a.txt|sort -rnk 2    # 对a.txt的文件内容按字符大小从大到小排序
c.uniq -去重

uniq - 只能将紧挨着的相同行去掉重复的(如果需要去掉所有重复的行,先排序将相同的行放到一起)

cat a.txt|uniq     # 去掉a.txt文件内容中相邻重复的行
cat a.txt|sort|uniq   # 去掉a.txt文件内容中所有重复的行

uniq的参数
-c     - 重复次数
d.awk - 获取列

awk '{print $N}' - 获取内容中第N列的数据

history|awk '{print $2}'    # 获取历史记录第2列的内容
history|awk '{print $2,$3}'  # 获取历史记录第2列和第3列的内容

练习:

history |awk '{print $4}' |sort |uniq ‐c | sort ‐rnk 1 | head ‐n 3    # 统计最常用的3个指令及其使用次数
3)输出重定向 - >/>>

执行有打印结果的指令 > 文件地址 - 将指定指令执行的结果保存到指定文件中(先清除原文件内容再添加)

执行有打印结果的指令 >> 文件地址 - 将指定指令执行的结果保存到指定文件中(直接将结果追加到原文件中)

history > a.txt     #将当前历史记录直接保存到a.txt文件中

# 将最常用的3个指令及其使用次数保存到a.txt文件中
history |awk '{print $4}' |sort |uniq ‐c | sort ‐rnk 1 | head ‐n 3 > a.txt  
4)统计

wc -c/-w/-l 文件地址 - 统计指定文件中字符/单词/行的数量

5)查找
grep - 找内容

a. grep 内容 文件地址 - 在指定文件中查找指定内容(返回文件中所有包含指定内容的行)

grep you a.txt    # 获取a.txt中包含you的所有的行

grep的参数:
-n      - 显示结果的时候显示行号
-i      - 查找内容的时候忽略大小写
-E      - 按正则表达式进行匹配   
          使用方法: grep -E '正则表达式' 文件
          注意: Linux操作系统中正则表达式不支持:\d,\D,\w,\W,\s,\S,\b,\B; 其他语法都支持
-v      - 忽略字段
          grep you a.txt  -v  # 获取a.txt中不包含you的所有的行

b. 执行有打印结果的指令 |grep 内容 - 在指令执行结果中查找指定内容

c. grep -r 内容 文件夹地址 -在指定文件夹中所有的文件中查找指定内容

find - 找文件

find 文件夹路径 -name 文件名 - 在指定文件夹下按文件名找指定文件

# 找指定文件名
find dir1 -name 'test1.py'      # 在文件夹dir1找名字是test1.py的文件
find dir1 -name '*.txt'         # 在文件夹dir1找后缀是txt的所有文件
find dir1 -name 'test*.txt'
find dir1 -name 'test*'
find dir1 -name '*c.txt'

find 文件夹路径 -size +/-文件大小 - 在指定文件夹下找文件大小满足条件的所有的文件

find dir1 -size +4k       # 查找在文件夹dir1中所有大于4k的文件
find dir1 -size -4k       # 查找在文件夹dir1中所有小于4k的文件
find dir1 -size +5k -size -10k  # 查找在文件夹dir1中所有大于5k并且小于10k的文件(文件大小如果是小数,算的时候向上取整)
find dir1 -size +4k -name '*.txt'   # 查找在文件夹dir1中所有大于4k的txt文件
查指令

which 指令名 -精确查找当前指令对应的文件的路径

whereis 指令名 -查找和指定指令相关的所有的文件的路径

man 指令名 -获取指定指令的使用手册

指令名 — help -获取指定指令的帮助文档

13.网络管理

ifconfig 查看网卡状态
netstat -natp 查看当前系统所有网络连接状态
netstat -natp|grep 端口号 指定端口网络状态

ping地址 - 给指定地址对应的服务器发送数据(检测网络畅通)
ping -i 时间 地址 间隔时间i就会ping一次
ping -c 次数 地址 设置ping的次数,默认无限

wget 地址 - 下载

14.压缩和解压缩、归档和解归档

压缩可以让文件变小,一般在文件需要传输前都会对文件进行压缩。注意,压缩指令只针对一个文件

归档可以将一个文件夹变成一个文件(tar),

归档和解归档:tar
tar -cvf 归档文件地址 需要归档的文件夹/文件地址 -对指定文件/文件夹进行归档
tar -xvf 归档文件地址 - 解归档
tar -xvf 归档文件地址 -C 目标地址 - 解归档到指定位置

2)压缩和解压 gzip,gunzip,xz
gzip 文件地址 - 压缩指定文件,压缩后删除原文件
注意:压缩后生成.gz文件
gzip -c 文件地址 > 压缩文件地址 压缩后保留原文件
gzip -d 压缩文件地址 -解压指定文件 (加 -c >地址,保存源文件)
gzip -l 列出压缩文件中的内容

b.gunzip
gunzip 压缩文件地址-解压(删除源文件)

c.xz
xz 文件地址 - 压缩指定文件(压缩后后缀.xz)
xz -d 压缩文件地址 - 解压指定文件

包管理工具: yum
yum search:搜索软件包,例如yum search nginx
yum list installed:列出已经安装的软件包,例如yum list installed I grep zlib.
yum install:安装软件包,例如yum install nginx.
yum remove:删除软件包,例如yum remove nginx。
yum update:更新软件包,例如yum update可以更新所有软件包,而yum update tar只会更新tar
yum check-update:检查有哪些可以更新的软件包。
yum info :显示软件包的相关信息,例如yum info nginx

源代码构建安装

  1. wget安装包的路径 -下载安装包
  2. gunzip/tar压缩包 -解压、解归档
    3.(设置安装路径)
  3. cd安装包目录执行: make && make install -编译安装包程序-添加快捷方式
    5,给可执行文件添加软连接到usr/bin目录下压缩解压缩和归档/解归档-gzip/gunzip/xz/ tar发送远程文件-scp指令scp文件root@IP地址:服务器上保存被发送文件的路径

15.软件安装和包管理工具

Linux的包管理工具是yum

Linux-基础命令_第1张图片
Snipaste_2019-12-18_14-20-37.png

vim的使用

1.vim的三种模式

命令模式:末尾没冒号也没插入的时候
(另外两种情况按1/2次Esc进入)

编辑模式:末尾会显示‘--插入--’/‘--insert--’,并且可以对文件进行编辑
(在命令模式下按i就可以进入编辑模式)

末行模式:末尾显示冒号,并且冒号后边可以输入内容
(在命令模式下输入冒号就可以进入末行模式)

2.vim的配置

通过编辑~/.vimrc文件或者/etc/vimrc文件可以对vim编辑器进行相关配置

set nu
set ts=4
set autoindent
set expandtab
set ruler
set nohls
syntax on

3.基本操作

1)保存和退出
所有保存和退出的指令都是末行模式下执行的
w - 只保存(相当于ctrl+s)
q - 直接退出(只有内容全部保存了才能退出,否则只能q!强退)
wq - 先保存再退出
注意:强制执行在指令后加!

2)所有光标操作对应的指令都是在命令模式下执行的

^ - 直接将光标移动到行首 home
- 直接将光标移动到行尾 end G - 移动到文件末尾 gg - 移动到文件开头 行号G - 移动到指定行号的位置 ctrl + b 下一页 ctrl + f 上一页 ctrl + y 下一行 ctrl + e 上一行 0 - 光标移动到行首 - 光标移动到行尾
w - 光标移动到下一个单词

3)文本操作
一下指令前面如果没有冒号表示在命令模式下执行,有冒号的在末行模式下执行

dd - 删除当前光标所在的行
数字dd - 数字如果是N,从光标所在的位置开始删N行
:%d - 末行模式下%d,删除所有
d0 - 从光标删除到行首
d$ - 从光标删除到行尾
dw - 删除一个单词

u - 撤销
ctrl+r 反撤销
yy - 复制光标所在的行
数字yy - 如果数字是N,从光标所在的位置复制N行
p -粘贴

4)查找
/正则 - 查找当前文件中符合正则的内容(结果可以用n和N来切换)

vim中正则的要求:
1)python正则中所有语法有效
2)单独使用有特殊功能的符号,在使用的时候加\才有效
r'd+'   ->   /\d\+
r'\d{3}'  ->  /\d\{3}
r'and|or'  ->  /and\|or

: 1,$s/被替换的对象对应的正则/替换内容/参数 - 将文件中正则匹配到的内容替换成指定内容

例子:1,$s/\d/shabi/gi
参数:
g    -    全局匹配(替换所有,默认一行一个)
i    -    匹配时忽略大小写
c   -    替换时给出提示
e   -    忽略错误

高级操作

1)比较文件
vim -d 文件路径1 文件路径2
2)同时打开和编辑多个文件
vim 文件路径1 文件路径2...

#1.切换窗口
在末行模式下输入:ls 可以查看当前打开的所有文和文件对应的标号
在末行模式下输入:b标号  可以将当前窗口中的内容切换到指定标号对应的文件内容

#2.窗口的拆分
在末行模式下输入: sp/vs  可以将当前窗口垂直/水平方向进行拆分;拆分后可以在命令窗口按ctrl + w来切换窗口

修改阿里镜像源

Linux-基础命令_第2张图片
image.png

在unbuntu配置sublime-text3就python环境
https://blog.csdn.net/hiudawn/article/details/81042284

定时任务 - at 命令
预约任务:只会执行一次

3天后的下午五点执行命令
at 5pm+3days
命令

atq 查看at的任务队列

atrm 编号 - 删除指定任务

在星期五的23点59分查找所有.log文件删掉
59 23 * * 5 find / -name ".log" -delete
59 23 * * 5 find / -name "
.log" --exec rm -f {} ;

你可能感兴趣的:(Linux-基础命令)