Linux学习
Linux下常用命令:
- 设置分辨率:
# 查看支持的分辨率
xrandr
# 输入要修改的分辨率值,-s保存
xrandr -s 1920X1200
# 查看历史命令
history
# 使用历史命令,以历史命令第75个为例
!75
# ll命令参数后面加上-h 可以将文件大小的字节数转换为更直观的k、M、G、的形式
ll -h
# 创建一个管道文件
# 格式:mkfifo 文件名
mkfifo fifo
# 安装vim编辑器
sudo apt-get install -y vim
:'
使用vim编辑器步骤
1.vim 文件名
2.进入vim编辑器之后,输入i进入编辑模式
3.之后可以进行编辑
4.按Esc键退出,输入":"号
5.底部":"出现输入wq,保存并退出
其他命令:
q退出,不保存
q!强制退出
'
- Linux环境下设置C/C++的编译环境
# 下载编译环境
sudo apt-get g++ -y
- 终端提示符格式
$:代表当前用户为“普通用户”
#:代表当前用户为“root”用户(管理员) - -使用命令:sudo su 输入密码,即可切换到root用户
常用快捷键
- Tab键的使用
补齐命令
补齐路径
显示当前目录下的所有目录 - 清屏
clear作用为清除终端上的显示,快捷键“Ctrl+L” - 中断进程
Ctrl+C - 遍历输入的历史命令
从当前位置向上遍历:ctrl+p 或者 (↑)
从当前位置向下遍历:ctrl+n 或者 (↓) - 光标相关操作
光标左移:ctrl+b 或者(←)
光标右移:ctrl+f 或者 (→)
移动到头部: ctrl + a 或者 (Home)
移动到尾部: ctlr + e 或者 (End) - 字符删除
删除光标前边的字符:ctrl + h 或者 (Backspace)
删除光标后边的字符:ctrl + d
光标后边的字符即光标覆盖的字符
删除光标前所有内容:ctrl + u
删除光标后所有内容:ctrl + k
使用命令安装软件
# 安装“aptitude”软件:
sudo apt-get install aptitude
#查看指定软件是否安装:
sudo aptitude show xxx软件名。查看该xxx软件,是否安装
#安装“tree”软件:
sudo apt-get install tree 或 sudo aptitude install tree
#安装“sl“软件:
sudo apt-get install sl 或者 sudo aptitude install sl
ls -l参数的7部分
- 前10个字符
1.第一个字符:文件类型。
2. 后9个字符:文件的访问属性 - 硬连接计数
- 文件所有者
- 文件所属组
- 文件大小
1.对于普通文件,直接存储实际大小
2.对于目录文件,是目录所占的磁盘空间大小。–4k的整数倍。 - 文件的创建、修改时间
- 文件名
文件类型
- Linux操作系统中,有7种文件类型
- 普通文件:使用"-"表示。
- 目录文件:使用"d"表示。
- 软连接文件:使用小写"L"表示。(软连接相当于windows下面的"快捷方式")
- 管道文件:使用"p"表示。pipe
- 套接字文件:使用"s"表示。socket
- 字符设备文件:使用"c"表示。character
- 块设备文件:使用"b"表示。block
- 后4种文件,是"伪文件",不占用磁盘(硬盘)存储。
- 前3种文件,是真正的文件,消耗磁盘存储。
文件的访问属性
- 一共由9个字符组成,分为3组。每组rwx,没有对应权限,使用"-"占位
- 3组:依次是:“所有者”、“所属组”、“其他人”
- 所有者:创建该文件的用户
- 所属组:默认,A用户产生后,自动产生A用户组,将A用户,添加到A用户组。
- 其他人:既不是所有者、也不是所属组。就为其他人
- r:读权限
- w:写权限
- x:执行权限
其他文件操作命令
创建空文件
touch 文件名
# Linux系统中,不以后缀名作为区分文件的依据。
# touch a.b.c.d是合法的命名方式
创建空目录
mkdir 目录名
# 依次创建多级目录。使用-p选项
mkdir -p a/b/c/d
which
查看命令对应的可执行文件所在目录位置
rmdir
# 用来删除空目录,目录非空不能删除
rmdir d # 要求d必须为空
rm
rm命令删除的文件,不能恢复!!!
# 常用参数
-r:递归。删除多级子目录中的内容。--目录操作,必须添加该参数
-i:与用户交互式删除。
-f:强制操作。删除。
cp
# 语法:cp 参数A 参数B
:'
参数A文件
参数B,是目录,且目录存在:将A文件,拷贝放到B目录中
参数B不存在,且不是目录:将A文件,拷贝生成B。
参数B不存在,是目录。报错。
参数B,是已存在文件,A覆盖B!
参数A目录
必须添加参数:-r或-a
-r:递归。相当于新建文件。
-a:ALL。拷贝时,带有文件默认属性。
'
mv
:'
1.mv命令操作目录时,不需要额外参数
2.作用1:改名
mv 源文件 目标文件。 目标文件不存在,直接改名。
3.作用2:移动
mv 源文件 目标目录。目标目录存在。移动。
'
cat
:'
cat 文件名:查看文件内容,打印到屏幕上。
cat 文件名1 > 文件名2
文件名2如果不存在,新建。将文件名1的内容写入。
文件名2如果存在,将文件名1的内容覆盖。
cat 文件名1 << 文件名2
文件名2如果不存在,新建。将文件名1的内容写入
文件名2如果存在,将文件名1的内容追加到文件名2中
tac 文件名
将文件的内容倒序输出。
'
大文件查看命令
:'
more 文件名
作用:查看大文件。分屏显示
按Enter多显示一行
按Space多显示一屏
↑↓按键不起作用
按q退出查看
less 文件名
按Enter多显示一行
按Space多显示一屏
↑↓按键起作用
按q退出查看
tail 文件名
作用:查看文件的后5行
tail -5 vimrc
head 文件名
作用:查看文件的前5行
head-5 vimrc
'
ln命令
硬链接
# 特性:源文件和硬链接文件之间,有"同步更新"的特性
# 创建硬链接的语法:
ln 源文件名 硬链接文件名
# 原理:体现Linux系统管理文件的方式--数字化管理
# 查看文件的inode号
stat 文件名
ls -i 文件名
# 删除文件时,硬链接计数 -1。
不能给目录创建硬链接!
软链接
# 软链接创建语法:
ln -s 源文件名 软链接文件名
# 建议创建软连接时,使用绝对路径。防止搬移之后出错!
# 可以给目录创建"软链接"
wc
显示文件行数,字节数,单词数
# 显示文件的总行数
wc -l 文件名
# 显示文件的总字节数
wc -c 文件名
# 显示文件的总单词数
wc -w 文件名
whoami
作用:显示当前登陆的用户名
用户权限、用户、用户组
修改文件权限
文字设定法:
# 命令:
chmod [who][+|-|=] [mode] 文件名
# 操作对象[who]
u -- 用户(user)
g -- 同组用户(group)
o -- 其他用户(other)
a -- 所有用户(all)[默认]
# 操作符[+ - =]
+ -- 添加权限
- -- 取消权限
= -- 赋予给定权限并取消其他权限
# 权限[mode]
r -- 读
w -- 写
x -- 执行
# 示例:给文件file.txt的所有者和所属组添加读写权限
chmod ug+wr file.txt
数字设定法
# 命令:
chmod [who][+|-|=] [mode] 文件名
# 操作符[+ - =]
+ -- 添加权限
- -- 取消权限
= -- 赋予给定权限并取消其他权限
# 读、写、执行所对应的数字
r -- 4
w -- 2
x -- 1
# 每组的权限范围在0-7
# 举例:给文件file.txt的所有者和所属组添加读写权限
chmod 660 file.txt
添加删除新用户和新用户组
# 添加新用户
sudo adduser 新用户名
sudo addgroup 组名
# 依次输入信息,确认密码
# 查看用户
:'
/home目录下,多出新用户的 宿主目录。
可以在图形界面使用新用户登录。
在/etc/passwd文档的末尾处,新增 新用户相关信息(用户uid、用户组gid、宿主目录、默认解析器)
在etc/group文档中,新增 用户组相关信息
'
# 删除用户
sudo deluser 用户名
sudo delgroup 组名
# 系统默认,删除用户的同时,会清除用户组。
:'
/etc/passwd文件中,会对应删除相应用户数据
/etc/group文件中,会对应删除相应用户组数据
/home目录下,新用户的 宿主目录不会被系统删除。可以使用sudo rm -rf 用户名,删除掉宿主目录
'
切换用户
# 切换为管理员
sudo su
# 输入密码切换到root用户
# exit,退出当前登陆的用户
exit
# 切换为其他普通用户,以lisi为例
su - lisi
# 输入密码即可切换到lisi的用户,宿主目录会变为/home/lisi
su lisi
#宿主目录还是当前登陆用户的宿主目录,不会变为/home/lisi
# 退出当前登陆用户,也是用exit
exit
修改文件所有者和所属组
修改所有者
# 语法:
sudo chown 用户名 文件名
# 举例:
sudo chown lisi file.txt
修改所属组
# 语法:
sudo chgrp 用户组名 文件名
# 举例:
sudo chgrp lisi file.txt
一次性修改文件的所有者和所属组:
# 语法:
sudo chown 新用户名:新组名 文件名
# 举例:
sudo chown nobady:nogroup file.txt
查找和过滤
find
整体语法:
find 搜索路径(绝对、相对) 参数 条件
参数 -name:
- -name:按文件名搜索
- 通配符"*":匹配0-N个任意字符。
- 通配符"?":匹配1个任意字符。
# 查看当前目录下文件名存在file的文件,匹配多个字符
find ./ -name "file*"
# 查看当前目录下文件名存在file的文件,匹配1个字符
find ./ -name "file?"
参数 -type:
- -type:按Linux文件类型进行搜索
- 搜索普通文件,使用 f
- 搜索除 普通文件之外的文件。按7种Linux文件类型
# 搜索普通文件
find ./ -type f
# 搜索套接字文件
# find /temp -type s
# 搜索字符设备文件
find /dev -type c
# 搜索管道文件
find ./ -type p
参数 -size:
- -size:按文件大小搜索
- 注意事项:
- 取范围时,要有两个 -size参数
- k必须小写
- M必须大写
- G必须大写
- 注意事项:
# 查找大于3M小于5M的文件
find ./ -size +3M -size -5M
# 查找大于3k小于5k的文件
find ./ -size +3k -size -5k
# 查找大于3G小于5G的文件
find ./ -size +3G -size -5G
- 混合多个参数搜索:
# 查找文件名含有2018.jpg并且文件大于1k小于2M的文件
find ~/ -name "*2018.jpg" -size +1k -size -2M
参数 -maxdepth:
- -depth:指定搜索层级的深度
- 注意:-maxdepth应该放在其他参数的前面
find ~/ -maxdepth 4 -name "file*" -size +1k -size -2M
参数 -exec:
- -exec:将find搜索的结果,指定给某一个其他命令执行
# 语法:
find命令 -exec shell命令 {} \;
find ~/ -maxdepth 4 -name "file*" -size +1k -size -2M -exec ls -lh {} \;
参数 -ok:
- -ok:会在执行shell命令时,进行询问
# 语法
find命令 -ok shell命令 {} \;
find ~/ -maxdepth 2 -name "*2018.jpg" -size +1k -size -2M -ok ls -lh {} \;
- "|"结合xargs实现将find搜索的结果,指定给某一个其他命令执行。
find ~/ -maxdepth 2 -name "*2018.jpg" -size +1k -size -2M | xargs ls -lh
grep
- 按文件内容搜索!
- -i参数:忽略大小写
- -n参数:显示所在行行号
# 语法:
grep -r "关键字" 搜索目录位置
grep -r "love" ./
grep -r "LOVE" ./ -n -i
# 语法
grep "关键字" 文件名
grep -n -i "hello" a.txt
管道
- 管道(|):一个命令的输出可以通过管道做为另一个命令的输入
- 这里的"|"的左右分为两端,左端写入,右端读
cat /etc/passwd | less
帮助文档查看方法
man
- man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。
- 该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏览不同的内容。
man 中各个 section 意义如下:
1 Standard commands(标准命令)
2 System calls(系统调用,如open,write)
3 Library functions(库函数,如printf,fopen)
4 Special devices(设备文件的说明,/dev下各种设备)
5 File formats(文件格式,如passwd)
6 Games and toys(游戏和娱乐)
7 Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
8 Administrative Commands(管理员命令,如ifconfig)
- man的命令格式:
man [选项] 命令名
# 输入以下命令,显示以下图片内容
man man
man设置了如下的功能键
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
内建命令和外部命令
-
内建命令:简单理解就是系统自带一些命令
-
外部命令:简单理解就是安装第三方软件带的一些命令
-
命名类型查看方法
- 格式:使用type命令查看
- type [-afptP] 名称 [名称…] 显示命令类型的信息
- 格式:使用type命令查看
-
使用方法示例
-
内建命令(help)
- 格式:help+内建命令
应用示例
- 格式:help+内建命令
-
外部命令(-- help)
- 一般是Linux命令自带的帮助信息,并不是所有命令都自带这个选项
- 如果我们想查看命令ls的用法:ls --help
压缩包管理
- Linux系统下支持gzip和bzip2两种压缩
tar
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
- tar使用格式:tar [选项] 打包文件名 文件
注意:tar命令很特殊,其选项前面可以使用’-',也可以是不使用 - 常用参数
参数 | 含义 |
---|---|
-c | 生成档案文件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面一定是.tar文件,所以必须放到选项最后 |
-t | 列出归档中包含的文件 |
-x | 解开档案文件 |
注意:除了f放在参数的最后,其他参数的顺序任意
- 示例
tar常用命令:
tar -cvf 创建归档文件
tar -xvf 解除归档文件(还原)
tar -tvf 查看归档文件内容
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
- 示例
- gzip(-z)调用该压缩类型
-
压缩都是不保留原文件进行压缩
-
gzip不能直接压缩目录,如果想压缩目录必须先使用tar打包,再压缩
-
压缩用法:tar zcvf 压缩包包名 文件1 文件2 …(常用)
-
解压缩用法:tar xcvf 压缩包包名 文件1 文件2 …(常用)
-
- bzip2(添加-j)调用该压缩类型
- 压缩用法:tar jcvf 压缩包包名 文件…(tar jcvf bk.tar.bz2 *.c)
- 解压用法:tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
- 解压到指定目录:-C (大写字母“C”)
# 例如
tar xcvg 压缩包名 -C ./wjg
万能解压:tar xvf 文件名(gzip、bzip2) |
进程管理
ps
ps命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下:
选项 | 含义 |
---|---|
-a | 显示终端上的所有进程,包括其他用户的进程 |
-u | 显示进程的详细状态 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运行的进程 |
top
top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以在使用top命令时加上-d 来指定显示信息更新的时间间隔。
在top命令执行后,可以按下按键得到对显示的结果进行排序:
按键 | 含义 |
---|---|
M | 根据内存使用量来排序 |
P | 根据CPU占有率来排序 |
T | 可以根据进程的运行时间的长短来排序 |
U | 可以根据后面输入的用户名筛选进程 |
K | 可以根据后面输入的PID来杀死进程 |
Q | 退出 |
H | 获取帮助 |
- 示例
kill
- kill命令指定进程号的进程,需要配合ps使用
# 使用格式
kill [-signal] pid
# 信号值从0-15,其中9为绝对终止,可以处理一般信号无法终止的进程
kill 9122 # 9122为应用程序所对应的进程号
# 有些进程不能直接杀死,这时候我们需要加一个参数"-9","-9"代表强制结束
kill -9 9375
killall
- 通过进程名字杀死进程
软件的安装和卸载
常用的在线安装和卸载命令
命令 | 含义 |
---|---|
sudo apt-get update | 获取最新的软件包的列表 |
sudo apt-get install xxx | 从源中安装xxx软件 |
sudo apt-get remove xxx | 删除xxx软件 |
sudo apt-get clean | 清理安装包 |
- 软件包安装
在Ubuntu下安装文件为deb格式
- 软件安装
- sudo dpkg -i xxx.deb
- 软件卸载
- sudo dpkg -r 软件名
- 软件安装
tree命令
- tree 以树状形式查看指定目录内容
参数:-L n:
查看n层目录
示例