跳到主要内容

Linux

目录

目录切换:

# 根目录
cd /

# 进入用户主目录
cd

# 用户主目录
cd ~

# 当前目录
cd .

# 返回上级目录
cd ..

创建:

# 创建文件夹
mkdir 文件夹名称

# 创建文件,要加文件后缀
touch 文件名称

# 创建并进入文件夹
mkdir 文件夹名称 && cd 文件夹名称

# 通过 echo 写入文件内容,注意:会覆盖所有的内容
echo "content" > readme.txt

# 在文件尾部追加内容,不会覆盖前面的内容
echo "content" >> readme.txt

查看:

# 查看当前路径
pwd

# 查看当前目录下的子目录和文件
ls

# 查看文件内容,会将内容输出到终端
cat readme.txt

# 查看历史操作记录
history

# 清空窗口内容
clear

删除:

# 删除空文件夹
rmdir 文件夹路径

# 删除非空文件夹,-r 表示递归,会有确认提示
rm -r 文件夹路径

# 删除非空文件夹,-f 表示强制删除
rm -rf 文件夹路径

# 删除单个文件
rm 文件路径

# 删除多个文件
rm 文件1 文件2 文件3

# 有提示地删除文件
rm -i 文件路径

# 强制删除文件
rm -f 文件路径

Linux 命令

系统命令

  • uname: 显示系统信息,内核版本、机器类型等。
  • uname -r: 显示正在运行的 Linux 内核的发行版本。
  • uptime: 显示当前时间、系统运行时间、用户和负载平均值。
  • hostname: 显示系统主机名。
  • hostname -i: 显示当前主机的 IP 地址。
  • last reboot: 查看系统最近一次的重启时间以及重启之前的系统登录信息。
  • date: 显示当前日期和时间。
  • timedatectl: 设置系统时间与日期。
  • cal: 快速查看当前指定年份日历。
  • w: 显示目前输入系统的用户信息。
  • whoami: 显示当前用户的用户名。
  • finger username: 显示名为username的用户的信息。

用户管理

  • id: 显示用户的 UID、GID、组。
  • last: 显示最后登录用户的列表。
  • who: 显示当前登录的用户。
  • groupadd admin: 创建一个名为admin的新用户组。
  • adduser Sam: 创建一个名为Sam的新用户。
  • userdel Sam: 删除名为Sam的用户。
  • usermod: 修改现有用户的属性。

硬件

  • dmesg: 内核会将开机过程信息存储在环形缓冲区中。
  • cat /proc/cpuinfo: 显示 CPU 的详细信息。
  • cat /proc/meminfo: 显示详细的系统内存使用信息。
  • lshw: 列出系统的详细硬件配置。
  • lsblk: 列出所有可用的设备的信息。
  • free -m: 显示系统内存使用情况。
  • lspci -tv: 以树状格式详细显示 PCI 设备信息。
  • lsusb -tv: 以树状格式详细显示 USB 设备信息。
  • dmidecode: 显示系统 BIOS 中的硬件信息。
  • hdparm -l /dev/sda: 显示磁盘/dev/sda的信息。
  • badblocks -s /dev/sda: 用于检查设备/dev/sda是否存在坏块,并显示检测进度。

安装源(编译)

  • ./configure: 检查系统兼容性并生成用于软件安装的 Makefile。
  • make: 按照 Makefile 中的指令编译代码。
  • make install: 将编译后的代码安装到指定的系统位置。

文件命令

  • ls -al: 以长格式列出所有文件的详细信息。
  • pwd: 显示当前工作目录的路径。
  • mkdir dir1: 创建一个名为dir1的新目录。
  • rm file1: 删除名为file1的文件。
  • rm -f file2: 强制删除名为file2的文件。
  • rm -r dir1: 递归删除目录dir1及其内容。
  • rm -rf dir1: 强制删除目录dir1及其内容。
  • cp file1 file2: 复制file1,创建或覆盖file2
  • cp -r dir1 dir2: 将dir1复制到dir2,包括子目录。
  • mv file1 file2: 将file1重命名或移动到file2
  • ln -s /path/to/file_name link_name: 创建名为link_namefile_name的符号链接。
  • touch file1: 创建一个名为file1的空文件。
  • cat > file1: 创建/覆盖file1,等待标准输入。
  • more file1: 逐页显示file1的内容。
  • head file1: 显示file1的前十行。
  • tail file1: 显示file1的最后十行。
  • gpg < file1: 使用对称密码对file1进行加密,需要提供密码短语。
  • gpg file2.gpg: 解密file2.gpg,提示输入密码。
  • wc: 统计文件中的字数、行数和字符数。
  • xargs: 使用管道或文件提供的参数执行命令。

