Linux操作系统shell指令详解

shell指令基本概念

命令行提示符

bash 复制代码
ubuntu:用户名
@:分隔符
ubuntu:主机名
~:家目录,(当前所在的路径)
$:普通用户权限 root:#

切换用户

bash 复制代码
su 用户名 ----->切换到指定用户
su ----->默认切换到超级用户
sudo 加在指令前 ----->用超级用户的权限执行后面的指令

修改密码

cpp 复制代码
passwd 用户名 ----->修改指定用户的密码
普通用户修改管理员用户的密码需要加sudo
输入的密码不会回显

查看当前目录下的文件

cpp 复制代码
ls 目标路径 ------->回显指定路径下的所有文件名
ls 目标文件 ------->回显文件名
ls -a ---->查看所有文件,包括隐藏文件,.开头的都是隐藏文件
ls -lh ---->查看文件的详细信息,给文件的大小带单位的显示
ls -i ---->显示文件的inode号

-rw-rw-r-- 1 ubuntu ubuntu 4549 八月 22 14:51 test.s
文件类型:7种
b:块设备文件 -:普通文件
c:字符设备文件 l:软连接文件
d:目录文件 s:套接字文件
p:管道文件
rw-rw-r--
r:可读 w:可写 -:没有权限 x:可执行权限
八进制数表示文件权限:
r:4 w:2 x:1

修改文件权限---chmod

cpp 复制代码
字母表示法:
chmod 用户+/-/=权限的字母表示 文件名

八进制表示法:
chmod 0三位八进制数 文件名
chmod 4 1.c ------> 把1.c的其他用户权限改为4,所属组和所属用户没有权限

cd 切换路径

cpp 复制代码
cd ---->默认切换到当前用户的家目录
超级用户的家目录:在根目录下 /root

touch

cpp 复制代码
创建文件 touch 文件名
1、文件本身不存在,创建该文件
2、文件已经存在,更新文件的时间戳

cat

cpp 复制代码
cat 文件名
回显文件的内容

echo

cpp 复制代码
echo 字符串 ------>回显一遍字符串

mkdir

cpp 复制代码
mkdir /dir1/dir2/dir3 -p 实现多级目录的创建

rm/rmdir

cpp 复制代码
rmdir 空目录 ----->删除空目录
rm -r 非空目录 ----->删除非空目录

在线下载软件

cpp 复制代码
sudo apt-get install 软件名   ---->下载软件
sudo apt-get install oneko   --->追鼠标的猫
sudo apt-get install bastet  --->俄罗斯方块
下载软件后,如何执行:
直接在终端输入软件名
以oneko为例,直接输入软件名,会在前台执行,没有办法去写其他的指令
oneko&  ---->让onkeo后台运行,会回显一个进程号
可以直接使用kill -9 进程号,杀死进程
sudo apt-get install gnome-mines   ---->下载扫雷
sudo apt-get remove 软件名  --->卸载软件,不完全卸载
sudo apt-get remove 软件名 --purge  --->卸载软件,完全卸载
sudo apt-get download 软件名  --->下载软件的安装包
download指令会把安装包下载在执行指令的路径下
sudo apt-get clean  ---->清空默认下载位置的安装包
/var/cache/apt/archives/  ---->软件包的默认下载位置

sudo apt-get install make

离线安装软件

离线安装软件不会检查软件依赖,也不会自动下载软件依赖,对于需要软件依赖的软件进行离线安装会报错,在线安装软件,会检查软件依赖,并主动安装软件依赖

软件安装包的命名

cpp 复制代码
oneko _1.2.sakura.6 -13 _amd64. deb
|          |         |    |      |
软件名 主版本号 修订版本号 架构 软件包后缀
64位架构 符合Debian软件包的标准
i386 ---->支持32位架构
Linux下的软件包标准:
Debian标准,Debian系统使用的软件,deb
redhat标准,rpm

离线安装软件的指令

cpp 复制代码
dpkg ----->debian package的缩写

下载:sudo dpkg -i 软件包名 (重点掌握) 注意事项:如果执行指令的路径和安装包不在同一路径下,要给安装包加上路径 卸载:sudo dpkg -r 软件名 ---->不完全卸载软件 sudo dpkg -P 软件名 ---->完全卸载软件

文件相关的指令

cpp 复制代码
cat 文件名 ----->查看文件中的所有内容
head 文件名 ----->默认回显文件的前10行 head -n 文件名 ----->指定回显文件的前n行

tail

cpp 复制代码
tail 文件名 ------>回显文件的后10行 tail -n 文件名 ----->回显文件的后n行 head和tail,默认显示前10行和尾10行,如果不足就全部显示, 如果超过10行,只显示10行

管道符 |

cpp 复制代码
指令1 | 指令2 | 指令3 | ·····
把前一条指令的输出当作后一条指令的输入
查看1.c文件的第4行: head -4 1.c | tail -1

find**

cpp 复制代码
通常使用find查找文件,结果都是绝对路径

格式: find 要查找的路径 -name 要查找的文件名 find可以实现模糊查找,已经不记得具体的文件名,只记得部分文件名 已知文件以1开头,.c结尾,不知道具体的文件名 find 目标路径 -name 1\*.c find的使用场景: 在项目开发的过程中,多个文件中某一个文件报错,可以使用find以及文件名,快速找到文件的位置

通配符

