linux命令
常用终端命令
命令 | 英文 | 作用 |
---|---|---|
ls | list | 查看当前文件夹内容 |
pwd | print work directory | 查看当前所在文件夹 |
cd | change directory | 进入文件夹 |
cd .. | .代表当前目录 ..代表上一级目录 | 返回上一级文件夹 |
cd ~ | 默认返回根目录 | |
mkdir | make director | 创建文件夹 |
rmdir | remove director | 删除文件夹 |
touch | touch | 创建文件 |
rm | remove | 删除文件 |
clear | 清屏 | |
cp | copy | 拷贝文件 |
mv | move | 移动文件 |
tips:
- ctrl+shift+= 放大终端窗口字体显示
- ctrl+- 缩小终端窗口字体显示
终端命令格式
command [-options] [parameter]
如:rm -r 111 删除名为111的文件夹
查阅终端命令帮助文档
command –help
man command 命令使用手册
文件和目录命令
ls命令说明
功能:显示当前目录文件,对应于DOS下的dir命令
linux文件特点:
以.开头的文件为隐藏文件,需要用-a参数才能显示,如下:
ls常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录及其文件,包括隐藏文件 |
-l | 以列表方式显示文件详细信息 |
-h | 与-l配合以人性化的方式显示文件大小 |
如下:
ls通配符
通配符 | 含义 |
---|---|
* | 匹配任意个数的字符 |
? | 匹配某一个字符,但不能代表0个字符 |
[abc] | 匹配abc中任意一个字符 |
[a-f] | 匹配a-f字母中任意一个字符 |
cd切换目录
命令 | 含义 |
---|---|
cd | 切换到目录 |
cd ~ | 切换到当前用户的家目录 |
cd .. | 退出当前目录到上一级目录 |
cd - | 在最近两次访问的目录之间切换 |
touch创建文件
1.文件不存在时,创建新的空白文件
2.文件存在时,可修改文件最后一次修改时间
mkdir创建文件夹
选项 | 含义 |
---|---|
-p | 递归创建文件夹 |
rm 删除文件或文件夹
选项 | 含义 |
---|---|
-f | 强制删除 |
-r | 递归删除,删除文件夹时必须使用该参数 |
文件拷贝与移动命令
tree显示文件树形结构
功能:以树形结构显示当前目录下所有文件
选项 | 含义 |
---|---|
-d | 只显示文件夹 |
cp复制文件
命令:cp 源文件 目标文件
作用:将给出的源文件复制到目标文件或目录中
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
-r | 复制文件夹 |
mv移动文件/目录或重命名文件/目录
命令:mv 源文件 目标文件
1.移动文件夹
2.移动文件
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
文件内容命令
cat查看文件内容
功能:查看文件内容、创建文件、合并文件、追加文件内容等,适合查看较少内容的文件
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对所有输出行编号 |
more查看文件内容
功能:分屏显示文件内容。适合查看较多内容的文件
操作键 | 功能 |
---|---|
空格键 | 显示手册的下一屏 |
Enter键 | 显示下一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索word字符串 |
grep文本搜索工具
功能:查找匹配的文本内容
选项 | 含义 |
---|---|
-n | 显示匹配的行与行号 |
-b | 显示不包含匹配文本的所有行 |
-i | 不区分大小写 |
常用的两种模式查找:
参数 | 含义 |
---|---|
^a | 查找以字符a为开头的行 |
a$ | 查找以字符a为结尾的行 |
其他命令
echo终端打印与>、>>重定向
echo hello相当于cout<<”hello”,即将hello字符串在终端打印出来
重定向:将文本内容写入到文件当中
作用 | |
---|---|
> | 覆盖源文件所有内容 |
>> | 在源文件中追加内容 |
cat写文件
cat >> 文件名称
回车写入文件内容
Ctrl+D结束写入
管道命令 |
Linux允许通过管道命令|将一个命令的输出作为另一个命令的输入
如:
远程管理命令
关机\重启
shutdown //默认1分钟后关机
shutdown 22:22 //在今天的22:22关机
shutdown +10 //10分钟后关机
shutdown now //现在立刻关机
shutdown -c //取消关机命令
shutdown -r now//现在重启操作系统
查看/配置网卡信息
- ifconfig查看网卡配置信息(DOS下为ipconfig)
- ifconfig | grep inet 查看网卡对应的IP地址
- 注意:一台电脑可能有一个物理网卡和多个虚拟网卡,Linux中物理网卡以ensXX表示
- 127.0.0.1为本地环回地址,一般用来测试本地网卡是否正常
ping IP地址,测试目标IP地址的主机是否连接通常
ping 127.0.0.1,测试本机是否连接通畅
终止终端程序执行:CTRL+C
ssh基础
- ssh客户端是一种使用secure shell协议连接到远程计算机的软件程序
- ssh是目前可靠,专为远程登录会话和其他网络服务提供安全性的协议
- 通过ssh协议可以有效防止远程原理过程中的信息泄露
- 通过ssh协议可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
- ssh协议传输的数据是经过压缩的,可以加快传输速度
6.3.1 域名与端口号
域名:IP地址的别名,如:www.baidu.com
端口号
- 通过IP地址找到计算机
- 通过端口号找到计算机上运行的应用程序
- SSH服务器的默认端口号是22,如果是默认端口号,在连接时可以省略
- 常见服务端口号列表
序号 | 服务 | 端口号 |
---|---|---|
01 | SSH服务器 | 22 |
02 | Web服务器 | 80 |
03 | HTTPS | 443 |
04 | FTP服务器 | 21 |
6.3.2 SSH客户端的简单使用
ssh -p sort user@IP/域名
sort:端口号,默认为SSH服务器端口号22
user:远程机器上的用户名
(1)查询本地虚拟机Linux的IP地址
(2)通过DOS窗口连接本地虚拟机,并通过DOS窗口远程对虚拟机进行操作
//注:SSH命令只能在Linux系统和UNIX系统下使用c++
//在Windows系统下使用需要安装PUTTY或者Xshell软件
scp远程拷贝命令
- scp-scure copy,在Linux下的远程拷贝命令
- 其地址格式与ssh命令相同,但选项**-P为大写字母**
scp -P port 01.py user@IP:Desktop/01.py //将本地01.py文件拷贝到远程桌面上
scp -P port user@IP:Desktop/01.py 01.py //将远程文件拷贝到本地桌面上
加上-r选项可以拷贝文件夹
将虚拟机Desktop文件夹里的123.txt文件拷贝到本地Desktop文件夹下
将本地桌面文件夹的123.txt文件拷贝到虚拟机上的桌面文件夹下
将虚拟机桌面文件夹下的aaa文件夹拷贝到本地桌面文件夹下
将本地桌面文件夹下的aaa文件拷贝到虚拟机的桌面文件夹下
SSH高级
用户权限
基本概念
- 对文件/目录的权限
权限 | 英文 | 缩写 | 代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | excute | x | 1 |
- 组:由几个不同的用户组成,实际应用中,可以对组设置权限,从而避免对每一个用户依次设置权限
ls -l详细信息
- 权限:第一个字符以d为开头表示目录
- 硬连接数:表示有几种方式可以访问当前目录/文件
- 拥有者:
- 组:
- 大小:
- 时间:
- 名称:
chmod修改权限命令
作用:修改用户/组对文件/目录的权限
chmod +r/w/x 文件名 //给文件增加权限
chmod -r/w/x 文件名 //给文件取消权限
- 给文件增加执行权限
- 给文件取消执行、读取权限
- 给文件夹取消执行权限
超级用户介绍
Linux系统中存在一个root用户用于对系统的维护和管理,对操作系统的资源具有所有访问权限
Linux安装过程中,会自动创建一个用户账号,该账号称为标准用户
su为substitute user的缩写,表示用另一个用户的身份
sudo命令意为用其他身份执行命令,预设身份为root
组管理
注:创建组/删除组都需要sudo执行
命令 | 作用 |
---|---|
groupadd 组名 | 添加组 |
groupdel 组名 | 删除组 |
cat /etc/group | 确认组信息 |
chgrp -R 组名 文件/目录名 | 修改文件/目录所在组 |
- 组信息都保存在etc/group中
- /etc是专门用来保存系统配置文件信息的目录
修改文件目录所在组实操:
- 创建pythonStudy文件目录
- 创建dev组
- 将pythonStudy目录所在组修改为dev
用户管理
终端命令
注:创建/删除用户以及修改用户密码的终端命令都需要sudo执行
创建用户/设置密码/删除用户
命令 作用 说明 useradd -m -g 组 新建用户名 添加新用户 -m自动建立用户家目录
-g指定用户所在组,否则会建立一个同名的组passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以直接修改用户密码 userdel -r 用户名 删除用户 -r选项会自动删除用户家目录 cat/etc/passwd|grep 用户名 确认用户信息 新建用户后,用户信息会保存在etc/passwd文件中
测试
- 创建新用户myuser
- 修改myuser密码(输入密码时在屏幕上不打印)
- 在Windows下的putty远程登录软件上登录myuser用户进行测试
查看用户信息
查看系统信息
- 时间日期
- date
- cal
- 磁盘和目录空间
- df
- du
- 进程信息
- ps
- top
- kill
时间日期
命令 | 作用 |
---|---|
date | 查看系统时间 |
cal | calendar查看日历,-y 选项可以查看一年的日历 |
磁盘信息
命令 | 作用 |
---|---|
df -h | disk free 显示磁盘剩余空间 |
du -h[目录名] | disk usage 显示磁盘目录下的文件大小 |
- -h表示以人性化的方式显示文件大小
进程信息
命令 | 作用 |
---|---|
ps aux | process status 查看进程的详细状态 |
top | 动态显示正在运行中的进程 |
kill [-9] 进程代号 | 终止指定代号的进程,-9表示强制终止 |
- ps选项说明功能
选项 | 含义 |
---|---|
a | 显示终端所有进程,包括没有控制终端的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
其他命令
- 查找文件
- find
- 软链接
- ln
- 打包压缩
- tar
- 软件安装
- apt-get
查找文件
命令 | 作用 |
---|---|
find [路径] -name .py | 查找指定路径下扩展名为.py的文件,包括子目录 |
省略路径名,表示在当前目录下查找
正则查找
搜索桌面文件下,包含“1”的文件
- 搜索桌面文件下,所有以“.txt”为扩展名的文件
- 搜索桌面文件下,以数字“1”为开头的文件
软链接
命令 | 作用 |
---|---|
ln -s | 建立该文件的软链接,类似与Windows下的快捷方式 |
- 若没有-s表示建立的是一个硬链接
- 源文件要使用绝对路径
演练
- 在桌面创建01.py文件与demo/b/c文件夹,并在01.py文件内写入内容
- 将01.py文件移动到demo/b/c文件夹下
- 在桌面分别创建01.py软链接的相对路径与绝对路径,并分别访问这两个软链接
- 将01.py相对路径的软链接与硬链接移动到demo/b/c文件夹下,并分别访问这两个软链接,比较两者差异
打包压缩
windows 下使用 rar
mac 下使用 zip
- linux 下使用 tar.gz
GDB调试
命令 | 作用 |
---|---|
gdb 可执行程序 | 启动 |
quit(q) | 退出 |
set args*** show args | 给主函数设置参数 |
list/l | 显示当前文件内容 |
list/l 行号 | 显示某一行前后内容 |
list/l 函数名 | 显示某函数前后内容 |
list/l 文件名:行号 | 显示其他文件内容 |
list/l 文件名:函数名 | 显示其他文件内容 |
set listsize 行数 | 设置显示行数 |
b/break 行号、函数名、文件名:行号、文件名:函数 | 设置断点 |
i/info b/break | 查看断点 |
d/del/delete 断点编号 | 删除断点 |
dis/disable 断点编号 | 设置断点无效 |
ena/enable 断点编号 | 设置断点生效 |
b/break 10 if i=5 | 设置条件断点,一般再在循环体内设置 |
start | 启动程序从第一行开始 |
run | 运行程序直到断点 |
c/continue | 继续运行到下一个断点 |
n/next | 向下执行,不会进入函数体 |
p/print | 打印变量值 |
ptype | 打印变量类型 |
s/step | 单步调试,可以进入函数体 |
finish | 跳出函数体 |
until | 跳出循环 |
display num | 设置自动变量(自动打印变量值)5 |
i/info display | 显示自动变量信息 |
undisplay 编号 | 移除自动变量 |
open函数
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<unistd.h>
int main(int args,char*argc[])
{
//int open(const char* pathname, int flags);
//文件打开模式参数flags
// 必选参数:O_RDONLY, O_WRONLY, or O_RDWR
// 可选参数:O_APPEND(追加)、O_CREAT(创建新文件)
int fd = open("a.txt", O_WRONLY);
if (fd = -1)//fd=-1表示会打开失败
perror("open");//打印错误信息
close(fd);//关闭文件描述符
// int open(const char *pathname, int flags, mode_t mode);
int fd = open("create.txt", O_WRONLY | O_CREAT, 0777);
if (fd = -1)
perror("open");
close(fd);
return 1;
}
read/write函数
//#include <unistd.h>
//ssize_t read(int fd, void* buf, size_t count);
// read() attempts to read up to count bytes
// from file descriptor fd into the buffer starting at buf.
//参数:
// -fd:open打开的文件描述符
// -buf:将文件内容读取到buf中
// -count:设置buf字节数
//返回值:
// >0 已经读取的字节数
// -1 读取失败
// 0 读取结束
//#include <unistd.h>
//ssize_t write(int fd, const void* buf, size_t count);
//write() writes up to count bytes from the buffer
//starting at buf to the file referred to by the file descriptor fd.
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<iostream>
using namespace std;
int main(int args,char*argc[])
{
//打开文件create.txt
int srcfd = open("create.txt",O_RDONLY);
if (srcfd == -1)//如果文件不存在或文件打开失败则返回错误信息
perror("open");
char buf[1024];
memset(&buf, 0, sizeof(buf));//初始化buf
int len = read(srcfd, buf, sizeof(buf));//将create.txt文件中的信息读取到buf中
if (len < 0)
perror("read");//显示读取错误信息
cout << "接受";
cout << len << "个字符" << endl;
cout<<buf<<endl;
//新建一个文件cp.txt
int desfd = open("cp.txt", O_WRONLY | O_CREAT, 0777);
if (desfd == -1)
perror("open");//显示新建错误信息
write(desfd, buf, sizeof(buf));//将buf中的信息写入cp.txt中
close(srcfd);
close(desfd);
return 1;
}