Linux常用命令大全

第一章 Linux基础命令

【1】linux-》ls

释义:list,列出目录中文件的信息
常见用法:

  1. ls ==> 列出当前目录的文件名
  2. ls -l ==> 列出文件详情
  3. ls -a ==> 列出文件名(含隐藏文件)
  4. ls -la ==> 列出文件详情(含隐藏文件)
  5. ls /etc ==> 列出指定目录 /etc 的文件名

【2】linux-》alias

释义:给一个命令取一个别名
常见用法:

  1. alias l=‘ls -l’ ==> 给ls -l取个别名叫l

注意:在上述设置别名的语句中,等号两边不能有空格

【3】linux-》cd

释义:change director,切换当前路径
常见用法:

  1. cd /etc ==> 切换到 /etc
  2. cd ==> 切换到家目录
  3. cd - ==> 切换到刚刚去过的地方
  4. cd … ==> 切换到上一级目录
  5. cd …/… ==> 切换到上上级目录

【4】linux-》clear

释义:清屏
常见用法:

  1. clear

【5】linux-》date

释义:设置或查看日期时间
常见用法:

  1. date ==> 查看当前日期时间
  2. date -s “2020/12/12” ==> 设置日期

【6】linux-》dpkg

释义:手工安装 deb 软件包
常见用法:

  1. dpkg -i x.deb ==> 安装x.deb软件包

注意:Ubuntu是Debian系统的扩展和继承,因此Ubuntu中的软件安装包的格式为deb。

注意:一般而言,在Ubuntu中很少需要手工安装deb包。因为APT软件管理器会自动下载并安装所需的软件,并会自动处理所有依赖的文件。dpkg只用在一些特定的场合,比如非APT自动下载的安装包的安装、APT自动安装失败等。

【7】linux-》echo

释义:回显,即将字符打印到屏幕上
常见用法:

1. echo abcd   ==> 输出字符串"abcd"
2. echo $PATH  ==> 输出环境变量PATH的值

【8】linux-》man手册

释义:manual,帮助手册
常见用法:

  1. man ls ==> 查阅关于 ls 的帮助信息
  2. man -f read ==> 列出所有有关 read 的帮助手册
  3. man 2 read ==> 查阅第2册中 read 的帮助信息

注意
man手册总共有9册,Ubuntu默认只安装了1册,其余的需要手工安装,指令如下:

sudo apt install manpages
sudo apt install manpages-dev
sudo apt install manpages-posix
sudo apt install manpages-posix-dev

【9】linux-》pwd

释义:present work directory,显示当前工作路径
常见用法:

gec@ubuntu:~$ pwd  ==> 显示当前路径,简单易用,童叟无欺

【10】linux-》sort

释义:对文件内容按行排序并输出
常见用法:

gec@ubuntu:~$ sort file.txt ==> 按默认ASCII码升序排列
gec@ubuntu:~$ sort file.txt -r ==> 按ASCII码降序排列
gec@ubuntu:~$ sort file.txt -n ==> 按数值升序排列
gec@ubuntu:~$ sort file.txt -nr ==> 按数值降序排列

【11】linux-》uniq

释义:unique,去除文件中重复的相邻的行
常见用法:

gec@ubuntu:~$ uniq file.txt

【12】linux-》which

释义:查看命令所在路径
常见用法:

1. 查看默认命令 ls 所在路径
gec@ubuntu:~$ which ls

2. 查看命令 qmake 的所有可能路径
gec@ubuntu:~$ which -a qmake

【13】linux-》管道 |

概念:在shell命令中,可以使用一种特殊的符号来连接两个不同的命令,使得前面命令的输出,变成后面命令的输入或参数,这种特殊的符号叫做管道。

用法

将前面命令的输出,成为后面命令的输入:cmd1 | cmd2
将前面命令的输出,成为后面命令的参数:cmd1 |xargs cmd2

举例:

1. 将当前目录下的文件,按反序列出:
gec@ubuntu:~$ ls | sort -r

2. 将当前文件下的文件,逐个删除掉:
gec@ubuntu:~$ ls |xargs rm

