day01(Linux C高级)Linux命令

Linux命令

一.Linux简介

1.1 Linux起源(了解)

寻·科普|第二期:聊聊Linux的前世今生“要想能够创造Linux这样的操作系统不只是需要良好的程序员,还得需要一批心理阴暗的混蛋”——林纳斯·托瓦兹icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkzNzAwNDAzNQ==&mid=2247483775&idx=1&sn=fc5ab0d0ac067f6605906888b40e05bb&chksm=c2975c13f5e0d505fe3074729088341552275cbfa0f95ff8a0b4627b1003493c1011077e2f89&mpshare=1&scene=23&srcid=0902yXFHTAa1jzL68pTXNIWX&sharer_sharetime=1662117806737&sharer_shareid=b33de6e893f06376514acc7d36a0a351#rd

ubuntu每半年更新一次,4月和10月份更新

ubuntu18.04.4

1.2 查看系统版本(*)

查看ubuntu版本:

sudo lsb_release -a

cat /etc/issue

查看内核版本:

uname -r

cat /proc/version

1.3 分层结构(***)

应用层:程序、命令

内核层:五大功能:进程管理、设备管理、内存管理、网络管理、文件系统管理

驱动:字符设备驱动、块设备驱动、网络设备驱动

硬件:鼠标、键盘(字符设备驱动)、硬盘、U盘(块设备驱动)等

1.4 系统关机重启命令

sudo shutdown -h now: 立即关机

sudo shutdown -r now: 立即重启

sudo reboot now: 立即重启

sudo shutdown -h 时间 "提示语句": 定义关机

sudo shutdown -r 时间 "提示语句": 定义重启

通过 shutdown -c: 可以取消定时操作

二.Linux安装工具

2.1 软件包安装

2.1.1 软件包的管理机制

debian: deb软件包管理机制

redhat: rpm软件包管理机制(Red Hat Package Manager)

2.1.2 软件包分类

二进制软件包:xx.deb

源码包:xx.dsc

2.1.3 软件管理工具

在Debian的linux发行版本下,采用dpkg和apt两种包管理工具。

dpkg与apt工具的区别:

dpkg:离线安装,安装本地包,不能检查软件包的依赖关系,不关系仓库内的软件。

apt:   在线安装,通过仓库获取软件包资源,解决依赖关系,不能安装本地包。A -> B

仓库:托管可安装软件包的公共服务器,用户从服务器获取软件并将其安装至用户计算机。类似于应用商店。

2.2 dpkg 工具(***)

dpkg -i 软件包全称

例如:安装sl_3.03-16_i386.deb

sl_3.03-16_i386.deb拖动到虚拟机中的方式:

1)直接拖文件到终端去掉单引号,末尾加空格. 开头加mv移动到目标路径下

2)打开虚拟机文件夹,直接复制粘贴;如果复制不了,执行sudo hq_vm.sh

3)设置共享文件夹

步骤:

如果不行就重启一下虚拟机,或者先禁用然后再启用。

sudo dpkg -i 软件包的全称:安装软件

sudo dpkg -s 软件包名:显示软件的安装状态

sudo dpkg -L 软件包名:显示软件的安装路径

sudo dpkg -r 软件包名:卸载软件

sudo dpkg -P 软件包名:完全卸载软件,重新下载不会保留上一次配置。

2.2 apt工具(***)

用的比较多apt-get

其他可以挖掘一下:apt-cache apt-config apt-ftparchive apt-key

2.2.1 apt-get

sudo apt-get install 软件报名: 安装

可以在/ect.apt/sources.list 看见源头

默认下载的包存放路径:/var/cache/apt/archives/

练习下载:xcowsay 、 oneko

sudo apt-get install 软件包名:软件下载并安装

sudo apt-get remove 软件包名:卸载软件

sudo apt-get --purge remove:完全卸载软件包

sudo apt-get autoremove 软件包名:卸载软件

sudo apt-get update: 下载更新软件包列表信息

sudo apt-get upgrade : 将系统中所有软件包升级到最新的版本

sudo apt-get upgrade 软件包名:将系统中指定的软件包升级到最新的版本

sudo apt-get clean:清空安装包的存放路径

ubuntu网络配置(连不上网用)
  1. 桥接模式:

1)桥接模式:编辑->虚拟网络编辑器->更改设置->选择vmnet0->桥接模式->桥接的网络适配器(根据主机的网络连接进行选择,当然选择自动也可以)->确定。

如果自动不行也可以找到对应的网络适配器。

2)虚拟机->设置->网络适配器->选择桥接模式

