Linux 命令大全
作为程序员,我们在日常的工作中或多或少都会接触 Linux ,掌握其基本命令也是必不可少的。网上很多人都会推荐去看《鸟哥的私房菜—基础篇》,作为 Linux 编程的爱好者的我,还是不建议初学者一上来就看这本书,感觉对初学者不太友好,当手册去查还是可以的。
为了让更多想学习 Linux 的朋友快速入门,我这里专门给大家提供一个系统性学习 Linux 命令的详细指南,该指南主要是介绍要掌握的 Linux 基本命令有哪些,以及提供一些基础的示例,更加详细的命令参数大家可以在这个网站上查询,很方便的。https://man.niaoge.com/
先来大致浏览下我们本篇文章要讲解的命令:
文件和目录操作命令
ls:列出目录内容,想看看当前目录下有什么?简单!
ls
cd:更改当前目录,
想跳转到桌面目录?试试这个:
cd ~/Desktop
touch: 创建新文件,
快速创建一个新文件 note.txt:
touch note.txt
pwd:显示当前目录的完整路径,
确认你现在在哪个目录?只需一条命令:
pwd
mkdir:创建新目录,
需要一个新的项目目录 project?轻松搞定:
mkdir project
rm:删除文件或目录,
要小心使用!彻底删除一个目录 project:
# -f 或 --force 选项强制删除文件或目录
# -r 或 -R 或 --recursive 选项告诉rm命令递归地删除目标目录以及目录内的所有内容(文件和子目录)
rmdir -fr project
cp:复制文件或目录,
将文件 example.txt 复制到目录 backup 中:
cp example.txt backup/
mv:移动或重命名文件或目录,
更改文件名 old_name.txt 为 new_name.txt:
mv old_name.txt new_name.txt
将文件 report.txt 移动到另一个目录:
mv report.txt ~/Documents/
tree : 树形结构显示目录,首先确保已安装 tree
# 安装 tree
sudo apt-get install tree # Debian/Ubuntu
然后运行:
tree
ln : 创建链接文件,
创建 source.txt 的硬链接 hard_link.txt:
ln source.txt hard_link.txt
或者创建符号链接(软链接):
ln -s source.txt soft_link.txt
权限管理命令
chown:更改文件或目录的所有者和群组,
文件归谁?chown说了算:
chown newowner filename
chmod:更改文件或目录权限,
谁能看?谁能改?chmod让你决定:
chmod 755 filename
chgrp:专门用于更改文件或目录的群组归属,
改变文件或文件夹的所属群组,轻松管理访问权限:
chgrp newgroup filename
软件包管理命令
Debian/Ubuntu系统
apt-get:一键管理软件。安装、更新或删除软件包
装软件、升级都不是问题,apt-get帮你忙:
sudo apt-get install packagename
CentOS/RHEL系统
yum:包管理器,包管理器让软件安装更简单,安装、更新或删除软件包
yum install packagename
压缩和解压命令
tar:文件打包工具,
把一堆文件或文件夹打包成一个文件,超方便的备份方式:
tar -cvf myfiles.tar /path/to/directory
gzip:压缩文件,
想让文件小一点,传输快一点?gzip来帮忙:
gzip filename
bzip2:另一压缩选择,
寻找比gzip还要压得更紧的?试试 bzip2:
bzip2 filename
文本处理命令
cat:查看和合并文件,
想快速查看文件内容或把几个文件拼成一个?用 cat:
# 查看文件内容
cat file1.txt
# 合并文件
cat file1.txt file2.txt > combined.txt
more/less:分页浏览文本,
文件太长,一屏看不完?试试 more 和 less:
more longfile.txt
less longfile.txt
grep:文本中的搜寻高手,
在文本文件中查找某个字符串,如:找出文件中包含"error"的所有行:
grep 'error' logfile.txt
sed:流编辑器,
把文本中的"old"全部替换成"new":
sed 's/old/new/g' file.txt
awk:文本处理小能手,
打印文件的第一列:
awk '{print $1}' file.txt
sort:给你的文本排排队,
对文件的内容按行排序:
sort file.txt
uniq:重复行不见了,
过滤掉重复行,记得先sort:
sort file.txt | uniq
# | 符号被称为管道符(pipe)。管道是一种将一个命令的输出作为另一个命令输入的机制,在这个例子中,管道的作用是将 sort file.txt 的输出直接传输给 uniq 命令。
cut:文本的"剪刀手" ,
只看每行的前5个字符:
cut -c1-5 file.txt
wc:数数大师,
数一数文件里有多少行、词、字符:
wc file.txt
find:文件搜查官,
搜索某文件,在目录中搜索所有.txt文件:
find /path/to/search -name "*.txt"
head/tail:文件的头和尾,
看文件的开头10行或结尾10行:
head file.txt
tail file.txt
系统管理命令
top:实时监控系统状态,
想知道你的电脑现在在忙什么?top就像电脑的健康监测器:
top
ps:查看运行中的进程,
想找出所有正在运行的程序?ps 给你全视角:
ps aux
#一般这样使用:
ps -ef | grep processName
kill:结束进程,
有个进程不听话,要“礼貌地”让它停止?用 kill:
kill PID
useradd/userdel:用户账号管理,
新来了个同事,需要账号?或者有人离开了?
useradd newuser
userdel olduser
df:检查磁盘空间,
硬盘还有空间吗?df一目了然:
df -h
du:分析文件夹大小,
这个文件夹占了多少空间?du告诉你答案:
du -sh /path/to/directory
hostname:查看或设置主机名,
这台机器叫什么?或者想给它起个新名字?
# 查看主机名
hostname
# 设置主机名
hostname newname
uname:获取系统信息,
这台机器上跑的是什么操作系统?
uname -a
man:手册页,
忘记了某个命令的参数?man命令是你的救星:
man command
比如:man ls
passwd:更改密码,
需要更改密码或重置别人的密码?
passwd username
su:切换用户 ,
需要临时变身为另一个用户?
su username
fdisk/gdisk:分区大师,
用于管理磁盘分区的工具,硬盘需要新分区或调整?
fdisk /dev/sdx
gdisk /dev/sdx
mount/unmount:挂载与卸载文件系统,
把新的硬盘或USB挂载上去,或者安全地移除它:
mount /dev/sdx /mnt
umount /mnt
网络操作命令
ping:检查网络连接,
想确认你的电脑能不能访问互联网上的某个地址?ping是你的朋友:
ping google.com
ifconfig:配置和显示网络接口,
查看或设置网络接口的 IP 地址等信息:
ifconfig
ssh:安全地远程登录,
远程登录到另一台电脑上,安全又方便:
ssh username@remotehost
scp:安全地远程复制文件,
从一台电脑安全地传输文件到另一台电脑:
scp localfile.txt username@remotehost:/remote/directory
wget:从网上下载文件,
需要下载网上的文件?wget就搞定:
wget http://example.com/file.zip
curl:与网站交互,
发送请求到网站,可以用来下载文件或测试API:
curl http://example.com
netstat/ss:查看网络连接,
查看你的机器上的网络连接信息:
netstat
一般这样使用:
netstat -anpt | grep "80" # 输出涉及端口号为80的连接
-a:显示所有的套接字(sockets)
-n :以数字形式显示地址和端口号
-p :显示每个连接所对应的进程标识符(PID)和进程名
-t :只显示TCP连接
或者使用ss,一个更现代的替代:
ss
ss -anpt | grep "80" # 输出涉及端口号为80的连接
traceroute:追踪数据包的路径,
查看数据包从你的电脑到目标地址经过了哪些路由器:
traceroute example.com
dig:DNS查询,
查找域名的IP地址等DNS信息:
dig example.com
tcpdump:网络抓包工具,
监听并打印想要的数据包:例如,如果你想要捕获从特定IP地址和端口443的数据包,可以使用:
tcpdump -i eth0 src host 192.168.1.1 and port 443 -w https_traffic_from_192.168.1.1.pcap
telnet:远程访问工具,
测试远程服务的连接性,虽然现在多用ssh替代:
telnet remotehost port
lsof:查看打开的文件和套接字,
列出哪些进程正在使用网络套接字:
lsof -i
nc:网络连接小工具,
建立TCP/UDP连接,进行数据监听和传输:
nc -l 1234 # 监听端口1234
其他常用命令
echo:输出文字到终端,也能写入文件,
echo "This is a test." > test.txt
history:显示历史命令,
看看你都敲过什么:
history
crontab:定时运行命令,自动化管理
# crontab -e 命令用于编辑当前用户的cron作业列表。
crontab -e
cron 是 Linux 和 Unix 系统中用来定时执行任务的工具。
通过crontab -e命令,你可以为当前用户添加、编辑或删除计划任务。
总结:
至此,你已经系统地学习了 Linux 常见的基本命令,覆盖了文件和目录的操作、权限管理、软件包处理、压缩与解压、文本处理、系统管理以及网络操作等多个方面。这些命令是Linux 开发必须掌握的。
通过本篇文章的指南,希望初学者能够对 Linux 命令有了清晰的认识和实际操作的能力。记住,掌握这些命令只是开始,真正的精通还需要你在实践中不断探索和应用。遇到问题时,不要忘记利用 man 命令或在线资源寻求帮助,持续地学习和实践,你才能更加自如地驾驭 Linux 系统。
最后:
掌握了基本的 Linux 命令,接下来就是如何在 Linux 环境下进行编程,想要深入学习 Linux 编程的朋友们可以先关注我的公众号「跟着小康学编程」,这里不仅有持续更新的计算机基础相关的文章,还有如何系统学习 C、C++,Linux 系统编程以及网络编程的文章等。后续也会持续新增关于 Go微服务 、docker、k8s等云原生领域的内容。
感兴趣的朋友可以关注我的公众号,具体可访问:关注小康微信公众号。
另外大家在阅读这篇文章的时候,如果觉得有问题的或者有不理解的知识点,欢迎大家评论区询问。我看到就会回复大家的。大家也可以加我的微信:jkfwdkf ,有任何不理解得都可以咨询我。
如果大家觉得我写的对你有所帮助的话,也希望大家能够帮忙点个赞,非常感谢!