cpp 复制代码
*:可以任意通配一个或多个字符
?:通配任一个字符,如果想使用?通配多个字符,多加几个?,有几个匹配几个
[]:通配[]内的任一个字符
[1234]:通配1234中的任一个字符
[2-5]:通配2-5中的任一个字符
[12347-9]:通配1234和7-9中的任一个字符
[1234,7-9]:通配1234、7-9和,中的任一个字符   

file ---->查看文件

cpp 复制代码
a.out:文件名 
ELF:是一个ELF类型的文件
64-bit:支持64位操作系统
LSB shared object:小端存储
x86-64 ----->架构
version 1 (SYSV) ---->版本
dynamically linked, interpreter /lib64/l, --->链接的库
for GNU/Linux 3.2.0  ---->gcc编译器的版本
BuildID[sha1]=60b94b36154878cc979cc2aae1af6e92a45f044f, ---->动态ID

wc ----->(word count)

cpp 复制代码
wc 文件名
回显行号,单词个数,字符个数,文件名
wc -l 文件名   ---->回显文件的行数
wc -w 文件名   ---->回显文件单词的个数
wc -c 文件名   ---->回显文件字符的个数

查找字符串 ---->grep

cpp 复制代码
grep  "要查找的字符串"  要查找的路径  (参数)
-n:查找的同时显示字符串所在行
-i:不区分大小写
-R:递归查找   ---->只用于目标路径是目录不是文件
-w:按单词查找 

grep "ubuntu$" 文件名   ---->查找以ubuntu作为结尾的所在行
grep "^ubuntu" 文件名   ---->查找以ubuntu作为开头的所在行
grep "^ubuntu$" 文件名   ---->要求开头和结尾是同一个ubuntu

cut ----->字符串裁剪

cpp 复制代码
cut -d "分隔" -f "要截取的域" 文件名
cut -d ":"  -f "1"  /etc/passwd
截取/etc/passwd中,所有以":"分隔的,第一个域

压缩和解压缩

压缩和解压缩后源文件都不存在

cpp 复制代码
gz   ---->压缩生成.gz后缀的文件
xz   ---->压缩生成.xz后缀的文件
bz2  ---->压缩生成.bz2后缀的文件

gzip  要压缩的文件
bzip2 要压缩的文件
xz    要压缩的文件

解压缩
unxz  要解压缩的文件  ---->把压缩文件解压出来,压缩文件.xz会消失
gunzip 要解压缩的文件
bunzip2 要解压缩的文件

三种压缩工具的压缩效率:xz > bz2 > gz

三种压缩工具的压缩时长:xz > bz2 > gz

xz需要时间更长,适用于对文件归档

gz需要时间更短,适用于临时文件传输

tar 文件归档并压缩

归档和拆包后源文件仍然存在

i)归档

把多个文件打包生成一个文件

cpp 复制代码
tar -cvf  要生成的文件名.tar  要打包的文件
-c:归档/打包的参数
把要打包的文件生成一个新的文件.tar

tar指令提供的压缩参数:
-j:使用bz2工具压缩
-J:使用xz工具压缩
-z:使用gz工具压缩

tar -czf  生成的文件名.tar.gz  要打包并压缩的文件
tar -cjf  生成的文件名.tar.bz2 要打包并压缩的文件
tar -cJf  生成的文件名.tar.xz  要打包并压缩的文件

ii)拆包并解压缩

cpp 复制代码
tar -xvf 要拆包(解压缩)的文件   ---->既可以完成拆包也可以完成解压缩
万能的拆包解压缩指令

仍然可以使用对应的压缩参数进行解压缩,-j、-J、-z

注意:

有万能的拆包指令,但是没有万能的归档并压缩指令

所以在进行归档并压缩时,压缩工具和压缩生成的文件后缀必须严格一致

文件权限相关的操作

chgrp --->修改文件的所属组用户

cpp 复制代码
由于现在都是在ubuntu用户和root用户之间转换,所以需要加sudo,如果是两个普通用户之间的转换不需要加sudo
例:有文件2.c
sudo chgrp root 2.c  --->把2.c文件的所属组用户改为root

chown --->修改文件的所属用户

cpp 复制代码
由于现在都是在ubuntu用户和root用户之间转换,所以需要加sudo,如果是两个普通用户之间的转换不需要加sudo
sudo chown root: 1.c  修改1.c的所属用户和所属组用户为root
sudo chown :root 1.c  修改1.c的文件所属组用户为root
sudo chown root 1.c   修改1.c的所属用户为root
sudo chown ubuntu:root 1.c   修改1.c的文件所属用户为ubuntu,所属组用户为root
相关推荐
zym大哥大6 分钟前
Linux的权限
linux·服务器
伴野星辰31 分钟前
小乌龟TortoiseGit 安装和语言包选择
linux·运维·服务器
枫叶丹437 分钟前
【在Linux世界中追寻伟大的One Piece】多线程(一)
java·linux·运维
残念ing39 分钟前
【Linux】—简单实现一个shell(myshell)
linux·运维·服务器
明月心9521 小时前
linux mount nfs开机自动挂载远程目录
linux·运维·服务器
Ray55051 小时前
bridge-multicast-igmpsnooping
linux·服务器·网络
库库的里昂1 小时前
Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程
linux·运维·docker·开源
在下不上天1 小时前
flume-将日志采集到hdfs
大数据·linux·运维·hadoop·hdfs·flume
mit6.8242 小时前
[Redis#3] 通用命令 | 数据类型 | 内部编码 | 单线程 | 快的原因
linux·redis·分布式
^Lim2 小时前
esp32 JTAG 串口 bootload升级
java·linux·网络