30个在开发中常用的linux命令以及linux常用快捷键,比如pwd,which,ls,cd,cat,tail,touch,mkdir,cp,mv,sudo,chown,find,yum,ps等

本文详细介绍了30个在Linux开发和运维中常用的命令,包括快捷键、`pwd`、`which`、`ls`、`cd`、`cat`、`less`、`head`、`tail`、`touch`、`mkdir`、`cp`、`mv`、`sudo`、`chown`、`find`、`yum`、`grep`、`history`、`wc`、输出重定向、`ps`、`top`、`kill`、`nohup`、`systemctl`、`tar`、`gzip`、`ifconfig`、`wget`和`vim`,并提供了各种参数和使用示例,是Linux新手和老手的实用参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 快捷键

在开始学习linux命令之前,需要掌握部分快捷键,它将贯穿整个linux使用生涯,如下所示:

  1. Ctrl + Insert:复制(有可能会和windows切换字体的快捷键发生冲突)

  2. Shift + Insert:粘贴

  3. Alt + Insert :粘贴选择内容

  4. 通过上下方向键 ↑ ↓ 来调取过往执行过的 Linux 命令。

  5. 命令或参数仅需输入前几位就可以用Tab键补全。

  6. Ctrl + R :用于查找使用过的命令(history命令用于列出之前使用过的所有命令,然后输入 ! 命加上编号( !2 )就可以直接执行该历史命令)。

  7. Ctrl + L:清除屏幕并将当前行移到页面顶部。

  8. Ctrl + C:中止当前正在执行的命令。

  9. Ctrl + U:从光标位置剪切到行首。

  10. Ctrl + K:从光标位置剪切到行尾。

  11. Ctrl + W:剪切光标左侧的一个单词。

  12. Ctrl + Y:粘贴Ctrl + U | K | Y 剪切的命令。

  13. Ctrl + A:光标跳到命令行的开头。

  14. Ctrl + E:光标跳到命令行的结尾。

  15. Ctrl + D:关闭 Shell 会话。

2. pwd

Print Working Directory显示当前目录的路径

[root@by~] pwd
/root

3. which

查看命令的可执行文件所在路径。

linux下,每一条命令其实都对应一个可执行程序,在终端中输入命令,按回车的时候,就是执行了对应的那个程序, which命令本身对应的程序也存在于Linux中。

总的来说一个命令就是一个可执行程序。

[root@by ~] which java
/opt/jdk1.8.0_151/bin/java

4. ls

lslist files的缩写,它列出文件和目录,是linux最常用的命令之一。

常用参数如下:

  • -a 显示所有文件和目录包括隐藏的

  • -l 显示详细列表

  • -h 适合人类阅读的

  • -t 按文件最近一次修改时间排序

  • -i 显示文件的inode (inode是文件内容的标识)


[root@by home] ls
tomcat

[root@by home] ls -alht
total 12K
dr-xr-xr-x. 21 root root 4.0K Jun 15 16:01 ..
drwxr-xr-x   4 root root 4.0K Apr 23  2021 tomcat
drwxr-xr-x.  3 root root 4.0K Apr 23  2021 

[root@by home] ls -l
total 4
drwxr-xr-x 4 root root 4096 Apr 23  2021 tomcat

[root@by home] ls -h
tomcat

[root@by home] ls -i
1704133 tomcat

5. cd

cdchange directory的缩写,表示切换目录。

cd /	--> 跳转到根目录
cd ~	--> 跳转到家目录
cd ..	--> 跳转到上级目录
cd ./home	--> 跳转到当前目录的home目录下
cd /home/tomcat--> 跳转到根目录下的home目录下的tomcat目录
cd	--> 不添加任何参数,也是回到家目录

【注意】 输入cd /ho + 单次tab键会自动补全路径 + 两次tab键会列出所有可能的目录列表。

6. cat

一次性显示文件所有内容,更适合查看小的文件。

常用参数如下:

  • -n 显示行号。
[root@by manager] cat log.file

在这里插入图片描述

7. less

分页显示文件内容,更适合查看大的文件。

[root@by manager] less log.file

快捷操作如下:

  • 空格键:前进一页(一个屏幕);

  • b 键:后退一页;

  • 回车键:前进一行;

  • y 键:后退一行;

  • 上下键:回退或前进一行;

  • d 键:前进半页;

  • u 键:后退半页;

  • q 键:停止读取文件,中止less命令;

  • = 键:显示当前页面的内容是文件中的第几行到第几行以及一些其它关于本页内容的详细信息;

  • h 键:显示帮助文档;

  • / 键:进入搜索模式后,按n键跳到一个符合项目,按N键跳到上一个符合项目,同时也可以输入正则表达式匹配。

