C++--Linux基础使用

文章目录

  • 几个简单命令
    • 开机
    • 关机
    • 重启
    • 查看当前目录
    • 切换当前目录
    • 列出当前目录下的目录和文件
    • 列出指定目录下的目录和文件
    • 清屏
    • 查看/设置时间
  • 目录和文件
    • 目录概要
    • 目录详细说明
    • 相对路径和绝对路径
  • 上古神器vi
    • 创建/打开文件
    • vi 的两种模式
    • vi 的常用命令
  • 用户管理
    • 组管理
    • 用户管理
    • 修改用户的密码
    • 切换用户
  • 目录和文件操作
    • 列出目录和文件的详细信息
    • 创建目录
    • 创建文件
    • 删除目录和文件
    • 复制目录和文件
    • 移动目录和文件
  • 目录和文件的权限
    • 修改目录和文件的拥有者
    • 权限的标志位
    • 文件的权限
    • 目录的权限
    • 设置权限(八进制语法)
    • 设置权限(符号模式)
  • 文件内容操作
    • 查看文件内容cat
    • 查看文件的内容less
    • 查看文件的内容more
    • 统计文件的行数wc
    • 查找文件中的内容grep
    • 显示文件头部的内容head
    • 显示文件尾部的内容tail
    • 跟踪文件尾部的内容tail -f
    • 文件的比较、拆分、合并、排序等
  • 链接
  • 上传和下载
  • 软件包的安装和卸载
  • 打包和压缩
    • zip命令
    • tar命令
    • 其它打包压缩的命令
  • 进程
    • 查看进程
    • 终止进程
  • 性能分析top
    • top输出结果说明
    • top常用的选项
    • top交互命令
  • 其它Linux命令
    • 1、查找目录和文件find
    • 2、查看系统磁盘分区df
    • 3、查看内存和交换区free
    • 4、远程拷贝目录和文件scp
    • 5、列出目录文件树tree
    • 6、统计目录的大小du
    • 7、获取帮助man
    • 8、百度

几个简单命令

开机

云服务器一直开着

本地虚拟点击即可

关机

云服务器一直开着

本地虚拟 init 0

重启

init 6
reboot

查看当前目录

pwd

切换当前目录

cd

列出当前目录下的目录和文件

ls

列出指定目录下的目录和文件

ls xxx

清屏

clear

查看/设置时间

查看时间
date

设置时间
date -s “xxxx-xx-xx xx:xx:xx”

目录和文件

目录概要

ls /
在这里插入图片描述

Linux 的文件系统像一棵树(Windows 也一样),树干是/(根)目录,树枝是子目录,树枝后面还
有树枝(子目录中还有子目录),树枝最后是树叶,目录的最后是文件。

C++--Linux基础使用_第1张图片

目录详细说明

/bin
bin 是 Binaries(二进制文件)的缩写,这个目录存放了经常使用的系统命令。

/boot
这里存放了启动 Linux 时的核心文件。

/dev
dev 是 Device(设备)的缩写,该目录下存放的是 Linux 的外部设备。

/etc
etc 是 Etcetera(等等)的缩写,这个目录用来存放系统管理所需要的配置文件。

/home
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,创建用户后,在/home 目录中创建一
个子目录,专用于该用户。

/lib
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的静态和动态链接库。

/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media
linux 系统会自动识别一些设备,例如 U 盘、光驱等等,当识别后,Linux 会把识别的设备挂载到
这个目录下。

/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt 上,然后进入
该目录就可以查看光驱里的内容了。

/opt
opt 是 optional(可选)的缩写,这是给主机额外安装软件所摆放的目录。例如 Oracle 数据库系
统安装后的文件可以放在这个目录中。

/proc
proc 是 Processes(进程)的缩写,/proc 是伪文件系统(虚拟文件系统),存放了当前内核运行
状态的特殊文件,它是系统内存的映射,读取这个目录下的文件可以获取系统运行的信息。

/root
该目录为系统管理员的主目录。

/sbin
s 是 Super User 的意思,是 Superuser Binaries(超级用户的二进制文件)的缩写,/sbin 存放了
系统管理员使用的系统管理程序。

/selinux
这个目录是 Redhat(CentOS)特有的目录,selinux 是一种安全机制,类似于 Windows 的防火
墙,但是,这套机制比较复杂,这个目录了与 selinux 相关的文件。

/srv
该目录存放了服务启动之后的数据

/sys
该目录挂载了 sysfs 文件系统,存放了系统设备信息,包含所有系统硬件层次的视图。

