1. 目录命令
ls命令 显示目录下文件
指令常用:ls -alth
- -l:表示list,表示以详细列表的形式进行展示
- -a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
- -h:表示以可读性较高的形式显示,同时文件大小用k表示
关于用户组权限
drwxr-xr-x
-
第一个字母:文件类型
- -:二进制文件;d:目录;l:软链接文件
-
后九个字母:以三个字母为一组,表示用户组权限(所有者u、所属组g、其他人o)
- r:读;w:写;x:执行;-:表示无相关权限
.开头的文件都是隐藏文件,隐藏文件是配置文件,是为了防止修改
ls的通配符:补充:Linux之通配符
符号 | 作用 |
---|---|
* | 代表0或者任意多个字符 |
? | 代表一个字符 |
[abcd] | abcd中的一个字符 |
[a-z] | a到z的一个字符 |
多个文件的编辑:echo
linux中文件的后缀可以加可不加,加上方便识别,在linux中很多文本是没有任何后缀的
指令 | 作用 |
---|---|
echo xxx > xxx.txt | 写入(覆盖) |
echo xxx >> xxx.txt | 追加(末尾) |
ls > xx.txt | 查询结果覆盖xx文件中 |
ls >> xx.txt | 查询结果追加在xx文件中 |
ls -lh > xx.txt | 格式化的查询结果覆盖在xx文件中 |
例如
若需要把结果都存放在一个文件
./a.out >> test.txt &
//&表示在后台运行
管道
- 把一个命令的输出,通过管道连接,作为另一个命令的输入
- 管道连接通过 | 建立。
例如
grep -v ^'#' /etc/services | more //分页显示
ls -lh | grep 125 //在模糊搜索结果中查找文件内容包含125的文件
2. 文件命令
df命令 查看文件大小:
df -h /opt
cp命令 拷贝文件/目录
拷贝文件夹到指定目录:
cp -r myfolder/ ../testcpp/
cp指令 带rf参数
表示:
mv命令 移动/重命名
移动文件/文件夹:
mv myfolder ../testcpp/
重命名文件:
mv myfile myfile01
cat、more命令 查看文件内容
查看文件内容:cat和more
指令 | 作用 |
---|---|
cat xx.txt | 显示所有文件内容 |
cat -b xx.txt | 显示行号 去除空行 |
cat -n xx.txt | 显示行号 包含空行 |
more xx.txt | 分页显示文件内容 下一页(空格) 上一页(b) 下一行(Enter) |
less命令 分页查看文件
分页查看文件:less <filename>
操作:
- 向下翻页:空格或 f
- 向上翻页:PageUp
- 下一行:Enter或↓
- 上一行:↑
- 退出:q
- 搜索:/ <搜索项>,n 下一项
rm命令 删除/复制/移动
命令选项 | 说明 |
---|---|
-i | 交互式提示 |
-r | 递归删除目录及其内容 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-d | 删除空目录 |
删除目录(文件夹)需要带 -r
复制目录(文件夹)需要带 -r
移动目录(文件夹)不需要带 -r
很少使用rmdir
3. 查找命令
find命令 查找文件
- 以文件名查找文件:
find <path> -name <filename>
- 不区分大小写:-iname
示例一:find /home -name 123 //精确搜索
示例二:find /home -name 123* //模糊搜索 通配符,其他用法:*123* 123??
示例三:find /home -iname abc //选项-i 不区分大小写
示例四:find / -size +204800 //根据文件大小搜索,1数据块=512字节Byte=0.5KB
//-204800 204800 // 100MB 100*1024KB 100*1024*2*数据块
示例五:find /home -user siki//根据用户名查询
示例六:find /home -mmin -5 //文件内容上次被修改时间在5分钟以内
//mmin上次文件内容被修改时间
//amin 上次文件被访问时间
//cmin 上次文件属性(文件的权限)被修改时间
//-5 5分钟以内 +5超过5分钟
示例七:find /home -type f //-type文件类型 f文件d目录(文件夹)l软链接文件(Link)
示例八:find /home -name 123 -a -size +5 //-a and同时满足 -o or或者,满足其中一个即可
示例九:ls -i //先展示用户id,
find /home -inum 343//然后根据用户id查询
示例十:find /home ! -name "*.txt" //找出/home下不是以.txt结尾的文件
-
按照文件大小查找:
find <path> -size [+\-]<filesize>
-
按照文件类型查找:
find <path> -type <filetype>
- f:文件;d:目录;l:软链接文件
-
额外选项
-
-a:两个条件都满足
-
-o:两个条件满足一个即可
-
对搜索结果执行操作:
-exec <command> {} \
;
-
$ find /etc -name init* -exec ls -l {} \;
搜索指令:locata
- 优点:查找快,因为它搜索的是自己的索引库
- 缺点:最新文件找不到(需要时间更新索引库)
需要手动更新索引库
sudo updatedb //命令前面加sudo表示通过管理员方式运行
grep命令 文件内搜索
- 在文件内搜索指定内容并显示:
grep [option] <string> <filename>
指令 | 作用 |
---|---|
grep -n xx xx.txt | 显示包含内容行的行号 |
grep -w xx xx.txt | 整词查找xx内容 |
grep -v xx xx.txt | 去掉包含xx内容的行,显示其他所有内容 |
grep -v # xx.txt | 去掉带#的行(去掉带注释的行) |
grep -v ^# xx.txt | 去掉只有注释的行 |
grep #$ xx.txt | 去掉以#结尾的行, ^x开头的行 x$以x结尾的行 |
grep -i xx xx.txt | 忽略大小写搜索 |
$ grep -in helloworld main.cpp
6: cout << "HelloWorld!" << endl;
一般使用命令:grep abc * -nwr
4. 压缩与解压缩命令
参考博文:Linux压缩与解压【tar】
gzip/gnzip命令 .gz格式文件
-
压缩文件为.gz格式:
gzip <filename>
- 注意:gzip只能压缩文件,且会删除原文件
-
解压.gz格式的压缩文件:
gnzip <filename>
tar命令 .tar.gz格式文件
tar选项:
- -c:打包
- -x:解包
- -v:显示详细信息
- -f:指定文件名
- -z:压缩/解压缩
-
压缩文件为.tar.gz格式:
tar -zcf <xx.tar.gz> <foldername>
-
解压.tar.gz格式的压缩文件:
tar -zxf <xx.tar.gz>
rar和zip命令 .rar和.zip格式文件
rar testcpp/ testcpp.rar
#rar格式的压缩,需要先下载rar for linux
zip testcpp.zip testcpp/
#zip格式的压缩,需要先下载zip for linux
unrar e testcpp.rar
#rar格式的解压缩,需要先下载rar for linux
unzip testcpp.zip
#zip格式的解压缩,需要先下载zip for linux
5. 网络管理命令
“w命令”查看用户登录详细信息
03:36:33 up 3 min, 1 user, load average: 0.99, 0.81, 0.35
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
book :0 :0 03:35 ?xdm? 25.17s 0.00s /usr/lib/gdm3/g
参数解释:
- tty:本地登录;pts远程终端
- up:系统连续运行的时间
- load average:系统负载
- IDLE:累计空闲时间
- JCPU:占用CPU时间
ifconfig命令 查看和设置网卡信息
语法:ifconfig <网卡名称> <IP地址>
last命令 列出所有登入系统的用户信息
last命令 列出所有登入系统的用户信息
traceroute命令 显示数据到主机的路径
类似于ping,但是提供更详细的输出
需要安装:sudo apt install traceroute
查询网络链路通畅
$ traceroute www.baidu.com
traceroute to www.baidu.com (110.242.68.3), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 2.220 ms 2.335 ms 2.509 ms
2 192.168.10.1 (192.168.10.1) 4.864 ms * 9.310 ms
类似的工具还有:网络测试工具——tcping
netstat命令 显示网络信息
语法:netstat [options]
options:
- -t : tcp协议
- -u : udp协议
- -l : 监听
- -r : 路由
- -n : 显示IP地址和端口
通过查看开启端口进而查看本机开启的服务:netstat -tlun
查询已连接的服务:netstat -an
查询网关:netstat -rn
6. 进程管理命令
ps命令 查看系统中所有进程
语法:ps aux
查看系统中所有进程,使用BSD操作系统格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 166764 11756 ? Ss 15:17 0:01 /sbin/init sp
dyx 4599 0.0 0.0 33575880 3448 ? Sl 15:22 0:00 /opt/google/c
dyx 7953 0.0 0.0 19928 5308 pts/0 Ss 16:00 0:00 bash
dyx 7971 0.0 0.0 21340 3472 pts/0 R+ 16:01 0:00 ps aux
参数解释:
- USER:用户
- PID:进程PID
- %CPU:占用CPU资源百分比
- %MEM:占用物理内存百分比
- VSZ:占用虚拟内存的大小,单位KB
- RSS:占用物理内存的大小,单位KB
- TTY:该进程是在哪个终端运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地字符界面终端,tty7是图形终端。pts/0-256代表虚拟终端。
- STAT:进程状态。R:运行,S:睡眠,T:停止状态,s:包含子进程,+:位于后台
- START:进程起始时间
top命令 查看系统健康状态
语法:top [options]
options:
- -d:更新秒数,默认是3秒
在top命令的交互模式下,按:
- P:CPU使用率排序,降序
- M:内存使用率排序
- N:PID排序
- ?或h:帮助
- q:退出
load average:系统在之前1分钟、5分钟、15分钟的平均负载
87.5 id:空闲CPU所占百分比
kill命令 终止进程
语法:kill [信号] [进程号]
常用命令:
重启进程:kill -1 [进程号]
强制杀死进程:kill -9 [进程号]
pkill命令 管理系统用户
按照终端号踢出用户步骤:
查询本机已登录的用户:w
强制终止从终端号登录的进程:pkill -t -9 [终端号]
7. 关机命令
shutdown命令
语法:shutdown [options] [time]
options:
- -h : 关机
- -r : 重启
- -c : 取消前一个关机命令
time:
- now : 现在
- hh:mm : 指定时间
8. 其他
路径的概念
- 相对路径:相对于当前目录
- 绝对路径:从根路径开始完整的路径 (从\和~开始的路径都是绝对路径)
查看命令(手册/位置)
命令手册:
1. cmd -help
2. man cmd (manual手册)
3. help cd (有些指令在不会放在man)
man 1是普通的shell命令比如ls,
man 2是系统调用比如open,write说明,
man 3是函数说明,
命令所在位置:
which cmd
如果which cmd为空则表示该命令式shell内置的命令
什么是内置命令:
内置命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。而外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。大部分内置命令都是内置在shell中的,也有一些内置命令有自己单独的文件。系统启动,会把shell中的内置命令,其他其他不在shell中的内置命令加载到内存中用户输入命令会首先提交给shell,判断是否为内置命令
查看所有shell
cat /etc/shells #查看所有shell
shell存放的位置结果:
1./bin/bash
2./usr/sbin/nologin
3./bin/sh (我们创建用户的时候的shell)
修改shell:
chsh命令 #修改shell
查看当前系统的命令是否为内置命令和外部命令。
type 指令
用户管理及权限管理
添加用户名
sudo useradd 用户名 (-m:创建家目录 和 -g:指定所在的组 选项)
- 所在组即用户创建之后会有一个同名的组,若新增用户需要指定分组,此组必须存在
设置密码(不设置用户名的用户是不能使用的)(注意是passwd不是password)
sudo passwd 用户名
查看用户是否添加成功:
cat /etc/passwd #etc是配置文件,存储当前系统有哪些用户,以及用户密码(passwd在影子文件里面)
查询结果包含:
1,用户名
2,密码标志
3,UID
4,GID
5,用户全名
6,家目录
7,使用的shell
影子文件包括:用户影子文件和用户组影子文件
cat /etc/shadow #!表示还没有密码
cat /etc/gshadow
查看文件信息或用户信息:
ls -i #查看当前路径下所有文件id
id 用户名 #查看该用户名的uid和gid
id 无用户名 #查看当前用户uid和gid
whoami #当前登录用户
who #当前所有登录用户罗列出来
修改当前用户密码:
passwd
用户组
- 每个用户都有一个初始组,可以有零个或者多个附加组。用户组的作用,是为了方便权限控制。(附加组就是为了给用户附加别的权限)
- 当创建用户的时候,系统会创建一个跟用户名同名的组。
- 文件属性包含:所属用户、所属用户组
用户切换
su 用户名 #用户切换但回到root目录,cd ..可以返回到根目录下
su - 用户名 #用户切换并回到家目录
exit #退出当前用户,返回上一个用户(从哪个用户切换过来的)如果没有上一个用户,直接退出终端
ctrl+d #等效于exit
用户删除
userdel 用户名 #删除用户
userdel -r 用户名 #删除家目录
userdel -f 用户名 #强制删除,即使用户正在登陆系统
用户组管理
groupadd 用户名 #添加
groupmod -n 新用户名 用户名 #改名
groupdel 用户名 #删除
确认组是否被添加成功
cat /etc/group #确认组是否被添加成功
查询结果包含:
1,组名
2,组密码标志
3,GID
4,组中附加用户
修改用户信息(usermod)(某些需要重新登录生效)
usermod -g xxgroup xxuser 修改初始组(基本不去修改)
usermod -G xxgroup,xxgroup xxuser 修改附加组,是覆盖
usermod -s /bin/bash xxuser 修改shell
用户权限(文件对用户来说的权限,用户操作文件或者文件夹的权限)
输入ls -l
u g o
- --- --- ---
第一列:
1. a表示文件类型
2.-二进制文件(包括不限于文本文件)
3.d目录(文件夹)
4.l(软连接文件)
第二三四列:(九个字符分三组)
1.u(user)所有者
2.g(group)所属组
3.o(other)其他用户
r读写 w写 x执行
权限修改(只有文件所有者和超管可以修改文件的权限)
格式一
chmod [ugoa][+-=][rwx] 文件或者目录
chmod u+w,g+x xx.txt #augo分别表示all(所有人),user(用户),group(组),other(其他用户)
格式二
用数字表示权限 r=4 w=2 x=1
比如:r--rw-rwx 467
chmod 651 xxfile
chmod -R 777 xxfile #-R 递归修改所有子文件
chmod -x xxfile #删除可执行权限
chmod -x xxfile #添加可执行权限
chown(change owner)修改拥有者(所属者)
chgrp(change group)修改拥有组(所属组)
文件的所属者和所属组发生改变,用户对文件的权限也发生改变
chown newuser 文件/文件夹 #修改文件或者文件夹的拥有者
chgrp newgroupname 文件/文件夹 #修改文件或者文件夹的所属组
注意:一个文件(文件夹)改名、删除的权限是由它所在目录的权限控制的,而不是自身的权限控制。因为它自身的权限只控制它自身的内容(是否可读可写可执行)。
权限 | 文件 | 文件夹(目录) | |
---|---|---|---|
r | 读read | 查看文件内容 | 可以列出目录中的内容(仅限于名字) |
w | 写write | 修改文件内容 | 可以在目录中创建、删除文件(包括修改文件名字) |
x | 执行execute | 可以执行运行文件 | 可以进入目录(不能查看目录内容) |
软连接
文件软链接
ln 文件/文件夹 软链接
软连接:在当前目录下重命名该文件/文件夹