8. head

显示文件的开头几行(默认是10行)

[root@by manager] head log.file

常用参数如下:

  • -n 指定行数,比如head log.file -n 2

9. tail

显示文件的结尾几行(默认是10行)

[root@by manager] tail log.file

常用参数如下:

  • -n 指定行数,比如tail log.file -n 2

  • -f 会每过1秒检查下文件是否有更新内容,也可以用-s参数指定间隔时间tail -f -s 4 log.file

10. touch

创建一个文件

## 创建test.txt文件
[root@by manager] touch test.txt

11. mkdir

创建一个目录

# 创建config目录
[root@by manager] mkdir config

常用参数如下:

  • -p 递归的创建目录结构,比如mkdir -p one/two/three

12. cp

拷贝文件和目录

cp file file_copy	--> file 是目标文件,file_copy 是拷贝出来的文件

cp file one	-->file 文件拷贝到 one 目录下,并且文件名依然为 file

cp file one/file_copy	-->file 文件拷贝到 one 目录下,文件名为file_copy

cp *.txt folder	--> 把当前目录下所有 txt 文件拷贝到 folder 目录下

常用参数如下:

  • -r 递归的拷贝,常用来拷贝一整个目录

13. mv

移动(重命名)文件或目录,与cp命令用法相似。

mv file one	-->file 文件移动到 one 目录下

mv new_folder one	--> 将 new_folder 文件夹移动到one目录下

mv *.txt folder	--> 把当前目录下所有 txt 文件移动到 folder 目录下

mv file new_file	--> file 文件重命名为 new_file

14. sudo

以 root 身份运行命令。

sudo date  --> 当然查看日期是不需要sudo的这里只是演示,sudo 完之后一般还需要输入用户密码的

15. su

切换用户,需要 root 用户权限

sudo su	--> 切换为root用户(exit 命令或 CTRL + D 快捷键都可以使普通用户切换为 root 用户)
su by --> 切换为普通用户
su -	--> 切换为root用户

16. chown

改变文件的所有者,需要root身份才能运行。

chown lion file.txt	--> 把其它用户创建的file.txt转让给lion用户
chown lion:bar file.txt	--> 把file.txt的用户改为lion,群组改为bar

常用参数如下:

  • -R 递归设置子目录和子文件,比如chown -R by:by /home/frankfrank文件夹的用户和群组都改为by

17. chmod

修改访问权限。

chmod 740 file.txt

常用参数如下:

  • -R 可以递归地修改文件访问权限,例如chmod -R 777 /home/by

修改权限比较简单,但理解其深层次的意义才是最重要的。

下面我们来系统的学习 Linux 的文件权限。

[root@by ~]# ls -l
drwxr-xr-x 5 root root 4096 Apr 13  2020 climb
lrwxrwxrwx 1 root root    7 Jan 14 06:41 hello2.c -> hello.c
-rw-r--r-- 1 root root  149 Jan 13 06:14 hello.c

其中drwxr-xr-x表示文件或目录的权限,它具体代表如下:

  • d :表示目录,就是说这是一个目录,普通文件是 - ,链接是 l 。

  • r : read 表示文件可读。

  • w : write 表示文件可写,一般有写的权限,就有删除的权限。

  • x : execute 表示文件可执行。

  • - :表示没有相应权限。

权限的整体是按用户来划分的,如下图所示:

在这里插入图片描述

现在再来理解这句权限drwxr-xr-x的意思:

  • 它是一个文件夹;

  • 它的所有者具有:读、写、执行权限;

  • 它的群组用户具有:读、执行的权限,没有写的权限;

  • 它的其它用户具有:读、执行的权限,没有写的权限。

现在理解了权限,我们使用chmod来尝试修改权限。

chmod它不需要是root用户才能运行的,只要你是此文件所有者,就可以用chmod来修改文件的访问权限。

18. find

用于查找文件,它会去遍历你的实际硬盘进行查找,而且它允许我们对每个找到的文件进行后续操作,功能非常强大。

find <何处> <何物> <做什么>
  • 何处:指定在哪个目录查找,此目录的所有子目录也会被查找。

  • 何物:查找什么,可以根据文件的名字来查找,也可以根据其大小来查找,还可以根据其最近访问时间来查找。

  • 做什么:找到文件后,可以进行后续处理,如果不指定这个参数, find 命令只会显示找到的文件。

  1. 根据文件名查找
find -name "file.txt"	--> 当前目录以及子目录下通过名称查找文件