/tmp
tmp 是 temporary(临时)的缩写这个目录是用来存放一些临时文件的。

/usr
usr 是 unix shared resources(共享资源)的缩写,这是一个非常重要的目录,很多应用程序和文
件存放在这个目录下,类似 Windows 的 Program Files 目录。

/var
var 是 variable(变量)的缩写,存放着经常变动的文件,如缓存文件、日志文件、程序运行时产
生的文件等。

/run
这是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉
或清除。

相对路径和绝对路径

严谨的说,文件名是由目录+文件名组成的。
对于目录和文件,有一些约定的表述,以/usr/include/stdio.h 为例。
1)stdio.h 是文件名,它在/usr/include 目录中。
2)全路径文件名包含了目录名和文件名,即/usr/include/stdio.h,也叫“绝对路径文件名”。
3)目录和文件的绝对路径是从根(/)算起,在任何时候都不会有岐义。
4)目录和文件的相对路径是从当前目录算起,如果当前目录是/usr,include/stdio.h 等同于/usr/i
nclude/stdio.h;如果当前目录是/usr/include,stdio.h 等同于/usr/include/stdio.h。
5)操作目录和文件的时候,采用绝对路径和相对路径都可以。
6)一个圆点 . 表示当前目录;
7)两个圆点 … 表示当前目录的上一级目录。
理解绝对路径和相对路径的概念非常重要,在日常操作中,绝对路径和相对路径会同时使用,但是,程序员在程序中一般使用绝对路径

上古神器vi

创建/打开文件

vi 文件名

打开一个文件,如果文件不存在,就创建它

vi 的两种模式

vi 有两种模式,命令模式和编辑模式
在命令模式下,键盘输入是命令,在编辑模式下,键盘输入的才是字符。
进入 vi 时,缺省是命令模式

vi 的常用命令

k 类似方向键上。
j 类似方向键下。
h 类似方向键左。
l 类是方向键右。

i 在光标所在位置前面开始插入。
a 在光标所在的位置后面开始插入。
o 在光标所在位置的下面插入空白行。
O 在光标所在位置的上面插入空白行。
I 在光标所在位置的行首开始插入。
A 在光标所在位置的行末开始插入。

Esc 从编辑模式切换到命令模式。

Ctrl+u 上翻半页。
Ctrl+d 下翻半页。

Ctrl+insert 相当于Ctrl+c。
Shift+insert 相当于Ctrl+v。
以上两个命令在windows和UNIX中是通用的。

Ctrl+g 显示光标所在位置的行号和文件的总行数。
nG 光标跳到文件的第n行的行首。
G 光标跳到文件最后一行。
:5回车 光标跳到第5行。
:n回车 光标跳到第n行。

0 光标跳到当前行的行首。
$ 光标跳到当前行的行尾。

w 光标跳到下个单词的开头。
b 光标跳到上个单词的开头。
e 光标跳到本单词的尾部。

x 每按一次,删除光标所在位置的一个字符。
nx 如"3x"表示删除光标所在位置开始的3个字符。
dw 删除光标所在位置到本单词结尾的字符。
D 删除本行光标所在位置后面全部的内容。

dd 删除光标所在位置的一行。
ndd 如"3dd"表示删除光标所在位置开始的3行。

yy 将光标所在位置的一行复制到缓冲区。
nyy 将光标所在位置的n行复制到缓冲区。
p 将缓冲区里的内容粘贴到光标所在位置。

r 替换光标所在位置的一个字符。
R 从光标所在位置开始替换,直到按下Esc。
cw 从光标所在位置开始替换单词,直到按下Esc。

u 撤销命令,可多次撤销。

J 把当前行的下一行文本拼接到当前行的尾部。

/abcd 在当前打开的文件中查找文本内容“abcd”。
n 查找下一个。
N 查找上一下。

. 重复执行上一次执行的vi命令。

~ 对光标当前所在的位置的字符进行大小写转换。

:w回车 存盘。
:w!回车 强制存盘。
:wq回车 存盘退出。
:w 文件名 把当前文件另存为……
:x回车 存盘退出。
:q回车 不存盘退出。
:q!回车 不存盘强制退出。

:g/aaaaaaaaa/s//bbbbbb/g回车 把文件中全部的aaaaaaaaa替换成bbbbbb。

vi *.cpp *.h 打开全部后缀为*.cpp和*.h的文件。
:n 切换到下一个文件。

用户管理

组管理

Linux的用户属于组(角色),系统可以对一个组中的全部用户进行集中管理(权限)

