Linux系统精讲
Linux简介
系统介绍
族谱
知名的Linux系统
为什么要学习Linux
Linux 系统在服务器市场的占有率(2016 年)
世界上 500 个最快的超级计算机 90%以上运行 Linux 发行版或变种,包括最快的前 10名超级计算机运行的都是基于 Linux 内核的操作系统。Linux 也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等。在移动设备上广泛使用的 Android 操作系统就是创建在 Linux 内核之上。
Linux的优点
- 开源免费、可自行修改,对其他开源软件兼容性良好
- 多用户访问友好、权限管理方便快捷
- 内存管理优秀,可以长期连续运行,系统占用内存低
- 工具功能库完善,部署安装方便
Linux基本命令
ls命令
命令 ls 是 list 的缩写
其作用是列出指定位置的文件和文件夹
如果没有指定,默认是列出当前位置的文件或者文件夹
常用的参数有
-a 列出所有的文件或者文件夹
在 Linux 系统里面,以 . 开头的文件或者文件夹,一般会被默认视为隐藏的如果想要查看这些隐藏文件或者文件夹,最好使用-a 参数
-l 列出详细信息
默认 ls 只显示名字,并不显示详细信息
加了该参数后,除了会显示名称以外,还会显示文件的权限、所属用户、分组、大小、修改
日期
-h 增加可读性
默认文件是按照字节为单位显示大小的
加了这个参数后,会附带 K、M、G、T 等大小后缀
K 表示千字节 M 表示兆字节 G 表示 1024 兆 T 表示 1024G
虽然精准度下降了,但是更容易阅读
-R 递归访问
默认是显示当前目录下的文件和文件夹
带上 R 参数后,如果当前目录下有其他文件夹
则会将该文件夹下面的文件和文件夹也显示出来
所以该参数会显示指定位置下的所有文件和文件夹
-Q 文件名用双引号包裹
这个参数是为了防止某些文件或者文件夹的末尾是空格字符
这样,可以通过双引号,看到文件名实际的长度
echo命令
显示字符串
echo hello world
或者 echo “hello world”
显示转义字符
echo \” 或者 \’ \`
显示变量
echo $PATH
显示换行 \ 不换行
echo -e “\n”换行
echo -e “\c”不换行
显示原样字符串
echo '$PATH'
显示命令结果
echo data
cd命令
cd 目标路径
change directory
路径可以是绝对路径,也可以是相对路径除此之外,还有一些特别的符号
比如.表示当前目录
比如..表示上一级目录(也就是父目录)
比如~表示当前用户的用户目录
注意在 root 用户和普通用户条件下,这个符号是有不同含义的
普通用户~一般是/home/用户名文件夹
但是 root 用户对应的~是/root 文件夹
head命令
-c n 显示头部的指定 n 个字符
-n x 显示头部的指定的 x 行
-v 显示文件名
-q 不显示文件名(默认)
tail命令
简单命令
显示当前目录 pwd
清空窗口 clear
**>**将左边命令的输出,输入到右边的文件或者命令
如果右边的文件不存在,则创建一个
**>>**将左边命令的输出,追加到右边的文件
如果右边的文件不存在,则创建一个
-f 可以不断的更新尾部内容
-n 显示尾部指定行数的内容
-c 显示尾部指定字节的内容
-v 显示文件名
-q 不显示文件名(默认)
ps命令
所有进程都是 init 进程的子进程或者孙进程
-Al 显示所有进程的详情和进程名称
-aux 显示所有进程和其启动命令
数值项说明
USER 进程所属用户
UID 进程所属用户 ID
PID 进程 ID
%CPU CPU 占用率
%MEM 内存占用率
VSZ 虚拟内存占用大小(其中部分可能在交换文件中)
RSS 实际内存占用大小(RAM 占用的大小)
TTY 对应的控制台设备
TIME 进程执行的时间
START 进程开始执行的世界
COMMAND 进程启动执行的命令(带参数)
CMD 进程启动执行的命令(不带参数)
S/STAT 状态 S 休眠 R 运行 D 阻塞 Z 僵尸进程 T 暂停
PRI 优先级 数值越低,优先级越高,甚至可能为负数
cp命令
copy 复制的缩写
命令用法:cp [参数] 源文件/文件夹 目标文件/文件夹
[]表示可选
sudo 命令 提权(提升权限)mkdir 创建文件夹
-a:带属性复制
此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用
等于 dpR 参数组合。
-d:复制时保留链接
这里所说的链接相当于 Windows 系统中的快捷方式。
-f:强制覆盖
覆盖已经存在的目标文件而不给出提示
Ubuntu 默认是强制覆盖
-i:覆盖提示
与-f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文
件将被覆盖。
-p:带权限复制
除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:文件夹复制
若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:创建链接
不复制文件,只是生成链接文件。
只在部分系统有效
在 Ubuntu 下没有效果
rm命令
命令 remove 的缩写,删除
补充命令:
chmod [-r] 6777(八进制数) 文件/文件夹
110(提权/改组) 111(读写执行) 111(当前用户) 111(其他用户)
-i 删除确认
每个被删除的文件都需要确认
-f 强制删除
无需确认就会删除指定的文件
-r 目录删除
删除指定文件夹下的所有文件和子文件夹
开发环境搭建
gcc安装
命令:
1 设置 root 密码:sudo passwd root
注意,请记住这个密码,后面还需要使用
2 进入 root 账户 su
3 安装编译器:apt-get install gcc g++
4 查看当前的 gcc g++版本
gcc --version
g++ --version
5 验证一下
g++ -o test main.cpp
./test
ssh服务的安装
这个服务用户后续的代码编写和远程运行、调试命令:
1 安装服务程序:sudo apt install openssh-server
2 安装客户端程序:sudo apt install openssh-client
3 修改配置文件:/etc/ssh/sshd_config
LoginGraceTime 2m
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
下划线内容是要修改的地方
其他地方请自行比对
如果不一致,请参考上面的文档
4 启动服务
可以直接输入命令行:
C:\Windows\System32\bash.exe -c "sudo service ssh start"
进行启动
也可以建立一个 bat 文件
将上面这个命令写入其中
然后放入文件夹
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
或者
C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
点击开始菜单,将鼠标停在用户名图标处
用户名会自动展示出来
这样开机后就可以自动启动 ssh 服务了