Linux指令
1.日常指令
1. cd指令 - 进入文件夹
cd ------>文件夹路径(路径可以是绝对地址也可以是相对地址)-进入到指定路径对应的文件夹
cd .. ------>返回上层目录
cd / ------>进入系统根目录
cd ~ ------>进入电脑根目录
2. ls指令 - 显示当前目录中的内容
ls ------>直接显示当前文件夹中的内容的名字(隐藏文件和文件夹` 看不到)
ls -l ------>直接显示当前文件夹中的内容的名字(隐藏文件和文件夹看不到)
ls -lh ------>显示当前文件夹中的内容和内容的基本信息(隐藏文件和文件夹看不到)
ls -a ------>显示当前文件夹中所有的内容(包括隐藏文件)
ls -R ------>递归显示当前目录以及当前目录下所有的子目录中的内容
ls -r ------>内容倒序显示
ls -S/-t ------>显示文件夹中的内容,并且内容按大小/时间从大到小排序
ls -Sr ------>按文件大小从小到大排序
ls -Srlh ------>按文件大小从小到大排序,并且显示内容的基本信息
3. pwd指令
pwd ------>查看当前目录的绝对路径
4.文件操作
1)touch指令 新建文件
touch 文件路径文件名------>在指定位置创建指定文件
touch ../a.txt ------>在当前目录的上层目录新建一个文件a.txt
touch /home/a/a.txt ------>在根目录下home目录中的a目录里面创建一个文件a.txtl
2)cat指令 查看文件内容(读文件)
cat 文件路径文件名 ------>读取指定路径对应的文件的内容
3)vim指令
vim 文件路径文件名 ------>使用vim打开文件
5文件夹操作
mkdir 新文件夹路径文件夹名 ------>在指定位置创建文件夹,若没有会报错
mkdir -p 新文件夹路径文件夹名 ------>在指定路径创建指定文件夹,若没有就创建
mkdir -p a/{b,c,...}/{d,e,f,g,...} ------>在当前位置创建a,在a内创建多个文件夹,在多个文件夹内再创建多个相同的文件夹
6删除文件和文件夹
1)rm指令 删除文件和文件夹
rm 文件路径文件名 ------>删除指定文件(删除的时候会循环是否确定删除,y-同意,n-不同意)
rm -f 文件路径文件名 ------>删除指定文件(删除的时候不询问)
rm -r 文件夹路径文件夹名 ------>删除指定文件夹
2)rmdir指令 删除空文件夹
rmdir 文件夹路径------>删除空文件夹
7拷贝和移动
1)拷贝
cp 文件路径1 文件路径2------>将文件1中的内容复制粘贴到文件2(如果文件2不存,会自动创建;如果存在会询问是否覆盖)
cp 文件路径 文件夹路径------>将指定文件复制粘贴到指定文件夹中
cp -r 文件夹路径1 文件夹路径2------>将文件夹1复制粘贴到文件夹2中
2)移动
mv 文件路径1 文件路径2 ------>将文件1移动到文件2所在的位置
**mv 文件名1 文件名2 ** ------>将文件1重命名为文件2(若两个文件同时存在同一文件夹中,则重命名后文件2会被删除,文件1会被重命名)
mv 文件路径 文件夹路径 ------>将文件直接移动到指定文件夹中
**mv 文件夹路径1 文件夹路径2 ** ------>将文件夹1移动到文件夹2中
8获取指令的历史记录
history ------>显示当前系统已经执行过的所有指令
如果想要显示历史记录的时候显示指令执行的时间需要修改~/.bashrc文件:
export HISTTIMEFORMAT="[%y-%m-%d_%T%M%S]"
修改完成后需要通过指令:source ~/.bashrc去执行这个配置文件,最后历史记录的时间才会生效
9创建链接
1)创建软链接
ln -s 源文件路径 入口文件位置 ------> 给源文件在指定位置创建一个软链接(软连接本质就是用来保存源文件绝对地址的一个文件)
注:源文件路径必须是绝对路径,如果删除或者移动源文件,软连接会直接无效
2)创建硬链接
ln 源文件路径 硬连接文件地址 ----->给源文件在指定位置创建一个硬链接硬链接的本质就是源文件内容的另外一个引用(相当于文件的另一个文件名),所以删除或者移动源文件硬链接仍然有效,只是删除硬链接会变成普通文件
10进程相关指令
1)ps指令
ps ------>查看当前进程状态
ps -aux ------>查看当前进程所有状态
ps grep 进程名/id ------>根据进程名/进程ID查看指定进程
2)top指令
top ------>实时查看当前所有的进程信息和系统信息
top -p PID1,PID2,... ------>实时监测指定的进程
3)free指令
free ------>显示当前系统的内存信息,显示的时候以kb为单位
free -单位 ------>显示当前系统的内存信息,以指定单位来显示
free -m - 显示当前系统的内存信息,以Mb为单位
4)kill指令
kill 进程ID ------>杀掉指定ID对应的进程
kill -1/-9/-15进程ID ------>以指定的方式杀掉进程(-1表示不间断重启;-9表示强制杀死进程;-15表示正常结束进程)
pkill 进程名 ------>杀死指定进程名对应的进程(中间可以加-1/-9/-15)
killall 进程名 ------>杀死和进程名相关的所有进程
5)uptime指令
uptime ------>查看系统的基本信息(启动时间等)
11用户管理
一个Linux操作系统可以有多个用户(user),也可以有多个用户组(group);
users ------>查看当前用户
groups ------>查看当前分组
groupadd 分组名 ------>创建分组(管理员才能创建;可以通过查看/etc/group文件来查看当前系统所有的分组)
useradd 用户名 ------>创建指定用户(1.用户创建成功后系统会自动在/home目录下创建一个和用户名同名的文件夹;2.会自动创建和用户名同名的分组,并且将当前用户添加到这个分组中)
useradd -G 分组1,分组2… 用户名 ------>创建指定用户,并且将用户添加到指定分组
usermod -G 分组1,分组2 用户名------>修改用户分组
password 用户名 ------>修改用户密码(需要root权限)
su 用户名 ------>切换账号(root登录的时候切换不需要密码)
exit ------>退出当前账号
sudo -在命令前sudo是以管理员身份执行指令
注意:不是所有的用户都可以通过sudo来以管理员身份执行指令,如果想要能够使用sudo必须添加配置
①. ubuntu:将需要有管理员身份的账号添加到sudo分组中
②. redhat和contos:在/etc/sudoers配置文件中添加代码:
#Allow root to run any commands anywhere
root ALL=(ALL)ALL#(默认有的)
xiaoming ALL=(ALL)ALL#(自己添加的,xiaoming是用户名)
12文件权限
默认情况下文件和文件夹的权限:文件所有者有读写权限,同组用户和其他用户都是只读权限.
文件类型 | 所有者权限 | 同组用户权限 | 其他用户权限 |
---|---|---|---|
d(目录) | rwx | r-- | --- |
-(文件) | rwx | r-- | --- |
l(连接) | rwx | r-- | --- |
chmod 权限值 文件路径 ------>将指定文件的权限修改成指定值
chmod [a,u,g,o]/[+-]/[r,w,x] 文件地址 ------>给指定文件对应指定用户添加或者删除指定权限(a-所有用户,u-文件所有者,g-同组用户,o-其他用户;+表示添加权限,表示删除权限;r-表示读权限,w表示写权限,x表示执行权限)
chmod a-x 文件地址 #删除所有用户的执行权限
chmod u+w 文件地址 #给文件所有者添加写的权限
13日志管理
1)查看文件
cat 文件 ------>直接查看文件所有内容(查看文件内容的时候可以加参数-n,让内容在显示的时候显示行号)
head -N 文件地址文件名 ------>显示指定文件前N行内容
tail -N 文件地址文件名 ------>显示指定文件后N行内容
less 文件 ------>按页显示文件内容(通过快捷键控制内容显示过程;文件内容不会打印到shel/终端里)
less -N 文件 ------>按页显示文件内容,每次翻页的时候翻N行
more 文件 ------>按页显示文件内容(通过快捷键控制内容显示过程;文件内容会打印到shell/终端里)
more -N 文件 ------>按页显示文件内容,每次翻页的时候翻N行
快捷键:
按j向下一行
按k向上一行
按f向下翻一页
按b向上翻一页
按g到全文开头
按G到全文结尾
按Q退出
2)文件处理
凡是有的打印结果的指令,我们都可以通过相关指令对应结果进行处理
如果需要对某一个指令的结果使用另外的指令进行二次处理的时候,就需要用到管道 |
sort-排序
sort ------>从小到大排序(将一行内容作为一个字符串,按字符串大小对应内容进行排序,默认不区分大小写)
cat a.txt | sort ------>对a.txt的文件内容从小到大排序显示
参数:
-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的文件内容按字符大小从大到小排序
uniq-去重
uniq ------>只能将紧挨着的相同行去掉重复的(如果需要去掉所有重复的行,先排序将相同的行放到一起)
cat a.txt | unkq ------>去掉a.txt文件内容中相邻重复的行
cat a.txt | sortluniq ------>去掉a.txt文件内容中所有重复的行
-c ------>重复欠数
awk-获取列
awk '{print $N}' ------>获取内容中第N列的数据
historylawk '{print $2}'------>获取历史记录第2列的内容
historylawk'{print $2,$3}'------>获取历史记录第2列和第3列的内容
练习:
history | awk '{print $4}'|sort|uniq -c|sort -rnk 1|head -5
显示最常用的指令和使用次数
3)输出重定向
执行有打印结果的指令 > 文件地址 ------>将指定指令执行的结果保存到指定文件中(先清除原文件内容再添加)
执行有打印结果的指令 >> 文件地址 ------>将指定指令执行的结果保存到指定文件中(直接将结果追加到原文件中)
history > a.txt ------>将当前历史记录直接保存到a.txt文件中
将最常用的3个指令及其使用次数保存到a.txt文件中
history l awk'{print $4}'lsort luniq-c I sort-rnk 1 I head-n3>a.txt
4)统计
wc -c/-w/-l 文件地址 ------>统计指定文件中字符/单词/行的数量
5)查找
- 查找文件内容 grep
①: 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的所有的行
②: 执行有打印结果的指令 |
**grep 内容 ** ------>在指令执行结果中查找指定内容
③: grep -r 内容 文件夹地址 ------>在指定文件夹中所有的文件内容中查找指定内容
- 查找文件名 find
①: find 文件夹路径 -name 文件名 ------>在指定文件夹下按文件名找指定文件
找指定文件名
find dirl -name 'test1.py' #在文件夹dir1找名字是test1.py的文件
find dirl -name '*.txt' #在文件夹dir1找后缀是txt的所有文件
find dirl -name ' test*. txt'
find dirl -name ' test*'
find dirl -name '*c. txt'
②: find 文件夹路径 -size +/-文件大小 ------>在指定文件夹下找文件大小满足条件的所有的文件
find dirl -size +4k------>查找在文件夹dir1中所有大于4k的文件
find dirl -size -4k------>查找在文件夹dir1中所有小于4k的文件
find dirl -size +5k -size -10k ------>查找在文件夹dir1中所有大于5k并且小于10k的文件(文件大小如果是小数,算
的时候向上取整)
find dirl -size +4k -name '*.txt'------>查找在文件夹dir1中所有大于4k的txt文件
- 查指令
which 指令名 ------>精确查找当前指令对应的文件的路径
whereis 指令名 ------>查找和指定指令相关的所有的文件的路径
man 指令名 ------>获取指定指定的使用手册
指令名 --help ------>获取指定指令的帮助文档
14网络管理
ifconfig ------>查看网卡状态
netstat -natp ------>查看网络连接状态
netstat -natp | grep 端口号 ------>查看指定端口的网络连接状态
ping ip地址 ------>给指定地址的服务器发送数据(主要用来检测当前网络通不通)
ping -i 时间(秒) IP地址 ------>每隔指定时间ping一次(时间可以是小数)
ping -c 次数 IP地址 ------>ping指定次数(不限制次数的时候会不断的ping)
wget 地址------>下载
15压缩和归档
压缩可以让文件变小,一般在需要传输前都会先对文件进行压缩.注意,压缩指令只针对文件有效,并且一次只能压缩一个文件.
归档可以将一个文件夹变成一个文件(tar文件)
1)归档和解归档
tar -cvf 归档后文件存放的地址(归档后的文件名) 需要归档的文件 ------>将文件进行归档操作(既可以对文件进行归档也可以对文件夹归档)
tar -xvf 归档文件地址 ------>将指定的归档文件解归档
2)压缩和解压缩
**gzip 文件地址 **------>压缩指定文件(压缩后会生成一个gz文件,并且会删除原文件)
gzip -c 需要压缩的文件地址文件名 > 压缩文件地址 ------>将指定文件压缩到指定位置,并且保留原文件
gzip -d 压缩文件地址 ------>解压指定文件(解压完成后会删除原压缩文件)
gzip -l 压缩文件地址 ------>列出压缩文件中的内容
xz 文件地址 ------>压缩指定文件(压缩文件后缀是xz)
xz -d 压缩文件地址 ------>解压指定文件
gunzip 压缩文件地址 ------>解压指定文件(解压完成后会删除原压缩文件)
16包管理工具(软件安装)
包管理工具: yum
- yum search: 搜索软件包,例如yum search nginx.
- yun list installed:列出已经安装的软件包,例如yum list installed I grep z1ib.
- yum instal1:安装软件包,例如yum insta11 nginx.
- yum remove:删除软件包,例如yum remove nginx.
- yum update:更新软件包,例如yum update可以更新所有软件包,而yum update tar只会更新tar.
- yum check-update:检查有哪些可以更新的软件包.
- yum info:显示软件包的相关信息,例如yum info nginx.
源代码构建安装软件:
- wget 安装包的路径 -下载安装包
- gunzip/tar 压缩包 - 解压、解归档
- (设置安装路径)
- cd 安装包目录 执行: make && make install -编译安装包程序
- 给可执行文件添加软连接到usr/bin目录下 -添加快捷方式
#源代码构建python3.x
[root ~]# yum install gcc (安装编译环境)
[root ~]# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz (下载安装包)
[root ~]# gunzip Python-3.6.5.tgz (解压)
[root ~]# tar -xvf Python-3.6.5.tar (解归档)
[root ~]# cd Python-3.6.5 (进入安装包)
[root ~]# ./configure --prefix=/usr/local/python36 --enable-optimizations (设置安装路径)
[root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel (安装相关依赖库)
[root ~]# make && make install (编译执行安装文件)
...
[root ~]# ln -s /usr/local/python36/bin/python3.6 /usr/bin/python3 (给python指令文件创建快捷方式python3)
[root ~]# python3 --version
Python 3.6.5
[root ~]# python3 -m pip install -U pip (安装pip)
[root ~]# ln -s /usr/local/python36/bin/pip /usr/bin/pip3 (给pip指令创建快捷方式pip3)
[root ~]# pip3 --version