Linux学习笔记

空格是不区分个数的.一行打不下的话,可以使用反斜杠 \ 来进行下一行代码的输入.

date 显示日期

date的格式化输出: 后面加一个 +%Y%m%d%H%M

分别代表了,年月日,小时分钟,可以自由组合来达到格式化输出的效果.

cal日历指令

cal [month] [year]

bc计算器

想要设置保留位数的话,使用 scale = 位数 来设置.

退出使用quit

按两下tab会把你的所有命令都显示出出来

ctrl + C 中断指令 ctrl + D 相当于输入exit

shift + pageup (pagedown) 看上一页或下一页

在命令后面输入 --help 可以查看帮助

在shell环境下,ctrl + insert 复制 shift + insert 粘贴
Shift + pageup 往上翻页.
shift + pagedown 往下翻页.
[命令] + --help 可以获得帮助
man + 命令 会获得更加详细的帮助
在man page里面常用的按键整理:

空格键 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
home 去到第一页
end 去到最后一页
/string 向下搜寻string这个字符串
?string 向上搜寻string这个字符串
n,N 搜寻的过程中,n用来找下一个结果,N用来找上一个结果
q 结束这次的man page
whatis + 指令 可以获得简要提示
info date 也可以获得帮助
Nano很好用也很简单.简单的文本编辑,用它足够了.而且下方都有命令提示,不需要刻意记忆.
shutdown 关机.
他的参数如下:
-k 不要真的关机,只是发警告信息出去
------- -------
-r 关机之后重新启动
-h 后面指定时间关机
-c 取消已经在计划中的shutdown内容

linux的文件信息

输入ll之后会有文件详细信息:

第一列是文件权限说明

-rwxrwx--- 解释一下
第一个字符代表这个文件是目录 文件或者链接文件。 d 目录 - 文件 l 链接文件 b 设备文件里的可供存储的接口设备 c 设备文件里的串行端口设备
接下来以三个为一组,第一组为文件所有者的权限,第二组为同用户组的权限,第三组为其他非本用户组的权限。 r 代表可读 w代表可写, x代表可执行,没有权限就是-

第二列是有多少文件名连接到此节点

第三列表示这个文件的所有者

第四列表示这个文件的所属用户组

第五列为这个单位的大小,默认单位为B

第六列为这个文件的创建日期或者最近修改的日期

第七列为文件名

改变文件属性和权限

改变所属用户组: chgrp

chgrp [-R] 用户组名 dirname/filename...
-R 进行递归的持续更改

改变文件所有者 chown

chown [-R] 账户名称 文件或目录

改变权限 chmod

  1. 数字类型改变权限
    r是4 w是2 x是1 ,我们可以这样用:chmod [-R] xyz 文件或目录 xyz就是三个数字,代表了三组的权限。比如764就是 rwxrw-r-- 非常的方便
  2. 符号类型改变权限
    u 代表用户 g 代表同组用户 o 代表其他用户 a代表所有用户
    chmod u=rwx,g=rw,o=r 文件或目录
    增加权限就用+,减少权限就用-
    比如给所有用户增加写权限,就是
    chmod a+w 文件或目录

绝对路径与相对路径

/代表根目录 ./代表当前目录 ../代表父目录 - 代表前一个工作目录 ~代表”目前用户身份所在的文件夹“ ~account 代表account用户所在的文件夹
cd 切换目录 pwd 显示当前目录 mkdir 新建一个新的目录 rmdir 删除一个空的目录(非空删不了)

mkdir

mkdir [-mp] 目录名称
-m 是配置文件的权限
-p 是递归的创建目录,比如你的目录名是一个 usr/gaolei/java 那就需要-p来递归创建了

rmdir

rmdir [-p] 目录名称 -p 回连同上层的空目录一起删除。

查看文件与目录 ls

ls [-aAdfFhilnrRSt] 目录名称
-a 全部的文件,连同隐藏文件。一同列出来。
-A -a去除.和..
-d 仅列出目录本身,而不是列出目录内的文件数据
-f 直接列出结果,而不排序
-h 将文件容量以KB GB形式列出
-R 连同子目录文件一起列出
-S 以文件大小排序
-t 时间排序
-l 列出文件的详细信息

复制文件

cp [-adfilprsu] 源文件 目标文件
-a 相当于-pdr
-d 若原文件为连接文件,则复制链接文件属性而非链接文件本身
-f 为强制的意思,若目标文件已经存在无法开启,则删除后在尝试一次.
-i 若目标文件已经存在时,在覆盖时会先询问操作的进行
-l 进行硬链接的文件创建,而非复制文件本身
-p 连同文件的属性一起复制过去,而非使用默认属性
-r 递归持续复制,用于复制目录
-s 复制成为快捷方式
-u 若destination 比source 旧才更新destination

