Skip to content

Shell 命令

系统目录机构

  • /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不要动)
  • /dev: dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。(重要)
  • /home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。(重要)
  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。(不要动
  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(存放突然关机的一些文件)
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。(我们后期把一些本地文件挂在到这个目录下)
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。(重要)
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。(不用管)
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。(重要)
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv:该目录存放一些服务启动之后需要提取的数据
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
  • /tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,可以放在这个目录下,安装包!(重要)
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。(重要)
  • /usr/bin: 系统用户使用的应用程序。
  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src: 内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。(重要)
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
  • /www: 存放服务器网站相关的资源,环境,网站的项目(重要)

echo 输出

用于字符串的输出

sh
# 输出普通字符
echo "hello world"

# 使用 -e 开启转义
echo -e "这是第一行文本\n这是第二行文本"

# 使用 -n 不换行输出
echo -n "hello world"

# 输出变量(查看当前窗口使用的 shell)
echo $SHELL

# 输出命令执行结果
echo `date`

# 将结果输出到文件中
echo 'hello world' > test.txt

# 将结果追加到文件中
echo 'hello world' >> test.txt

echo > 和 echo >> 的区别

  • 当文件不存在时都会创建文件
  • 当文件存在时
    • echo >覆盖文件中的原有内容
    • echo >> 会将结果追加到文件中

修改输出内容的样式

ANSI 转义序列是一些特殊的字符,它们可以用于修改文本的颜色、格式和其他外观属性。

sh
# 语法格式
echo -e "\033[背景颜色;字体颜色;显示方式m 需要输出的内容 \033[0m"

# 🌰 白底黑字
echo -e "\033[47;30m 白底黑字 \033[0m"
# 🌰 黑底白字 高亮显示
echo -e "\033[30;37;1m 黑底白字 高亮显示 \033[0m"
# 🌰 黑底白字带下划线
echo -e "\033[30;37;4m 黑底白字带下划线 \033[0m"
  • \033 转义起始符,定义一个转义序列,(也可以使用 \e\E 代替)
  • [ 表示开始定义颜色
  • 背景颜色 范围 40-47
  • 字体颜色 范围 30-37
  • m 转义终止符,表示颜色定义完毕
  • \033[0m 表示关闭所有属性恢复默认样式

背景色和字体颜色

背景色范围: 40 - 47

字体颜色范围: 30 - 37

背景色字体颜色
黑色4030
红色4131
绿色4232
黄色4333
蓝色4434
紫色4535
深绿4636
白色4737

显示方式

  • 0 关闭所有属性
  • 1 设置高亮显示
  • 4 设置下划线
  • 5 闪烁
  • 7 反显
  • 8 不可见

其他属性

  • \033[nA 光标上移 n 行
  • \033[nB 光标下移 n 行
  • \033[nC 光标右移 n 列
  • \033[nD 光标左移 n 列
  • \033[x;yH 设置光标位置 x 行 y 列
  • \033[2J 清屏
  • \033[K 清除从光标到行尾的内容
  • \033[s 保存光标位置
  • \033[u 恢复光标位置
  • \033[?25l 隐藏光标
  • \033[?25h 显示光标

文件操作

touch 创建文件

sh
# 创建一个空文件
touch newfile.txt

# 修改文件的时间戳
touch -t 202201010101.01 file.txt

rm 删除文件或目录

sh
# 删除文件
rm file.txt

# 递归删除目录及其内容
rm -r directory

# 强制删除文件或目录
rm -rf directory

WARNING

使用 rm -rf 时要特别小心,因为它会直接删除而不提示确认。

cp 复制

用于复制文件或目录

语法格式

  • cp [options] source_file target_file
  • cp [options] source_file ... target_directory
sh
# 复制单个文件到指定目录
cp test.txt ./test

# 复制单个文件到指定目录并重命名
cp test.txt ./test/test1.txt

# 复制多个文件到指定目录
cp test1.txt test2.txt ./test

# 复制目录到指定目录
cp -r ./test ./test1

# 复制目录到指定目录并重命名
cp -r ./test ./test1/test2

WARNING

复制目录时必须使用 -r 参数,否则会报错

常用参数说明

  • -r 递归复制目录
  • -i 覆盖前提示
  • -f 强制覆盖已存在的文件
  • -p 保留文件的属性(权限、时间戳等)
  • -a 递归复制目录,并保留文件属性(相当于同时使用 -p-r
  • -v 显示详细的复制过程

mv 移动

用于移动文件或目录

语法格式

  • mv [options] source target
  • mv [options] source... directory
sh
# 移动单个文件到指定目录
mv test.txt ./test

# 移动单个文件到指定目录并重命名
mv test.txt ./test/test1.txt

# 移动多个文件到指定目录
mv test1.txt test2.txt ./test

# 移动目录到指定目录
mv ./test ./test1

TIP

  • source 为文件时,target 可以为文件或目录
  • source 为目录时,target 必须为目录
  • target 为目录时,source 会被移动到 target 目录下
  • target 已存在时,source 会覆盖 target 文件或目录
  • target 不存在时,source 会被重命名为 target 文件或目录

常用参数说明

  • -f 强制移动文件或目录
  • -i 覆盖前提示
  • -n 不覆盖已存在的文件
  • -v 显示详细的移动过程

cat 查看文件内容

sh
# 查看文件内容
cat file.txt

# 多文件拼接输出
cat file1.txt file2.txt > combined.txt

# 查看文件内容并显示行号
cat -n file.txt

grep 搜索文本内容

sh
# 在文件中搜索关键字
grep "search_term" file.txt

# 递归搜索目录下所有文件中的关键字
grep -r "search_term" /path/to/directory

# 搜索时忽略大小写
grep -i "search_term" file.txt

grep "搜索内容" xxx.log

可以将 xxx.log 文件中包含带有该参数 (如 "订单号", "设备号") 的行数据输出出来,方便查看。

进程管理

ps 查看进程

sh
# 查看当前用户的所有进程
ps

# 查看所有进程
ps aux

# 使用树形结构查看进程
ps -ef --forest

top 实时查看系统资源使用情况

sh
# 启动 top 命令
top

TIP

top 命令可以实时显示系统资源使用情况,包括 CPU 使用情况、内存使用情况、磁盘IO使用情况等。

推荐使用 Arthas 工具来查看进程,它提供了丰富的功能,如查看进程的堆栈、查看内存使用情况、查看线程情况等。

kill 终止进程

sh
# 使用进程 ID (PID) 终止进程
kill 1234

# 强制终止进程
kill -9 1234

# 通过进程名终止多个同名进程
pkill process_name

权限管理

chmod 修改文件或目录的权限

sh
# 为文件添加可执行权限
chmod +x file.sh

# 为文件移除可读权限
chmod -r file.txt

# 设置文件权限为 rwxr-xr-x
chmod 755 file.txt

chown 修改文件或目录的所有者

sh
# 更改文件的拥有者
chown user file.txt

# 更改文件的拥有者和所属组
chown user:group file.txt

系统管理

df - 查看磁盘空间使用情况

功能:显示文件系统的磁盘空间使用情况。 常用参数:

  • -h:以人类可读的格式显示(如 GB、MB 等单位)。
  • -T:显示文件系统的类型。
sh
# 查看所有文件系统的使用情况
df -h

# 查看指定文件系统的使用情况
df -h /dev/sda1

du - 查看目录空间占用

功能:显示目录或文件的磁盘使用情况。 常用参数:

  • -h:以人类可读的格式显示。
  • -s:仅显示总计。
  • -a:显示目录和文件的大小
sh
# 查看当前目录下每个子目录的空间占用情况
du -h

# 查看指定目录的总空间占用
du -sh /home/user

reboot 重启系统

sh
# 重启系统
sudo reboot

shutdown 关闭系统(基本不用,因为关了要去云平台/物理服务器重启,比较麻烦)

sh
# 关闭系统
sudo shutdown now

# 在指定时间关闭系统
sudo shutdown -h 22:00

网络操作

ping 测试网络连通性

sh
# 测试与某主机的网络连通性
ping 192.168.1.1

curl 获取 URL 内容

sh
# 下载文件
curl -O https://example.com/file.txt

# 获取网页内容并显示
curl https://example.com

netstat 查看网络连接

sh
netstat -a # 列出所有端口

netstat -at # 列出所有TCP端口

netstat -au # 列出所有UDP端口

netstat -ax # 列出所有unix端口

netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名

# 常用来排查端口号的占用情况
netstat -anp | grep 端口号

参数说明

  • -a或–all:显示所有连线中的Socket;
  • -A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;
  • -c或–continuous:持续列出网络状态;
  • -C或–cache:显示路由器配置的快取信息;
  • -e或–extend:显示网络其他相关信息;
  • -F或–fib:显示FIB;
  • -g或–groups:显示多重广播功能群组组员名单;
  • -h或–help:在线帮助;
  • -i或–interfaces:显示网络界面信息表单;
  • -l或–listening:显示监控中的服务器的Socket;
  • -M或–masquerade:显示伪装的网络连线;
  • -n或–numeric:直接使用ip地址,而不通过域名服务器;
  • -N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
  • -o或–timers:显示计时器;
  • -p或–programs:显示正在使用Socket的程序识别码和程序名称;
  • -r或–route:显示Routing Table;
  • -s或–statistice:显示网络工作信息统计表;
  • -t或–tcp:显示TCP传输协议的连线状况;
  • -u或–udp:显示UDP传输协议的连线状况;
  • -v或–verbose:显示指令执行过程;
  • -V或–version:显示版本信息;
  • -w或–raw:显示RAW传输协议的连线状况;-
  • -x或–unix:此参数的效果和指定"-A unix"参数相同;
  • –ip或–inet:此参数的效果和指定"-A inet"参数相同。

ifconfig 查看和配置网络接口

sh
# 查看网络接口信息
ifconfig

# 配置网络接口
sudo ifconfig eth0 up

scp 安全复制文件

sh
# 从本地复制文件到远程主机
scp file.txt user@remote:/path/to/destination

# 从远程主机复制文件到本地
scp user@remote:/path/to/file.txt /path/to/destination

粤ICP备20009776号