1、GNU

1.1简介

GNU : gnu is not unix
GPL : GUN通用公共许可证

Linux的发行版本:Ubuntu,redhat,debain,红旗.
Linux的核心观念:“人道待人”



注:
linux系统:开源的
UNIX系统:不开源
IOS系统,基于UNIX开发的
安卓系统,基于Linux开发

1.2结构

                     用户空间
APP    shell命令    shell脚本
--------------------------------------命令行解析器|
-----------------系统调用---------------内核空间

内核五大功能:
1、进程管理 时间片轮转,上下文切换,分时多任务
2、内存管理 空间的分配和回收
3、文件管理 将二进制文件转化成我们认识的符号
4、网络管理 网络协议栈

5、设备管理 Linux下一切皆文件,设备也是

硬件 led camera lcd sound
为什么要分用户空间和内核空间?
是处于安全性的考虑。

2、基础命令

2.1开启终端

打开:

ctrl + alt + t

同路径终端:

ctrl + shift + n

左右分屏同路径终端:

ctrl + shift + t

2.1.1关闭终端

ctrl + d在这里插入代码片

2.2命令行提示符:

stu@hqyj:~$
stu @  hqyj:   ~   $(#)
用户名 主机名 路径    权限

2.3修改密码的指令

sudo passwd 可以选择加用户名

2.4常用命令

2.4.1、ls == l

显示所有文件包括隐藏文件 (la)

ls -a

显示所有文件详细信息(ll)

ls -l

显示文件的inode号

ls -i

显示所有文件包括隐藏文件的详细信息

ls -la

显示所有文件的详细信息,所占字节数带单位显示

ls -lh

显示所有文件包括隐藏文件的带单位的隐藏信息

ls -lah

当前目录下所有文件递归显示

ls -R

补充:文件类型有bsp-lcd七种
数据的单位划分:

位        bit
字节      byte
k字节 1024字节为1k
m字节 1024k字节为1m
G字节 1024m字节为1G
T字节 1024G字节为1T
P字节 1024T字节为1P

2.4.2、cd

相对路径,上一级

cd ../

相对路径,本文件路径

cd ./

绝对路径

cd  /home/stu/lyy

返回上个用户

cd ~

返回上个路径

cd -

进入根目录

cd /

2.4.3、pwd

显示当前目录的绝对路径

pwd

2.4.4、 mkdir

创建层级显示的目录

mkdir -p 1/2/3  目录名

创建一个目录文件

mkdir  目录名

创建多个平级目录

mkdir  目录名 目录名 目录名...

创建目录时指定权限

mkdir  -m 0777 目录名

2.4.5、 rmdir

删除一个空目录

rmdir  目录名

2.4.6、 touch

创建一个文件

touch 文件名

创建多个平级文件

touch 文件名 文件名...

如果文件存在,刷新时间戳

touch 文件名

2.4.7 rm

删除一个或多个文件

rm 文件名

删除一个或多个目录

rm -r/-rf 目录名

删除所有普通文件

rm *

删除所有file开头普通文件

rm file*

删除目录下所有内容

rm * -rf

删除除了3.c之外的所有内容

rm !(3.c) -rf

2.4.8 cp(-p彻底)

将文件1内容拷贝到文件2中,若文件2存在,覆盖里面的内容

cp 文件名1 文件名2 (若是加-p连带着文件权限和修改时间一起复制进去)

将文件拷贝到目录中

cp 文件   目录

将目录1拷贝到目录2中,若目录2不存在,则复制目录1为目录2

cp 目录1  目录2 -r

2.4.9、mv

移动文件1给文件2(文件2原来内容会被覆盖)

mv 文件1 文件2

移动目录1到目录2

mv 目录1 目录2

移动文件到目录下

mv 文件   目录

2.4.10 其他常用

如果涉及到用户切换,则是切换到上次的用户
如果这是最开始的用户,则表示退出终端

exit         (ctrl + d)

清屏

clear或者ctrl + l

如果是配置过的虚拟机,则是自动补全
如果没有输全,连续按两下,则会弹出所有匹配的文件
tab (键盘按键)

比较两个文件内容是否相同

diff -ruN    file1 file2

执行指令所需时间

time -ls

显示当前时间

date

杀死进程

kill -9 进程号

查看当前进程

ps
ps -ef

查看所有进程

ps -aux

查看所有进程可以看到其父进程id

ps ajx

查看指令所在的路径

which 命令

查看所有命令详细路径

whereis 命令

追加终端的内容到文件

ls   >>   file1

重定向终端上的内容打印到文件中,如果文件中有内容就清空之后打印(只能定向正确信息,若想重定向错误信息>&)例如:file.txt > file1.txt

>

打印内容到终端

echo 字符串

方便保存文件内容

gedit  文件名

打印文件属性到终端

stat 文件名

打印文件详细信息

file 文件名(小端lsb file后需要加可执行文件)
liu@hqyj:~/lyy/net$ file ./a.out
./a.out: ELF 64-bit LSB shared object, x86-64,version 1 (SYSV), dynamically linked, interpreter/lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0,BuildID[sha1]=d579d9a459162a71ecffa9ea4bfc06693cfbe55a, not stripped

修改文件权限

chmod 0777 文件名

2.4.11man

查看帮助信息

man + ...

2.4.12软件离线安装卸载命令dpkg(Ubuntu的后缀是.deb,redhat的后缀名是.rmp)

安装软件

sudo dpkg -i  软件包名

查看软件sl的帮助文档

man sl

查看软件的安装路径

sudo dpkg -L 软件名

查看软件的版本信息

sudo dpkg -l  软件名

卸载软件但是会保留软件的配置信息

sudo dpkg -r  软件名

完全卸载软件

sudo dpkg -P 软件名

查看软件安装状态

sudo dpkg -s  软件名

2.4.13软件在线安装卸载等命令apt-get

2.4.14、在线安装 apt-get :检查所需的依赖并一同安装

仓库1   仓库2  ... 仓库n   ---不是每个仓库都有所有软件的地址|       |          |
-----------------------|
服务器1 服务器2    服务器3   ----每一个服务器中都有所有仓库的地址

选择服务器:
1、win键–>输入update–>设置–>Ubuntu软件–>“下载自”后面的下拉箭头–>
–>“让系统帮忙匹配一个最优的或者手动选择” 如 tsinghua.edu.com 清华大学的服务器–>关闭
此时,在/etc/apt/路径下的source.list文件中,应该可以看到所选的服务器的地址
执行 sudo apt-get update

/var/lib/apt/lists路径下是软件的下载源
如果选择服务器后报错:

进到/var/lib/apt/lists路径下  rm 所有的重新执行  sudo apt-get update

安装软件:

sudo apt-get  install 软件名
一些好玩的软件:sudo apt-get install sl //安装小火车应用程序sudo apt-get install oneko //安装一个小猫sudo apt-get install bastet //俄罗斯方块    终端字体缩小点就能玩了sudo apt-get install frozen-bubble //泡泡龙sudo apt-get install kolourpaint4 //画图板sudo apt-get install xawtv     //打开摄像头的软件

下载安装包:(只下载,不安装)

 sudo apt-get  download 软件名

下载源码:

 sudo apt-get  source 软件名

卸载软件:

 sudo apt-get  remove 软件名

清理安装包:

 sudo apt-get clean***安装包路径是在

/var/cache/apt/archives***

2.4.14、共享文件夹

介绍:就是实现Ubuntu系统和windows系统文件的传输
配置方式:点击菜单栏的“虚拟机”,点击“设置”,进入虚拟机设置窗口,然后点击当前窗口的左上角的“选项”,然后点击“共享文件夹”,在右边“文件夹共享”里面选择“总是 启用”,然后在下方点击“添加”,然后选择共享文件夹的路径,点击确定即可
当共享文件夹创建好之后,Ubuntu的共享文件夹的路径是/mnt/hgfs/share,windows就是你自己指定的路径

3拓展指令

3.1history

终端打印前n条输入过的指令历史记录,上限为1000条,可以在.bash里面修改上限
history n

3.2查看文件的指令

1、打开文件查看

vim   文件名  +n   打开文件定位到第n行
vim -O 多个文件    左右分屏显示多个文件

2、终端打印一个或者多个文件内容

cat 文件名

带行号查看文件

cat -n 文件名 (若是写-b则是对空白行不编号)

3、显示前十行
head 文件名
显示文件前五行

head -n  5  文件名
head -n5  文件名
head - 5  文件名

4、默认显示后十行
tail 文件名
显示文件后五行

tail -5  文件名
tail -n5  文件名
tail -n 5  文件名

动态检测文件的新增情况(一般用于检测日志)

tail -f 文件名

5、以百分比显示文件,回车向下走,q退出

more   文件名

6、上下键翻页,q退出

less      文件名

3.3文件统计相关的指令

1、wc 文件名

230      230行
399     399个单词
4751    4751个字符

wc -l 文件名 统计文件中的行数
wc -w 文件名 统计文件中的单词数
wc -c 文件名 统计文件中的字符数

例子:
统计当前文件下所有.c文件下的总行数

wc -l *.c

2、匹配内容

grep "string" 文件名

可以加参数

-n   显示行号
-v  反选
-I  忽略大小写
-w  精确匹配
-R  递归匹配,可以用于目录中检索

常用用法:grep -nR “string”

ps -aux | gerp ./a.out

3、查找路径下有无存在名字为文件名的文件

find 路径名 -name 文件名

查找当前路径下类型为文件类型名的文件

find 路径名 -type  文件类型名

常用用法:

find ./ -type f | grep -n "hello"
find ./ type f | xargs grep -n "hello" --color=auto

xargs 所有文件
–color=auto 高亮显示

4、文件截取(d与f的作用)

cut -d 分隔符 -f 域 文件名

基本用法:
山西:临汾:洪洞:刘家垣
例如:

cut -d : -f 2 file  截取第二个域的内容    -->临汾
cut -d : -f 1-3 file 截取第一到第三个域中的内容  -->山西:临汾:洪洞
cut -d : -f 1,3 file  截取第一个和第三个域中的内容-->山西:洪洞
(三种可以互相组合)

3.4文件的操作

1、软连接
文件类型那儿是-l的文件是软连接,类似于快捷方式
创建方式:

ln -s 被链接的路径文件(pathname) 链接路径文件(pathname)

例如:

ln -s print  aa

他所默认使用的是相对路径 所以链接文件都不可以移动路径,一旦移动,链接文件就会失效
但是可以在创建的时候直接设置绝对路径,链接文件可以随意移动,但是被链接文件不可以移动,因为链接文件是依据被链接文件寻找文件。举例如下:

ln -s /home/yangfs/21031/linux_c/day1/test/print ./aa

2、硬链接
链接文件域源文件属性相同,相当于给文件起别名,inode文件的唯一标识符是相同的
创建方式:

ln 被链接的文件 链接文件

例如

ln main.c ln.c

本质上来说两个文件是同一个文件,两个文件显示的都是普通文件,区别只是名字不同,只要修改一个另一个一定会改变。即使删除一个,另一个也会存在,不会有任何影响,修改他们的路径依然链接在一起。
3、文件权限的设置与修改

可以在创建文件夹就设置权限     mkdir -m 0777 dir
对于文件/文件夹:可以直接修改所有权限 chmod  0777 dir/file
也可以修改单一权限:chmod u + r  对所属用户增加读权限chmod g + r  对同组用户增加读权限chmod o + r   对其他用户增加读权限

如果是 - :则是减权限,变为-空权限
修改文件所属的用户:sudo chown stu print 把文件print的所属用户修改为stu
修改文件所属的组:sudo chgrp 要修改的组名 文件名

3.5文件压缩、解压

1、压缩:针对普通文件

gzip 文件名 ==> .gz
bzip2 文件名==> .bz2
xz 文件名     ==> .xz

以上三种文件的压缩速率:gzip > bzip2 > xz
压缩率:xz > bzip2 > gzip
2、解压:针对普通文件

.gz   ==> gunzip     .gz类型的文件
.bz2 ==> bunzip2    .bz2类型的文件
.xz    ==> unxz    .xz类型的文件

3.6目录文件的压缩、归档、解压缩

-c   归档
-x  解归档
-v  显示详细信息
-f  后面接文件
-z  归档并压缩,压缩成.gz
-j  归档并压缩,压缩成.bz2
-J  归档并压缩,压缩成.xz

实例:
归档(打包)的命令

tar -cvf 目录名.tar  目录名
解归档(拆包)的命令
tar -xvf 目录名.tar
压缩为.gz文件
tar -zcvf 目录名.tar.gz  目录名
.gz文件解压缩
tar -zxvf  .gz类型的文件名
压缩为.bz2文件
tar -jcvf 目录名.tar.bz2 目录名
.bz2文件解压缩
tar -jxvf .bz2类型的目录名
压缩为.xz文件
tar -Jcvf 目录名.tar..xz mulum
.xz文件解压缩
tar -Jxvf .xz类型的文件名

通用的解压命令

tar -xvf 压缩文件名

3.7系统命令

1、关机

sudo shutdown -h now     立即关机
sudo shutdown -h +50       50分钟后关机
sudo shutdown -h 10:10      10:10后关机

2、重启

sudo shutdown -r now     立即重启
sudo shutdown -r +50       50分钟后重启
sudo shutdown -r 10:10      10:10重启
sudo reboot              立即重启

3.8用户相关

1、添加新用户(一般用不到)

sudo adduser 用户名
注意:一般新建的用户没有sudo权限
解决方法;
su  root        切换到管理员用户
chmod u+w /etc/sudoers
vi /etc/sudoers 在用户权限那儿添加新用户的权限
chmod u-w /etc/sudoers

2、 su 用户名 切换用户(不会加载新用户的环境变量)

su - 用户名     (会加载)

3、exit
如果为初始用户则退出当前终端
如果有其他用户则退出当前账户进入上一个用户

4、usermod 修改用户信息

sudo usermod -c "string"  用户名      修改用户的描述信息sudo username -l stu liu               修改用户名(需要在非要修改的用户修改)

5、sudo userdel -r user1 删除用户
6、id liu 查看用户的基本信息

3.9环境变量相关

1、什么是环境变量:环境变量用于保存系统相关或者系统配置的一些变量,属于后台进程
2、env 查看当前系统所有环境变量
3、export 变量名=$PATH:新的值 以追加的方式添加环境变量原有的值
生效方式:立即生效且在当前终端生效

弊端:下次进入就不行了
4、一般环境变量中的值保存在在/bin目录下(是可执行文件)
5、cd(家目录)

      vi .bashrc 在文件中添加export 变量命=$PATH:新的值
生效方式:1  重新登陆2  source ~/.bashrc

6、echo $SHELL //显示系统当前使用的解释器

3.10磁盘相关

查看当前系统的内存使用情况

free

查看文件系统的磁盘空间占用情况

df

统计目录/文件所占磁盘的大小

du
sudo fdisk -l                               查看磁盘信息
sudo df -h                               查看磁盘使用情况
sudo mount 设备名 路径名

例:

   sudo mount /dev/sdb1 ./dir

3.11搭配命令使用的通配符

1、*
可以匹配任意长度的字符

例子:假设当前路径下有如下文件
file1  file2  file4  file6  fileA  fileB  fileC  fileD  fileE  fileF
file11111111111  file3  file5  filea  fileb  filec  filed  filee  filefls file*  结果:file1  file2  file4  file6  fileA  fileB  fileC  fileD  fileE  fileF file11111111111  file3  file5  filea  fileb  filec  filed  filee  filef

2、?
只可以匹配一个字符

例1:ls file?结果:file1  file2  file4  file6  fileA  fileB  fileC  fileD  fileE  fileF  file11111111111  file3  file5  filea  fileb  filec  filed  filee  filef
例2:
ls file???????????
结果:
file11111111111

3、[字符1字符2...字符n]匹配[]中任意一个字符

例1:ls file[abc]结果:filea  fileb  filec

4、[字符1-字符n]匹配字符1到字符n中任意一个字符
本地字节序:aAbBcCdD…zZ
export LC_ALL=C 清除本地字节序(export LC_ALL=C)
清除本地字节序后:abcd…zABCD…Z

例:ls file[a-e]   (前提是清除了本地字节序)结果:filea  fileb  filec  filed  filee

5、[^字符1字符2...字符n]匹配除了[]中的字符后的任意一个字符

例1:ls file[^abcdef]结果:file1  file2  file3  file4  file5  file6  fileA  fileB  fileC  fileD  fileE  fileF注意:不包含 file11111111111

6、[^字符1-字符n]同上

3.12网络相关的命令

网络基础:
1.IP:主机在网络中的一个编号,唯一的

ip的分类 :IPV4(32位) 和 IPV6(128位)
ip的表示方式 :点分十进制
ip的组成 :网络号+主机号

IPV4网段的划分

     网络号   主机号      要求的最高位    范围     使用单位         ip保留段
A类      1字节  3字节           0       [0-127]  政府/大公司/学校  10.0.0.0--10.255.255.255
B类      2字节  2字节         10    [128-191]  中等规模的公司   172.16.0.0--172.31.255.255
C类      3字节  1字节          110      [192-223]  小公司或个人  192.168.0.0--192.168.255.255
D类      组播地址
E类      未使用(为高校实验室准备)
----范围:A:0.0.0.0  --- 127.255.255.255B:128.0.0.0  ---  191.255.255.255C: 192.0.0.0  ---  223.255.255.255

2、子网掩码

用来和IP地址取  按位与  &  运算的,用来获取网络号192.168.1.54 & 255.255.255.0  =  192.168.1.0

一般网络地址部分都是1,主机地址是0
其中 192.168.1.0 就叫做网络号,一般同一个网络下的网络号相同,所以子网掩码的一个重要作用就是比较IP和子网掩码相与比较两台通信的主机是否有相同的网络号,如果相同,向内网发送,反之外网。

3.默认网关,一般来讲是交换机(路由器)的ip地址

一般来说  192.168.1.54  --> 默认网关  192.168.1.1
ping是通过ICMP回显请求给主机,等待主机ICMP回显应答

4.DNS 域名解析器

 www.baidu.com  -->  182.61.200.6
8.8.8.8
114.114.114.114

Ubuntu设置网络:
方法1:通过图形化界面:
右上角的连接图标–>有线连接的下拉箭头–>有线设置–>先把开关关闭
选择IPV4–>手动–>填写相关信息(ip地址、子网掩码、默认网关、DNS服务地址)–>应用(需要密码)–>打开开关

方法2:
通过修改 /etc/netplan 目录下的 01-network-manager-all.yaml 文件来修改

改文件对格式要求比较高 一般不用这种方式修改
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
ens37:
addresses: [192.168.1.54/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,114.114.114.114]
dhcp4: no
optional: no

修改后使之生效
sudo netplan apply

查看网络信息:

ifconfig / ipconfig

重启网络服务:

 sudo service network-manager  restart

测试是否联网

 ping www.baidu.com
 通过ICMP协议发送给目标主机请求,并且等待ICMP返回回显应答
PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data.
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=1 ttl=52 time=17.1 ms
64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=2 ttl=52 time=42.9 ms

&&size 查看文件中每个内存段的大小

gcc a.c &&size ./a.out

&&nm查看每个内存段中值的地址
查看程序执行时间:time 可执行文件
vim编辑器让多窗口能拖动:

在 ~/.vimrc 文件末尾加入一行   set  mouse=a
vi -O main.c  func.c  func.h    //打开多个文件

:wqa //全部保存退出

ldd 文件
查看文件链接的库

zo 打开折叠

id 文件名 查看文件id(也可以 通过stat函数读取)

可以通过ulimit -a命令查看最大的文件描述符1024
这个数值可以通过ulimit -n 2048修改为2048

补充
查看信号号
kill -l
查看内存
df-h
find 路径名 -type 文件类型名

2、Linux命令合集相关推荐

  1. 玩转Linux命令-合集

    玩转Linux命令-合集 前言 Linux 系统目录结构 Linux命令 常用命令 前言 该博客用于记录 Linux 使用过程中遇到的命令,将会持续更新. 未更新的命令可参考:here Linux 系 ...

  2. 常用的Linux命令合集,建议收藏保存!

    Linux是现在服务器系统最常用的系统,基于unix开源免费,系统稳定性非常高,所以才被更多的服务器所采用.今天小千就来给大家介绍一些比较常用的Linux指令,方便大家操作和学习. 一.linux 的 ...

  3. 常用的35个Linux命令合集

    1.ls显示文件或目录内容 ls:列出文件和文件夹名(文件夹蓝色.普通文件白色.压缩包红色.图片粉色) ls -a:展示隐藏的文件,通常以 . 开头. ls --help:引出全部命令 ls -s:展 ...

  4. Linux命令合集,手动精修

    系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) ...

  5. linux一次三行显示文件内容,Linux 命令合集(二):查看文件及内容处理命令

    一.cat(tac):(倒序)查看文件内容 命令格式 cat [参数] [文件名] 命令参数 -n:对所有行进行编号 -b:对所有非空行进行编号 -s:压缩多行非空行为一行非空行 -T:tab缩进用 ...

  6. ❤️ 爆赞,基础又全面的Linux命令合集!学都学不完...【汇总】

  7. manjaro(linux)系统各类命令合集(渐渐更新)

    manjaro(linux)系统各类命令合集(渐渐更新) wlan开启 系统默认的wlan是关闭的 sudo rmmod ideapad_laptop 查找以及安装命令 系统很多软件都是自带安装包的, ...

  8. Linux手册大合集,收藏!Linux常用命令合集

    收藏!Linux常用命令合集 1. 帮助命令 1.1 man 命令名称,man 的意思是 manual,即手册,对于大多数命令都可以使用这个命令来查看其使用的方法. 1.2 help 命令名称 或者 ...

  9. 收藏!Linux 常用命令合集

    收藏!Linux常用命令合集 1. 帮助命令 1.1 man 命令名称,man 的意思是 manual,即手册,对于大多数命令都可以使用这个命令来查看其使用的方法. 1.2 help 命令名称 或者 ...