创建组:groupadd 组名
删除组:groupdel 组名

组的信息保存在文件 /etc/group 中

用户管理

创建用户:useradd -n 用户名 -g 组名 -d 用户的主目录
删除用户:userdel 用户名

用户的信息保存在文件 /etc/passwd 中

修改用户的密码

创建用户后,必须设置它的密码,否则无法登录。
root用户可以修改任何用户的密码:passwd 用户名
普通用户只能修改自己的密码:passwd
用户的密码保存在 文件 /etc/shadow 中

切换用户

root用户可以免密码切换到任何用户:su - 用户名
普通用户切换到其它用户:su - 或su - 用户名,然后输入目标用户的密码

目录和文件操作

列出目录和文件的详细信息

ls命令还可以列出目录和文件权限、大小、用户和组等信息。
选项-l列出目录和文件的详细信息。
选项-lt列出目录和文件的详细信息,按时间降序显示。
C++--Linux基础使用_第2张图片
第1列是文件属性

第1个字符为文件类型:d是目录;-是普通文件;l是链接;p是管道文件;b是块设备文件(硬盘);c是字符设备文件(终端、打印机);s是套接字文件。
第2-10个字符为文件权限(r-读权限;w-写权限;x-可执行权限,-表示无权限)
第2-4个字符:表示所有者权限。
第5-7个字符:表示同组用户权限。
第8-10个字符:表示其它用户的权限。

第2列是文件硬链接数或目录的子目录数

如果是文件,表示硬链接数,新建的文件默认为1。
如果是目录,表示它的第一级子目录数,空目录为2(每一个目录都有一个指向它本身的子目录”.”和指向它上级目录的子目录”…”,这两个子目录是隐藏的,用ls -a可以看到)。

第3列是文件拥有者用户

第4列是文件拥有者用户所在组

第5列是目录或文件的大小

文件大小的单位为字节,如果是目录,则表示目录本身的大小,不包括该目录下的文件和子目录。
第6、7、8列是目录或文件最后一次被修改的时间

第9列是目录或文件名

创建目录

mkdir 目录名

1)在当前目录中创建aaa目录。
mkdir aaa
2)在当前目录的aaa目录中创建bbb目录。
mkdir aaa/bbb
3)创建/tmp/aaa目录。
mkdir /tmp/aaa
4)一次创建多个目录。
mkdir /tmp/aaa1 /tmp/aaa2

创建文件

1)创建空文件
touch 文件名
2)把屏幕显示的内容输出到文件,如果文件已存在,将清空原有的内容。
任意可以屏幕输出内容的命令 > 文件名
3)把屏幕显示的内容追加到文件
任意可以屏幕输出内容的命令 >> 文件名

删除目录和文件

rm -rf 目录和文件列表
选项-r表示删除目录,如果没有-r只能删除文件。
选项-f表示强制删除,不需要确认。
目录和文件列表之间用空格分隔。

复制目录和文件

cp -r 旧目录或文件名 新目录或文件名
选项-r表示复制目录,如果没有选项-r只能复制文件

如果第二个参数是已经存在的目录,则把第一个参数(旧目录或文件名)复制到该目录中

移动目录和文件

mv 旧目录或文件名 新目录或文件名

如果第二个参数是已经存在的目录,则把第一个参数(旧目录或文件名)移动到该目录中

目录和文件的权限

修改目录和文件的拥有者

用root用户执行:
chown -R 用户:组 目录和文件列表
-R 选项表示连同各子目录一起修改。

权限的标志位

C++--Linux基础使用_第3张图片
C++--Linux基础使用_第4张图片

文件的权限

1)r:表示具有读取文件内容的权限。
2)w:表示具有修改文件内容的权限,同时需要有r权限。注意,如果要删除文件,需要有目录的w权限。
3)x:表示具有执行文件的权限,同时需要有r权限。注意,文件是否能真的执行,还要由文件本身决定。

目录的权限

1)x:表示可以进入目录。
2)r:表示可以浏览目录中有哪些子目录和文件,同时需要有x权限。
3)w:表示可以在目录中新增、删除、移动子目录和文件,同时需要有x权限。

设置权限(八进制语法)

权限也可以用八进制的数字表示:r的值为4,w的值为2,x的值为1
6 rw- 3 -wx 2 -w- 1 --x 0 —

C++--Linux基础使用_第5张图片
chmod -R 三位的八进制权限 目录和文件列表
-R选项表示连同各子目录一起设置。

设置权限(符号模式)