find . -name "syslog"	--> 当前目录以及子目录下通过名称查找文件

find / -name "syslog"	--> 整个硬盘下查找syslog

find /var/log -name "syslog"	--> 在指定的目录/var/log下查找syslog文件

find /var/log -name "syslog*"	--> 查找syslog1、syslog2 ... 等文件,通配符表示所有

find /var/log -name "*syslog*"	--> 查找包含syslog的文件 

【注意】find命令只会查找完全符合何物字符串的文件,而locate会查找所有包含关键字的文件。

  1. 根据文件大小查找
find /var -size +10M	--> /var 目录下查找文件大小超过 10M 的文件

find /var -size -50k	--> /var 目录下查找文件大小小于 50k 的文件

find /var -size +1G	--> /var 目录下查找文件大小查过 1G 的文件

find /var -size 1M	--> /var 目录下查找文件大小等于 1M 的文件
  1. 根据文件最近访问时间查找
find -name "*.txt" -atime -7 	-->7天内访问过的.txt结尾的文件
  1. 仅查找目录或文件
find . -name "file" -type f 	--> 只查找当前目录下的file文件
find . -name "file" -type d 	--> 只查找当前目录下的file目录
  1. 操作查找结果
find -name "*.txt" -printf "%p - %u\n"	--> 找出所有后缀为txt的文件,并按照 %p - %u\n 格式打印,其中%p=文件名,%u=文件所有者

find -name "*.jpg" -delete	--> 删除当前目录以及子目录下所有.jpg为后缀的文件,不会有删除提示,因此要慎用

find -name "*.c" -exec chmod 600 {} \;	--> 对每个.c结尾的文件,都进行 -exec 参数指定的操作,{} 会被查找到的文件替代,\; 是必须的结尾

find -name "*.c" -ok chmod 600 {} \;	--> 和上面的功能一直,会多一个确认提示

19. yum

linux 下软件是以包的形式存在,一个软件包其实就是软件的所有文件的压缩包,是二进制的形式,包含了安装软件的所有指令。

Red Hat家族的软件包后缀名一般为.rpmDebian家族的软件包后缀是.deb

linux的包都存在一个仓库,叫做软件仓库,它可以使用yum来管理软件包。

yumCentOS中默认的包管理工具,适用于Red Hat一族。可以理解成Node.jsnpm

yum update | yum upgrade  更新软件包
yum search xxx 搜索相应的软件包
yum install xxx 安装软件包
yum remove xxx 删除软件包

20. grep

全局搜索一个正则表达式,并且打印到屏幕。简单来说就是,在文件中查找关键字,并显示关键字所在行。

基础语法如下:

grep text file # text代表要搜索的文本,file代表供搜索的文件

常用参数如下:

  • -i 忽略大小写, grep -i path /etc/profile

  • -n 显示行号,grep -n path /etc/profile

  • -v 只显示搜索文本不在的那些行,grep -v path /etc/profile

  • -r 递归查找, grep -r hello /etclinux 中还有一个rgrep命令,作用相当于 grep -r

但我们经常是配合 psfindhistory等指令来用,如下代码所示:

# 查看以 nohup指令开头的指令集
[root@presto_sugon ~] history | grep nohup
  617  nohup java -jar admin.jar > log.file 2>&1 &
  767  history | grep nohup
  768  nohup java -jar admin.jar > log.file 2>&1 &

# 查看admin.jar的进程
[root@by~] ps -ef | grep admin.jar
root      30320      1  0 09:15 ?        00:02:04 java -jar admin.jar
root      56881  56590  0 17:06 pts/0    00:00:00 grep --color=auto admin.jar

# 查找admin.jar的位置
[root@by~] find / -name admin.jar
/root/jqp/admin.jar
/root/test/admin.jar

20. history

查看指令的历史记录

# 查看以 nohup指令开头的指令集
[root@presto_sugon ~] history | grep nohup
  617  nohup java -jar admin.jar > log.file 2>&1 &
  767  history | grep nohup
  768  nohup java -jar admin.jar > log.file 2>&1 &

21. wc

word count 的缩写,用于文件的统计。

它可以统计单词数目、行数、字符数,字节数等。

基础语法如下:

[root@by] wc test.txt
 7  8 50 test.txt
  • 第一个7,表示行数;

  • 第二个8,表示单词数;

  • 第三个50,表示字节数。

常用参数如下:

  • -l 只统计行数,wc -l test.txt

  • -w 只统计单词数,wc -w test.txt

  • -c 只统计字节数, wc -c test.txt

  • -m 只统计字符数, wc -m test.txt

