编者也是经过从调试单片机到操作系统的历程,使用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+"命令"查看即可。
最后,还有很多高级的工具和命令可以提升效率,需要我们不断摸索,有需要我之后可以再继续整理。
入坑十余年,输出嵌入式、人工智能、成像技术;涉及计算机硬件、软件、算法,结合摄影视频,输出有趣有料的经验,以及一路的职业和生活感悟,欢迎关注交流!
--------森哥谈成像技术