rm删除文件或目录

rm [-fir] 文件或目录
-f 忽略不存在的文件
-i 互动模式,删除前会进行询问.
-r 递归删除,可以删除目录.

mv移动文件

mv [-fiu] 源文件 目标文件
-f 强制移动,不会询问
-i 若目标文件已经存在,就会询问
-u 若目标文件已经存在,且source比较新才会更新.

取得路径的文件名 basename

取得文件的目录名 dirname

文件内容的查阅

cat 由第一行开始显示文件内容

cat -[AbEnTv]
-A 相当于 -vET 的整合.可列出特殊字符
-b 列出行号,仅针对非空白行做出行号显示,空白行不标行号
-E 将结尾的断行字符$显示出来
-n 打印出行号,空白行也有行号.
-T 显示tab
-v 列出一些看不出来的特殊字符

tac 倒着显示

nl 添加行号显示

nl [-bnw] 文件
-b a 列出所有行号
-b t 如果有空行,跳过
-n ln 行号在左方显示
-n rn 行号在右方显示
-n rz 行号在右方显示,加0
-w 行号字段占用的位数

more 一页一页翻动

空格 翻页
enter 下一行
/字符串 向下查找字符串
:f 立刻显示出文件名以及目前显示的行数
q 立刻退出
b 往回翻页

less 一页一页翻动

pagedown 向下翻页
pageup 向上翻页
/字符串 向下查询
?字符串 向上查询
n 重复前一个查询
N 反向重复前一个查询
q 离开

head 取出前面几行

head [-n number] 文件
-n 后面接数字,代表显示几行 不写就默认前十行. -100就是不显示最后100行

tail 取出后面几行

-n 后面接数字,代表显示几行 不写就默认后十行 +100就是不显示前100行

od 读取非文本文件

od [-t TYPE] 文件
-t a 利用默认的字符来输出
-t c 使用ASCII字符来输出
-t d[size] 使用十进制来输出数据,每个整数占用size byte
-t f[size] 使用浮点数来输出数据,每个数占用size byte
-t o[size] 使用八进制来输出数据,每个整数占用size byte
-t x[size] 使用十六进制来输出数据,每个整数占用size byte

touch 修改文件时间或创建新文件

touch [-acdmt] 文件
-a 仅修改访问时间
-c 仅修改访问时间,若不存在,就不创建
-d 后面可以接欲修改的日期而不用当前时间.
-m 仅修改mtime(修改时间)
-t 后面可以接欲修改的时间而不用当前时间,格式为[YYMMDDhhmm]

file 查看文件类型

查找文件

whereis [-bmsu] 文件或目录名
-b 只找二进制格式的文件
-m 只找在说明文件路径下的文件
-s 只找source源文件
-u 查找不在上述三个选项中的其他特殊文件
locate [-ir] keyword
-i 忽略大小写的差异
-r 后面可接正则表达式
find [PATH] [option] [action]
path不用说
option 有这么几个重要的 -user 按用户名查找 -name 按文件名查找 -size [+-]SIZE 按文件大小查找 -type TYPE 按文件类型查找

压缩与解压

gzip zcat

