Linux系统常用命令汇总

常用命令速查表

命令 功能 备注
lscpu 显示cpu架构信息 CPU(s): #总处理器核心数量
Thread(s) per core: #每个核心支持的线程数量。1表示只支持一个线程,即不支持超线程
Core(s) per socket: #每个处理器的核心数量
Socket(s): #处理器数量
Hypervisor vendor:#管理程序供应商
备注:总处理器核心数量=处理器数量×每个处理器的核心数量×每个核心支持的线程数量。即:CPU(s) = Socket(s) × Core(s) × Thread(s)。
python -V Linux下查看python版本号 或者使用等价命令python --version
ll /usr/bin/python* 查看当前linux系统已经安装了哪几个版本的python
rm -rf 删除文件夹 谨慎使用该命令!!!!!
zip label.zip *label.txt 模糊查询文件名后缀为label.txt的文件,并将所有符合条件的文件压缩,压缩文件命名为label.zip 模糊查询的使用,压缩文件使用zip
mv label.zip /home/YY/ 移动指定的文件label.zip到指定目录的文件夹 /home/YY/下 移动文件使用mv

Linux下 /usr/bin 和/usr/local/bin 区别

  • /usr/bin系统预装的一些可执行程序,随系统升级会改变;
  • /usr/local/bin用户安装的可执行程序,不受系统升级影响,用户编译安装软件时,一般放到/usr/local目录下。

常用命令汇总、详解

(part01)cd 、ls、grep、find、cp、mv、rm、ps、kill、killall、file、tar、cat命令解析

1. cd命令——切换当前目录

参数: 要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:

cd /root/Docements   # 切换到目录/root/Docements  
cd ./path            # 切换到当前目录下的path目录中,“.”表示当前目录    
cd ../path           # 切换到上层目录中的path目录中,“..”表示上一层目录

备注: 直接输入命令:cd ——返回到系统的根目录/root

2. ls命令——切换当前目录 (ls是list之意的缩写)

参数: 它的参数非常多,下面就列出一些常用参数(备注: 这些参数也可以组合使用):

-l :列出长数据串,包含文件的属性与权限数据等  
-a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)  
-d :仅列出目录本身,而不是列出目录的文件数据  
-h :将文件容量以较易读的方式(GB,kB等)列出来  
-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来

示例:

ls -l #以长数据串的形式列出当前目录下的数据文件和目录  
ls -lR #以长数据串的形式列出当前目录下的所有文件  

3. grep命令——常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来 (该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等。)

语法: grep [-acinv] [--color=auto] '查找字符串' filename
参数: 常用参数如下:

-a :将binary文件以text文件的方式查找数据  
-c :计算找到‘查找字符串’的次数  
-i :忽略大小写的区别,即把大小写视为相同  
-v :反向选择,即显示出没有‘查找字符串’内容的那一行  

示例:

# 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色  
grep --color=auto 'MANPATH' /etc/man.config  
# 把ls -l的输出中包含字母file(不区分大小写)的内容输出  
ls -l | grep -i file  

4. find命令——是一个基于查找的功能非常强大的命令 (使用相对复杂,参数也比较多)

语法: find [PATH] [option] [action]

参数: 常用参数如下:

# 与时间有关的参数:  
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;  
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;  
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;  
-newer file : 列出比file还要新的文件名  
# 例如:  
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件  
  
# 与用户或用户组名有关的参数:  
-user name : 列出文件所有者为name的文件  
-group name : 列出文件所属用户组为name的文件  
-uid n : 列出文件所有者为用户ID为n的文件  
-gid n : 列出文件所属用户组为用户组ID为n的文件  
# 例如:  
find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件  
  
# 与文件权限及名称有关的参数:  
-name filename :找出文件名为filename的文件  
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件  
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、  
             目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);  
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;  
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示  
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示  
# 例如:  
find / -name passwd # 查找文件名为passwd的文件  
find . -perm 0755 # 查找当前目录中文件权限的0755的文件  
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte  

5. cp命令——复制文件 (亦可把多个文件一次性地复制到一个目录下)

参数: 常用参数如下:

-a :将文件的特性一起复制  
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份  
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行  
-r :递归持续复制,用于目录的复制行为  
-u :目标文件与源文件有差异时才会复制  

示例:

cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2  
cp file1 file2 file3 dir #把文件file1、file2、file3复制到目录dir中  

常见使用场景:

(1)将文件A复制到另一个目录中 ——语法:cp 文件名A 目录名

例如:复制a.txt至test目录中,则执行命令:cp a.txt /test 即可。

(2)将文件夹File_A复制到某一个目录下 ——语法: cp -R 文件夹名File_A 目标文件夹名

例如:复制文件夹test/到test2/目录下,执行命令 cp -R test/ test2/即可。注意: 目标文件夹名必须存在,否则就是复制文件夹的内容到另一个文件夹中了。