22. >>,>,2>>

  1. 输出重定向 >

>表示重定向到新的文件, 比如cut -d , -f 1 notes.csv > name.csv,它表示通过逗号剪切notes.csv文件(剪切完有3个部分)获取第一个部分,重定向到name.csv文件。

我们来看一个具体示例,学习它的使用,假设我们有一个文件notes.csv,文件内容如下:

Mark1,951/100,很不错1
Mark2,952/100,很不错2
Mark3,953/100,很不错3

执行如下命令:

cut -d , -f 1 notes.csv > name.csv

输出如下内容:

Mark1
Mark2
Mark3

【注意】 使用>要注意,如果输出的文件不存在它会新建一个,如果输出的文件已经存在,则会覆盖。因此执行这个操作要非常小心,以免覆盖其它重要文件。

  1. 输出重定向>>

表示重定向到文件末尾,因此它不会像>命令这么危险,它是追加到文件的末尾(当然如果文件不存在,也会被创建)。

再次执行cut -d , -f 1 notes.csv >> name.csv,则会把名字追加到name.csv里面,如下所示:

Mark1
Mark2
Mark3
Mark1
Mark2
Mark3

我们平时读的log日志文件其实都是用这个命令输出的。

  1. 输出重定向2>

标准错误输出

cat not_exist_file.csv > res.txt 2> errors.log
  • 当我们cat一个文件时,会把文件内容打印到屏幕上,这个是标准输出。

  • 当使用了> res.txt时,则不会打印到屏幕,会把标准输出写入文件res.txt文件中。

  • 2> errors.log当发生错误时会写入errors.log文件中。

  1. 输出重定向2>>

标准错误输出(追加到文件末尾)同>>相似。

  1. 输出重定向2>&1

标准输出和标准错误输出都重定向都一个地方

cat not_exist_file.csv > res.txt 2>&1  # 覆盖输出

cat not_exist_file.csv >> res.txt 2>&1 # 追加输出

23. ps

用于显示当前系统中的进程,ps命令显示的进程列表不会随时间而更新,是静态的,是运行ps命令那个时刻的状态或者说是一个进程快照。

[root@lion ~] ps
  PID TTY          TIME CMD
 1793 pts/0    00:00:00 bash
 4756 pts/0    00:00:00 ps
  • PID:进程号,每个进程都有唯一的进程号

  • TTY:进程运行所在的终端

  • TIME:进程运行时间

  • CMD:产生这个进程的程序名,如果在进程列表中看到有好几行都是同样的程序名,那么就是同样的程序产生了不止一个进程

常用参数如下

  • -ef 列出所有进程。

  • -efH 以乔木状列举出所有进程。

  • -u 列出此用户运行的进程。

  • -aux 通过CPU和内存使用来过滤进程ps -aux | less

  • -aux --sort -pcpu 按CPU使用降序排列, -aux -sort -pmem表示按内存使用降序排列。

  • -axjf 以树形结构显示进程,ps -axjf它和pstree效果类似。

# 查看admin.jar的进程
[root@by~] ps -ef | grep admin.jar
root      30320      1  0 09:15 ?        00:02:04 java -jar admin.jar
root      56881  56590  0 17:06 pts/0    00:00:00 grep --color=auto admin.jar

24. top

获取进程的动态列表。

top - 07:20:07 up 25 days, 10:41,  1 user,  load average: 0.30, 0.10, 0.07
Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1882072 total,   552148 free,   101048 used,  1228876 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1594080 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                       
  956 root      10 -10  133964  15848  10240 S  0.7  0.8 263:13.01 AliYunDun                                                                                                     
    1 root      20   0   51644   3664   2400 S  0.0  0.2   3:23.63 systemd                                                                                                       
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.05 kthreadd                                                                                                      
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H    
  • top - 07:20:07 up 25 days, 10:41, 1 user, load average: 0.30, 0.10, 0.07 相当 w 命令的第一行的信息。

  • 展示的这些进程是按照使用处理器 %CPU 的使用率来排序的。

25. kill

结束一个进程, kill + PID

kill 956 # 结束进程号为956的进程
kill 956 957 # 结束多个进程
kill -9 7291 # 强制结束进程

26. nohup

使进程不受挂断(关闭终端等动作)的影响。

启动admin.jar项目,即便退出linux窗口,也不会挂断admin.jar服务。同时将信息输入到同目录下的log.file文件中。


nohup java -jar admin.jar > log.file 2>&1 &

27. systemd(systemctl)

systemd是一个Linux系统基础组件的集合,提供了一个系统和服务管理器,运行为PID 1并负责启动其它程序。

