shell
git
linux三剑客是啥
"Linux三剑客"是指在Linux/Unix操作系统上常用的三个文本处理工具,这三个工具通常结合使用,可以实现各种复杂的文本处理和数据分析任务,被广泛用于文本处理、日志分析、数据提取和报表生成等领域。因为它们的功能强大,所以被戏称为"Linux三剑客"。
grep:grep是"Global Regular Expression Print"的缩写,它是一种强大的文本搜索工具。grep用于在文件或文本流中查找指定的模式(正则表达式),并输出匹配的行。它经常用于日志分析、文本搜索和数据提取等任务。
sed:sed是"Stream Editor"的缩写,它是一种用于文本编辑的流式工具。sed可以对文本流进行各种编辑操作,如替换、删除、插入、转换等,通常使用基于正则表达式的规则来操作文本。
awk:awk是一种用于文本处理和报表生成的编程语言和工具。awk以文本的行为单位进行处理,可以根据特定的字段或列执行各种操作,如计算、过滤、格式化输出等。它的灵活性和功能强大,使其成为文本处理任务的理想工具。
grep和find的区别
grep 主要用于文本搜索,查找文件中的内容;而 find 主要用于文件系统搜索,查找文件名称和目录。
grep 用于在文件或文本中搜索指定的文本模式(正则表达式),并输出包含匹配模式的行。它的主要目的是文本搜索和匹配。find 用于搜索文件系统中的文件和目录,根据文件名、大小、权限等条件来查找文件。它的主要目的是查找文件和目录,而不涉及文本内容的匹配。
目录
grep:查找文件中的特定字符串;递归搜索目录及其子目录中的文件。
netstat: 显示网络连接和统计信息;查询目前所有端口。
ss:显示所有监听的TCP和UDP端口;查找特定端口是否在监听状态。
telnet: 与远程主机建立telnet连接(不太安全)。
curl 或 wget:用于下载数据,也可发起HTTP请求测试网络连接。
nc(netcat):创建TCP/UDP连接;监听TCP端口;传输数据。
apt-get: 使用APT包管理器安装、升级和管理软件包。
yum: 使用YUM包管理器在基于RPM的系统上安装、升级和管理软件包。
dpkg: Debian系统中的包管理工具,用于管理deb软件包。
文件和目录管理
ls: 列出当前目录中的文件和子目录。
ls
cd: 切换到指定目录。
cd /path/to/directory
pwd: 显示当前工作目录的路径。
pwd
mkdir: 创建一个新的目录。
mkdir new_directory
cp: 复制文件或目录。
cp file.txt /path/to/destination/
mv: 移动或重命名文件或目录。
mv file.txt newname.txt
rm: 删除文件或目录。
rm file.txt
chmod: 修改文件或目录的权限。
chmod 755 file.txt
chown: 修改文件或目录的所有者。
chown user:group file.txt
touch: 创建一个空文件或更新文件的访问时间。
touch file.txt
cat: 查看文件内容。
cat file.txt
more: 分页查看文件内容。
more file.txt
less: 分页查看文件内容,支持向上和向下浏览。
less file.txt
grep:查找文件中的特定字符串;递归搜索目录及其子目录中的文件。
grep "pattern" file.txt
grep -r "pattern" /path/to/directory
ln: 创建硬链接或符号链接。
ln -s target_link link_name
系统信息查询
date: 显示当前日期和时间。
date
uptime: 显示系统运行时间和平均负载。
uptime
uname: 显示系统信息。
uname -a
whoami: 显示当前用户名。
whoami
cal: 显示日历。
cal
history: 显示命令历史记录。
history
top: 显示实时系统进程和资源使用情况。
top
ps: 显示当前进程信息。
ps aux
df: 显示文件系统磁盘使用情况。
df -h
du: 显示目录或文件的磁盘使用情况。
du -sh /path/to/directory
free: 显示系统内存使用情况。
free -h
netstat: 显示网络连接和统计信息;查询目前所有端口。
netstat -an
netstat -tuln
ss:显示所有监听的TCP和UDP端口;查找特定端口是否在监听状态。
ss -tuln
ss -tuln | grep <port>
用户及权限管理
useradd: 创建新用户。
useradd newuser
userdel: 删除用户。
userdel username
passwd: 更改用户密码。
passwd username
groupadd: 创建新用户组。
groupadd newgroup
groupdel: 删除用户组。
groupdel groupname
su: 切换到其他用户。
su - username
sudo: 以超级用户权限执行命令。
sudo command
visudo: 编辑sudo配置文件。
visudo
网络配置和管理
ifconfig: 配置和显示网络接口信息。
ifconfig
ping: 向目标主机发送ICMP回显请求。
ping google.com
route: 显示和管理网络路由表。
route -n
nslookup: 查询DNS记录。
nslookup google.com
telnet: 与远程主机建立telnet连接(不太安全)。
telnet example.com
ssh: 以安全方式远程登录到主机。
ssh username@hostname
scp: 在本地主机和远程主机之间复制文件。
scp file.txt remoteuser@remotehost:/path/to/destination/
curl 或 wget:用于下载数据,也可发起HTTP请求测试网络连接。
curl http://<host>:<port>
wget http://<host>:<port>
ftp: 启动FTP客户端以进行文件传输。
ftp example.com
进程和服务管理
service: 管理系统服务。
service servicename start
systemctl: 管理系统服务和系统状态。
systemctl start servicename
nc(netcat):创建TCP/UDP连接;监听TCP端口;传输数据。
nc <host> <port>
nc -l <port>
kill: 终止进程;杀死占用特定端口的进程。
kill process_id
kill $(lsof -t -i:<port>)
killall: 终止具有指定名称的所有进程。
killall -9 <process_name>
pgrep: 根据条件查找进程ID(多)。
根据进程名查找进程ID
pgrep firefox
可以查找所有名为 "firefox" 的进程,并返回相应的PID。
pgrep processname
根据完整的命令行参数查找进程ID
pgrep -f "python script.py" 可以查找所有运行 "python script.py" 的进程。
pgrep -f <command>
根据用户名查找进程ID
pgrep -u john 可以查找属于用户 "john" 的所有进程。
pgrep -u <username>
显示完整的进程信息(与 ps
命令类似)
pgrep -l <process_name>
例如:pgrep -l ssh 可以显示所有名为 "ssh" 的进程及其对应的PID。
pgrep -l <process_name>
组合使用多个条件(逻辑 AND)
pgrep -u john -f "python"
可以查找属于用户 "john" 并且命令行中包含 "python" 的进程。
pgrep -u <username> -f <command>
pkill: 根据条件终止进程;终止端口。
pkill processname
pkill -f :<port>
telnet:远程连接到指定主机和端口进行登录和测试。
telnet <host> <port>
磁盘管理
fdisk: 分区表管理工具。
fdisk /dev/sdX
mkfs: 创建文件系统。
mkfs.ext4 /dev/sdX1
fsck: 检查和修复文件系统。
fsck /dev/sdX1
mount: 挂载文件系统。
mount /dev/sdX1 /mnt
umount: 卸载文件系统。
umount /mnt
dd: 数据复制和转换工具。
dd if=inputfile of=outputfile
parted: 磁盘分区工具。
parted /dev/sdX
包管理
apt-get: 使用APT包管理器安装、升级和管理软件包。
apt-get install packagename
yum: 使用YUM包管理器在基于RPM的系统上安装、升级和管理软件包。
yum install packagename
dpkg: Debian系统中的包管理工具,用于管理deb软件包。
dpkg -i package.deb
rpm: 管理RPM软件包的Red Hat系统中的工具。
rpm -i package.rpm