(3)复制粘贴文件 ——语法: cp 文件名 目标文件名

例如:复制文件a.txt至test目录的文件b.txt中,则执行命令:cp a.txt /test/b.txt即可。

(4)复制粘贴文件夹 ——语法: cp -R 文件夹名 目标文件夹名

例如:复制文件夹d1至test目录下,并命名目标文件夹为d2,则执行命令:cp -R d1 /test/d2即可。注意:d2文件夹要不存在。

备注:复制文件夹时一定要注意目标文件夹是否存在。

(5)复制指定目录下的全部文件到另一个目录中 ——语法: 通过cp -r,具体如下:

假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下呢?
a. 如果dir2目录不存在,则可以直接使用:cp -r dir1 dir2即可。
b. 如果dir2目录已存在,则需要使用:cp -r dir1/. dir2即可。(如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求。)

备注:dir1、dir2根据自己的文件夹路径改成对应的目录路径即可。

# 复制train_xml文件夹下的所有文件到指定目录——使用绝对路径
cp -r /data/yang/train_data/VOC2007/Annotations/train_xml/. /data/yang/train_data/VOC2007/Annotations/

(6)linux下cp整个文件夹的文件到另一个文件夹 ——语法:cp -ri A/B/* A1/B1/

若复制过程中询问是否覆盖,输入y按回车,若不想看到提示直接覆盖使用-rf
另外若A 和 A1不在同一目录下,最好填绝对路径,就是/xxx/xxx/A/B/* /xxx/A1/B1/

# 实例:
cp -ri /home/server/tomcat/* /home/server/test/

# 如果提示:cp: target `/home/server/test/' is not a directory
# 需要先创建目标文件夹
mkdir /home/server/test

6. mv命令——移动文件、目录或更名 (mv是move之意的缩写)

参数: 常用参数如下:

-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖  
-i :若目标文件已经存在,就会询问是否覆盖  
-u :若目标文件已经存在,且比目标文件新,才会更新  

备注: 该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”

示例:

mv file1 file2 file3 dir # 把文件file1、file2、file3移动到目录dir中  
mv file1 file2 # 把文件file1重命名为file2  

7. rm命令——删除文件或目录 (rm是remove之意的缩写)

参数: 常用参数如下:

-f :就是force的意思,忽略不存在的文件,不会出现警告消息  
-i :互动模式,在删除前会询问用户是否操作  
-r :递归删除,最常用于目录删除,它是一个非常危险的参数!!!!!!  

示例:

rm -i file # 删除文件file,在删除之前会询问是否进行该操作  
rm -fr dir # 强制删除目录dir中的所有文件 !!!!!!! 

8. ps命令——将某个时间点的进程运行情况选取下来并输出 (ps是process之意的缩写)

参数: 常用参数如下:

-A :所有的进程均显示出来  
-a :不与terminal有关的所有进程  
-u :有效用户的相关进程  
-x :一般与a参数一起使用,可列出较完整的信息  
-l :较长,较详细地将PID的信息列出  

备注: 我们只要记住ps一般使用的命令参数搭配即可,如下:

示例:

ps aux # 查看系统所有的进程数据  
ps ax # 查看不与terminal有关的所有进程  
ps -lA # 查看系统所有的进程数据  
ps axjf # 查看连同一部分进程树状态  

9. kill命令——向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号kill命令通常与psjobs命令一起使用)

语法: kill -signal PID

参数: signal的常用参数如下:

备注: 最前面的数字为信号的代号,使用时可以用代号代替相应的信号。

1:SIGHUP,启动被终止的进程  
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行  
9:SIGKILL,强制中断一个进程的进行  
15:SIGTERM,以正常的结束进程方式来终止进程  
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行 

示例:

# 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程  
kill -SIGTERM %1   
# 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得  
kill -SIGHUP PID  

10. killall命令——向一个命令启动的进程发送一个信号

语法: killall [-iIe] [command name]

参数:

-i :交互式的意思,若需要删除时,会询问用户  
-e :表示后面接的command name要一致,但command name不能超过15个字符  
-I :命令名称忽略大小写   

示例:

# 例如:  
killall -SIGHUP syslogd # 重新启动syslogd 

11. file命令——判断接在file命令后的文件的基本数据 (因为在Linux下文件的类型并不是以后缀为区分的)

语法: file filename

示例:

#例如:  
file ./test 

12. tar命令——对文件进行打包,默认情况并不会压缩 ( 如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。)

参数: 常用参数如下:

-c :新建打包文件  
-t :查看打包文件的内容含有哪些文件名  
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中  
-j :通过bzip2的支持进行压缩/解压缩  
-z :通过gzip的支持进行压缩/解压缩  
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来  
-f filename :filename为要处理的文件  
-C dir :指定压缩/解压缩的目录dir 

示例:

#只需要记住下面三条命令即可:
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称  
查询:tar -jtv -f filename.tar.bz2  
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录  

备注: 文件名并不定要以后缀tar.bz2结尾,这里主要是为了说明使用的压缩程序为bzip2。

13. cat命令——查看文本文件的内容,后接要查看的文件名 (通常可用管道与moreless一起使用,从而可以一页页地查看数据。)

示例:

cat text | less # 查看text文件中的内容  
# 注:这条命令也可以使用less text来代替  

(part02)chgrp、chown、chmod、vim、gcc、time、pwd、ll、ls、mkdir、set nu命令解析

01. chgrp命令——改变文件所属用户组

语法: chgrp [-R] dirname/filename

示例:

-R :进行递归的持续对所有文件和子目录更改  
# 例如:  
chgrp users -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users  

02. chown命令——改变文件的所有者 (与chgrp命令的使用方法相同,只是修改的文件属性不同。)

03. chmod命令——改变文件的权限

语法: chmod [-R] xyz 文件或目录

-R:进行递归的持续更改,即连同子目录下的所有文件都会更改。
\quad
同时,chmod还可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟rwx搭配来对文件的权限进行更改。

示例:

# 例如:  
chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x  
chmod g+w file # 向file的文件权限中加入用户组可写权限  

04. vim命令——用于文本编辑,它接一个或多个文件名作为参数,如果文件存在就打开,如果文件不存在就以该文件名创建一个文件

语法:

  1. vim vimLinuxidc.txt ——如果存在vimLinuxidc.txt文件,则打开文件,如果不则则在内存中创建一个vimLinuxidc.txt文件,没有进行保存文件是不存在的。
  2. vim file -->按[i]进入insert模式–>书写内容–>按[esc]退出insert模式–>:wq退出保存–>输入ll,查看创建的新文件。( 最重要的用法!!!!

备注:
没有进行修改,不需要保存直接退出 ,输入 :q 命令;
常用命令如下:
保存,不退出vi --------------------------------------------- :w
强制保存,不退出vi --------------------------------------- :w!
将修改另外保存到file中,但不退出vi(不常用)------ :w file
保存,并退出vi --------------------------------------------- :wq 或 :x
强制保存,并退出vi --------------------------------------- :wq!
不保存,并退出vi ------------------------------------------ :q
不保存,并强制退出vi ------------------------------------ :q!
放弃所有修改,从上次保存文件开始再编辑 ----------- :e!

  1. vim --help 进入vim命令的帮助文档。
  2. vim [参数] [文件 ..] 编辑指定的文件。

参考链接:Linux下使用vim命令编辑与修改文本内容

05. gcc命令——用于把C语言的源程序文件,编译成可执行程序

参数: 由于g++的很多参数跟它非常相似,所以这里只介绍gcc的参数,它的常用参数如下:

-o :output之意,用于指定生成一个可执行文件的文件名  
-c :用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序  
-I :增加编译时搜索头文件的路径  
-L :增加编译时搜索静态连接库的路径  
-S :把源文件生成汇编代码文件  
-lm:表示标准库的目录中名为libm.a的函数库  
-lpthread :连接NPTL实现的线程库  
-std= :用于指定把使用的C语言的版本  

示例:

# 例如:  
# 把源文件test.c按照c99标准编译成可执行程序test  
gcc -o test test.c -lm -std=c99  
#把源文件test.c转换为相应的汇编程序源文件test.s  
gcc -S test.c  

06. time命令——测算一个命令(即程序)的执行时间

它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个time即可。

在程序或命令运行结束后,在最后输出了三个时间,它们分别是:
user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;
real:实际时间,从command命令行开始执行到运行终止的消逝时间;
备注:
用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。

示例:

time ./process  
time ps aux  

07. pwd命令——显示当前工作目录的绝对路径名称 (pwd是Print Working Directory的缩写)

语法: pwd [选项]

参数: 一般情况下不带任何参数。如果目录是链接时:格式:pwd -P 显示出实际路径,而非使用连接(link)路径。

-L:--logical,显示当前的路径,有连接文件时,直接显示连接文件的路径,(不加参数时默认此方式),参考示例1。
-p:--physical,显示当前的路径,有连接文件时,不使用连接路径,直接显示连接文件所指向的文件,参考示例2。 当包含多层连接文件时,显示连接文件最终指向的文件,参考示例3。
--help:显示帮助信息。
--version:显示版本信息。

示例:

#示例1:查看当前所在路径
[root@localhost var]# pwd
#示例2:查看当前所在路径,不使用连接路径

08. ll命令——罗列出当前文件或目录的详细信息 (含有时间、读写权限、大小、时间等信息 ,像Windows显示的详细信息。)

ll命令和ls命令的区别:

ll是“ls -l"的别名。相当于Windows里的快捷方式。可以理解为 llls -l 的功能是相同的。

09. ls命令——仅罗列出当前文件名或目录名 (就像Windows里的文件列表。)

参数: ls命令的常用参数如下:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-A 显示除 “.”和“..”外的所有文件。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-S 以文件大小排序。
-R 列出所有子目录下的文件。
-p -F 在每个文件名后附上一个字符以说明该文件的类型。"*":表示可执行的普通文件;"/":表示目录;“@”:表示符号链接;“|”:表示FIFOs;“=”:表示套接字(sockets)-X 以文件的扩展名(最后一个 . 后的字符)排序。
-m 横向输出文件名,并以“,”作分格符。
--color=no 不显示彩色文件名

备注: 不同颜色所表示的文件或目录的类型如下:

  1. 蓝色 -->目录
  2. 绿色–>可执行文件
  3. 红色–>压缩文件
  4. 浅蓝色–>链接文件
  5. 灰色–>其他文件
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-x 按列输出,横向排序。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-1 一行只输出一个文件。
--help 在标准输出上显示帮助信息。
--version 在标准输出上输出版本信息并退出。

09. mkdir命令——创建一个目录或一个级联目录 (mkdir命令不加任何选项,表示在默认在当前目录下创建目录,目录的默认权限为777-umask。如果目录已经存在将会提示错误。)

语法: mkdir [选项] 目录名

mkdir -m=r a \quad – 只读
mkdir -m=w b \quad – 只写
mkdir -m=rw c \quad – 读写
mkdir -m=rx d \quad – 读可执行
mkdir -m=rwx e \quad – 读写可执行

示例:

实例1:在当前目录创建baklog目录。
mkdir baklog  # 在当前目录创建baklog目录
ll   #  罗列出当前文件或目录的详细信息

实例2:创建多个目录。
mkdir direct1 direct2 direct3
ls   # 罗列出当前文件或目录的列表
输出:direct1 direct2 direct3 
或者多个目录用大括号({
    
    })括起来,并用逗号分隔。例如:
mkdir {
    
    cep,dod,testlog}
ls
输出:cep  dod  testlog
逗号前后不能有空白,否则将会创建出下面目录:
mkdir {
    
    cep, dod, testlog}
ls
输出:{
    
    cep,  dod,  testlog}

实例3:创建级联目录。同一目录下的子目录放在大括号中,并用逗号分隔。
mkdir -p baklog/{
    
    bin,lib,log/{
    
    cep,dod,testlog}}
ls -R baklog/
输出:
baklog/:
bin  lib  log

baklog/bin:

baklog/lib:

baklog/log:
cep  dod  testlog

baklog/log/cep:

baklog/log/dod:

baklog/log/testlog:

10. :set nu命令—— LINUX中打开文件显示行号相关命令

语法:
1). 显示行号 :set number:set nu
2). 取消显示行号 :set nu!
3). 每次打开显示行号修改 vi ~/.vimrc 文件,添加:set number

参考链接:linux最常用的20个命令

zip压缩文件

用法

  1. 将/home/data 这个目录下的所有文件打包压缩为当前目录下的data.zip
zip -q -r data.zip /home/data
  1. 如果现在在/home 这个目录下,则如下
zip -q -r data.zip data
  1. 如果在/home/data 这个目录下,则如下
zip -q -r data.zip *

备注:
(1)首先cd 指定的压缩文件夹绝对路径下;
(2)使用 zip -q -r data.zip * 压缩后文件夹,保证不包含各个上级子目录
(3)如果使用zip -q -r data.zip /home/data 则压缩后的文件会包含它的各个上级目录

以上三种效果一样。

linux的zip命令的常见参数详解:
-A:调整可执行的自动解压缩文件;
-b<工作目录>:指定暂时存放文件的目录;
-c:替每个被压缩的文件加上注释;
-d:从压缩文件内删除指定的文件;
-D:压缩文件内不建立目录名称;
-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;
-F:尝试修复已损坏的压缩文件;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-h:在线帮助;
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据;
-k:使用MS-DOS兼容格式的文件名称;
-l:压缩文件时,把LF字符置换成LF+CR字符;
-ll:压缩文件时,把LF+cp字符置换成LF字符;
-L:显示版权信息;
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-n<字尾字符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
-t<日期时间>:把压缩文件的日期设成指定的日期;
-T:检查备份文件内的每个文件是否正确无误;
-u:更换较新的文件到压缩文件内;
-v:显示指令执行过程或显示版本信息;
-V:保存VMS操作系统的文件属性;
-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>:压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-z:替压缩文件加上注释;
-$:保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩效率>:压缩效率是一个介于1~9的数值。

猜你喜欢

转载自blog.csdn.net/weixin_42782150/article/details/96476529