chmod -R who operator permission 目录和文件列表
-R选项表示连同各子目录一起设置。

1)who的说明

  • u user 文件的所有者
  • g group 文件所有者的组
  • o others 其它用户
  • a all 全部用户,相当于ugo

2)operator的说明

  • + 增加权限
  • - 取消权限
  • = 重新设置权限

文件内容操作

在实际工作中,文件内容操作主要用于分析源代码文件、数据文件和日志文件。

查看文件内容cat

cat 文件名
一次显示文件全部的内容,适用于内容很少的文本文件。

查看文件的内容less

less 文件名
按space(空格键)继续显示;Ctrl+u上翻页;Ctrl+d下翻页;j下一行;k上一行;q退出。

查看文件的内容more

more 文件名
按space(空格键)显示下一页;按b显示上一页;q退出。

统计文件的行数wc

wc 文件名列表

行数 单词数 字节数

查找文件中的内容grep

grep "字符串" 文件名列表

显示文件头部的内容head

head -n行数 文件名

显示文件尾部的内容tail

tail -n行数 文件名

跟踪文件尾部的内容tail -f

tail -f 文件名列表

用于查看后台服务程序运行的日志。

文件的比较、拆分、合并、排序等

对程序员来说,这些功能用编程语言实现更合适,几行简单的代码就搞定了

链接

Linux链接分硬链接和软链接(符号链接)

硬链接可以简单的理解为文件的别名,只能为文件创建硬链接,不能为目录创建硬链接。

ln 文件名 链接名
硬链接不能跨文件系统。
硬链接允许一个文件拥有多个有效文件名,如果为重要文件建立硬链接,可以防止“误删除”,只有当删除最后一个链接的时候,文件才会被真正的删除。

软链接类似Windows的快捷方式,可以为目录和文件创建软链接。
ln -s 目录或文件名 链接名
在这里插入图片描述

上传和下载

在SecureCRT中,把鼠标移到连接窗口的标题上,按鼠标右链,选“链接SFTP”标签。
显示本地当前目录:lpwd
显示服务器当前目录:pwd
列出本地目录中的内容:lls -l 目录名
列出服务器目录中的内容:ls -l 目录名
切换本地当前目录:lcd 目录名
切换服务器当前目录:cd 目录名
上传文件:put 文件名,可以用*匹配文件名。
下载文件:get 文件名,可以用*匹配文件名。
退出SFTP:exit

软件包的安装和卸载

以前,Linux只能用rpm安装软件包,需要手工解决软件包的依赖关系。
软件包A -> 软件包B -> 软件包C
yum(Yellow dog Updater, Modified)是基于rpm的软件包管理器,能够从指定的服务器下载软件包并且安装,还可以自动处理依赖性关系,一次性安装所有依赖的软件包。
使用yum之前,必须保证Linux系统可以访问互联网(因为yum仓库在互联网上)。

软件包的安装和卸载需要系统管理员权限。

1、安装软件包。
yum -y install 软件包名

2、删除软件包。
yum -y remove 软件包名

3、升级软件包。
yum update 软件包名

4、如何知道需要安装的软件包名
百度之。

5、yum仓库
互联网上有很多yum仓库,不需要任何配置就可以使用。
不允许访问互联网的企业用户可能自建yum仓库。

6、查找软件包。
yum search 软件包名

7、列出所有可更新的软件包清单。
yum check-update

8、更新所有软件包。
yum update

9、列出所有可安装软件包的清单;
yum list

打包和压缩

zip命令

先安装zip的软件包:yum -y install zip unzip

打包压缩:zip -q -r -d -u 压缩包文件名 目录和文件名列表
-q:不显示命令执行的过程。
-r:递归处理,打包各级子目录和文件。
-u:把文件增加/替换到压缩包中。
-d:从压缩包中删除指定的文件。
解包解压:unzip 压缩包文件名
注意:zip是通用的压缩格式,Windows和Linux都支持。

tar命令

压缩打包:tar zcvf 压缩包文件名 目录和文件名列表
解包解压:tar zxvf压缩包文件名
注意:tar压缩包文件在Windows系统中可以用winrar打开,但是,winrar不能生成tar压缩包文件。

其它打包压缩的命令

在Linux系统中,还有其它的打包压缩和解包解压命令,例如bzip/bunzip和gzip/gunzip。

进程

进程就是系统中正在运行的程序

查看进程

ps命令可以查看进程