3)16版本: 点击图标->Edit connections ->add可以添加->Ethernet->create->ipv4 settings->Method->(可以选择自动获取或手动设置)->save保存即可

如果是手动设置ip,需要点击Method里manual,手动设置ip地址

18版本:

点击图标选择有线设置 -> 点击+号 -> ipv4 -> 添加

  1. nat模式

1)编辑->虚拟网络编辑器->更改设置->选择vmnet8->nat模式->确定。

2)虚拟机->设置->网络适配器->选择nat模式

如果还不行就试试关闭虚拟机然后还原默认设置

如果网用着用着有问题可以用一下命令:

sudo nmcli network off

sudo nmcli network on

2.2.2 apt-cache

sudo apt-cache show 软件包名:获取二进制软件包的详细描述信息

sudo apt-cache policy 软件包名:获取软件包当前的安装状态

sudo apt-cache depends 软件包名:获取该软件包的依赖信息

sudo apt-cache rdepends 软件包名:获取所有依赖于该软件包的软件包

三.shell

3.1 shell 的基础知识

3.1.1 概念(***)

shell: 命令行解释器

shell是贝壳的意思,起到保护作用。那linux的shell可以保护内核。

作用: 负责把应用程序的输入命令信息解释给操作系统,讲操作系统指令处理后的结果再回馈给应用程序。

3.1.2 命令执行的过程

用户在命令行下命令,开始与Shell进行交互。接着,Shell将用户的命令或按键转化成内核所能够理解的指令控制操作系统做出响应,直到控制相关硬件设备。然后,Shell将输出结果提交给用户。

3.1.3 shell分类

(1)Bourne Shell(简称sh):Bourne Shell由AT&T贝尔实验室的S.R.Bourne开发,也因开发者的姓名而得名。它是Unix的第一个Shell程序,早已成为工业标准。目前几乎所有的Linux系统都支持它。不过Bourne Shell的作业控制功能薄弱,且不支持别名与历史记录等功能。目前大多操作系统是将其作为应急Shell使用。

(2)C Shell(简称csh):C Shell由加利福尼亚大学伯克利分校开发。最初开发的目的是改进Bourne Shell的一些缺点,并使Shell脚本的编程风格类似于C语言,因而受到广大C程序员的拥护。不过C Shell的健壮性不如Bourne Shell。

(3)Korn Shell(简称ksh):Korn Shell由David Korn开发,解决了Bourne Shell的用户交互问题,并克服了C Shell的脚本编程怪癖的缺点。Korn Shell的缺点是需要许可证,这导致它应用范围不如Bourne Shell广泛。

(4)Bourne Again Shell(简称bash):Bourne Again Shell由AT&T贝尔实验室开发,是Bourne Shell的增强版。随着几年的不断完善,已经成为最流行的Shell。它包括了早期的Bourne Shell和Korn Shell的原始功能,以及某些C Shell脚本语言的特性。此外,它还具有以下特点:能够提供环境变量以配置用户Shell环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。

3.1.4 shell 命令格式

命令名称 选项 参数

命令名称:必须得有

选项和参数:可有可无,选项有-符号

3.2 历史记录命令(*)

history: 查看历史命令,默认显示的命令行数根据HISTSIZE来决定

echo $HISTSIZE: 将变量的值打印到终端,echo命令作用是打印内容到终端

HISTSIZE=10: 临时修改变量的值(只在当前终端有效)

在家目录下的隐藏文件,通过vi打开:

.bash_history:默认存放2000条历史记录命令的文件

.bashrc :定义HISTSIZE(使用history时默认显示的记录个数)和HISTFILESIZE(.bash_history文件可以存放命令的个数)变量的脚本文件

修改.bashrc文件中HISTSIZE的值,将终端退出:可以永久修改

3.3 起别名命令(**)

alias: 查看系统中起别名的命令

alias 新名='原来的命令': 起别名

unalias 新名: 取消别名

3.4 Linux 特殊字符(***)

3.4.1 通配符

*: 匹配所有字符

?: 匹配一个字符

[...]: 匹配[]中指定的任意一个字符

[-]: 匹配指定一个字符的范围

[^]: 除了其中指定的一个字符,均可匹配

3.4.2 管道 |

格式: 命令1 | 命令2

作用:将前一个命令的输出作为下一个命令的输入

例如:

wc -l 文件名: 显示文件行数

wc -w 文件名:显示文件单词个数

ls | wc -w: 通过ls加管道连用wc,显示当前路径下的文件数个数

pwd | xcowsay: 将pwd的输出内容通过管道传递给xcowsay

3.4.3 输入输出重定向

>文件名:输出重定向,新建模式

>>文件名:输出重定向,追加模式

