序言
我们使用Linux系统时,一般不会使用图形化界面,而是直接使用命令操作该系统,因为图形化界面占用的资源较多,不适合在嵌入式设备上使用。Linux命令一般可以在man命令中找到对应的使用手册。
相对路径与绝对路径
相对路径:从根文件开始的路径
绝对路径:相对于当前目录下的路径
Linux系统的所有命令对于相对路径和绝对路径都是适用的
命令的语法格式
命令 选项 参数
# 参数和选项的相对位置随意,多个参数可以一起使用
命令行提示符说明
linux@zdk:~$
linux:用户名
@:分隔符
zdk:主机名
:分隔符
~:当前所在路径为用户家目录
$:当前用户的权限(#管理员权限)
可以通过环境变量 PS1 修改命令行提示符
man命令
man 命令或者函数名:打开命令或者函数的使用手册
查看一些命令或者函数的使用手册时,不同的选项代表不同位置的函数
选项:
1(或者不写,不谢就是默认值1) :代表系统命令,命令其实就是可执行程序,终端时shell维护的,执行命令时,终端进程会自动执行一个脚本,这个脚本会在指定的路径下寻找这个可执行程序,然后执行其代码。
2 :代表文件IO,即系统提供的接口函数
3 :代表库函数,即C语言库提供的标准IO函数
ls命令
ls 列出当前路径下的所有文件
ls 目录名 列出指定目录下的所有文件
ls -a 列出当前路径下的所有文件(包括隐藏文件 linux系统中隐藏文件是以 . 开头的)
ls -l 列出当前路径下的所有文件,包括文件的详细信息
ls -lh 列出当前路径下的所有文件,包括文件的详细信息且文件的大小以 K M G 的形式显示
文件详细信息说明
rwx-rw-r-- 1 linux linux 612418 5月 31 23:39 aaa.tar.gz
rwx-rw-r--:所属用户权限所属组权限其他用户权限
1:硬链接个数
linux linux:所属用户和所属组
612418:文件大小(单位是字节)
5月 31 23:39:文件时间戳(最后一次修改时间)
aaa.tar.gz:文件名
cd命令
cd 目录文件名 进入指定的目录
cd . 进入当前路径
cd .. 进入上一级路径
cd / 进入根目录
cd ~ 进入用户的家目录 也可以直接 cd 回车
cd - 进入上一次所在的路径
whoami 命令
whoami :显示当前使用的用户
pwd 命令
pwd:显示当前所在的绝对路径
mkdir命令
mkdir dir1:在当前路径下创建一个dir1目录文件
makdir dir2 dir3:在当前路径下创建dir2,dir3两个目录文件
mkdir -p dir4/dir5/dir6:在当前路径下嵌套创建dir4/dir5/dir6
mkdir ~/dir7 在当前用户的家目录下创建一个dir7目录文件
touch命令
touch file1:如果文件file在当前目录下存在,则表示更新file1的时间戳,如果不存在,表示新建一个file1普通文件
rmdir命令
rmdir dir:删除dir目录文件,但是只能删除空目录
rm命令
rm file1:删除当前路径下的file1文件
rm -r dir1:删除dir1目录文件
rm -f file1:取消删除时的提示信息,直接删除
cp命令
cp file1 file2:如果file2不存在 表示将file1复制一份 取名为 file2;如果file2存在 表示将file1复制一份 取名为 file2 会覆盖原来的file2
cp file1 dir1:将file1 复制一份,放在目录 dir1 里面
cp -r dir1 dir2:如果dir2存在,表示将目录dir1复制一份 放到dir2 里面;如果dir2不存在,表示将目录dir1复制一份 取名为 dir2
mv命令
mv file1 file2:如果file2不存在,表示将file1 重命名为file2;如果存在,表示将file1 重命名为file2,会覆盖原来的file2
mv file1 dir1:将file1 移动到目录dir1中
mv dir1 dir2:如果dir2存在,表示将目录文件dir1移动到dir2里面;如果dir2不存在,表示将目录文件dir1重命名为 dir2
exit命令
如果涉及到用户切换,表示退回到上一次的用户;如果已经是第一次的用户了 在执行exit 表示退出终端
clear命令
清屏
软件安装相关命令
由于自由软件的蓬勃发展,怎么管理越来越多的软件对于Linux系统来说非常关键,Linux加上配套的工具和配套的GNU软件和第三方自由软件就形成了Linux的不同版本,(GNU是一个自由的操作系统,其内容软件完全以GPL的方式发布,作为操作系统,GNU的发展仍未完成,内核尚未开发成功,在实际应用上多半是用Linux内核。自由软件基金会是一个致力于推广自由软件的美国民间非营利组织。其主要工作是运行GNU计划,开发更多自由软件,自由软件基金会的志愿者主要在自由软件运动的法律和结构问题上工作。GNU通用公共许可协议缩写为GPL,是被广泛使用的自由软件许可证,给予终端用户运行、学习、共享和修改软件的自由)目前的Linux系统大致分为两类:
RedHat 系列:Redhat、Centos、Fedora 等,使用rpm,软件后缀.rpm
Debian 系列:Debian、Ubuntu 等,使用dpkg,软件后缀.deb
系统包管理工具介绍:
1. dpkg
dpkg(package manager for Debian,debian系统的包管理工具)。dpkg是Debian(Debian是一个致力于创建自由操作系统的合作[组织]及其[作品])的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。dpkg这个机制最早由Debian Linux社区所开发出来的,通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时能提供安装后的软件信息
2. rpm
rpm(RedHat Package Manager,RedHat系统的包管理工具)。这个机制最早由Red Hat这家公司开发出来的,后来实在很好用,因此很多distributons就使用这个机制来作为软件安装的管理方式,包括Fedora,CentOS,SuSE等知名的开发商都是用它
3. apt
dpkg和rpm不能很方便地处理包的依赖关系,那么怎么实时通过网络查询依赖关系进行安装呢,在dpkg和rpm的基础上分别开发出了apt-get和yum(Red Hat)这种『线上升级』机制。
由于每位用户所处的网络环境不同,不可能随意地访问各镜像站点。为了能够有选择地访问,在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。
apt可以看作apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。
apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。
使用apt-get install或apt install安装后,软件的目录:
下载的软件的存放位置:/var/cache/apt/archives
安装后软件的默认位置:/usr/share
可执行文件位置:/usr/bin
配置文件位置:/etc
lib文件位置:/usr/lib
离线包管理工具dpkg
1、离线软件包命名的方式
sl_ 3.03-17build2 _amd64 .deb
| | | |
软件的名称 版本号 架构 软件包的后缀
amd64 ----> x64架构的软件包,64位系统
i386 ----> x86架构的软件包,32位系统
2、离线安装命令
sudo dpkg -i 软件名
3、离线卸载命令
sudo dpkg -r 软件名
4、查看软件安装的列表信息
sudo dpkg -l(小L) 软件名
5、查看软件的安装路径
sudo dpkg -L 软件名
6、完全卸载软件
sudo dpkg -P 软件的名字
在线包管理工具apt-get
在线安装软件需要配置Ubuntu系统的软件源(在线安装软件时从哪个服务器中下载安装软件),国内常用的软件源有:清华源,阿里源,163源(这些源都可以百度搜索出来)
Ubuntu中的软件源配置文件路径为:/etc/apt/sources.list
1、软件源更新命令
sudo apt-get update:更新源,软件源中的软件版本可能会更新,使用该命令可以将软件源中的所有软件列表更新到本地,安装软件时可以提高检索速度,如果更新源的过程中出现了证书验证失败的错误,将http改成https即可
2、在线安装命令
sudo apt-get install 软件名
eg:sudo apt-get install bastet //俄罗斯⽅块
bastet ----> 在前台运行
bastet & ----> 进程在后台运行
3、卸载命令
sudo apt-get remove 软件名
sudo apt-get autoremove 软件名(卸载的更加干净)
3、下载软件包命令
sudo apt-get download 软件名
包压缩及解压缩命令
Linux系统的文件后缀是不代表文件格式的,文件后缀名只是方便用户的,文件格式是文件属性决定的
1、压缩的命令
1、bzip2 文件名.bz2
2、xz 文件名.xz
3、gzip 文件名.gz
注:
<1>以上压缩命令只能对单个文件进行压缩,不能对文件夹压缩
<2>压缩之后源文件消失,得到对应的压缩文件
<3>压缩效率:xz > bzip2 > gzip
<4>压缩时间:xz > bzip2 > gzip
2、解压缩命令
1、bunzip2 压缩文件(文件后缀.bz2)
2、unxz 压缩文件(文件后缀.xz)
3、gunzip 压缩文件(文件后缀.gz)
解压缩之后压缩文件消失
包的归档和拆包命令tar
归档就是将一个目录中的多个文件按照一定的格式放在一个文件中,方便传输,拆包时也按照一定的格式将一个文件中分解为一个目录中的多个文件
语法格式:
tar 参数 文件名(相应的后缀)
参数:
-c : 归档
-x : 拆包
-f : 指定归档和拆包的文件的名字,必须放到所有参数的最后边
-v : 显示归档和拆包的过程的详细信息
-j : 使用bzip2的压缩格式进行压缩
-J : 使用xz的压缩格式进行压缩
-z : 使用gzip的压缩格式进行压缩
万能的拆包并解压缩命令
tar -vxf 要拆包的文件名.tar.xx(xx表示智能选择解压缩的格式)
文件操作相关的命令
1、重定向符
重定向:将命令执行的结果重定向到其他文件中,不在终端回显
shell命令 > 文件;将命令的输出重定向到文件中,如果文件不存在则创建文件,如果文件存在,将结果覆盖到文件中
shell命令 < 文件;将命令的输入重定向到文件中,如果文件不存在则创建文件,如果文件存在,将结果覆盖到文件中
shell命令 >> 文件;将命令的输出重定向到文件中,如果文件不存在则创建文件,如果文件存在,将结果拼接到文件中
shell命令 << 文件;将命令的输入重定向到文件中,如果文件不存在则创建文件,如果文件存在,将结果拼接到文件中
2、head命令
head 文件名:默认回显文件的前10行,如果不够就全部回显
head -n 文件名:回显前n行到终端
3、tail命令
tail 文件名:默认回显文件的后10行,如果不够就全部回显
head -n 文件名:回显后n行到终端
4、cat命令
cat 文件名:回显文件的内容到终端
cat -n 文件名:回显文件内容到终端,显示行号
cat file1 file2 > file3:将file1和file2文件中的内容重定向到file3实现文件的拼接
5、通配符
1、*:匹配多个字符
2、?:匹配单个字符
3、[ ]:匹配括号中的某一个字符
[abcd]abcd中的某一个字符
[a-d]a到d中的某一个字符
[^1-4]除了1到4,任意一个
[^abcd]除了abcd,任意一个
6、find命令
find 路径 -name 文件名:从“路径下”查找“文件名”。(文件名中可以使用通配符)
7、file命令
file 文件名:查看文件属性
eg:
linux@ubuntu:day02$ gcc hello.c -o hello
linux@ubuntu:day02$ file hello
hello:
ELF ----> 可执行文件的格式
64-bit LSB shared object, ----> 64位可执行程序 小端对齐
x86-64, ----> 可执行程序的架构
version 1 (SYSV),
dynamically linked, ----> 动态链接
interpreter /lib64/ld-linux-x86-64.so.2, ---> 动态库
BuildID[sha1]=aecfe163e5e53998d09c4ec5becb342c6d672a73,
for GNU/Linux 3.2.0,
not stripped ----> 没有压缩
8、grep命令
grep -参数 "要搜索的字符串" 文件名/目录名:从文件或者目录下搜索字符串
参数:
-n:显示搜索到内容的行号
-R:从目录中搜索时,使用该参数表示递归搜索
-i:查找时不区分大小写
-w:按单词进行查找
9、| 命令
shell命令1 | shell命令2 | shell命令3 | ...:将前一个命令的结果作为后一个命令的输入
10、echo命令
echo "字符串"
echo '字符串'
echo 字符串
这三个命令都是打印字符串
11、read命令
read shell变量名:将终端读到的数据读到变量中
read -p "提示字符串" shell变量名:先在终端打印一个提示符,再将终端输入的内容读到shell变量中
12、cut命令
cut -d "分隔符" -f 截取的域 要截取的文件名及路径
eg:
linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
域 1 2 3 4 5 6 7
cut -d ":" -f 6 ./passwd
命令的结果为:在终端上打印/home/linux
13、修改文件权限的命令
文件的权限:
r:可读(权限值4)
w:可写(权限值2)
x:可执行(权限值1)
用户和属组:
a:所有用户(all)
u:普通用户(user)
g:属组(group)
o:其他用户(other)
权限操作:
+:添加权限
-:删除权限
=:修改权限
修改权限的语法:
chmod 用户和属组权限操作文件的权限 文件名
eg1:
chmod a+rwx hello.c:给hello.c文件的所有用户添加读写执行的权限
eg2:
chmod 777 hello.c:给所属用户的权限值所属组的权限值所属其他用户的权限值都设置为7,即读写执行的权限
14、修改文件所属组的命令
chgrp root hello.c:修改hello.c文件的所属组为root
15、修改用户所属用户和组
chown root:root hello.c ---> 修改hello.c文件所属的用户和组
chown root: hello.c ---> 修改hello.c文件所属的用户和组
chown :root hello.c ---> 修改hello.c文件所属的组
chown root hello.c ---> 修改hello.c文件所属的用户
16、链接文件的创建
Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)
默认情况下,ln 命令产生硬链接
硬链接文件:
硬链接文件是指通过索引节点来进行链接,在Linux文件系统中,保存在磁盘分区中的文件都有一个索引节点(Inode Index),如果file1是file2的硬链接文件,则file1的inode和file2的inode是相同的,file1和file2访问的是同一块存储空间,硬链接可以防止用户的误删,因为硬链接文件和源文件有同样的功能,只有硬链接文件和源文件同时删除,硬盘中的数据才会被删除。
注意:只能对普通文件创建硬链接文件
软链接文件:
软链接文件相当于Windows的快捷方式,如果file1是file2的软连接文件,那么file1和file2的inode是不相同的,但是file1的数据块中存储的只是file2的路径,我们通过file1可以找到并打开file2。如果file2被删除了,file1仍然存在,但是file1就变成了一个无效的链接文件,但是在相同路径下重新创建被链接的文件,那么软链接文件会重新生效。
注意:普通文件和目录文件都可以创建软链接文件,在创建软链接文件时尽量使用绝对路径(因为如果使用相对路径,软链接文件被拷贝到其他目录时将会失效)
1、创建硬链接文件
ln 源文件的绝对路径 链接文件的绝对路径
2、创建软链接文件
ln -s 源文件的绝对路径 链接文件的绝对路径
重启和关机命令
关机命令
sudo shutdown 18:00:18:00关机
sudo shutdown +10:10分钟后关机
sudo shutdown now:立即关机
重启命令
sudo reboot 18:00:18:00关机
sudo reboot +10:10分钟后关机
sudo reboot now:立即关机