avatar

zian

A text-focused Halo theme

  • Java
  • 面试
  • 首页
  • C语音
  • liunx
  • 数据结构与算法
  • 控制台
Home linux 命令
文章

linux 命令

Posted 2025-01-8 Updated 2025-01- 8
By Administrator
51~66 min read

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 键即可退出插入模式,进入命令模式。在命令模式下,您可以执行各种操作,例如复制、粘贴、删除等。

常用命令:

  1. 设置行号

    :set number
    
  2. 取消行号

    :set nonumber
    
  3. 搜索关键字

    /关键字
    

    语法: /关键词

    • 输入 /关键词,然后按 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

`反引号

功能:被两个反引号包围的内容,会作为命令执行

示例:

  1. echo `pwd`,会输出当前工作目录

source 刷新配置文件

# 刷新当前用户的环境变量
source ~/.bashrc
# 刷新全局的环境变量
sudo source /etc/profile

su 切换超级用户

用途:当你想要修改根目录下的文件夹里面的内容

自己的家目录跟共享文件夹可以不切换超级用户的权限

  1. 临时借用超级用户的权限
    语法 sudo 命令的完整写法
sudo   vim   hello.c   //临时借用超级用户的权限创建hello.c
sudo   rm    hello.c   //临时借用超级用户的权限删除hello.c
  1. 永久切换超级用户
sudo   -s
  1. 切换回普通用户
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] [用户][:][用户组] 文件或文件夹

image-20221027222326192

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,查看基础信息

可用选项:

image-20221027221340729

交互式模式中,可用快捷键:

image-20221027221354137

kill 杀死进程

image-20221027221303037

netstat命令

功能:查看端口占用

用法:netstat -anp | grep xxx

image-zdpq.png

curl命令

image-20221027221201079

image-20221027221210518

wget命令

image-20221027221148964

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 命令在不同章节的含义:

  1. printf (1) - 这表示 printf 命令作为用户命令的手册页,通常指的是shell环境中的命令行工具,用于格式化并打印数据。
  2. printf (1posix) - 这表示符合POSIX标准的 printf 命令的手册页。POSIX标准定义了一系列标准化的接口,以确保软件的可移植性。这个页面描述了POSIX标准下的 printf 命令的行为。
  3. printf (3) - 这表示 printf 函数的库调用手册页,通常指的是C语言标准库中的 printf 函数,用于在程序中进行格式化输出。
  4. 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软件包管理器

=========================================================
在线下载软件,更新下载源,卸载软件

  1. 在线下载:
sudo  apt-get install   软件程序的名字 

自动下载的软件,会被放在/var/cache/apt/archives ,ubuntu中的安装包格式是.deb

  1. 更新软件源:
sudo   apt-get update  

如果更新不成功,可以选择不同的ubuntu软件服务器(点击ubuntu设置里面有更换软件服务器地址)

  1. 修改你的源服务器
    ubuntu设置下载服务器地址.jpg有标注
  2. 卸载软件:
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
liunx
License:  CC BY 4.0
Share

Further Reading

Jan 8, 2025

linux 命令

linux中的命令统称shell命令 shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互 shell终端:我们平时输入命令,执行程序的那个窗口 gec@ubuntu:/bin$ root@ubuntu:/etc# gec@u

Dec 24, 2024

ubuntu系统

更换 apt 源 查询版本号 zian@ubuntu:~$ lsb_release -a # 命令 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS # 版本 Release:

Dec 21, 2024

Linux系统软件安装

实战章节:在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,但是并没有一些具体的实操能够串联起来这些知识点。 所以,现在我们设计了各类软件

OLDER

C语言 其他

NEWER

Git 使用

Recently Updated

  • 其他
  • Elasticsearch 面试
  • Spring 面试
  • RabbitMQ 面试
  • Redis 面试

Trending Tags

ruoyi docker java

Contents

©2025 zian. Some rights reserved.

Using the Halo theme Chirpy