菜鸟科技网

shell操作命令有哪些常用技巧?

Shell操作命令是Linux和Unix系统中用户与操作系统交互的核心工具,通过命令行界面(CLI)执行文件管理、进程控制、系统配置等任务,Shell脚本则能将多条命令组合,实现自动化操作,极大提升工作效率,以下从基础命令、高级技巧及脚本实践三方面展开详细说明。

shell操作命令有哪些常用技巧?-图1
(图片来源网络,侵删)

基础Shell命令

文件与目录操作

文件管理是Shell最常用的功能之一。ls命令列出目录内容,配合-l(长格式)、-a(显示隐藏文件)等选项可获取详细信息,例如ls -la /home显示/home目录下所有文件及权限。cd用于切换目录,如cd ..返回上级目录,cd ~进入用户主目录。mkdir创建目录,mkdir -p parent/child可递归创建多级目录;rmdir仅删除空目录,rm -r则递归删除非空目录(需谨慎使用),文件复制通过cp实现,cp -r source_dir target_dir复制整个目录;mv用于移动或重命名文件,如mv old_name new_name,查看文件内容时,cat适合小文件,less支持分页浏览,head -n 10 filetail -n 10 file分别查看文件前10行和后10行。

文本处理

文本处理命令是Shell的强大功能。grep用于文本搜索,如grep "error" log.txt匹配包含"error"的行;-i选项忽略大小写,-r递归搜索目录。sed流编辑器可进行文本替换,例如sed 's/old/new/g' file将文件中所有"old"替换为"new"。awk适合结构化文本处理,awk -F: '{print $1}' /etc/passwd以冒号为分隔符输出/etc/passwd的第一列(用户名)。sort对文本行排序,uniq去除重复行,二者结合sort file | uniq可获取唯一行。

权限与用户管理

Linux通过r(读)、w(写)、x(执行)权限位控制文件访问。chmod修改权限,chmod 755 script.sh设置所有者可读写执行,其他用户可读执行;chmod u+x file则为所有者添加执行权限。chown更改文件所有者,如chown user:group file,用户管理中,useradd创建用户,passwd设置密码,su切换用户,sudo以管理员权限执行命令。

高级Shell技巧

输入输出重定向

默认情况下,命令输入来自键盘,输出显示到终端,重定向可改变这一行为:>将命令输出覆盖写入文件,>>追加到文件;<从文件读取输入,如sort < input.txt,标准错误输出(stderr)可通过2>单独捕获,例如command 2> error.log,而&>则同时捕获标准输出和错误输出到同一文件。

shell操作命令有哪些常用技巧?-图2
(图片来源网络,侵删)

管道与命令组合

管道将前一个命令的输出作为后一个命令的输入,如ls -l | grep ".txt"列出目录后筛选文本文件。&&和实现逻辑控制:command1 && command2表示command1成功后才执行command2command1 || command2则仅在command1失败时执行command2,命令替换通过`command`$(command)实现,如echo "Today is $(date)"

变量与环境变量

Shell变量用于存储数据,如name="Alice"定义变量,echo $name${name}引用,环境变量通过export设置,如export PATH=$PATH:/new/path,使系统可在新路径中查找命令,预定义变量如$0(脚本名)、(参数个数)、(上一条命令的退出状态)也常用于脚本控制。

Shell脚本实践

Shell脚本以#!/bin/bash开头,指明解释器,通过条件语句实现逻辑判断:if [ $age -ge 18 ]; then echo "Adult"; fi,循环结构如for file in *.txt; do echo $file; done遍历所有文本文件,函数封装可复用代码,例如function greet() { echo "Hello, $1"; }; greet "Bob",调试时,使用set -x打印执行的命令,或echo输出关键变量值。

常用Shell命令速查表

功能分类 命令 示例
文件列表 ls ls -la
目录切换 cd cd /var/log
创建目录 mkdir mkdir -p test/dir
复制文件 cp cp -r source target
移动文件 mv mv old_name new_name
删除文件 rm rm -rf dir
查看文件 cat/less less file.txt
文本搜索 grep grep "error" log
文本替换 sed sed 's/old/new/g' file
文本排序 sort sort file | uniq
权限修改 chmod chmod 644 file
所有者变更 chown chown user:group file
输出重定向 >/>> echo "text" >> file
管道操作 ls | grep txt
命令替换 echo $(date)

相关问答FAQs

Q1: 如何在Shell中批量重命名文件?
A1: 可结合for循环和mv命令实现,将当前目录下所有.txt文件扩展名改为.log

for file in *.txt; do
    mv "$file" "${file%.txt}.log"
done

${file%.txt}移除文件名中的.txt后缀,再拼接.log,注意为变量加双引号避免文件名含空格时出错。

Q2: 如何查看当前系统运行的进程并终止特定进程?
A2: 使用ps命令查看进程,如ps aux显示所有进程的详细信息,通过grep筛选目标进程,例如ps aux | grep "nginx",找到进程的PID(第二列)后,用kill命令终止,如kill 1234;若进程未响应,可强制终止kill -9 1234

分享:
扫描分享到社交APP
上一篇
下一篇