【Linux】Linux基本命令

目录

文件和目录操作:

ll和ls

cd

pwd

cp

mv

rm

mkdir

rmdir

touch

clear

history

which/whereis

which 命令

whereis 命令

cat

less

head

tail

vi 或 vim

sz/rz

echo

tar

基本语法

常用选项

主要操作(必须选一个)

辅助选项

系统信息和管理:

su

uname

hostname

df

free

top

ps

grep

kill

chmod

网络操作:

ping

ifconfig 或 ip

netstat

curl


        Linux 是一个开源的操作系统内核,广泛应用于服务器、桌面、嵌入式系统和超级计算机等领域。它由 Linus Torvalds 于 1991 年首次发布,并由全球开发者社区共同维护和开发。以下是一些关于 Linux 的常用命令。

文件和目录操作:

ll和ls

ls      # 简单列出当前目录内容
ll      # 详细列出(包括权限、所有者、大小等)

cd

命令作用
cd <目录路径>切换到指定目录
cdcd ~返回当前用户的家目录(如 /home/username
cd ..切换到上级目录(父目录)
cd -返回上一次所在的目录(类似“后退”)
cd .进入当前目录(无实际作用,通常用于脚本占位)

pwd

(print working directory)查看当前目录所在位置。

cp

复制文件或目录。

命令:cp [-r] 参数1 参数2

命令解释:

 -r选项, 可选,用于复制文件夹使用,表示递归
参数1,被复制的文件
参数2,复制去的地方
举例:cp -r a b
将源目录 a 及其所有内容(包括子目录和文件)复制到目标目录 b。

mv

移动或重命名文件或目录。

mv 参数1 参数2
- 被移动的文件或文件夹
- 移动去的地方路径
举例:mv a b 
将源文件或目录 a 移动到目标文件或目录 b。
举例:mv /tmp/a.txt .
将 /tmp/a.txt 文件移动到当前所在的目录。

rm

rm (remove) 是 Linux 系统中用于删除文件和目录的命令,功能强大但需要谨慎使用。

选项描述
-f强制删除,不提示确认
-i交互式删除,删除前提示确认
-r-R递归删除目录及其内容
-v显示删除过程的详细信息
-I删除超过3个文件或递归删除时提示一次确认
删除单个文件
rm file.txt

删除多个文件
rm file1.txt file2.txt file3.txt

交互式删除(推荐新手使用)
rm -i *.txt

强制删除(无确认提示)
rm -f logfile.log

强制递归删除dist目录
rm -rf dist

mkdir

mkdir (make directory) 是 Linux 中用于创建目录的命令。

基本语法

mkdir [选项] 目录名...
创建单个目录
mkdir new_folder

创建多个目录
mkdir dir1 dir2 dir3

递归创建目录结构(推荐)
mkdir -p project/{src,doc,test}/main

rmdir

rmdir (remove directory) 是 Linux 中用于删除空目录的命令。

基本语法

rmdir [选项] 目录名...
删除单个空目录
rmdir empty_dir

删除多个空目录
rmdir dir1 dir2 dir3

递归删除空目录结构
rmdir -p a/b/c

这会依次尝试删除:
a/b/c
a/b(如果变为空)
a(如果变为空)

rm -r 的区别

特性rmdirrm -r
删除非空目录❌ 不能✅ 可以
安全性高(只删空目录)低(强制删除所有内容)
递归删除只删除空父目录强制删除整个目录树
文件删除不能删除文件可以删除文件

touch

touch 是 Linux 中用于创建空文件和修改文件时间戳的命令。

基本语法

touch [选项] 文件名...

主要功能

  1. 创建新空文件(如果文件不存在)

  2. 更新文件时间戳(如果文件已存在)

选项描述
-a仅更改访问时间(access time)
-m仅更改修改时间(modify time)
-c不创建新文件(仅修改现有文件)
-d使用指定时间而非当前时间
-t使用[[CC]YY]MMDDhhmm[.ss]格式的时间
-r使用参考文件的时间
创建单个文件
touch newfile.txt

创建多个文件
touch file1.txt file2.txt file3.log

避免创建新文件(仅更新时间戳)
touch -c existing_file

更改文件为特定时间
touch -t 202312251830.00 file.txt  # 设置为2023-12-25 18:30:00

使用参考文件的时间
touch -r source.txt target.txt  # 使target.txt时间与source.txt相同

clear

clear 是 Linux/Unix 系统中用于清除终端屏幕显示内容的命令。

history

history 是 Linux 中用于查看和管理命令行历史记录的重要工具。

查看完整历史记录
history

查看最近N条命令
history 10  # 查看最近10条命令

执行历史命令
!55     # 执行历史记录中第55条命令
!!      # 执行上一条命令
!vim    # 执行最近以"vim"开头的命令

搜索历史命令
Ctrl+R  # 反向搜索历史命令
history | grep "apt"  # 查找包含"apt"的命令

which/whereis

这两个命令都用于查找命令的位置,但工作方式和查找范围有所不同。

which 命令

功能

查找可执行文件在 PATH 环境变量中的位置

which命令 eg:which redis-server
which -a ls
-a:显示所有匹配的路径,而不仅仅是第一个匹配的路径。

whereis命令 eg:whereis redis-server

基本语法

which [选项] 命令名

特点

  1. 只搜索 PATH 环境变量指定的目录

  2. 只返回第一个找到的可执行文件路径

  3. 适用于查找 shell 执行的命令位置

常用选项

选项描述
-a显示所有匹配的可执行文件路径
which python
# 输出示例: /usr/bin/python

which -a python
# 显示所有找到的python可执行文件路径
whereis 命令

功能

查找命令的二进制文件、源代码和手册页位置

基本语法

whereis [选项] 命令名

特点

  1. 搜索标准 Linux 目录(包括/bin, /usr/bin, /usr/local/bin等)

  2. 可以同时显示二进制文件、源代码和手册页位置

  3. 查找范围比 which 更广

whereis python
# 示例输出:
# python: /usr/bin/python /usr/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python.1.gz

主要区别

特性whichwhereis
搜索范围只在PATH中查找预定义的标准系统目录
查找内容仅可执行文件二进制文件、手册页、源代码
显示结果第一个匹配项所有匹配项
查找速度较快较慢(搜索范围更大)
使用场景确定shell实际执行的命令位置查找命令的所有相关文件

cat

cat (concatenate) 是 Linux 中最常用的文件查看和操作命令之一。

基本语法

cat [选项] [文件...]
选项描述
-n显示行号(包括空行)
-b显示行号(忽略空行)
-s压缩连续空行为一行
-A显示所有内容(包括特殊字符)
-E在每行末尾显示$符号
查看单个文件
cat file.txt

查看多个文件
cat file1.txt file2.txt

显示行号
cat -n file.txt

创建新文件(Ctrl+D保存)
cat > newfile.txt

追加内容到文件
cat >> existing.txt

合并多个文件
cat part1.txt part2.txt > combined.txt

显示文件内容并高亮特殊字符
cat -A file.txt

less

用于分页显示文件的内容。它允许你逐页浏览文件内容,而不是一次性显示所有内容。

less 文件名

less 命令的界面中,你可以使用以下键盘快捷键来浏览文件内容:

  • Spacef:向下滚动一页。
  • b:向上滚动一页。
  • Enter:向下滚动一行。
  • q:退出 less 命令。

用于显示文件的前几行。默认情况下,它显示文件的前 10 行。

head 文件名
你也可以指定显示的行数,例如显示前 5 行:
head -n 5 example.txt

tail

用于显示文件的后几行。默认情况下,它显示文件的后 10 行。

tail 文件名
你也可以指定显示的行数,例如显示后 5 行:
tail -n 5 example.txt

实时监控文件
tail 命令还可以用于实时监控文件的变化。使用 -f 选项可以实时显示文件的新内容。
tail -f 文件名
假设你有一个名为 logfile.txt 的日志文件,你可以使用以下命令来实时监控文件的变化:
tail -f logfile.txt

这个命令会显示文件 filename 的最后 100 行,并实时监控文件的变化。
tail -f -n 100 filename

vivim

强大的文本编辑器,查看文件中的内容。

示例

假设你有一个名为 example.txt 的文件,你想使用 vim 编辑它。你可以使用以下命令:

vim example.txt

编辑文件
    进入插入模式:按 i 键。
    输入文本:例如,输入 Hello, world!。
    退出插入模式:按 Esc 键。
    保存并退出:输入 :wq 并按 Enter 键。

搜索文本
    进入命令模式:按 Esc 键。
    输入 / 并键入要搜索的文本,例如 /world。
    按 Enter 键开始搜索。
    按 n 键跳转到下一个搜索结果。
    按 N 键跳转到上一个搜索结果。

删除行
    进入命令模式:按 Esc 键。
    将光标移动到要删除的行。
    输入 dd 删除当前行。

复制和粘贴
    进入命令模式:按 Esc 键。
    将光标移动到要复制的行。
    输入 yy 复制当前行。
    将光标移动到要粘贴的位置。
    输入 p 粘贴复制的内容。

sz/rz

sz 命令用于从 Unix/Linux 系统向 Windows 系统发送文件。

rz 命令用于从 Windows 系统向 Unix/Linux 系统接收文件。

上传和下载都是针对Unix/Linux来说的,这样就好记忆。(sz发送就是下载,rz接收就是上传。)

假设你有一个名为 example.txt 的文件,你想将其从 Unix/Linux 系统发送到 Windows 系统,可以使用以下命令:
sz example.txt

假设你想从 Windows 系统接收一个文件,可以在 Unix/Linux 系统上运行以下命令:
rz或rz -y 
-y表示如果名称重复直接进行覆盖。

echo

echo 是一个用于在终端输出文本的命令。它可以显示字符串、变量的值、特殊字符等。

语法:echo 文本
输出简单文本
假设你想在终端输出文本 "Hello, world!",可以使用以下命令:
echo Hello, world!
输出为:Hello, world!

tar

tar (Tape Archive) 是 Linux 中最常用的归档工具,用于将多个文件打包成一个文件(归档),并可选择进行压缩。

基本语法

tar [选项] [归档文件] [文件或目录...]

常用选项

主要操作(必须选一个)

选项描述
-c创建新归档
-x提取归档
-t列出归档内容
-r追加文件到归档
-u只添加比归档中更新的文件

辅助选项

选项描述
-f指定归档文件名(必须)
-v显示详细过程
-z通过gzip压缩/解压
-j通过bzip2压缩/解压
-J通过xz压缩/解压
-C解压到指定目录
-p保留文件权限
--exclude排除特定文件
创建归档
tar -cvf archive.tar file1 file2 dir1  # 不压缩
tar -czvf archive.tar.gz file1 dir1    # gzip压缩
tar -cjvf archive.tar.bz2 file1 dir1   # bzip2压缩
tar -cJvf archive.tar.xz file1 dir1    # xz压缩

提取归档
tar -xvf archive.tar            # 解压普通tar包
tar -xzvf archive.tar.gz        # 解压gzip压缩包
tar -xjvf archive.tar.bz2       # 解压bzip2压缩包
tar -xJvf archive.tar.xz        # 解压xz压缩包
tar -xvf archive.tar -C /target # 解压到指定目录

查看归档内容
tar -tvf archive.tar      # 查看普通tar包内容
tar -tzvf archive.tar.gz  # 查看gzip压缩包内容

添加/删除文件
tar -rvf archive.tar newfile  # 添加文件到归档
tar --delete -f archive.tar file1  # 从归档删除文件

系统信息和管理:

su

switch user,切换用户。eg:su root

uname

显示系统信息。

hostname

获取主机名,修改主机名

hostname
获取主机名

hostnamectl set-hostname 主机名
修改主机名(需root)

df

显示文件系统的磁盘空间使用情况。

df -h
-h:以更加人性化的单位显示磁盘使用情况

free

显示内存使用情况。

free -m
用来显示内存使用情况,以MB为单位。

它的输出格式通常是这样的:

            total       used       free     shared   buffers     cached

Mem:         7983       6509       1474       199       104       3707

-/+ buffers/cache:       2697       5286

Swap:       16383       972     15411其中:

● total表示系统当前总内存大小。

● used表示当前已经使用的内存大小。

● free表示当前未使用的内存大小。

● shared表示被共享使用的内存大小,通常是进程间通信时使用的内存。

● buffers表示被缓冲的内存大小,通常是文件系统操作时使用的内存。

● cached表示被缓存的内存大小,通常是为了提高系统性能而缓存的内存。

另外,在 -/+ buffers/cache 行下面的 used 表示实际使用的内存大小,free 表示当前可用的内存大小。free命令支持几个选项,例如-b表示显示字节为单位,-k表示显示KB为单位,-g表示显示GB为单位等。

top

是一个实时监控系统性能的命令行工具,用于显示系统中的进程、CPU 使用率、内存使用率、负载平均值等信息。

python@ubuntu:~$ top
top - 08:31:54 up 2 min,  1 user,  load average: 0.25, 0.37, 0.17
Tasks: 271 total,   1 running, 270 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4028880 total,  3210104 free,   331668 used,   487108 buff/cache
KiB Swap:  4192252 total,  4192252 free,        0 used.  3414856 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
  4827 redis     20   0   47204   6632   2300 S   0.3  0.2   0:00.21 redis-ser+ 
  6371 python    20   0   49000   3896   3176 R   0.3  0.1   0:00.12 top        
     1 root      20   0  119940   6112   4004 S   0.0  0.2   0:02.77 systemd    
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd   
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.11 ksoftirqd+ 

1.  系统性能概览

a.  第一行显示系统的基本信息,包括当前时间、系统运行时间、用户数量、负载平均值等。

b.  第二行显示进程的状态信息,包括总进程数、运行中的进程数、睡眠中的进程数、停止的进程数、僵尸进程数等。

c.  第三行显示 CPU 使用率信息,包括用户空间占用的 CPU 时间、系统空间占用的 CPU 时间、空闲 CPU 时间等。

d.  第四行和第五行显示内存和交换区的使用情况,包括总内存、已用内存、空闲内存、缓冲区、缓存等。

2.  进程列表

a.  进程列表显示系统中的各个进程,包括进程 ID(PID)、用户名(USER)、优先级(PR)、虚拟内存(VIRT)、物理内存(RES)、共享内存(SHR)、状态(S)、CPU 使用率(%CPU)、内存使用率(%MEM)、运行时间(TIME+)、命令名称(COMMAND)等。

ps

查询当前进程。

查询java的进程:ps -ef | grep java
grep:是一个用于搜索文本的命令。
java:是搜索的关键字。
|:管道符,将左边的输出结果当作右边的输入。

grep

grep (Global Regular Expression Print) 是 Linux 中最强大的文本搜索工具,用于在文件中查找特定模式。

基本语法

grep [选项] "搜索模式" [文件...]

核心功能

  1. 文本搜索:在文件中查找指定内容

  2. 正则表达式支持:支持复杂模式匹配

  3. 多文件处理:可同时搜索多个文件

  4. 上下文显示:显示匹配行前后内容

基本搜索
grep "error" logfile.txt

多文件搜索
grep "TODO" *.py

递归搜索目录
grep -r "function" /path/to/project/

显示上下文
grep -A2 -B2 "critical error" system.log

统计匹配次数
grep -c "warning" *.log

使用正则表达式
grep -E "^[A-Z]{3}" file.txt  # 匹配以三个大写字母开头的行

kill

终止进程。

kill -15(优雅)/-9(强制) PID(进程的PID)
kill -9 发送的是 SIGKILL 信号(信号编号为 9)。这个信号会立即终止进程,不允许进程进行任何清理操作。它是强制终止进程的方式,通常用于那些无法通过其他方式终止的进程
kill -15 发送的是 SIGTERM 信号(信号编号为 15)。这个信号是一个终止信号,但它允许进程进行清理操作(如关闭文件、释放资源等)。它是一种优雅的终止方式,通常用于正常终止进程。

chmod

是一个用于修改文件或目录权限的命令。chmod 是 "change mode" 的缩写,用于更改文件或目录的访问权限。

chmod 777 文件
chmod 777 是一个用于修改文件或目录权限的命令。chmod 是 "change mode" 的缩写,用于更改文件或目录的访问权限。777 是权限的数字表示形式。
权限的数字表示形式
在 Unix 和 Linux 系统中,文件和目录的权限分为三类:
1.用户(User):文件的所有者。
2.组(Group):文件所有者所属的组。
3.其他(Others):其他所有用户。
每类权限可以有以下三种权限:r w x
●读(Read):权限值为 4。
●写(Write):权限值为 2。
●执行(Execute):权限值为 1。
权限值是这三种权限的总和。例如:
●读和执行权限:4 + 1 = 5。
●读、写和执行权限:4 + 2 + 1 = 7。
777 的含义
777 表示所有用户(用户、组、其他)都有读、写和执行权限:
●用户:读、写、执行(7)。
●组:读、写、执行(7)。
●其他:读、写、执行(7)。

网络操作:

ping

检查指定网络是否可以联通。

ping 127.0.0.1

ifconfigip

显示和配置网络接口。

netstat

显示网络连接和路由表。

常用选项

    -a:显示所有连接(包括监听的和未监听的)。

netstat -a

-t:显示 TCP 连接。

netstat -t

-u:显示 UDP 连接。

netstat -u

-n:以数字形式显示地址和端口号,而不是解析为主机名和服务名。

netstat -n

-p:显示进程 ID 和程序名。

netstat -p

-l:显示监听的连接。

netstat -l

-r:显示路由表。

netstat -r

-i:显示网络接口统计信息。

netstat -i

-s:显示网络协议统计信息。

netstat -s

组合使用
netstat命令查看端口是否被占用
netstat -anp | grep 端口号  eg:netstat -anp | grep 8080 (没有打印就说明没有被占用)

netstat -tpln 用于显示系统中的所有 TCP 连接及其详细信息。
netstat -upln 用于显示系统中的所有 UDP 连接及其详细信息。

curl

curl 是一个强大的命令行工具,用于从命令行传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP、SCP、TFTP 等。curl 常用于下载文件、上传文件、发送 HTTP 请求等。

curl [选项] [URL]
常用选项

-O:将文件保存到本地,使用远程文件的原始名称。

curl -O http://example.com/file.txt

-o:将文件保存到本地,使用指定的文件名。

curl -o localfile.txt http://example.com/file.txt

-L:跟随重定向。

curl -L http://example.com/redirect

-I:仅显示响应头信息。

curl -I http://example.com

-X:指定请求方法(GET、POST、PUT、DELETE 等)。

curl -X POST http://example.com/api

-d:发送 POST 数据。

curl -X POST -d "param1=value1&param2=value2" http://example.com/api

-H:添加自定义请求头。

curl -H "Content-Type: application/json" http://example.com/api

-u:指定用户名和密码进行基本认证。

curl -u username:password http://example.com/protected

-k:忽略 SSL 证书验证。

curl -k https://example.com

-v:显示详细的请求和响应信息。

curl -v http://example.com

-s:静默模式,不显示进度条和错误信息。

curl -s http://example.com

-F:以表单数据的方式发送数据。

curl -F "file=@/path/to/file" http://example.com/upload

示例
下载文件

假设你想从 http://example.com/file.txt 下载文件并保存为 localfile.txt,可以使用以下命令:

curl -o localfile.txt http://example.com/file.txt

发送 POST 请求

假设你想向 http://example.com/api 发送一个 POST 请求,并包含一些表单数据,可以使用以下命令:

curl -X POST -d "param1=value1&param2=value2" http://example.com/api

发送 JSON 数据

假设你想向 http://example.com/api 发送一个 POST 请求,并包含 JSON 数据,可以使用以下命令:

curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://example.com/api

上传文件

假设你想将本地文件 /path/to/file 上传到 http://example.com/upload,可以使用以下命令:

curl -F "file=@/path/to/file" http://example.com/upload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mxin5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值