2> 或者&>文件名: 将有命令产生的错误信息输出到文件中

<文件名:输入重定向

例如:

3.4.4 命令置换符

esc键下的`(不是单引号)

格式: 命令1 `命令2`

作用:将一个命令的输出作为另一个命令的参数的一部分

例子:

3.5 echo 命令

向终端输出指定内容

echo 字符串: 向终端输出指定内容

-n: 不换行输出

echo "字符串": 原样输出

例子:

四.linux命令

4.1 系统维护命令

4.1.1 man

man man: 查看man手册

1 Executable programs or shell commands 可执行程序或shell命令

2 System calls (functions provided by the kernel) 系统调用

3 Library calls (functions within program libraries) 库函数

4.1.2 su

su root: 切换到超级用户

sudo su 用户名: 切换用户

退出:exit(或者 ctrl d 快捷键)

4.1.3 sudo

临时管理员权限,需要输入密码。

4.1.4 df 命令(***)

df -Th: 查看磁盘使用情况

补充:

  1. 挂载优盘时,出现u盘识别不出的现象,解决办法:

1)虚拟机->设置->usb控制器->兼容usb3.0

2)虚拟机->可移动设备->找到自己的u盘->连接

      2.如果出现u盘类型不匹配的问题

sudo apt-get install exfat-fuse exfat-utils

4.1.5 mount 命令(***)

作用: 文件系统的挂载

sudo mount -t 设备类型 设备名称 挂载点: 挂载设备

sudo umount 挂载点: 卸载设备

注意:卸载时不要在挂载点卸载

4.2 用户管理命令(*)

sudo adduser 用户名: 添加用户

sudo deluser --remove-home 用户名: 删除用户同时删除工作目录

4.3 进程管理命令

4.3.1 ps (***)

什么是进程? 就是程序的一次执行过程,是动态的。

静态查看:

ps -aux: 显示当前系统中运行的进程(包含进程的状态)

ps -ef: 显示当前系统中运行的进程(包含进程的父进程号PPID)

表头

含义

USER

该进程是由哪个用户产生的。

PID

进程的 ID。

%CPU

该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。

%MEM

该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。

VSZ

该进程占用虚拟内存的大小,单位为 KB。

RSS

该进程占用实际物理内存的大小,单位为 KB。

TTY

该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?是守护进程,也就是一开始启动时系统在后台运行的进程。(后面IO会讲)

STAT

  1. D uninterruptible sleep (usually IO) 不可中断的睡眠态
  2. R running or runnable (on run queue) 运行态
  3. S interruptible sleep (waiting for an event to complete) 可中断的睡眠态
  4. T stopped by job control signal 暂停态
  5. t stopped by debugger during the tracing 因为调试而暂停
  6. X dead (should never be seen) 死亡态
  7. Z defunct ("zombie") process, terminated but not reaped by its parent 僵尸态
  8. < high-priority (not nice to other users) 高优先级
  9. N low-priority (nice to other users) 低优先级
  10. L has pages locked into memory (for real-time and custom IO) 锁在内存中
  11. s is a session leader 会话组组长
  12. l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)多线程
  13. + is in the foreground process group 前台进程
  14. 没有+时,默认是后台进程
  15. I 空闲状态进程

START

该进程的启动时间。

TIME

该进程占用 CPU 的运算时间,注意不是系统时间。

COMMAND

产生此进程的命令名。

4.3.2 top(***)

动态查看系统中运行的进程

shift >: 向下翻页

shift <: 向上翻页

q: 退出

4.3.3 修改优先级

PR = NI + 20

NI值范围:-20~19, NI值越小优先级越高

sudo renice NI值 PID: 改变正在运行进程的优先级

sudo nice -n NI值 启动进程的命令: 以指定的优先级启动进程

例如:执行 sudo nice -n -20 top

4.3.4 grep(***)

功能:从文件中查找字符串

格式:grep "要查找的字符串" 文件名

精确查找:grep "\<要查找的字符串\>" 文件名

例如:

结合ps以及管道:

ps -ef | grep a.out: 从进程信息中查找带a.out的字符串

4.3.5 find命令(***)

find 路径 -name 文件名: 查找指定路径下的文件

查找多个文件可以加""

4.3.6 给进程发送信号命令kill(***)

从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

kill -l: 查看系统中定义的信号

2:SIGINT 快捷方式:ctrl+c 结束进程

3:SIGQUIT 快捷方式:ctrl+\ 结束进程

9:SIGKILL 杀死进程

15:SIGTERM 结束进程 kill发信号时不加编号,默认信号为15号

18: SIGCONT 让暂停进程继续

20:SIGTSTP 暂停信号 快捷方式:ctrl+z 暂停信号

kill -num PID: 给指定进程发送信号

num:信号编号

PID: 进程号,可以通过ps或者top命令查看

4.3.7 前后台进程切换

步骤:先运行进程

ctrl z: 将进程暂停

bg 编号: 切换到后台

jobs: 在当前终端查看后台进程

fg 编号:将后台进程切换到前台

4.4 网络管理(***)

ifconfig: 查看linux的ip地址

ipconfig:查看windows的ip地址

win+r打开运行窗口,输入cmd打开命令窗口,输ipconfig

ping 域名/ip地址:检查网络的连通性(是否能通信)

4.5 文件系统管理

用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口

4.5.1 文件系统分类

磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有:Ext2、Ext3、Ext4、VFAT等

网络文件系统:是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS(Network File System,网络文件系统)、Samba(SMB/CIFS)等

专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)。

4.5.2 根文件系统结构

需要了解常见的目录含义:

/bin:存放系统中最常用的可执行文件(二进制)

/sbin : 存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件

/boot:存放Linux内核和系统启动文件,包括Grub、lilo启动器程序

/opt: 与系统无关的安装程序

/etc: 放的一些配置文件。Linux开机自启动脚本存放在/etc/rc.d或/etc/init.d目录下。这些目录是Linux系统中用于存放启动脚本的标准目录

/dev : 存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等

/lib : 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件

/mnt : 该目录通常用于作为被挂载的文件系统的挂载点

/proc : 存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如cpuinfo文件存放CPU当前工作状态的数据

/usr : 用于存放与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。以下罗列了/usr中部分重要的目录。

/usr/lib: 库文件,系统默认搜索的库路径

/usr/include: 头文件,系统默认搜索的头文件路径

Linux开机自启动脚本存放在/etc/rc.d或/etc/init.d目录下。这些目录是Linux系统中用于存放启动脚本的标准目录

4.5.3 显示文件内容(*)

cat 文件名:显示文件全部内容

head:

head -n 文件名:显示前n行

tail:

tail -n 文件名:显示后n行

4.5.4 链接文件(***)

文件类型:7种, b c d - l s p

硬链接:是利用Linux中为每个文件分配的物理编号——inode号建立链接。 因此,硬链接不能跨越文件系统。

软链接(符号链接):是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性;类似windows下的快捷方式

命令(***)

硬链接:ln 源文件 链接文件名

软连接:ln -s 源文件 链接文件名

软/硬链接区别:(***)

硬链接:删除或移动目标文件链接依然有效,只能操作普通文件

软链接:删除或移动目标文件链接失效,但是在此创建时链接依然有效

建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性

4.5.5 文件压缩和解压(***)
1)zip/unzip

zip命令用于将一个文件或多个文件压缩成单一的压缩文件

unzip命令用于将zip压缩的文件进行解压

注意:

1)具有归档功能,并进行压缩

2)可以压缩文件夹,后缀为.zip

3)压缩或者解压后源文件依然存在

格式

zip 压缩文件名.zip 要压缩的文件列表

unzip 文件文件名.zip

2)gzip/gunzip

gzip 命令将一个文件进行压缩

gunzip 命令将gzip压缩的文件进行解压

注意:

1)只能对一个文件进行压缩,并自动后缀为.gz

2)没有归档功能

3)压缩或解压后源文件不存在

格式:

gzip 要压缩的文件

gunzip 压缩文件.gz

3)bzip2/bunzip2

bzip2 命令将一个文件进行压缩

gunbip2 命令将gzip压缩的文件进行解压

注意:

1)只能对一个文件进行压缩,并自动后缀为.bz2

2)没有归档功能

3)压缩或解压后源文件不存在

格式:

bzip2 要压缩的文件

bunzip2 压缩文件.bz2

4)tar:(***)

选项:

-x : 释放归档文件,解压

-c : 创建一个新的归档文件,压缩

-v : 显示归档和释放的过程信息

-f : 用户指定归档文件的文件名,否则使用默认名称

-j : 由tar生成归档,然后由bzip2压缩 .tar.bz2

-z : 由tar生成归档,然后由gzip压缩 .tar.gz

注意:

1)具有归档功能,并通过选项可以进行压缩或解压

2)压缩或解压后源文件存在

3)需要写全压缩或解压的文件名格式:

格式:

tar 选项 压缩(解压)文件名 要压缩的文件列表

组合:(***)

-cjf: 以bz2格式压缩文件

-czf: 以gz格式压缩文件

-xvf: 解压一个压缩包,解压后压缩包依然存在

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值