编者也是经过从调试单片机到操作系统的历程,使用linux系统上手第一步,就是了解linux的命令行命令,可以类比window环境下的cmd; 本文作为从多角度认识了解嵌入式linux的第一遍,就分类列举了多年下来会使用的一些命令,并对应列举了示例,首先做到眼熟,之后可以通过网络和工具进一步详细了解该命令。
本文并根据入门程度分成三个层级,第一个层级主要是帮助熟练练手操作linux;第二个层级会有很多开发过程中常用的一些命令;最后第三层级是补充,可能会可以慢慢需要时再去查找。
一、第一层级,小试牛刀
1. 文件和目录操作:
ls:列出目录的内容。例如,ls -l会以列表格式显示当前目录内容。
cd:更改当前工作目录。例如,cd /var/log会切换到/var/log目录。
cp:复制文件或目录。例如,cp source.txt dest.txt会复制source.txt到dest.txt。
mv:移动或重命名文件或目录。例如,mv old.txt new.txt会将old.txt重命名为new.txt。
rm:删除文件或目录。例如,rm file.txt会删除file.txt文件。
touch:创建一个新的空文件。例如,touch newfile.txt会创建一个名为newfile.txt的新文件。
find:在文件系统中查找文件或目录。例如,find / -name myfile.txt会从根目录开始查找名为myfile.txt的文件。
2. 文件内容查看和处理:
cat:显示文件内容。例如,cat /etc/passwd会显示/etc/passwd文件的内容。
less:分页显示文件内容。例如,less /var/log/syslog会分页显示syslog文件的内容。
grep:在文件或者标准输入中查找匹配的字符串。例如,grep 'error' /var/log/syslog会在syslog文件中查找包含"error"的行。
awk:处理文件中的行和列。例如,awk '{print $1}' myfile.txt会打印myfile.txt中每一行的第一列。
sed:流编辑器,用于对输入流(或文件)进行基本的文本转换。例如,sed 's/foo/bar/g' myfile.txt会将myfile.txt中的所有'foo'替换为'bar'。
3. 权限和所有权管理:
chmod:改变文件或目录的权限。例如,chmod 755 myfile.txt会改变myfile.txt的权限。
chown:改变文件或目录的所有者和所属组。例如,chown user:group myfile.txt会改变myfile.txt的所有者和组。
chgrp:更改文件的组。例如,chgrp group file.txt会将file.txt的组更改为'group'。
su:切换用户。例如,su - username会切换到username用户。
sudo:以其他用户(通常是root用户)的身份执行命令。例如,sudo service apache2 restart会以root用户的身份重启apache2服务。
4. 系统状态查看:
top:显示实时系统状态,包括CPU使用率,内存使用情况,正在运行的进程等。
ps:显示当前系统的进程状态。例如,ps aux会显示所有的进程信息。
df:显示磁盘使用情况。例如,df -h会以人类可读的格式显示所有文件系统的磁盘使用情况。
free:显示内存和交换空间的使用情况。例如,free -h会以人类可读的格式显示内存和交换空间的使用情况。
uptime:显示系统的运行时间,以及过去一段时间内的平均负载。
5. 网络操作:
ping:发送ICMP ECHO_REQUEST以测试网络连接。例如,ping www.google.com会发送ICMP请求到www.google.com。
netstat:显示网络连接,路由表,网络接口统计等。例如,netstat -tuln会列出所有正在监听的TCP和UDP端口。
ssh:安全地连接到远程服务器。例如,ssh user@192.168.1.1会使用ssh连接到192.168.1.1。
wget:从网络上下载文件。例如,wget http://example.com/myfile.txt会从example.com下载myfile.txt。
curl:发送HTTP请求。例如,curl -X GET http://example.com会发送一个GET请求到example.com。
6.环境和 shell:
env:运行一个在修改环境的情况下的程序。例如,env VAR=value command会在新的环境中执行'command'。
export:设置环境变量。例如,export VAR=value会设置环境变量'VAR'。
alias:创建命令别名。例如,alias ll='ls -l'将创建一个名为'll'的别名,等同于'ls -l'。
source:在当前shell环境中执行脚本。例如,source script.sh将在当前shell中执行'script.sh',而不是创建新的子shell。
7. 磁盘和文件系统工具:
df:显示磁盘空间使用情况。例如,df -h会以人类可读的方式显示。
du:显示目录或文件的磁盘使用情况。例如,du -sh /home/user会显示'/home/user'目录的大小。
fsck:检查并可选地修复文件系统。例如,fsck /dev/sda1会检查'/dev/sda1'设备。
dd:用于转换和复制文件。例如,dd if=/dev/zero of=file.txt count=1024 bs=1024会创建一个大小为1MB的文件。
fdisk, parted:用于磁盘分区。例如,fdisk /dev/sda会开始一个交互式的磁盘分区程序。
mkfs:用于在设备上创建文件系统。例如,mkfs -t ext4 /dev/sda1会在/dev/sda1分区上创建一个ext4文件系统。
mount和umount:用于挂载和卸载文件系统。例如,mount /dev/sda1 /mnt会将/dev/sda1分区挂载到/mnt目录,umount /mnt则会卸载。
8.搜索和查找:
find:在文件系统中查找文件。例如,find / -name "*.txt"会从根目录开始查找所有以.txt为后缀的文件。
grep:在文件中查找特定的文本。例如,grep "hello" file.txt会在file.txt中查找包含"hello"的行。
locate:在数据库中查找文件。这通常比find命令更快,但是数据库可能不总是最新的。例如,locate file.txt会查找文件名或路径中包含"file.txt"的文件。
9.系统管理和服务控制:
shutdown:用于关闭或重启系统。例如,shutdown -r now会立即重启系统。
reboot:重启系统。同样,你可以使用shutdown -r now来达到同样的效果。
systemctl:用于控制Systemd系统和服务管理器。例如,systemctl start apache2.service会启动Apache2服务。
service:在不使用Systemd的系统中,用于控制系统服务。例如,service apache2 start会启动Apache2服务。
10. 网络诊断工具:
netstat:显示网络统计信息。例如,netstat -plnt会显示监听的TCP端口和相关进程。
ifconfig 或 ip:显示或配置网络接口。例如,ifconfig会显示所有活动的网络接口的信息,ip addr show会显示类似的信息。
ping:发送ICMP ECHO_REQUEST以测试网络连接。例如,ping www.google.com会向www.google.com发送ICMP请求。
traceroute:显示数据包到达目的地所经过的路径。例如,traceroute www.google.com会显示数据包到达www.google.com的路径。
dig或nslookup:查询DNS查找。例如,dig www.google.com会显示www.google.com的DNS信息。
第二层级:初露锋芒
1. 进程管理:
ps:报告当前系统的进程状态。例如,ps aux会显示所有的进程信息。
top:显示实时系统状态,包括CPU使用率,内存使用情况,正在运行的进程等。
htop:一个增强版的top,提供了更丰富的界面和更多的功能。
kill:用于发送信号给进程。例如,kill -9 1234会发送一个SIGKILL信号给进程ID为1234的进程,强制该进程结束。
pkill:按照进程名来发送信号。例如,pkill -9 httpd会结束所有名为'httpd'的进程。
bg和fg:用于控制后台和前台进程。例如,bg %1会将任务号为1的暂停进程放入后台继续运行,fg %1则将其带回前台。
2. 联网工具:
ping: 发送ICMP ECHO_REQUEST以测试网络连接。例如,ping google.com将发送ping请求到google.com。
netcat (nc): 用于读取和写入数据流。可以用于创建各种网络连接。例如,nc -l 1234将在端口1234上监听连接。
traceroute: 打印数据包到主机的路由路径。例如,traceroute google.com将显示到google.com的路由路径。
ssh: 远程登录程序。例如,ssh user@hostname将以'user'的身份登录到'hostname'。
scp: 远程文件复制程序。例如,scp file.txt user@hostname:/path/将file.txt复制到'hostname'的'/path/'目录下。
3. 压缩和解压缩命令:
tar:归档文件。例如,tar cvf archive.tar files会将files归档为archive.tar。
gzip:压缩文件。例如,gzip file会将文件file压缩为file.gz。
gunzip:解压缩文件。例如,gunzip file.gz会将file.gz解压缩为file。
zip和unzip:创建和解压ZIP压缩包。例如,zip archive.zip files会将files压缩为archive.zip,unzip archive.zip会解压archive.zip。
4. 日志和输出命令:
dmesg:显示内核相关消息。例如,dmesg | less可以查看内核启动时的消息。
tail:查看文件的末尾。例如,tail /var/log/syslog会显示syslog的最后10行,tail -f /var/log/syslog会动态查看添加到syslog的新内容。
head:查看文件的开头。例如,head /var/log/syslog会显示syslog的前10行。
less和more:查看文件内容。例如,less /var/log/syslog和more /var/log/syslog可以查看syslog文件的内容。
>和>>: 这些是重定向操作符,用于改变命令的输出流。例如,echo "Hello" > file.txt将"Hello"写入file.txt,如果file.txt已经存在,则内容会被覆盖;而echo "Hello" >> file.txt将把"Hello"追加到file.txt的末尾。
5. 文本处理工具:
awk:用于在文件中搜索和处理模式。例如,awk '{print $1}' file.txt会打印file.txt中每一行的第一个字段。
sed:流编辑器,用于对文本文件进行处理。例如,sed 's/foo/bar/g' file.txt会在file.txt文件中将所有的'foo'替换为'bar'。
cut:删除文件中的某些部分。例如,cut -d':' -f1 /etc/passwd会打印'/etc/passwd'文件中每一行的第一个字段。
sort:对文件的行进行排序。例如,sort file.txt会按字母顺序排序file.txt的行。
uniq:报告或省略文件中的重复行。例如,sort file.txt | uniq会删除file.txt中的重复行。
6. 编程和开发工具:
gcc:GNU C编译器。例如,gcc -o hello hello.c会将hello.c编译为名为'hello'的可执行文件。
gdb:GNU调试器。例如,gdb ./hello会开始调试名为'hello'的程序。
make:自动编译工具。例如,在包含'Makefile'的目录中执行make命令,可以按照'Makefile'中的指示来编译程序。
git:版本控制系统。例如,git clone https://github.com/user/repo.git会克隆一个Git仓库。
7. 文本编辑器:
vim: 高级文本编辑器。例如,vim file.txt将用vim打开file.txt。
nano: 易用的文本编辑器。例如,nano file.txt将用nano打开file.txt。
emacs: 功能强大的文本编辑器。例如,emacs file.txt将用emacs打开file.txt。
8. 系统监控和性能调优:
top:这是一个实时的系统监视工具,显示当前的系统状态,包括CPU使用情况,进程状态,内存使用情况等。
vmstat:这是一个系统性能工具,可以报告有关内存,交换区,IO,CPU等的信息。
iostat:这是一个用于监视系统输入/输出设备负载的工具。
netstat:这是一个用于显示网络连接,路由表,接口统计等信息的工具。
第二层级:循循渐进
1. 时间和日期:
date: 显示或设置系统的日期和时间。例如,date会显示当前的日期和时间。
hwclock: 显示或设置硬件时钟。例如,hwclock --systohc会将系统时间写入硬件时钟。
cal: 显示日历。例如,cal 2023会显示2023年的日历。
timedatectl: 用于查询和更改系统时间和日期设置。
2. 系统信息和状态查看:
free: 显示系统的内存使用情况。例如,free -h会以易读的格式显示内存使用情况。
uptime: 显示系统运行时间,以及过去一段时间内的系统负载。
w: 显示当前登录的用户以及他们正在执行的活动。
who: 显示当前登录的用户。
3. 系统备份工具:
rsync: 快速,多功能的文件复制工具,常用于备份。例如,rsync -av /src /dest将把'/src'目录同步到'/dest'目录。
dd: 可以用于创建磁盘镜像。例如,dd if=/dev/sda of=/path/to/image将创建一个'/dev/sda'的磁盘镜像。
tar: 常用于创建备份归档文件。例如,tar czf backup.tar.gz /path/to/dir将创建一个包含'/path/to/dir'的gzip压缩tar文件。
4.软件包管理:
apt-get(Debian系), yum(旧的Red Hat系), dnf(新的Red Hat系), zypper(SUSE系)等: 这些是各自Linux发行版的软件包管理工具,用于安装、更新和删除软件包。
dpkg(Debian系), rpm(Red Hat系):这些是底层的包管理工具,通常在apt, yum等工具无法使用时作为后备。
5.软件和服务管理:
systemctl:控制systemd系统和服务管理器。例如,systemctl start service和systemctl stop service用于启动和停止服务。
service:在旧版的Linux中,用于控制服务。例如,service apache2 start和service apache2 stop用于启动和停止Apache2服务。
apt,yum,dnf,zypper等:软件包管理工具,具体取决于你的Linux发行版。
6. 系统服务和运行等级:
systemctl:这是用于控制systemd系统和服务管理器的命令。例如,systemctl start httpd会启动httpd服务。
service:这是旧系统中用于控制服务的命令。例如,service httpd start也会启动httpd服务。
chkconfig:这是用于管理系统启动时服务启动的命令。例如,chkconfig httpd on会设置httpd服务在系统启动时自动启动。
结尾森哥想说:第一点把命令分类再分类再分层级整理,是为了更好的了解它们,其实入门需要了解的命令并不多。
第二点通过这些常用命令基本涵盖了日常的主要工作场景,可以见微知著,更好的了解操作系统。
第三点命令的使用时很多参数可能并不能都记住,这是常态,使用时使用man+"命令"查看即可。
最后,还有很多高级的工具和命令可以提升效率,需要我们不断摸索,有需要我之后可以再继续整理。
------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
入坑十余年,输出嵌入式、人工智能、成像技术;涉及计算机硬件、软件、算法,结合摄影视频,输出有趣有料的经验,以及一路的职业和生活感悟,欢迎关注交流!
WX公众号:森哥谈成像技术