注意

以上两个命令:sort和uniq,是典型的过滤器,它们就像一个安装在水管中间的过滤装置,将文件的数据一行一行地读出,并按照一定的规则过滤,然后输出过滤的结果。

鉴于以上理解,可以将多个过滤器用管道连接起来,使之拥有更强大的功能,比如:

gec@ubuntu:~$ sort file.txt | uniq  

这样出来的数据,就既进行了排序,又进行了去重。

第二章 Linux文件管理命令

【14】linux-》cat

释义:显示文本文件的内容
常见用法:

gec@ubuntu:~$ cat file.txt ==> 显示文本文件内容
gec@ubuntu:~$ cat -n a.c   ==> 显示文本文件内容(并显示行号)
gec@ubuntu:~$ cat -A a.c   ==> 显示文本文件内容(含不可见字符)

注意

在某些情况下,我们可能需要检测文件中那些不可见的字符。比如在Windows系统中编辑了程序源文件,放到Ubuntu系统中编译可能会出现字符错误,这是因为Windows系统中的某些回车符、制表符跟Ubuntu系统的不一致,导致无法编译,而这些字符是不可见的,因此可以使用上述
cat -A 来识别。

【15】linux-》head/tail

释义:查看指定文件的头部/尾部内容
常见用法:

gec@ubuntu:~$ head file.txt
gec@ubuntu:~$ head -n file.txt
gec@ubuntu:~$ tail file.txt
gec@ubuntu:~$ tail -n file.txt

【16】linux-》 less/more

释义:以分页方式查看长文件
常见用法:

gec@ubuntu:~$ less file.txt
gec@ubuntu:~$ more file.txt

【17】linux-》 od

释义:查看二进制文件
常见用法:

gec@ubuntu:~$ od -x file  ==> 以十六进制查看file
gec@ubuntu:~$ od -o file  ==> 以八进制查看file
gec@ubuntu:~$ od -d file  ==> 以十进制查看file
gec@ubuntu:~$ od -b file  ==> 以二进制查看file

【18】linux-》cp

释义:copy,复制文件或者复制整个目录
常见用法:

gec@ubuntu:~$ cp file1 file2    ==> 将文件file1复制为file2
gec@ubuntu:~$ cp dir1/ dir2/ -r ==> 将目录dir1/复制为dir2/

注意

如果file2或者dir2已存在,那么它们将会被覆盖 目录名称 dir1/ 和 dir2/
末尾的"/"是可选的,可写可不写,写上去只是为了强调 dir1 和 dir2 是目录,别无他意

【19】linux-》scp

释义:security copy,跨网络复制文件或者复制整个目录
常见用法:

# 将远程主机x.x.x.x中的文件a.txt复制到当前目录下
gec@ubuntu:~$ scp user@x.x.x.x:/home/gec/a.txt .

注意

user是源文件所在主机的用户名。 x.x.x.x是源文件所在主机的IP地址。
成功执行上述命令后,需要输入主机x.x.x.x中用户user的密码方可复制文件。

【20】linux-》 touch

释义
在文件存在的情况下:将文件最近修改时间更新为当前时间
在文件不存在的情况下:创建一个空文件
常见用法:

```cpp
#假设文件a.txt已存在
gec@ubuntu:~$ touch a.txt ==> 更新a.txt的最近修改时间到当前时间

#假设文件b.txt不存在
gec@ubuntu:~$ touch b.txt ==> 创建b.txt

【21】linux-》mkdir/rmdir

释义:make/remove directory,创建/删除空目录
常见用法:

gec@ubuntu:~$ mkdir a      ==> 创建空目录a
gec@ubuntu:~$ mkdir b/c -p ==> 创建嵌套空目录b/c
gec@ubuntu:~$ rmdir a      ==> 删除空目录a

注意
如果目录不为空,则不能用rmdir删除,而只能用rm,比如上述的目录b,由于b中有c,因此b不是空目录,此时只能这么删除:

gec@ubuntu:~$ rm -r b

【22】linux-》 rm

释义:remove,删除文件或目录
常见用法:

gec@ubuntu:~$ rm file
gec@ubuntu:~$ rm -r dir/

【23】linux-》 find

释义:在指定目录中,按指定条件寻找文件
常见用法:
gec@ubuntu:~$ find /usr -name “*.h” ==> 在/usr中查找以.h结尾的文件
gec@ubuntu:~$ find /tmp -type s ==> 在/tmp中查找类型为套接字的文件

【24】linux-》grep

释义:在指定文件或目录中,按指定条件寻找字符串
常见用法:

gec@ubuntu:~$ grep 'apple' /usr -rn ==> 在/usr中查找包含apple的文件

【25】linux-》diff

释义:difference,检测两个文件或目录的差异信息
常见用法:

gec@ubuntu:~$ diff file1 file2      ==> 检测文件file1和file2的差异信息
gec@ubuntu:~$ diff dir1/ dir2/ -urN ==> 检测目录dir1/和dir2/的差异信息

【26】linux-》file

释义:检测指定文件的格式信息
常见用法:

gec@ubuntu:~$ file a.tar.bz2 ==> 检测文件a.tar.bz2的格式
gec@ubuntu:~$ file a.out     ==> 检测文件a.out的格式

【27】linux-》mv

释义:move,移动文件,或给文件重命名
常见用法:

gec@ubuntu:~$ mv file dir/
gec@ubuntu:~$ mv file1 file2

【28】linux-》 wc

释义:计算字符数、单词数和行数
常见用法:

gec@ubuntu:~$ wc          ==> 计算从键盘输入的数据,以ctrl+d结束
gec@ubuntu:~$ wc file.txt ==> 计算文件file.txt的数据

chmod只能针对Linux文件系统有效,对共享文件夹是无效的,因为共享文件夹不属于 Linux 系统,他是属于 windows 系统。

第三章 Linux压缩与解压命令

Linux下最常用的压缩包格式是:
gz
bz2
zip
xz
其中,gz和bz2格式一般都是通过tar命令来控制的,xz和zip格式各自由它们的同名命令控制。

【29】linux-》tar

释义:归档、释放与压缩、解压
常见用法:

第一,归档与释放:
gec@ubuntu:~$ tar cf a.tar dir/*  ==> 将目录dir中的所有文件归档成a.tar
gec@ubuntu:~$ tar tf a.tar        ==> 查看归档文件a.tar
gec@ubuntu:~$ tar xf a.tar        ==> 释放归档文件a.tar
第二,压缩与解压:
gec@ubuntu:~$ tar czf a.tar.gz dir/*   ==> 将目录dir中的所有文件归档并压缩为gz格式
gec@ubuntu:~$ tar tf a.tar.gz          ==> 查看压缩文件a.tar.gz
gec@ubuntu:~$ tar xzf a.tar.gz         ==> 解压压缩文件a.tar.gz
gec@ubuntu:~$ tar cjf a.tar.bz2 dir/*  ==> 将目录dir中的所有文件归档并压缩为bz2格式
gec@ubuntu:~$ tar tf a.tar.bz2         ==> 查看压缩文件a.tar.bz2
gec@ubuntu:~$ tar xjf a.tar.bz2        ==> 解压压缩文件a.tar.bz2
第三,指定路径:
gec@ubuntu:~$ tar -xf a.tar -C /tmp      ==> 将文件释放到/tmp
gec@ubuntu:~$ tar -xzf a.tar.gz -C /tmp  ==> 将文件解压到/tmp

注意:归档只是简单的将文件归拢到一起,不涉及压缩算法,文件不会变小压缩会用到压缩算法,文件总体会变小。

【30】linux-》xz

释义:压缩与解压
常见用法:

gec@ubuntu:~$ xz a.tar                 ==> 将文件a.tar压缩成a.tar.xz
gec@ubuntu:~$ xz --decompress a.tar.xz ==> 解压a.tar.xz

注意

xz只能压缩单个文件,因此xz一般与tar配合使用,即:先用tar将要压缩的若干文件或目录归档成一个tar包,然后用xz将tar包压缩成xz格式压缩包[双层压缩]。

【31】linux-》zip

zip不是系统自带的命令,一般需要自己手工安装:

gec@ubuntu:~$ sudo apt install zip

释义:压缩与解压
常见用法:

gec@ubuntu:~$ zip a.zip file dir/  ==> 将指定的文件和目录压缩成a.zip
gec@ubuntu:~$ unzip a.zip          ==> 解压a.zip

第四章 Linux权限管理命令

【32】linux-》chmod

释义:修改文件权限
常见用法:

gec@ubuntu:~$ chmod 644 file ==> 将文件权限改为644
gec@ubuntu:~$ chmod 755 dir/ ==> 将目录权限改为755

在Linux中,文件的权限一般用rwx来表示

r 代表read,可读
w 代表write,可写
x 代表excute,可执行

对于某个文件而言,系统中的所有用户被分成三类,它们是文件的所有者,文件的所属组成员和其他人。这三类用户对这个文件的rwx权限,可以由命令 ls -l 来查看:

gec@ubuntu:~$ ls -l
-rw-rw-r-- 1 gec gec 127  Oct 30 14:41 a.c
-rwxrwxr-x 1 gec gec 8768 Oct 30 14:41 a.out

在上述列子中,rwx三组权限对应了三种用户。当我们需要修改这些权限的时候,为了便于描述,一般用三个八进制数来对应这些权限为,如下表所示:
在这里插入图片描述

如此,权限 644 就代表了 rw-r–r–,权限 755 就代表了 rwxr-xr-x。

【33】linux-》chown

释义:change owner,修改文件的所有者
常见用法:

gec@ubuntu:~$ sudo chown jack a.txt ==> 将文件a.txt的所有者修改为jack

注意

修改文件所有者信息,须以管理员身份才能执行,因此在命令的前面要加sudo,并在随后执行是要输入管理员密码。另外要注意,输入管理员密码时系统默认是不回显的。

【34】linux-》chgrp

释义:change group,修改文件的所属组
常见用法:

gec@ubuntu:~$ sudo chgrp gec a.txt ==> 将文件a.txt的所属组修改为gec

第五章 Linux用户管理命令

【35】linux-》adduser/deluser

释义:添加/删除系统用户
常见用法:

gec@ubuntu:~$ sudo adduser jack ==> 添加用户jack
gec@ubuntu:~$ sudo deluser jack ==> 删除用户jack

提醒

gec@ubuntu:~$ 系统所有的用户清单统一放在 /etc/passwd 中
gec@ubuntu:~$ 删除用户后,默认会残留用户的家目录,如果想要连带家目录也一锅端,可以使用这个命令:

sudo deluser --remove -home jack

【36】linux-》addgroup/delgroup

释义:添加/删除系统用户组
常见用法:

gec@ubuntu:~$ sudo addgroup gec ==> 添加用户组gec
gec@ubuntu:~$ sudo delgroup gec ==> 删除用户组gec

提醒

系统所有的用户组清单统一放在 /etc/group 中

【37】linux-》whoami/id

释义:查看当前用户/相关ID
常见用法:

gec@ubuntu:~$ whoami ==> 显示当前用户名
gec@ubuntu:~$ id     ==> 显示与当前用户相关的ID信息

【38】linux-》usermod

释义:修改用户相关信息
常见用法:

gec@ubuntu:~$ usermod jack -a -G gec ==> 将jack添加入用户组gec中

第六章 Linux进程管理命令

【39】linux-》ps

释义:process state,获取进程当前状态
常见用法:

gec@ubuntu:~$ ps -ef
gec@ubuntu:~$ ps aux

【40】linux-》top

释义:持续跟踪进程状态
常见用法:

gec@ubuntu:~$ top
gec@ubuntu:~$ top -p PID

注意: top可以通过ctrl+左右箭头翻页

【41】linux-》kill

释义:向指定进程发送信号
常见用法:

gec@ubuntu:~$ kill -l            ==> 查看系统所支持的所有的信号列表
gec@ubuntu:~$ kill -s SIGXXX PID ==> 向进程PID发送信号SIGXXX
gec@ubuntu:~$ kill -n PID        ==> 向进程PID发送第n号信号

第七章 Linux系统管理命令

【42】linux-》df

释义:查看系统分区信息
常见用法:

gec@ubuntu:~$ df -h
文件系统总大小已用剩余使用率%挂载点
udev916M0916M0%/dev
tmpfs188M11M178M6%/run
/dev/vda150G6.8G40G15%/
tmpfs916M0916M0%/dev/shm
tmpfs916M0916M0%/run/lock
tmpfs916M0916M0%/sys/fs/cgroup
cgmfs916M0916M0%/run/cgmanager/fs
tmpfs916M0916M0%/run/user/500

【43】linux-》du

释义:查看系统分区信息
常见用法:

gec@ubuntu:~$ du
gec@ubuntu:~$ du -sh

【44】linux-》fdisk

释义:查看/设置硬盘分区
常见用法:

gec@ubuntu:~$ sudo fdisk -l  ==> 查看当前系统已识别的分区。

提醒: df只能查看已经识别且挂载了的分区,而fdisk可以查看未挂载的分区
实际上,在系统识别出了分区之后,一般需要使用fdisk来查看分区的名称,然后才能使用mount来挂载,然后才能使用df查看到。

【45】linux-》mount / umount

释义:挂载/卸载分区
常见用法:
挂载分区:
gec@ubuntu:~$ mount /dev/sdb /mnt/u ==> 将分区sdb挂载到/mnt/u

卸载分区:
gec@ubuntu:~$ umount /dev/sdb ==> 将分区sdb卸载
gec@ubuntu:~$ umount /mnt/u ==> 将挂载点/mnt/u卸载

提醒: 卸载分区名,或卸载挂载点两种方式是等价的。

第八章 Linux网络命令

【46】linux-》hostname

释义:查看系统主机名
常见用法:

gec@ubuntu:~$ hostname
ubuntu
gec@ubuntu:~$ 

【47】linux-》ifconfig

释义:查看/设置系统IP地址
常见用法:

# 查看当前活跃的网络接口
gec@ubuntu:~$ ifconfig

# 查看所有的网络接口
gec@ubuntu:~$ ifconfig -a
# 设置指定的网络接口的IP地址
gec@ubuntu:~$ ifconfig ens33 192.168.1.100

使用ifconfig设置的IP是临时的,如要使得设置效果永久有效,则需要修改系统的 /etc/networking/interfaces
文件,将IP地址设置进去。例如:

gec@ubuntu:~$ cat /etc/network/interfaces

auto lo  
iface lo inet loopback

auto ens33
iface ens33 inet static  //静态固定,永久有效
address 192.168.1.100   //ip地址
netmask 255.255.255.0  //子网掩码
gateway 192.168.1.1    //默认网关

【48】linux-》ifup / ifdown

释义:启停指定网络接口卡
常见用法:

gec@ubuntu:~$ sudo ifdown ens33  ==> 禁用网络接口卡ens33
gec@ubuntu:~$ sudo ifup ens33    ==> 启用网络接口卡ens33

【49】linux-》ping

释义:向指定主机发送要求回应的ICMP数据包
常见用法:

gec@ubuntu:~$ ping 192.168.1.200 
gec@ubuntu:~$ ping www.qq.com

提醒: 一般而言,如果网络是畅通的,那么ping命令将会看到数据包返回的延迟时间,否则如果看不到延迟时间,那么网络就是不通的。

在这里插入图片描述

【50】linux-》scp

释义:在网络主机间拷贝文件
常见用法:

将文件从远程主机拷贝到本地:
gec@ubuntu:~$ scp ubuntu@134.175.190.226:/home/ubuntu/a.txt  a.txt 

将文件从本地拷贝到远程主机:
gec@ubuntu:~$ scp a.txt  ubuntu@134.175.190.226:/home/ubuntu/a.txt

第九章 Linux 命令举例

【51】U盘挂载到Ubuntu系统

【1】使用相关的命令,将一个U盘正确挂载到Ubuntu系统中。 注意: 挂载点绝对不能是系统关键目录,否则会导致系统崩溃
如果插入的U盘未被虚拟机识别,则有可能被宿主机优先捕获了,可通过连接虚拟机的可移动设备来连接:

在这里插入图片描述

解析 要成功将U盘挂载到Ubuntu需要以下几步:

将设备连接到Ubuntu
使用sudo fdisk -l 查看设备名称
使用df查看设备是否已被自动挂载,若是则流程结束
使用mount将以识别的分区挂载到某个空目录下

答案举例

gec@ubuntu:~$ sudo fdisk -l
gec@ubuntu:~$ sudo mount /dev/sdb /mnt

【52】Ubuntu网络配置、APT、vim

【2】在Ubuntu系统中通过 APT 下载并安装 vim,并配置使其支持鼠标动作、显示行号以及智能缩进。

解析
主要是配置Ubuntu的网络,根据如下步骤来确保网络通畅:

1.ping www.qq.com,若有返回时间延迟,则网络是通畅的,否则继续下面步骤。
2.确保IP地址处于当前局域网的网段。
3.确保Ubuntu默认网关是当前局域网网关。
4.确保设置了正确的DNS服务器
5.确保更新了APT软件列表

答案

gec@ubuntu:~$ ping www.qq.com
gec@ubuntu:~$ sudo ifconfig ens33 x.x.x.x
gec@ubuntu:~$ sudo route add default gw x.x.x.x
gec@ubuntu:~$ sudo vi /etc/init.d/resolv.conf
gec@ubuntu:~$ sudo apt update

【53】压缩与解压缩

【1】从网上下载最新Linux内核压缩包,并将其解压到Ubuntu家目录下。

解析: 一般而言,内核源码都以压缩包方式发布,一般会采用gz、bz2和xz格式压缩,其解压命令如下:

gec@ubuntu: ~$ tar xjvf linux-kernel.tar.bz2
gec@ubuntu: ~$ tar xzvf linux-kernel.tar.gz
gec@ubuntu: ~$ xz --decompress linux-kernel.tar.xz
gec@ubuntu: ~$ tar xvf linux-kernel.tar

【54】用户权限管理

【2】新建一个Ubuntu系统用户,并使其可以使用sudo命令。

解析: 在Linux中,新创建的用户默认未加入管理员组,即未加入sudo用户组,因此新用户即便知道管理员密码也是无法使用管理员权限的,例如:

# 新建用户jack 
gec@ubuntu:~$ sudo adduser jack
# 切换到用户jack
 gec@ubuntu:~$ su jack
 # 尝试使用sudo命令失败
  jack@ubuntu:~$ sudo ifconfig -a [sudo] 
  password for jack:  
  jack is not in the sudoers file.  This incident will be
reported. jack@ubuntu:~$

因此,要让一个用户可以使用sudo命令行使管理员权限,必须使其加入管理员用户组,可以用如下命令达成:

gec@ubuntu:~$ sudo usermod jack -a -G sudo

【55】交叉编译、串口终端

【1】将开发板正确连接上主机,并在在secureCRT中输出自己的姓名。

解析
考察对开发板开发环境搭建的熟悉程度。

答案

  1. 连接开发板的串口线、电源线、网线。
  2. 启动secureCRT,并连接到正确的串口。
  3. 编写一个简单的输出姓名的C语言程序,并在Ubuntu中交叉编译。
  4. 将编译好的程序,通过串口rx命令传输到开发板,并运行验证。

【56】tftp的使用

【2】使用tftp服务,将文件从主机快速传输到开发板。

解析
本题考查对开发板的网络配置问题,和tftp命令的掌握。

答案

  1. 通过ifconfig命令将开发板的IP地址设置为与主机相同的网段,假设为 192.168.1.100
  2. 在主机启动 tftpd32.exe 程序,并设置相应的文件目录,假设待传输文件名为 file
  3. 在串口终端中敲入 tftp 192.168.1.100 -gr file //发送到开发板
  4. 在串口终端中敲入 tftp 192.168.1.100 -pr file //开发板发送到电脑

下班回来就写到九点,望博友们用之取之,也好早日上岸

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