Linux是一套开源的操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1994年3月,Linux 1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。
1995年1月,Bob Young创办了RedHat(小红帽),以GNU、Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux发行版,在市场上出售。
1996年6月,Linux 2.0内核发布,可以支持多个处理器。
免费且开源;完全兼容POSIX 1.0标准;多用户、多任务;拥有良好的界面;支持多种平台。
目前Linux发行版约有300种,几乎都可以作为服务器系统运行。Linux发行版很少互相复制,流行的Linux服务器发行版主要有以下几个:
Red Hat Enterprise Linux(红帽企业级Linux):这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构。
Debian:Debian运行起来极其稳定,这使得它非常适合用于服务器。
CentOS:CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。
Ubuntu:Ubuntu是Debian的一款衍生版,侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。
Ubuntu是一个以桌面应用为主的Linux操作系统。Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity。 自Ubuntu 18.04 LTS起,Ubuntu发行版又重新开始使用GNOME3桌面环境。在几乎每一份与 Linux 有关的榜单上,基于 Debian 的 Ubuntu都占有一席之位。Canonical 的Ubuntu 胜过其他所有的 Linux 服务器发行版 ―― 从简单安装、出色的硬件发现,到世界级的商业支持,Ubuntu确立了难以企及的严格标准
Ubuntu 与Windows不同,没有盘符这个概念,只有一个根目录 【/】,所有文件都在它下面
├── bin # bin是Binary的缩写。存放系统中最常用的可执行文件(二进制)。
├── boot # 这里存放的是linux内核和系统启动文件,包括Grub、lilo启动器程序。
├── dev # dev是Device(设备)的缩写。该目录存放的是Linux的外部设备,如硬盘、分区、键盘、鼠标、usb等。
├── etc # 这个目录用来存放所有的系统管理所需要的配置文件和子目录,如passwd、hostname等。
├── home # 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
│ └── yahboom # 用户
│ ├── Desktop # 桌面
│ ├── Documents # 文档
│ ├── Downloads # 下载
│ ├── Music # 音乐
│ ├── Pictures # 图片
│ ├── Public # 共享
│ ├── Templates # 模板
│ ├── Videos # 视频
│ ...
│ ...
├── lost+found # 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些零散文件。
├── lib # 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件。
├── media # ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件。
├── mnt # 作为被挂载的文件系统得挂载点。
├── opt # 作为可选文件和程序的存放目录,主要被第三方开发者用来简易安装和卸载他们的软件。
├── proc # 这个目录是一个虚拟的目录,它是系统内存的映射,这里存放所有标志为文件的进程,比较cpuinfo存放cpu当前工作状态的数据。
├── root # 该目录为系统管理员,也称作超级权限者的用户主目录。
├── sbin # s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理、目录查询等关键命令文件。
├── srv # 存放系统所提供的服务数据。
├── sys # 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
├── usr # 存放与系统用户有关的文件和目录。
│ ├── bin # 用户和管理员的标准命令
│ ├── games # 存放着XteamLinux自带的小游戏
│ ├── include # 用来存放Linux下开发和编译应用程序所需要的头文件,c或者c++
│ ├── lib # 应用程序和程序包的连接库
│ ├── local # 系统管理员安装的应用程序目录
│ ├── sbin # 存放root超级用户使用的管理程序
│ └── src # Linux开放的源代码
│ └── share # 存放共享数据
│ ...
├── var # 长度可变的文件,尤其是些记录数据,如日志文件和打印机文件。
│ ├── backups
│ ├── cache # 应用程序缓存目录
│ ├── crash # 系统错误信息
│ ├── log # 日志文件
│ ├── mail # 电子邮件
│ └── tmp # 临时文件目录
│ ...
├── tmp # 这个目录是用来存放一些临时文件的,所有用户对此目录都有读写权限。
...
新建文件
touch test.txt
新建文件夹
mkdir test # 创建一个文件
mkdir -p test/src # 创建test文件夹,并在test文件夹中创建src文件夹
复制
sudo cp test.txt test_copy.txt # 复制一个文件
-i | 以进行交互式方式执行 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容 |
sudo rm test.txt # 删除文件 | 空文件夹
sudo rm -r test # 删除文件夹及文件夹里的内容
sudo mv test test_new # 将test文件夹修改为test_new
sudo mv test.txt test_new.txt # 将test.txt文件修改为test_new.txt
权限设定
符号 | 含义 |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
rwx
字母权限 | 含义 |
---|---|
r | read 表示可读取权限,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。 |
w | write 表示可写入权限,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 |
x | excute 表示可执行权限,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。 |
sudo chmod +rwx test.txt
添加所有权限的快捷方式
sudo chmod 777 test.txt
设置root密码
sudo passwd root
设置用户名密码
sudo passwd 用户名
lsb_release -a # 发行版本号
uname -a # 内核版本及系统位数
cat /proc/version # 内核版本及gcc版本
curl cip.cc 或者 ifconfig # 查看IP地址
cat /proc/cpuinfo or lscpu # cpu信息
sudo dmidecode -t memory # 内存信息
df -h # 查看所有挂载的文件系统空间情况
which python3 # 查看命令位置
v4l2-ctl --list-formats-ext # 查看相机设备参数
nproc # 查看内核数
la # 显示指定目录下所有子目录与文件,包括隐藏文件
ll # 以列表方式显示文件的详细信息
ls -h # 配合以人性化的方式显示文件大小
cat test.txt # 查看文件内容
tree # 查看文件目录(需要安装tree)
tree安装命令
sudo apt install tree
find ./ -name test.sh # 查找当前目录下所有名为test.sh的文件or目录
find ./ -name '*.sh' # 查找当前目录下所有后缀为.sh的文件or目录
find ./ -name "[A-Z]*" # 查找当前目录下所有以大写字母开头的文件or目录
tar使用格式:tar [参数] 打包文件名 文件
-c # 生成档案文件,创建打包文件
-v # 列出归档解档的详细过程,显示进度
-f # 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t # 列出档案中包含的文件
-x # 解开档案文件
打包
tar -cvf xxx.tar * # 当前目录所有文件
tar -cvf xxx.tar *.txt # 以.txt结尾的文件
tar -cvf xxx.tar my-file my-dir # 打包指定目录或文件
解包
tar -xvf xxx.tar # 解包到当前目录
tar -xvf xxx.tar -C my-dir # 解包到指定目录(需要先创建my-dir目录)
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
zip bak * # 当前目录所有文件,也可以指定文件
zip -r bak * # 当前目录所有文件&目录递归
解压文件:unzip -d 解压后目录文件 压缩文件
unzip -d ./target_dir bak.zip # 解压到指定目录
unzip bak.zip # 解压到当前目录
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。常用,可以对文件或文件夹创建
ln -s 源文件 链接文件
硬链接:硬链接只能链接普通文件,不能链接目录。即使删除了源文件,链接文件还是存在
ln 源文件 链接文件
scp jetson@192.168.16.66:/home/jetson/xxx.tar.gz /home/yahboom/ # 从远程复制文件到本地
scp /home/yahboom/xxx.png jetson@192.168.16.66:/home/jetson/ # 从本地复制文件到远程
scp -r jetson@192.168.16.66:/home/jetson/test /home/yahboom/ # 从远程复制目录到本地 -r
scp -r /home/yahboom/test jetson@192.168.16.66:/home/jetson/ # 从本地复制目录到远程 -r
在百度随便搜索一张图片地址,作为示例。
wget "https://img0.baidu.com/it/u=3911542037,2006161295&fm=224&fmt=auto&gp=0.jpg" # 下载普通文件(百度链接要加双引号)
wget -O yahboom.jpg "https://img0.baidu.com/it/u=3911542037,2006161295&fm=224&fmt=auto&gp=0.jpg" # 以指定文件名保存文件
dpkg -i ~/mozybackup_i386.deb # 安装
dpkg -L mozybackup # 列出与该包先关联的文件
dpkg -l mozybackup # 显示包的版本
dpkg -r mozybackup # 移除软件(保留配置)
dpkg -P mozybackup # 移除软件(不保留配置)
dpkg -s mozybackup # 查找包的详细信息
dpkg -c mozybackup # 列出deb包的内容
dpkg -S keyword # 搜索所属的包内容
dpkg –unpack package.deb # 解开 deb 包的内容
dpkg –configure package # 配置包
修复依赖项的问题
sudo apt install -f
dpkg 的命令可用于查看 Debian/ Ubuntu 操作系统是 32 位还是 64 位,此命令只适用于基于 Debian 和 Ubuntu 的 Linux 发行版。
dpkg --print-architecture
如果当前 Linux 是 64 位则输出 amd64,是 32 位则会输出 i386。
getconf 命令主要用于显示系统变量配置,我们也可使用如下参数来查看 Linux 系统架构:
getconf LONG_BIT
arch
主要用于显示操作系统架构类型,与 uname -m 命令非常类似。如果输出 x86_64 则表示为 64 位系统,如果输出 i686 或 i386 则表示为 32 位系统。
nautilus . # 打开当前文件
cd ~ # 切换到当前用户的主目录(/home/用户目录)
cd . # 切换到当前目录
cd - # 可进入上次所在的目录
cd / # 切换到系统根目录/
pwd # 显示当前路径
echo "HelloWorld" # 向控制台输出HelloWorld信息
which # 查看命令位置
vim是vi的升级版,最常见的区别是能用多种颜色显示显示系统文件的一些特殊信息。
sudo apt install vim
命令模式(编辑模式):默认模式,移动光标,剪切/粘贴文本(界面表现:左下角显示文件名或为空)
插入模式(输入模式):修改文本(界面表现:左下角显示—INSERT–)插入模式下,按ESC按键返回命令模式
末行模式(扩展模式):保存、退出等(界面表现:左下角显示—VISUAL–)末行模式下连续按两次ESC按键返回末行模式
命令模式切换到编辑模式
i # 插入方式进入编辑模式
a # 追加方式进入编辑模式
o # 当前行下一行开始位置开始编辑
O # 当前行上一行开始位置开始编辑
命令模式切换到末行模式
: # 输入冒号【:】
末行模式切换到命令模式:按【esc】
编辑模式切换到命令模式:按【esc】
Esc建:退出到当前模式
Esc建Esc建:总是返回到命令模式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aitFzjQE-1646987471220)(vim.png)]
w # 保存
q # 退出
q! # 强制退出
x # 保存并退出
set nu # 显示行号
set # nonu 隐藏行号
0,$d # vim 删除文件全部内容:
/string # 从光标处开始向后寻找字符串string;按n定位下一个,shfit+n定位上一个。
g/string # 检索string。使光标停止在第一个检索到的 string 串的行首。
yy # 复制
p # 粘贴
3yy # 复制3行
2p # 粘贴2遍
dd # 剪切
3dd # 剪切3行
u # 撤销
Ctrl + r # 反撤销
dd # 删除当前行
dG # 删除当前行到文件末尾
dH # 删除当前行到文件开头
gg # 跳到当前文档首行
G # 跳到当前文档末行
^ # 跳到当前行首
$ # 跳到当前行尾
h # 左移一个字符
j # 下移一行
k # 上移一行
l # 右移一个字符
PageDown(或Ctrl+F) # 下翻一屏
PageUp(或Ctrl+B) # 上翻一屏
nano是Unix和类Unix系统中的一个文本编辑器,是Pico的复制品。
sudo apt install nano
新建/打开文件
nano 路径+文件名
例如:nano test_nano.txt
控制命令
Ctrl+v # 下一页
Ctrl+y # 上一页
Ctrl+w # 搜索单词或短语
Ctrl+x # 关闭当前文本,退出nano,返回shell
Ctrl+\ # 搜索替换
Ctrl+k # 剪切文本行
Ctrl+u # 粘贴文本行
Ctrl+c # 显示光标在文本中的位置
gedit跟Windows下记事本的用法没什么差别。
在编辑器中我们可以点击 ”Open” 按钮浏览最近打开过的文件列表并打开文件;点击 ”Save” 按钮可以保存当前正在编辑的文件;点击右侧的菜单栏进行更多的操作等等。
快捷键也跟windows下一样:
Ctrl + s 保存文件
Ctrl + Shift + s 另存为
Ctrl + f 搜索文本内容
gedit编辑器启动必须在能够显示界面的情况下,不可ssh、jupyter、putty等远程无界面启动。
sudo apt-get update # 更新源
sudo apt-get install package # 安装包
sudo apt-get remove package # 删除包
sudo apt-cache search package # 搜索软件包
sudo apt-cache show package # 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall # 重新安装包
sudo apt-get -f install # 修复安装
sudo apt-get remove package --purge # 删除包,包括配置文件等
sudo apt-get build-dep package # 安装相关的编译环境
sudo apt-get upgrade # 更新已安装的包
sudo apt-get dist-upgrade # 升级系统
sudo apt-cache depends package # 了解使用该包依赖那些包
sudo apt-cache rdepends package # 查看该包被哪些包依赖
sudo apt-get source package # 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean # 清理无用的包
sudo apt-get check # 检查是否有损坏的依赖