方法一:
ps -ef|less
ps -ef|grep 关键字
C++--Linux基础使用_第6张图片
UID 启动进程的用户名。
PID 进程编号。
PPID 父进程编号。
C 进程当前占用CPU的百分比,如果该值过高,需要重点关注。
STIME 进程启动的时间。
TTY 运行进程的终端:tty1是图形化终端;tty2-tty6是本地字符界面终端;pts/0-255是虚拟终端;?是与终端无关的后台进程。
TIME 进程使用的CPU时间(合计)。
CMD 产生此进程的程序或命令。

方法二:
ps aux|less
ps aux|grep 关键字
C++--Linux基础使用_第7张图片
UID 启动进程的用户名。
PID 进程编号。
%CPU 进程占用的CPU百分比。
%MEM 占用内存的百分比。
VSZ 该进程使用的虚拟內存量(KB)。
RSS 该进程使用的物理內存量(KB)。
TTY 运行进程的终端:tty1是图形化终端;tty2-tty6是本地字符界面终端;pts/0-255是虚拟终端;?是与终端无关的后台进程。
STAT 进程的状态。
START 进程启动的时间。
TIME 进程使用的CPU时间(合计)。
COMMAND 产生此进程的程序或命令。
其中STAT常见的状态有:
R 运行状态
S 休眠状态
T 暂停状态
Z 僵尸状态
< 优先级高的进程
N 优先级低的进程
s 进程的领导者(在它之下有子进程)
l 多线程

  • 前台显示的进程

终止进程

kill 进程编号
killall 程序名
-9 的选项表示强行终止进程。

在这里插入图片描述

性能分析top

top是Linux下常用的性能分析工具,能实时显示系统运行的总体状态和每个进程使用资源的情况,类似于Windows的任务管理器

top [选项]

top输出结果说明

C++--Linux基础使用_第8张图片
前5行是系统整体的统计信息,从第8行开始是进程信息。

top常用的选项

-d 指定屏幕信息刷新的时间间隔,缺省是3秒,如果希望10秒刷新一次,则使用:top -d 10
-u 只显示指定用户的进程,如果希望只显示wucz用户的进程,则使用:top -u wucz
-p 只显示指定的进程,例如:top -p 1038, 1038是进程编号。
-i 不显示闲置和僵尸的进程,例如:top -i
-c 显示产生进程的完整命令,例如:top -c

top交互命令

按下q键,退出top。
按下h键,显示帮助画面。
按下c键,显示产生进程的完整命令,等同于-c选项,再次按下c键,变为默认显示。
按下f键,可以选择需要展示的项目。
按下M键,根据驻留内存大小(RES)排序。
按下P键,根据CPU使用百分比大小进行排序。
按下T键,根据时间/累计时间进行排序。
按下E键,切换顶部内存显示单位。
按下e键,切换进程内存显示单位。
按下l键,切换显示平均负载和启动时间信息。
按下t键,切换显示CPU状态信息。
按下m键,切换显示内存信息。

其它Linux命令

1、查找目录和文件find

find 查找目录 -name “文件名” -print
例如:
1)在当前目录及子目录中查找*.h文件。
find . -name "*.h" -print
2)在/home/wucz目录及子目录中查找*.h文件。
find /home/wucz -name "*.h" -print

2、查看系统磁盘分区df

df
df -m
df -h

3、查看内存和交换区free

free -m
free -h

4、远程拷贝目录和文件scp

采用ssh协议在两个Linux服务器之间拷贝目录和文件。
1)把远程服务器的目录拷贝到本地。
scp -r [email protected]:/tmp/aa /tmp/bb
2)把本地目录拷贝到远程服务器。
scp -r /tmp/bb [email protected]:/tmp/cc
-r 表示递归处理(连同子目录一起拷贝)。
-P 指定ssh协议的通讯端口,缺省是22。

5、列出目录文件树tree

tree [选项]
-d 只列出目录,不列出文件。
-D 列出目录和文件的修改时间。
-p 列出目录和文件的权限。
-f 列出目录和文件名的路径。
-a 列出隐藏的目录和文件。

6、统计目录的大小du

du -m
du -h

7、获取帮助man

安装英文帮助文档
yum -y install man-pages
安装中文帮助文档
man-pages-zh-CN
使用帮助
man 命令名

8、百度

程序员需要掌握的Linux知识都很简单,有问题百度,几分钟可以解决。
本课程没有介绍的命令肯定不太常用,不要担心,不要想东想西。
使用Linux需要的掌握功能和使用Windows一样,没什么特别。

你可能感兴趣的:(操作系统,C++,c++,linux,开发语言)