[root@lion ~]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  51648  3852 ?        Ss   Feb01   1:50 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

通过命令也可以看到PID为1的进程就是systemd 的系统进程。

systemd 常用命令(它是一组命令的集合):

systemctl start nginx # 启动服务

systemctl stop nginx # 停止服务

systemctl restart nginx # 重启服务

systemctl status nginx # 查看服务状态

systemctl reload nginx # 重载配置文件(不停止服务的情况)

systemctl enable nginx # 开机自动启动服务

systemctl disable nginx # 开机不自动启动服务

systemctl is-enabled nginx # 查看服务是否开机自动启动

systemctl list-unit-files --type=service # 查看各个级别下服务的启动和禁用情况

28. tar

创建一个 tar 归档。

tar -cvf sort.tar sort/ # 将sort文件夹归档为sort.tar
tar -cvf archive.tar file1 file2 file3 # 将 file1 file2 file3 归档为archive.tar

常用参数如下:

  • -cvf 表示 create(创建)+ verbose(细节)+ file(文件),创建归档文件并显示操作细。

  • -tf 显示归档里的内容,并不解开归档。

  • -rvf 追加文件到归档,tar -rvf archive.tar file.txt

  • -xvf 解开归档, tar -xvf archive.tar

29. gzip / gunzip

“压缩/解压”归档,默认用gzip命令,压缩后的文件后缀名为 .tar.gz

gzip archive.tar # 压缩
gunzip archive.tar.gz # 解压

30. ifconfig

查看ip网络相关信息,如果命令不存在的话, 执行命令yum install net-tools安装。

[root@lion ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.31.24.78  netmask 255.255.240.0  broadcast 172.31.31.255
        ether 00:16:3e:04:9c:cd  txqueuelen 1000  (Ethernet)
        RX packets 1592318  bytes 183722250 (175.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1539361  bytes 154044090 (146.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

参数解析如下:

  • eth0对应有线连接(对应你的有线网卡),就是用网线来连接的上网。ethEthernet的缩写,表示“以太网”。有些电脑可能同时有好几条网线连着,例如服务器,那么除了eht0,你还会看到 eth1 、 eth2 等。

  • lo 表示本地回环(Local Loopback的缩写,对应一个虚拟网卡)可以看到它的 ip 地址是 127.0.0.1 。每台电脑都应该有这个接口,因为它对应着“连向自己的链接”。这也是被称之为“本地回环”的原因。所有经由这个接口发送的东西都会回到你自己的电脑。看起来好像并没有什么用,但有时为了某些缘故,我们需要连接自己。例如用来测试一个网络程序,但又不想让局域网或外网的用户查看,只能在此台主机上运行和查看所有的网络接口。例如在我们启动一个前端工程时,在浏览器输入 127.0.0.1:3000 启动项目就能查看到自己的 web 网站,并且它只有你能看到。

  • wlan0 表示无线局域网(上面案例并未展示)。

30. wget

可以使我们直接从终端控制台下载文件,只需要给出文件的HTTP或FTP地址。

wget [参数][URL地址]

wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip

wget非常稳定,如果是由于网络原因下载失败, wget会不断尝试,直到整个文件下载完毕。

常用参数如下:

  • -c 继续中断的下载。

31. vim

  1. 打开 Vim

在终端命令行中输入 vim 回车后 Vim 就会被运行起来,也可以用 Vim 来打开一个文件,只需要在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么会被创建。

  1. 插入

进入文件之后,此时处于交互模式,可以通过输入 i 进入插入模式。

  1. 移动

Vim 的交互模式下,我们可以在文本中移动光标。

  • h 向左移动一个字符

  • j 向下移动一个字符

  • k 向上移动一个字符

  • i 向右移动一个字符

当然也可以使用四个方向键进行移动,效果是一样的。

  1. 跳至行首和行末
  • 行首:在交互模式下,为了将光标定位到一行的开始位置,只需要按下数字键 0 即可,键盘上的 Home 键也有相同效果。

  • 行末:在交互模式下,为了将光标定位到一行的末尾,只需要按下美元符号键 $ 即可,键盘上的 End 键也有相同效果。

  1. 按单词移动

在交互模式下,按字母键 w 可以一个单词一个单词的移动。

  1. 退出文件

在交互模式下,按下冒号键:进入命令模式,再按下 q 键,就可以退出了。

如果在退出之前又修改了文件,就直接想用:q退出 Vim ,那么 Vim 会显示一个红字标明错误信息。此时我们有两个选择:

  • 保存并退出 :wq :x
  • 不保存且退出 :q!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网全栈开发实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值