程序猿常用shell命令使用详解
nanshan 2025-01-01 22:02 14 浏览 0 评论
文件操作命令
- ls:列出当前目录下的所有文件和目录
在linux中使用ls命令 ls -lh 可以显示文件或者目录大小,下面是显示列内容说明
第一列:文件类型和权限
第二列:链接数量
第三列:所有者 - 显示文件或目录的所有者用户名称
第四列:显示文件或者目录用户组
第五列:显示文件的大小。单位为字节
第六列:显示文件最后的修改时间和日期
第七列:显示文件或者目录名称
====================
ls -l:以长格式列出文件和目录,包括权限、所有者、大小和最后修改时间
ls -a:显示所有文件,包括以点(.)开头的隐藏文件
ls -lt:按时间排序,最新修改的文件或目录会显示在最前面
ls -lh:结合 -l 和 -h 选项,以易读的格式显示文件大小(例如,使用KB、MB)
- cd:改变目录
cd /home/user/Documents 切换到指定目录下
cd ..:切换到当前目录的父目录(返回到上一级目录)
- pwd:打印当前工作目录
- cat:查看文件内容
cat cbus_onl_busi.log 显示文件filename的内容
cat -n cbus_onl_busi.log 显示文件filename的内容,并在每行前面显示行号
cat cbus_onl_busi.log | tail -n 10 显示文件filename的最后几行
grep "pattern" cbus_onl_busi.log | cat -n:使用grep搜索包含特定模式的行,然后通过管道将其传递给cat,并使用cat的-n选项显示行号
cat al-gateway-oapi.log | grep 'error' | tail -n 10
- more:分页查看文件内容 它一次显示一屏文本,允许用户逐步浏览文件
打开文件后,more默认显示第一屏的内容
按Space键可以翻到下一页 按Enter键可以翻到下一行
按b键可以回退到上一页
按q键退出more
- less:反向分页查看文件内容 ,它允许用户以分页的方式浏览文件,而不必一次性加载整个文件
按Space键(空格键)可以向前翻一页 按b键可以向后翻一页
按q键退出less
按:n可以显示当前行号
- touch:创建一个空文件或更改文件的访问和修改时间
touch newfile.txt 使用touch命令创建空文件
ls -l:在使用touch命令后,通常使用ls -l命令查看文件的时间戳和其他状态信息
- cp:复制文件或目录
cp source destination:将名为source的文件复制到destination。如果destination是目录,则文件将被复制到该目录中
cp file1 file2 file3 destination:将多个文件复制到指定的destination目录
cp -r source destination:递归地复制整个目录source及其内容到destination。-r选项表示递归。
- mv:移动或重命名文件或目录
移动文件:
mv source destination:将名为source的文件移动到destination。如果destination是目录,则文件将被移动到该目录中
移动目录:
mv -r source destination:递归地移动整个目录source及其内容到destination。-r选项表示递归
重命名文件:
mv oldname newname:将文件从oldname重命名为newname
- rm:删除文件或目录
rm命令是非常危险的,特别是当使用-r选项时,因为它可以递归地删除大量文件;如果不确定,可以使用-i选项,它会在删除每个文件之前提示确认。
删除文件:
rm filename 这将删除名为filename的文件。
删除目录:
rm -r directory -r(或--recursive)选项用于递归地删除目录及其内容
强制删除:
rm -f file -f(或--force)选项用于强制删除文件,不提示确认
强制删除只读文件:
rm -i file -i选项在删除每个文件之前提示确认,对于只读文件特别有用
删除旧文件:
rm -t 7 file -t选项删除访问时间超过7天的文件。
- find:在文件系统中搜索文件或目录
按名称搜索:
find /path/to/search -name "filename" -name选项用于按文件名搜索
使用通配符:
find /path/to/search -name "*.txt" 使用通配符*可以搜索所有扩展名为.txt的文件
按大小搜索:
find /path/to/search -size +100M -size选项用于按文件大小搜索,+100M表示大于100MB的文件
根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行
find / -type f -name "*.log" | xargs grep "ERROR"
根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “20240607310111936703” 的文件路径
find /data/logs/pm-service-onl/busi/20240607 -name "*.log" -exec zgrep "20240607310111936703" {} \; -print
- grep:在文件中搜索具有特定模式的行
搜索文本:
grep "pattern" 310H001.log
递归搜索:选项递归地在指定目录及其子目录中搜索
grep -r "pattern" /path/to/search
使用前缀和后缀:-B选项打印每个匹配行之前的行,-A选项打印之后。数字指定要打印的行数
grep "pattern" 310H001.log -B 20 -A 10
搜索多个模式:使用\|操作符在单个命令中搜索多个模式
grep "pattern1\|pattern2" 310H001.log
- head:输出文件的开始部分
查看文件的前10行
head -n 10 /var/log/syslog/test.log
显示文件的第N行到第M行
head -n M test.log | tail -n +N
- tail:输出文件的尾部
指定显示的行数: -n选项允许你指定显示的行数,lines是你想要显示的行数
tail -n 20 /var/log/syslog/test.log
实时显示文件新增内容: -f选项用于实时查看文件的新增内容,通常用于查看日志文件。
tail -f /var/log/syslog/test.log
- sort:对文本文件的行进行排序
sort /etc/passwd/test.log
- wc:计算字数、行数和字节数
计算行数:
wc -l /var/log/syslog/test.log
只显示总计: 使用管道和awk命令只显示总计
wc -l file1 file2 file3 | awk '{total += $1} END {print total}'
- cut:从文件的每一行中剪切字节、字符和字段
cut -d: -f1 /etc/passwd
- nano,vi,emacs:常用的文本编辑器
nano /home/user/file.txt
vi /home/user/file.txt
emacs /home/user/file.txt
- paste:合并文件的行。
paste file1.txt file2.txt
搜索命令
- find:在文件系统中搜索文件或目录。
find / -name '*.log'
参考1文件命令
- grep:在文本文件中搜索决定的文本模式。
grep 'error' /var/log/syslog
- locate:基于文件名在数据库中快速找到文件。
locate myFile.txt
- which:返回可执行文件的路径。
which java
参考16其他命令说明
- whereis:此命令可用于查找二进制程序、源文件、手册页以及其他文件的位置。
whereis ls
参考16其他命令说明
目录操作命令
- mkdir:创建一个新的目录
mkdir /home/user/new_directory
- rmdir:删除一个空目录
rmdir /home/user/empty_directory
- tree:以树形结构列出目录的内容
tree /home/user/
- du:估计文件和目录的磁盘使用空间
du -sh /home/user/Documents
可以参考 9磁盘命令管理
- df:显示磁盘使用空间
df -h
可以参考 9磁盘命令管理
权限操作命令
- chmod:更改文件或目录的权限
chmod 755 /home/user/file.txt
表示设置文件的主用户有读,写和执行权限(rwx = 7),同组的用户和其他用户有读和执行权限(rx = 5)。
- chown:更改文件或目录的所有者和所属的组
chown newuser:newgroup /home/user/file.txt
表示将/home/user/file.txt的所有者更改为newuser,所属的组更改为newgroup。
- chgrp:更改文件或目录的所属组
chgrp newgroup /home/user/file.txt
表示将/home/user/file.txt的所属的组更改为newgroup。
网络操作命令
- ping:发送网络请求以测试网络连接
测试与 www.example.com 的网络连通性
ping www.baidu.com
- ifconfig:显示或配置网络接口
显示 eth0 网络接口的信息
ifconfig eth0
开启 eth0 网络接口
sudo ifconfig eth0 up
关闭 eth0 网络接口
sudo ifconfig eth0 down
- netstat:显示网络连接、路由表等网络状态信息
用于列出所有监听的 TCP 端口以及与之关联的进程
netstat -ntlp
用于查找所有与端口 80 相关的网络连接,包括监听和已建立的连接
netstat -aonp|grep 80
用于计算与端口 80 相关的网络连接数量
netstat -nat|grep -i "80"|wc -l
- ssh:远程登录或执行远程命令
ssh user@remote_host
- scp:在本地和远程系统之间安全地复制文件
scp /path/to/file user@remote_host:/remote/path/
- curl:获取网络资源
curl www.linuxyz.cn
curl -H "Content-Type:application/json" -X POST -d '{"appId": "akulaku-business","data": "081915122488","token": "963444d4-88f9-4c38-b2c2-19b60b2d8"}' 'http://pre-oapi.akulaku.local/midendkmshttp/encrypt'
- telnet:远程登录工具
这将尝试连接到 example.com 的 23 号端口(Telnet 默认端口),并开始一个 Telnet 会话 :一般用来检查网络是否通
telnet example.com 23
- nslookup:查询 DNS 名称服务器的记录
- ftp:在本地主机和FTP服务器之间建立FTP连接。
ftp ftp_server
- wget:获取网络资源
wget www.linuxyz.cn -o google.html
进程和系统控制命令
- ps:显示当前进程的状态
参考11 进程管理命令
- top:动态显示运行中的进程
- kill:发送信号以终止进程
参考11 进程管理命令
- shutdown:关闭机器
- reboot:重启机器
- logout:退出登录会话
文本操作命令
- echo:打印信息到终端。
echo 'Hello, World!'
- printf:格式化并打印信息。
printf 'Name: %s\nAge: %d\n' 'Alice' 20
- sed:流编辑器,用于对文本文件进行特定的行处理和替换。
echo 'Hello, World!' | sed 's/World/Shell/g'
- awk:在文本文件中进行模式扫描和处理语言。
echo -e 'name\tage\nAlice\t20\nBob\t22' | awk '{if ($2 >= 21) print $1}'
压缩与解压命令
- tar:创建、展开及管理tar包。
创建归档文件: directory/ 目录下的所有文件和子目录打包成 archive.tar.gz 归档文件,并使用 gzip 压缩
tar -czvf archive.tar.gz directory/
解压归档文件:从 archive.tar.gz 归档文件中解压所有文件到当前目录
tar -xzvf archive.tar.gz
查看归档文件内容:列出 archive.tar.gz 归档文件中的所有文件和目录
tar -tvf archive.tar.gz
gzip:用于文件压缩或解压。
压缩文件:
gzip file.txt
解压文件:
gzip -d file.txt.gz
- gunzip:用于解压gzip压缩的文件。
gunzip file.gz
- zip/unzip:创建和解压zip格式的压缩包。
zip -r archive.zip folder
unzip archive.zip
磁盘使用管理命令
- df:报告文件系统磁盘空间使用情况。
- du:估计并报告文件及文件夹的磁盘使用情况。
- fdisk:对磁盘进行分区管理。
- hdparm:查看或修改SATA/ATA磁盘参数。
sudo hdparm -i /dev/sda
包管理命令
进程管理命令
- ps:报告进程当前状态。
显示所有进程,按 CPU 使用率排序:
ps aux --sort=-%cpu
结合 grep 命令来过滤输出结果:
ps aux | grep java
ps -ef | grep java
统计当前系统线程数量:
pstree -p|wc -l
- top:动态显示当前耗费系统资源最多的进程。
- htop:比top更友好的动态进程查看工具。
- kill:终止或者发送一个信号到指定进程。
终止 PID 为 1234 的进程:
kill 1234
优雅地终止 PID 为 5678 的进程:
kill -SIGTERM 5678
强制终止 PID 为 9101 的进程:使用 kill -9 强制终止进程时需谨慎,因为这会导致进程立即退出,可能不会释放其占用的资源,也不会执行任何清理操
kill -9 9101
- pkill:条件地终止或者发送一个信号到指定进程。
pkill process_name
环境变量命令
- env:显示当前所有的环境变量。
- set:显示当前shell所有的环境变量及函数。
输入:set
输出:展示所环境变量以及函数
- export:设置或显示环境变量。
输入:
export VARName='Value'
echo $VARName
输出结果:
Value
系统信息发布命令
- uname:会打印操作系统的名称。
- hostname:打印系统的主机名。
- df:展示文件系统的磁盘空间使用情况。
- free:展示系统中未使用和已经使用的物理和swap内存。
- uptime:展示系统已经运行了多久,有多少用户正在登录,以及系统负载。
- last:查看系统的重启和关机记录。
- w:展示哪些用户正在登录。
- who:展示哪些用户正在登录,和w命令相似但信息更少。
- id:展示当前用户的UID、GID以及所在的组。
系统控制命令
- halt:关机。
输入:sudo halt
- reboot:重启系统。
输入:sudo reboot
- shutdown:关机或者重启,和上述两个命令一样,但是提供更多的选项。
关闭系统:sudo shutdown -h now
重启系统:sudo shutdown -r now
- passwd:更改用户密码。
更改密码:passwd
文本编辑命令
- vi/vim:vi是一个文本编辑器,而vim是vi的改进版,提供了更多的功能。
打开文件:
vi vhost.conf
进入编辑模式:
当你第一次打开文件时,你会进入“普通模式”(Normal Mode)。
按下i键进入“插入模式”(Insert Mode),在这里可以开始编辑文件。
退出编辑器:
在普通模式下,按下:键,然后输入q(表示退出)并按Enter键退出编辑器。
保存并退出:
在普通模式下,按下:键,然后输入wq(表示写入并退出)并按Enter键保存更改并退出编辑器。
撤销更改:
在普通模式下,输入u键撤销最近的操作。
查找文本:
在普通模式下,按下:/ 键,然后输入要查找的文本,并按Enter键。查找zone :/zone
跳转到行:
在普通模式下,按下:键,输入行号并按Enter键跳转到指定行号。
设置行号:
在普通模式下,按下:键,输入set number或简写为set nu启用行号显示。
复制和粘贴:
在普通模式下,使用v(可视模式)选择文本,然后使用y(复制)复制文本,再使用p(粘贴)粘贴文本
- nano:一个简单易用的命令行文本编辑器。
- emac:一个强大的文本编辑器,也是一个定制化的计算环境。
其他有用命令
- man:查看命令的帮助文档
- whatis:显示一个命令的简单描述。
- whereis:查找命令的二进制文件、源文件及帮助文档位置。
- which:查找并显示给定命令的完整路径。
whereis:当你需要快速找到命令的多个相关文件(如二进制、源代码、手册页)时使用。
which:当你只需要知道某个命令的可执行文件路径时使用。
whereis:默认会在/usr/bin, /bin, /usr/sbin, /sbin, /usr/local/bin等标准目录下搜索。
which:只搜索PATH环境变量中列出的目录。
- whoami:打印当前有效的用户名。
输入:whoami
输出:user
- date:显示或设置系统日期和时间
输入:date
输出: Tue Dec 21 02:16:12 UTC 2021
- cal:显示日历
- history:显示命令历史
显示历史命令:
history
显示特定数量的历史命令:
history 10
查看特定用户的命令历史:-u选项用于查看指定用户username的命令历史
history -u username
搜索历史命令:
history | grep "search_pattern"
- clear:清除屏幕或窗口内容
- watch:用于实时查看当前命令打印信息
相关推荐
- Let’s Encrypt免费搭建HTTPS网站
-
HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...
- 使用Nginx配置TCP负载均衡(nginx tcp负载)
-
假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...
- Nginx负载均衡及支持HTTPS与申请免费SSL证书
-
背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...
- HTTPS配置实战(https配置文件)
-
原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...
- 只有IP地址没有域名实现HTTPS访问方法
-
一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...
- 超详解:HTTPS及配置Django+HTTPS开发环境
-
众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...
- Godaddy购买SSL之后Nginx配置流程以及各种错误的解决
-
完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...
- Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)
-
一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...
- 阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问
-
参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...
- 你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具
-
NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...
- 从零开始搭建HTTPS服务(搭建https网站)
-
搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...
- 群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问
-
安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...
- 让网站快速升级HTTPS协议提高安全性
-
为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...
- 用Https方式访问Harbor-1.9版本(https访问流程)
-
我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...
- 如何启用 HTTPS 并配置免费的 SSL 证书
-
在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...
你 发表评论:
欢迎- 一周热门
-
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
【系统配置】信创终端挂载NAS共享全攻略:一步到位!
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
WindowsServer2022|配置NTP服务器的命令
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)