linux 命令
linux中的命令统称shell命令
shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互
shell终端:我们平时输入命令,执行程序的那个窗口
gec@ubuntu:/bin$
root@ubuntu:/etc#
gec@ubuntu:~$
~ --》当前用户的家目录,等价于 /home/用户名
家目录:linux系统支持创建多个用户,你创建新的用户的时候,linux会帮你在/home目录下面新建一个文件夹(文件夹的名字跟用户名是一模一样的)--》这个特殊的文件夹称为家目录
gec --》当前用户的名字
root --》超级用户的名字,安卓手机刷机的时候一键root
@ --》分隔用户名和系统名
ubuntu --》操作系统的名字
/bin --》指示你当前所处的位置路径
$ --》当前用户是个普通用户
# --》当前用户是个超级用户
语法:vim 文件名
vim text
插入模式
按下 i
、o
或 a
中的任意一个键,即可进入插入模式。在插入模式下,您可以直接输入文本。
i
:在光标前插入a
:在光标后插入o
:在当前行下方插入新行O
:在当前行上方插入新行
常用就有:i
和 o
这两个重点记忆即可。
命令模式
在插入模式下,按下 Esc
键即可退出插入模式,进入命令模式。在命令模式下,您可以执行各种操作,例如复制、粘贴、删除等。
常用命令:
-
设置行号
:set number
-
取消行号
:set nonumber
-
搜索关键字
/关键字
语法:
/关键词
- 输入
/关键词
,然后按Enter
键,Vim 会从当前光标位置开始向前搜索第一个匹配的文本。 - 按下
n
键,可以继续搜索下一个匹配文本。 - 按下
N
键,可以反向搜索上一个匹配的文本。
- 输入
可视模式
Esc
从任何模式转换视图模式。
常用快捷指令:
ddG
: 清空整个文件
u
: 撤销
p
:粘贴
yn
:复制 , yy 复制当前行 , y3 复制三行(往下复制)
dn
:剪切 , dd 剪切当前行 , d3 剪切三行. ( 按下回车表示确认剪切。 )
touch 创建文件
touch demo.c
cd 切换目录
语法: cd 目录的路径名
(通俗说cd 指定文件夹)
- 绝对路径:不偷懒,永远都不会出错的写法,完整的路径写法(从根目录开始
/
)
cd /mnt/hgfs
- 相对路径:偷懒,根据所处的位置去写路径名
cd ~/桌面
gec@ubuntu:~$ cd 桌面
gec@ubuntu:~/桌面/demo$ cd ../project
cd ..
返回上一级目录
cd -
返回上一次进入的目录
linux中路径的写法,跟windows的区别
linux的根目录 /
bin ---> 工具目录
dev ---> 设备驱动文件
proc ---> 系统信息
sbin ---> 管理员工具 (root)
sys ---> 驱动信息
var ---> 系统日志
boot ---> 系统启动文件
etc ---> 配置文件
lib ---> 库文件
mnt ---> 挂载目录
root ---> 管理员工作目录
tmp ---> 临时目录
cdrom ---> 光驱目录
home ---> 用户主目录(每个用户在该目录中均有一个子目录)
usr ---> 用户的程序文件目录
ls命令
语法: ls
查看当前目录内部内容只输出文件名
ls -l
列表的形式列举文件,不包括隐藏文件
-rwxrwxrwx 1 root root 67 Feb 23 19:23 hello.c
drwxrwxr-x 2 gec gec 4096 Jul 25 18:54 lib
linux中一切都是文件
linux中有七种类型的文件:
目录: d
普通文件:-
字符设备:c //学习后面的驱动
块设备:b //学习后面的驱动
套接字:s //学习网络编程
软链接文件:l //类似于window的快捷方式
管道文件: p //学习系统编程
第一个字符:
d
--》目录-
--》普通文件
第二个开始的字符: 表示可读,可写,可执行的权限
分为三组:分别表示当前用户,同组用户,其它用户对于这个文件的操作权限r
--》可读w
--》可写x
--》可执行
ls -al
列表的形式列举所有文件,指令 a
包括隐藏文件
linux中所有的隐藏文件都是小数点开头
其中:.
和..
要注意
.
(一个小数点) 表示当前路径
比如:C语言学习阶段运行某个程序./hello
表示执行当前路径下的hello
..
(俩个小数点) 表示上一级路径
比如:cd ..
表示返回上一级路径
利用这个特点自己新建隐藏的文件或者目录
touch .1.txt
mkdir .newdir
一般直接使用 ll
命令即可
管道符|
写法:|
功能:将符号左边的结果,作为符号右边的输入
示例:
cat a.txt | grep itheima
,将cat a.txt的结果,作为grep命令的输入,用来过滤 itheima
关键字
可以支持嵌套:
cat a.txt | grep itheima | grep itcast
echo命令
在屏幕上输出数据
echo "hello"
echo 567
echo 输入环境变量
zian@zian-VivoBook:~/桌面$ echo $PATH
/home/zian/.nvm/versions/node/v18.20.5/bin:/home/zian/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/usr/dev-tools/maven/bin:/home/zian/.local/bin
`反引号
功能:被两个反引号包围的内容,会作为命令执行
示例:
- echo `pwd`,会输出当前工作目录
source 刷新配置文件
# 刷新当前用户的环境变量
source ~/.bashrc
# 刷新全局的环境变量
sudo source /etc/profile
su 切换超级用户
用途:当你想要修改根目录下的文件夹里面的内容
自己的家目录跟共享文件夹可以不切换超级用户的权限
- 临时借用超级用户的权限
语法sudo 命令的完整写法
sudo vim hello.c //临时借用超级用户的权限创建hello.c
sudo rm hello.c //临时借用超级用户的权限删除hello.c
- 永久切换超级用户
sudo -s
- 切换回普通用户
su 普通用户的名字
mv 剪切文件或者目录
语法: mv 文件名 目标路径
比如:
# mv 那个文件或者文件夹 移动到哪里
mv hello /mnt/hgfs/share //当前路径下的hello剪切到共享
# 重命名
mv hello.c hehe.c //给hello.c更换名字为hehe.c
注意: 区分剪切和重命名,主要看后面你写的是合法的路径名(剪切)还是文件名(重命名)
chmod 修改权限
不要在共享文件夹中修改权限,不准确(受到windows的影响)
chmod 777 文件的名字
chmod 777 目录的名字 -R (递归修改文件夹的权限)
数字含义 7 ---》 二进制 111(分别代表读,写,执行的权限)
r w x
4 2 1
读 写 执行
例如:
chmod 666 hello.c
chmod 654 hello.c
chown命令
修改文件、文件夹所属用户、组
语法:chown [-R] [用户][:][用户组] 文件或文件夹
cp 拷贝文件/目录
语法:
cp 文件名 目标路径
cp 目录名 目标路径 -rf
cat 查看文件
语法: cat 文件名
查看整个文件内容
head
: head 1.txt -n 2
查看1.txt的前面2行
tail
: tail 1.txt -n 2
查看1.txt的最后2行
tar 打包和压缩文件
linux中有两种常见格式的压缩包:.bz2
,gz
打包文件/文件夹(重点):
压缩参数
- j 使用bz2压缩算法
- z 使用gz压缩算法
- c 创建压缩包
- f/vf 压缩进度 vf(进度可视化)
- x 解压
- t 查看
示例:
解压
tar -[j|z]xvf 压缩包 [-C 指定解压路径]
# 示例
tar -zxvf code.tar
压缩:
tar -[z|j]cvf 压缩包名字 要压缩的文件或者目录
# 示例
tar -zcvf code.tar ./Code
clear 清屏
clear
> 重定向和追加重定向
重定向:重新确定方向 > 会覆盖原来的内容
ls > 1.txt //把ls的输出重定向到1.txt
echo "hello" > 2.txt
追加重定向: >>
在末尾追加,不会覆盖文件中原本的内容
在启动一些服务的启用后台运行,并且把其输入都日志输出指定的文件中使用 >>
$符号
可以取出指定的环境变量的值
语法:$变量名
示例:
echo $PATH
,输出PATH环境变量的值
echo ${PATH}ABC
,输出PATH环境变量的值以及ABC
如果变量名和其它内容混淆在一起,可以使用${}
tail命令
功能:查看文件尾部内容
语法:tail [-f] 参数
- 参数:被查看的文件
- 选项:-f,持续跟踪文件修改
head命令
功能:查看文件头部内容
语法:head [-n] 参数
- 参数:被查看的文件
- 选项:-n,查看的行数
ip address 查看或者修改ubuntu的ip地址
ip address
查看ip地址,并且可以从该方法可以看到你的虚拟网卡名字
zian@zian-VivoBook:/etc/netplan$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enx00e04c881098: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:e0:4c:88:10:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.6.244/24 brd 192.168.6.255 scope global noprefixroute enx00e04c881098
valid_lft forever preferred_lft forever
inet6 fe80::419c:3c0d:6f17:4d27/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlo1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 8c:b8:7e:97:8b:7d brd ff:ff:ff:ff:ff:ff
altname wlp0s20f3
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:ad:5b:29:04 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
enx00e04c881098 是ubuntu 网卡的名字
注意:ubuntu 18以后永久IP配置在命令 /etc/netplan
目录中, 18以前在 /etc/network
目录下
Ping
语法: ping 网址
PING www.a.shifen.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189: icmp_seq=1 ttl=128 time=6.01 ms
64 bytes from 14.119.104.189: icmp_seq=2 ttl=128 time=4.83 ms
64 bytes from 14.119.104.189: icmp_seq=3 ttl=128 time=4.77 ms
64 bytes from 14.119.104.189: icmp_seq=4 ttl=128 time=4.86 ms
查看当前路径名
pwd
env 查看环境变量(重要)
个人建议不需要一开就把牢记,我们有百度
env
- 输出环境变量
echo $环境变量的名字
# 比如:echo $PATH
- 设置环境变量
export 环境变量的名字=新的路径名:$环境变量的名字
比如;export PATH=/mnt/hgfs/share:$PATH
删除export PATH=$(echo "$PATH" | sed -e 's#:/mnt/hgfs/share##g' -e 's#^/mnt/hgfs/share:##')
ln 软链接
- 软链接:
ln -s 原来的名字 软链接的名字
,类似于windows中的快捷方式 - 硬链接:
ln 原来的名字 硬链接的名字
软硬链接共同点:原文件修改了,软硬链接都跟着一起修改,软硬链接文件修改了,原文件跟着修改
软链接和硬链接只能在纯粹的linux环境中创建(共享文件夹中无法创建软硬链接)
区别:软链接依赖于原文件,硬链接不需要依赖原文件
硬链接的文件类型跟原来的文件一样,软链接文件类型属于链接文件硬链接不能指向目录
find 查找搜索相关的命令
find
比如: find / -name stdio.h
在根目录下找名字叫做stdio.h的文件
语法: find / -type 文件类型
find / -type d
搜索根目录下的所有的文夹
grep
cd /usr/include/stdio.h
比如:grep "printf" stdio.h -Hn
//我要在stdio.h文件中搜索关键字printf,并打印printf出现行号
-H
打印文件的名字-n
打印关键词出现的行号-w
全字匹配,跟关键词一模一样
systemctl
功能:控制系统服务的启动关闭等
语法:systemctl start | stop | restart | disable | enable | status 服务名
- start,启动
- stop,停止
- status,查看状态
- disable,关闭开机自启
- enable,开启开机自启
- restart,重启
ps 命令
功能:查看进程信息
语法:ps -ef
,查看全部进程信息,可以搭配grep做过滤:ps -ef | grep xxx
top命令
功能:查看主机运行状态
语法:top
,查看基础信息
可用选项:
交互式模式中,可用快捷键:
kill 杀死进程
netstat命令
功能:查看端口占用
用法:netstat -anp | grep xxx
curl命令
wget命令
alias 给命令取别名
注意: 取别名不能跟系统中原本的命令冲突
alias c='clear'
表示我给clear命令换个名字,叫做c
- 取消别名
unalias c
取消刚才取的别名c
which 查询shell命令的路径
which 重点
语法:which shell命令的名字
which ls --》/bin/ls
which find --》/usr/bin/find
du 查看文件大小
语法: du 文件名 -b
目录的大小:它里面所有文件和文件夹大小的总和
ls -l 查看普通文件大小是正确的,但是目录就不对(全部都是4096字节)
tree 目录树
tree 目录名
tree 需要安装
sudo apt install tree
diff 比较文件或者目录
diff 1.c 2.c -s
比较两个文件,内容一样就打印提示
diff 目录1 目录2 -r
递归比较两个目录
添加/删除用户,密码
- 添加用户:
sudo adduser 用户名
弹出提示让你输入密码,输入个人信息(随便乱输入)
- 普通用户直接切换
su 普通用户的名字
- 修改密码:
sudo passwd 用户名
弹出提示让你输入新密码
- 删除用户:
sudo userdel -rf 用户名
//连同家目录一起删除
安装man手册
sudo apt-get install manpages-posix manpages-dev manpages
#(manual手册安装)
在 man
命令的输出中,每一行代表 printf
命令在不同章节的手册页信息。man
命令的手册页被分为不同的章节,每个章节针对不同类型的文档。以下是您提供的 printf
命令在不同章节的含义:
- printf (1) - 这表示
printf
命令作为用户命令的手册页,通常指的是shell环境中的命令行工具,用于格式化并打印数据。 - printf (1posix) - 这表示符合POSIX标准的
printf
命令的手册页。POSIX标准定义了一系列标准化的接口,以确保软件的可移植性。这个页面描述了POSIX标准下的printf
命令的行为。 - printf (3) - 这表示
printf
函数的库调用手册页,通常指的是C语言标准库中的printf
函数,用于在程序中进行格式化输出。 - printf (3posix) - 这表示符合POSIX标准的
printf
函数的手册页。与上面的(1posix)
类似,这个页面描述了POSIX标准下的printf
函数的行为。
下面是每个章节的简要说明:
- 章节 1:用户命令,通常是可执行程序或shell命令。
- 章节 2:系统调用,描述了从用户程序到操作系统的接口。
- 章节 3:库函数,描述了程序库中的函数。
- 章节 4:特殊文件(通常是设备文件)和驱动程序。
- 章节 5:文件格式和约定,描述了用于存储数据的文件格式。
- 章节 6:游戏和娱乐,描述了游戏和娱乐相关的程序。
- 章节 7:宏命令和规则,描述了make和其他构建工具的宏。
- 章节 8:系统管理命令,通常是管理员使用的命令。
按屏显示文本文件
语法: more 文件名
- 按Enter键为一行一行显示,按空格键为一屏一屏显示
- 按q退出显示
另外一个按屏显示文件的命令语法:less 文件名
- 可以用上下键翻阅
ubuntu网络配置
1. 概念
桥接: ubuntu会单独由路由器分配ip,不和window共享ip
设置静态ip
NAT: ubuntu跟主机共享ip
设置动态ip
仅主机:
注意:某些同学ubuntu一直都无法配置联网或者ping通局域网,有可能的原因是虚拟网卡被删掉了,重新安装最新版本的wmware workstation
2. 具体配置方法
总体有两种配置方法:
如果你使用文件配置ip,那就删除图形用户界面的配置,同样的道理,如果你使用图形用户界面配置ip,就删除文件配置中的语句
第一种: 使用图形用户界面配置
步骤: (1)确保你的windows是能上网,如果是动态ip,linux网络配置成NAT模式
如果是静态ip,linux网络配置成桥接模式
比如:老师windows的ip如192.168.9.12,配置静态ip的时候,ip地址前面三个部分跟window一样,子网掩码,默认网关,DNS全部照抄
第二种: 使用配置文件去配置
步骤: (1)确保你的windows是能上网,如果是动态ip,linux网络配置成NAT模式
如果是静态ip,linux网络配置成桥接模式
(2.1) 打开/etc/network/interfaces文件
在这个文件的后面加入如下几句话(静态)
auto ens33
iface ens33 inet static //设置静态ip
address 192.168.1.5 //设置ip地址
gateway 192.168.1.1 //设置网关
netmask 255.255.255.0 //子网掩码
dns-nameservers 192.168.120.1 //dns服务器
打开/etc/resolv.conf文件
namesever 你自己的DNS服务器地址
(2.2)打开/etc/network/interfaces件
在这个文件的后面加入如下几句话(动态)
auto ens33
iface ens33 inet dhcp //设置动态ip
(3)重启网络
sudo /etc/init.d/networking force-reload
sudo /etc/init.d/networking restart
注意:有些新版本的ubuntu,不认识刚才的重启命令,改成如下
sudo service networking force-reload
sudo service networking restart
APT软件包管理器
=========================================================
在线下载软件,更新下载源,卸载软件
- 在线下载:
sudo apt-get install 软件程序的名字
自动下载的软件,会被放在/var/cache/apt/archives ,ubuntu中的安装包格式是.deb
- 更新软件源:
sudo apt-get update
如果更新不成功,可以选择不同的ubuntu软件服务器(点击ubuntu设置里面有更换软件服务器地址)
- 修改你的源服务器
ubuntu设置下载服务器地址.jpg有标注 - 卸载软件:
sudo apt-get remove 软件程序的名字
问题一: 卸载软件出现
Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
解决方法:用超级用户删除 /var/lib/dpkg/lock
这个锁
手动安装软件:
sudo dpkg -i xxxxx.deb