gzip [-cdtv#] 文件名
-c 将压缩的数据输出到屏幕上,可通过数据流重定向来处理.
-d 解压缩的参数
-t 可用来检验一个压缩文件的一致性
-v 可以显示压缩比
-# 压缩等级,-1最快,但是压缩比最差. -9最慢,但压缩比最好. 默认-6

bzip2 gzip的升级版

tar 打包工具

tar [-j|-z] [cv] [-f 新建文件名] filename 打包与压缩
tar [-j|-z] [xv] [-f 新建文件名] [-C 目录] 解压缩
-c 新建打包文件,可通过-v来查看过程中被打包的文件名
-x 解打包或解压缩的功能,可以搭配-C在特定目录解开.特别留意的是,-c -t -x不可同时出现在一串命令中
-j 通过bzip2来进行压缩/解压缩,文件后缀名为 *.tar.bz2
-z 通过gzip来进行压缩/解压缩,文件后缀名为 *.tar.gz
-v 在压缩/解压缩过程中,将正在处理的文件名显示出来.
-f filename: 后面接要被处理的文件名
-C 解压缩时指定特定目录.

vi 与 vim

vi 一般模式

vi 文件名 进入一般模式
h 左
j 下
k 上
l 右
ctrl + f 向下移动一页
ctrl + b 向上移动一页

ctrl + d 向上移动半页

ctrl + u 向下移动半页

+光标移动到非空各符的下一行
-光标移动到非空格符的上一行
n 光标会向右移动n个字符

0或home 移动到最前面

$或end 移动到最后面

H 移动到屏幕的最上方的第一个字符

M 移动到屏幕中央行的第一个字符

L 移动到屏幕最下方那一行的第一个字符

G 移动到最后一行

nG n位数字,移动到文件的第n行

gg 移动到文件的第一行

N[Enter] 光标向下移动N行
/word 向下查找
?word 向上查找

n 重复前一个查找

N 反向前一个查找

x 向后删除一个字符

X 向前删除一个字符
nx 向后连续删除N个字符

dd 删除光标所在的那一整行

ndd 删除光标向下n 行

d1G 删除光标所在到第1行的所有数据
dG 删除光标到最后一行的所有数据
d$删除光标所在处到该行最后一个字符
d0删除光标所在处到该行的第一个字符

yy 复制光标所在那一行

nyy 复制光标所在向下N行
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在字符到行首的数据
y$ 复制光标所在字符到行尾的数据
p 将已复制的数据在光标下一行粘贴.P则为向上一行粘贴.
J 将光标所在行与下一行合并为同一行.

u 复原前一个操作

ctrl+r 或者.重做前一个操作

进入编辑模式

i,I 进入插入模式 i 在光标所在处插入 I在光标所在的行首插入
a,A 进入插入模式 a为在光标所在的下一个字符处开始插入,A为光标所在处的最后一个字符处开始插入.
o,O 进入插入模式, o 为光标所在的行的插入一个新行.O为上一行插入新行.
r,R 进入替换模式 r只会替换光标所在的那个字符一次,R会一直替换光标所在的文字,直到按下ESC

进入命令行

:w 保存
:w! 强制写入
:q 退出
:q! 强制退出而不保存
:wq 保存后离开
:ZZ 若改动,保存后离开,若没改动,直接离开.
:w[filename] 将文件另存为
:r[filename] 光标后面读入新的文件
:! command 暂时离开vi到命令行模式执行command的显示结果
:set nu 显示行号
:set nonu 取消行号

Vim出现警告时的几种操作

[O]pen Read-Only 只读
[E]ditAnyway 不载入之前的内容.正常编辑.
[R]ecover 加载暂存文件的内容,但是保存完后要手动删除暂存文件.
[D]elete it 删除暂存文件
[Q]uit 离开
[A]bort 忽略这个编辑行为,与quit相似

块选择

v 光标移动过的地方反白选择
V 光标移动过的行反白选择
Ctrl + v 块选择,以长方形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除

vim多窗口

:sp filename
不写filename的话,默认一个文件两个窗口.
按下 ctrl + w + ↑或↓来切换窗口.

bash shell

bash里命令太长的话,可以用\来换行继续输入.
显示变量: echo $变量名
设置变量 变量名=变量值 注意不能有空格,特殊字符用""括起来可以保持原有属性.单引号''内则为一般字符.
取消变量 unset 变量名
把变量导出到环境变量 export 变量名
单引号和双引号必须要成对.使用单引号要用\来转义.

env查看环境变量.set 查看所有变量

变量键盘读取(用于script的编写)

read [-pt] variable
-p 后面可以接提示符 -t 后面可以接等待的秒数

声明变量类型

declare [-aixr] 变量名
-a 定义成数组类型
-i 定义成整数数字 -x 与export一样,把变量变成环境变量. -r 把变量设置为只读类型.
设置别名,alias 别名='真正的命令'
直接输入alias可以查看所有别名

查看历史命令 history

history [n] 列出最近N条命令
history [-c] 将目前的shell中的所有history内容全部清除.
!number 执行number条命令
!!执行上一条命令
!al执行最近以al开头的命令

ctrl+ c 终止当前命令 ctrl + d 输入结束 ctrl+ s 暂停屏幕输出 ctrl + q 恢复屏幕输出 ctrl+ u 将整行命令删除 ctrl + z 暂停目前的命令.

通配符

*代表0到无穷多个任意字符
? 代表一个任意字符
[abcd] 中括号内任意一个字符
[0-9] 0-9任意字符
[^]反向选择.

重定向输入输出

输入<和<<
输出>和>>
错误输出 2>和2>>
< >会覆盖原文件,但<< 和>>不会
/dev/null是个黑洞,给他的东西全部消失不见.

Linux的命令也有与&& 或||,而且是短路的.

管道命令 |

能把前一个命令的正确信息输入到后一个命令中去.

cut 切割

cut -d分隔字符 -f范围
比如 ps -ef | cut -d ':' -f 3,5 就是用':'作为分割符,取3-5条.

grep 过滤.

grep [-acinv] [-A] [-B] [--color=auto] '查找字符串' filename
-a 将binary文件以text文件的方式查找数据
-c 计算找到'查找字符串'的次数
-i 忽略大小写
-n 顺便输出行号
-v 反向选择,即输出没有'查找字符串'的那一行
--color=auto 将找到的关键字部分加上颜色显示.
-A 后面接数字,表示after的意思,除了该行,后面的数字行也显示出来.
-B 后面接数字,表示before的意思,除了该行,后面的数字行也显示出来.

排序命令sort

sort [-fbMnrtuk] [file or stdin]
-f 忽略大小写的差异
-b 忽略最前面的空格部分
-M 以月份的名字来排序
-n 使用纯数字进行排序'
-r 反向排序
-u 去重
-t 分割符,默认用tab来分割
-k 以那个区间来进行排序的意思

唯一命令 uniq(去重)

uniq [-ic]
-i 忽略大小写
-c: 进行计数

wc 统计

wc [-lwm]
-l :仅列出行
-w :仅列出多少字(英文字)
-m :多少字符

双向重定向 tee

tee会同时将数据流送与文件和屏幕.

字符转换

tr 用来删除一段信息当中的文字或者是替换

tr [-ds] SET1... -d 删除信息当中SET1这个字符串 -s替换掉重复的字符

join 将两个相关的信息中有相同数据的那一行加在一起.

-join [-ti12] file1 file2
-t join默认以空格符分割数据,并且对比第一个字段的数据,如果连个文件相同,则将两个文件连成一行.
-i 忽略大小写的差异
-1 -2 代表第1 2个文件要用哪个字段来分析.

paste 将两行贴在一起,中间以tab键隔开.

paste [-d] file1 file2 -d 后面可以接分割字符,默认是用tab来分割的.

expand 将tab转换为空格键

expand [-t] file -t 后面可以接数字.表示替换为多少个空格. unexpand可以将空格转换为tab

split 切割文件

split [-bl] file PREFIX
-b 后面可以接欲切割成的文件的大小,可加单位 b k m
-l 以行数来进行切割.
PREFIX 代表前导字符,可作为切割文件的前导文字.

Linux的正则表达式

[:alnum:]所有的字母和数字
[:alpha:]所有的字母
[:blank:]代表空格键与tab按键
[:cntrl:]所有的键盘控制键
[:digit:]所有的数字
[:graph:]除了空格符外的其他所有按键
[:lower:]所有小写字符
[:print:]代表任何可以被打印出的字符
[:punct:]代表标点符号
[:upper:]代表大写字符
[:space:]任何会产生空白的字符
[:xdigit:]十六进制数字类型
.代表绝对有一个字符,
正则表达式的{n,m}在shell里要用 {n,m}来表示,因为{}在shell里有其他的意思.

新旧版本文件的比较

diff [-bBi] from-file to-file
from-file是欲比较的文件
to-file是目的文件
-b 忽略空白符
-B 忽略空白行
-i 忽略大小写

带标题和页数的打印

pr 文件名

shell script

注意事项

  1. 空白会被忽略
  2. 读取到Enter符号,就尝试开始执行该文件.
  3. 如果一行内容太多,可以使用\Enter来扩展至下一行
  4. 批注,会自动忽略.

执行脚本

绝对路径执行 /home/gaolei/shell.sh
相对路径执行 ./shell.sh
bash进程来执行 bash shell.sh 或者 sh shell.sh

用户

su- 登录root用户,需要输入密码
su [-c 命令] [username]
-c 只进行一次命令

进程

在命令后面加一个&可以把工作丢到后台执行.完成后他会告诉你的.
ctrl + z 会把进程丢到后台中暂停.

查看后台工作状态 jobs

jobs [-lrs]
-l 除了列出job number与命令串外,同时列出PID的号码.
-r 仅列出正在后台run的工作
-s 仅列出正在后台暂停的工作.

将后台工作拿到前台来 fg

fg %jobnumber

后台暂停的工作怎么继续执行呢?

bg %jobnumber

kill

kill -n %jobnumber或pid
对于n来说 9是强制删除 15是以正常的方式终止.

查看进程

ps aux 查看所有进程数据
ps axjf 连同部分进程树状态.

RPM软件安装(install)

rpm -ivh RPM安装包

RPM查询

rpm -qa 查询已安装软件.
rpm -q 软件名查询是否安装

yum

yum list 列出目前yum管理的所有软件的名称
yum install 安装软件
yum remove 删除软件

top 命令

top命令可以查看进程的占用率情况.看这篇文章
一个常用命令 先按top 进入界面之后,按p是按照cpu使用率排序. 按m 是按内存使用率排序.(美团面试的时候问的:怎么找出死循环的线程)

查看端口号占用

netstat -tunpl | grep 端口号
lsof -i:端口号

posted @ 2019-11-24 15:57  时光轻轻吹  阅读(239)  评论(0编辑  收藏  举报