登录

  • ssh user@hostname: 向指定主机名发起 SSH 连接。
  • ssh -p port_number user@hostname: 使用特定端口发起 SSH 连接。
  • telnet host: 通过 Telnet 默认端口 23 连接到主机。

安装包

  • rpm -i pkg_name.rpm: 使用 RPM 包管理器安装pkg_name.rpm包。
  • rpm -e pkg_name: 卸载指定的 RPM 包。
  • dnf install pkg_name: 使用 DNF 安装指定的包。
  • pacman -S: 使用 Pacman 安装指定的包。

流程相关

  • ps: 显示当前进程的快照。
  • ps aux | grep telnet: 显示运行中的 telnet 进程的详细信息。
  • pmap: 显示进程的内存映射。
  • top: 显示运行任务的动态实时视图。
  • kill 1234: 终止具有 PID 1234 的进程。
  • killall proc: 终止所有名为 proc 的进程。
  • pkill process-name: 终止具有指定名称的进程。
  • bg: 在后台恢复暂停的作业。
  • fg: 将暂停的作业带到前台。
  • fg n: 将作业编号为 n 的作业移到前台运行。
  • lsof: 列出所有打开的文件和进程。
  • renice 19 PID: 更改具有给定 PID 的进程的优先级。
  • pgrep firefox: 显示 firefox 进程的进程 ID。
  • pstree: 显示运行中的进程树。

磁盘使用情况

  • df -h: 显示所有已挂载文件系统可读的磁盘空间使用情况。
  • df -i: 显示所有已挂载文件系统的 inode 使用情况。
  • fdisk -l: 列出所有驱动器上的分区及其信息。
  • du -sh /dir1: 显示 /dir1 目录的总磁盘使用大小的摘要,以可读方式呈现。
  • findmnt: 显示所有已挂载文件系统及其属性的列表。
  • mount device-path mount-point: 将设备挂载到指定的文件系统挂载点上。

搜索

  • grep pattern file: 在文件中搜索给定的模式。
  • grep -r pattern dir1: 在 dir1 目录及其子目录中递归搜索指定的 pattern
  • locate file: 使用预置数据库搜索名为 file 的文件。
  • find /home -name index: 递归搜索 /home 目录中名为 index 的文件。
  • find /home -size +10000k: 在 /home 目录中查找大小超过 10000k 的文件。

网络

  • ip addr show: 显示所有网络接口及其信息。
  • ip address add 192.168.0.1/24 dev eth0: 将 IP 地址 192.168.0.1 分配给 eth0 接口。
  • ifconfig: 显示网络接口及其配置。
  • ping host: 发送 ICMP 数据包,测量与 host 之间的连接时间。
  • whois domain: 检索并显示域名的注册信息。
  • dig domain: 查询 DNS,提供域名的 DNS 信息。
  • dig -x host: 将 IP 地址解析为主机名,显示 DNS 信息。
  • host example.com: 对域名进行 IP 查找。
  • wget file_path: 从指定路径下载文件。
  • netstat: 显示各种与网络相关的信息和统计数据。

压缩/存档

  • tar -cf backup.tar /home/ubuntu: 创建一个名为 backup.tar 的 tar 归档文件,包含 /home/ubuntu 目录的内容。
  • tar -xf backup.tar: 从 backup.tar 归档文件中提取文件。
  • tar -zcvf backup.tar.gz /home/ubuntu: 创建一个名为 backup.tar.gz 的压缩 tar 归档文件,包含 /home/ubuntu 目录的内容。
  • gzip file1: 将文件 file1 压缩为 file1.gz,并删除原始文件。