最新文章

  1. 编程之美计算0到N中包含数字1的个数
  2. 这个德国山寨工厂靠抄袭干到240亿,让硅谷恨之入骨
  3. 高斯过程回归(GPR)—— 数学推导
  4. 关于「无人驾驶」的学习路线...
  5. altera fpga sdi输出方案_FPGA在电力电子中的应用有哪些?
  6. 作业2-Python基础练习
  7. Windows10批处理文件中用regedit导入注册表文件失败的原因和解决办法
  8. 基于verliog的异步模10计数器(含模块代码以及测试代码)
  9. java常量池在哪里_java常量池在哪?有什么用处?
  10. 如何系统学习Linux
  11. IE加载ocx时提示控件不安全的解决方法
  12. 电商api接口:淘宝以图搜图
  13. 台湾SSS鑫创SSS1700替代Cmedia CM6533 24bit 96KHZ USB音频编解码芯片
  14. 鉴源实验室丨汽车电子架构和CAN网络基础
  15. 机器学习日记(13)
  16. 黑苹果 选择语言 点不了_作为一个自媒体人,我在618选择了这些硬件组装了一台黑苹果电脑...
  17. 尚硅谷_在线教育_Nuxt整合错误
  18. 留学生回国考计算机等级考试,2018年下半年国家公派留学人员外语水平考试(WSK)报考通知...
  19. Flex布局常见父项属性(一)- flex-direction
  20. 优锘科技:可视化加速“历史数据库”运转

热门文章

  1. http各个状态码的含义:
  2. 中国劳动力动态调查数据(CLDS)2011-2018年
  3. PHP preg_match()函数
  4. 【剑桥摄影协会】针对摄影的显示器校准
  5. 计算机颜色偏蓝,电脑整个屏幕颜色不正常偏蓝怎么调回正常颜色?
  6. JSP书香味道点餐系统课设
  7. 项目开发中,真的有必要定义VO,BO,PO,DO,DTO这些吗?
  8. 音乐信号音符/乐谱提取
  9. GiB 是什么?像 GB 是一样的吗?
  10. css里面的网格布局