日志文件传输

  • scp file.txt remote_user@remote_host:/remote/directory: 将 file.txt 复制到远程主机的指定目录。
  • rsync -a /home/ubuntu/backup/ /backup/: 将源目录的内容同步到目标目录,保留属性。
  • rsync -a /var/www/web/ user@remote_host:/backup/web_backup/: 同步本地目录到远程,保留属性。

文件权限

  • chmod 644 /data/test.c: 设置文件 /data/test.c 的权限为所有者读写,组和其他人只读。
  • chmod 755 /dir1: 将目录 /dir1 的权限设置为所有者可读/可写/可执行,组和其他用户可读/可执行。
  • chown bob:devops filename: 将文件 filename 的所有者更改为 bob 并将所属组更改为 devops
  • chown ownername dirname: 更改目录的所有者和所属组。

Vmware

下载安装 Vmware 后,需要下载 Ubuntu 系统镜像

shell 脚本

#!/bin/bash

echo "执行的脚本名称:"$0
echo "参数个数:"$#
echo "所有参数:"$@
echo "第1个参数:"$1

# 当前目录
localURL=$(pwd)
echo "$localURL"

# 设置默认值,如果没有传入参数,就使用默认值prod
param=${1:-prod}

# 判断参数值,并执行对应的逻辑
if [ "$param" = "prod" ]; then
echo "执行逻辑1"
elif [ "$param" = "stage" ]; then
echo "执行逻辑2"
else
echo "未知参数"
exit 1
fi

read -n1 -p "Press any key to exit"
echo
exit 0
  • 使用非零的退出码来表示错误状态,如例子中的「未知参数」
  • 退出码为 0 通常表示成功,一般放在脚本的最后一行

yum

yum 是 Shell 软件包管理器,类似 npm

  • 安装:yum install <pkg>
  • 卸载:yum remove <pkg>
  • 升级:yum upgrade <pkg>
  • 搜索:yum search <pkg>
  • 列表:yum list <pkg>
  • 查看包详情:yum info <pkg>
  • 重装:yum reinstall <pkg>
  • 清理包缓存:yum clean <pkg>

curl 命令

curl 是一个强大的命令行工具,适用于各种网络请求和数据传输任务。

  • 支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SMTP、IMAP 等
  • 支持多个操作系统,包括 Linux、macOS 和 Windows

基本用法

1、获取并显示网页内容

curl http://example.com

2、保存网页内容到文件

curl -o example.html http://example.com

3、显示 HTTP 响应头

curl -I http://example.com

4、发送 POST 请求

curl -X POST -d "username=admin&password=123456" http://example.com/login

5、添加自定义 HTTP 头

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

6、使用代理

# HTTP 代理
curl --proxy http://127.0.0.1:8001 http://example.com

# SOCKS5 代理
curl --socks5 127.0.0.1:8001 http://example.com

配置选项

  • -X <method>:指定 HTTP 请求方法(GET、POST、PUT、DELETE 等)。
  • -d <data>:发送数据(通常用于 POST 请求)。
  • -H <header>:添加自定义 HTTP 头。
  • -I:仅获取 HTTP 头信息。
  • -o <file>:将输出保存到文件。
  • -O:将远程文件保存到本地,并使用远程文件的名称。
  • -L:跟随重定向。
  • --data-urlencode <data>:URL 编码数据。
  • --form <data>:发送 multipart/form-data。
  • --silent-s:静默模式,不显示进度条。
  • --verbose-v:显示详细的通信信息。
  • --insecure-k:忽略 SSL 证书验证。
  • --user <user:password>:提供 HTTP 认证信息。
  • --proxy <host:port>:使用 HTTP 代理。
  • --socks5 <host:port>:使用 SOCKS5 代理。

更多示例

1、跟随重定向

curl -L http://example.com

2、提供 HTTP 认证信息

curl --user admin:password http://example.com/protected

3、上传文件

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

4、上传 JSON 数据

curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api

5、使用 --retry 选项自动重试

curl --retry 999 --retry-delay 5 http://example.com

6、限制下载速度

curl --limit-rate 100K http://example.com/largefile

7、使用 --range 选项下载部分内容

curl --range 0-1000000 http://example.com/largefile

8、使用 --continue-at 选项继续下载

curl --continue-at - http://example.com/largefile -o largefile