Skip to content

Latest commit

 

History

History
596 lines (431 loc) · 19.3 KB

常用命令行大全.md

File metadata and controls

596 lines (431 loc) · 19.3 KB

常用命令行大全

文件目录操作命令

  • ls

    ls命令是linux下最常用的命令。ls命令就是list的缩写,默认情况下使用ls用来打印出当前目录的列表,如果ls指定其他目录, 那么就会显示指定目录里的文件及文件夹列表。 通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限), 查看目录信息等等。ls命令在日常的linux操作中使用得比较多了。

    命令格式:
    ls [选项] [目录名]

    命令功能:
    列出目标目录中所有的子目录和文件。

    常用参:

    • -a:–all列出目录下的所有文件,包括以.开头的隐含文件。
    • -A-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
    • -c 配合 -lt:根据ctime排序及显示ctime(文件状态最后更改的时间)配合-l:显示ctime但根据名称排序否则:根据ctime排序
    • -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
    • -s–size以块大小为单位列出所有文件的大小
    • -S根据文件大小排序
    • -t 以文件修改时间排序
    • -X 根据扩展名排序
    • -1 每行只列出一个文件
    • –help 显示此帮助信息并离开
    • –version 显示版本信息并离开

    列出/home/yiibai文件夹下的所有文件和目录的详细资料,命令:

    ls -l -R /home/yiibai
    

    列出当前目录中所有以t开头的目录的详细内容,可以使用如下命令:

    ls -l t*
    
  • cd

    格式:
    cd [目录名]

    切换当前目录至dirName

    进入系统根目录cd /

    使用cd命令进入当前用户主目录 “当前用户主目录”和“系统根目录”是两个不同的概念。进入当前用户主目录有两个方法。

    cd ~
    
  • pwd

    查看”当前工作目录“的完整路径

  • 创建文件夹

    mkdir test

    递归创建多个目录或一次创建多级目录:

    mkdir -p dir01/dir001
    

    创建权限为777的目录:

    mkdir -m 777 test3
    
  • 删除文件

    该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。 rm xxx.txt
    rm -rf file// -fr表示递归和强制,一定要小心使用 rm -fr / 那你的电脑就over了

    • -f,--force忽略不存在的文件,从不给出提示。
    • -i,--interactive进行交互式删除
    • -r,-R,--recursive指示rm将参数中列出的全部目录和子目录均递归地删除。
  • rmdir

    该命令的功能是删除空目录,一个目录被删除之前必须是空的。删除某目录时也必须具有对父目录的写权限。由于只能删除空目录,一般都是使用rm -f

  • mv

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

    mv [选项] 源文件或目录 目标文件或目录
    

    mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名), 它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时, 源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时, mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

    文件改名:

    mv test.log new-test.log
    

    移动文件:

    mv test1.txt test3
    
  • touch

    linux中的touch命令不常用,一般用来修改文件时间戳,或者新建一个不存在的文件。

    创建不存在的文件,用法如下所示:

    touch log1.log log2.log
    
  • cat

    查看文本内容:cat xxx.txt

    cat主要有三大功能:

    • 一次显示整个文件cat filename

    • 从键盘创建一个文件cat > filename只能创建新文件,不能编辑已有文件.

    • 将几个文件合并为一个文件cat file1 file2 > file 命令参数:

    • -A,--show-all等价于-vET

    • -b,--number-nonblank对非空输出行编号

    • -e等价于-vE

    • -E,--show-ends在每行结束处显示$

    • -n,--number对输出的所有行编号,由1开始对所有输出的行数编号

    • -s,--squeeze-blank有连续两行以上的空白行,就代换为一行的空白行

    • -t-vT等价

    • -T,--show-tabs将跳格字符显示为^I

    • 拷贝
      cp -R 源文件 目标文件// -R 表示对目录进行递归操作

  • cp

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。

    用法:

    cp [选项]... [-T] 源 目的
    或:
    cp [选项]... 源... 目录
    或:
    cp [选项]... -t 目录 源...
    

    复制单个文件到目标目录,文件在目标文件中不存在,如果目标文件存在时,会询问是否覆盖:

    cp log.log logs
    
  • tar

    在维护配置服务器时,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。 linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。

    首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

    为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩, 这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip, bzip2命令)。

    linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。 生成tar包后,就可以用其它的程序来进行压缩。

    格式:

    tar[必要参数][选择参数][文件]
    

    命令功能;

    用来压缩和解压文件。tar本身不具有压缩功能,它是调用压缩功能实现的。

    必要参数有如下:

    • -A:新增压缩文件到已存在的压缩
    • -B:设置区块大小
    • -c:建立新的压缩文件
    • -d:记录文件的差别
    • -r:添加文件到已经压缩的文件
    • -u:添加改变了和现有的文件到已经存在的压缩文件
    • -x:从压缩的文件中提取文件
    • -t:显示压缩文件的内容
    • -z:支持gzip解压文件
    • -j:支持bzip2解压文件
    • -k:保留原有文件不覆盖
    • -m:保留文件不被覆盖

    可选参数如下:

    • -b:设置区块数目
    • -C:切换到指定目录
    • -f:指定压缩文件
    • --help:显示帮助信息
    • --version:显示版本信息
  • 常见解压/压缩命令

    tar文件格式:

    解包:tar xvf FileName.tar
    打包:tar cvf FileName.tar DirName
    (注:tar是打包,不是压缩!)
    

    .gz文件格式:

    解压1:gunzip FileName.gz
    解压2:gzip -d FileName.gz
    压缩:gzip FileName
    

    .tar.gz.tgz:

    解压:tar zxvf FileName.tar.gz
    压缩:tar zcvf FileName.tar.gz DirName
    

    .bz2文件格式:

    解压1:bzip2 -d FileName.bz2
    解压2:bunzip2 FileName.bz2
    压缩: bzip2 -z FileName
    

    .tar.bz2文件格式:

    解压:tar jxvf FileName.tar.bz2
    压缩:tar jcvf FileName.tar.bz2 DirName
    

    .bz文件格式:

    解压1:bzip2 -d FileName.bz
    解压2:bunzip2 FileName.bz
    压缩:未知
    

    .tar.bz文件格式:

    解压:tar jxvf FileName.tar.bz
    压缩:未知
    

    .Z文件格式:

    解压:uncompress FileName.Z
    压缩:compress FileName
    

    .tar.Z文件格式:

    解压:tar Zxvf FileName.tar.Z
    压缩:tar Zcvf FileName.tar.Z DirName
    

    .zip文件格式:

    解压:unzip FileName.zip
    压缩:zip FileName.zip DirName
    

    .rar:

    解压:rar x FileName.rar
    压缩:rar a FileName.rar DirName
    

    将文件全部打包成tar包:

    tar -cvf log1.tar log1.log
    tar -zcvf log2.tar.gz log2.log
    tar -jcvf log3.tar.bz2 log3.log
    
    tar -cvf log1.tar log1.log 仅打包,不压缩!
    tar -zcvf log2.tar.gz log2.log 打包后,以 gzip 压缩
    tar -zcvf log.tar.bz2 log3.log 打包后,以 bzip2 压缩
    在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar 包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。
    
  • gzip

    gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。 据统计,gzip命令对文本文件有60%~70%的压缩率。

    格式:

    gzip[参数][文件或者目录]
    

    功能:
    gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出.gz的扩展名。

    命令参数:

    • -a--ascii使用ASCII文字模式。
    • -c--stdout--to-stdout:把压缩后的文件输出到标准输出设备,不去更动原始文件。
    • -d--decompress----uncompress:解开压缩文件。
    • -f--force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
    • -N--name:压缩文件时,保存原来的文件名称及时间戳记。
    • -r--recursive:递归处理,将指定目录下的所有文件及子目录一并处理。

    把目录下的每个文件压缩成.gz文件:

    gzip *
    

    把例1中每个压缩的文件解压,并列出详细的信息:

    gzip -dv *
    

文件查找

  • whereis

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。 如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中, 当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。

    格式:

    whereis [-bmsu] [BMS 目录名 -f ] 文件名
    

    将和xx文件相关的文件都查找出来:

    whereis python
    
  • find

    Linuxfind命令提供了相当多的查找条件,功能很强大。

    格式:

    find pathname -options [-print -exec -ok ...]
    

    功能:

    用于在文件树种查找文件,并作出相应的处理

    命令参数:

    • pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

    命令选项:

    • -name按照文件名查找文件。

    • -perm按照文件权限来查找文件。。

    • -mtime:-n +n按照文件的更改时间来查找文件,- n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前

    • -type:查找某一类型的文件,诸如:

      • b - 块设备文件。
      • d - 目录。
      • c - 字符设备文件。
      • p - 管道文件。
      • l - 符号链接文件。
      • f - 普通文件。

    根据关键字查找:

    find . -name "*.log"
    

使用-name选项

文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。 可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。不管当前路径是什么, 如果想要在自己的根目录$HOME中查找文件名符合*.log的文件,使用~作为pathname参数,波浪号~代表了当前用户的$HOME目录。

find ~ -name "*.log" -print

想要在当前目录及子目录中查找所有的‘ *.log‘文件,可以用:

find . -name "*.log" -print

想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:

find . -name "[A-Z]*" -print

想要在/etc目录中查找文件名以host开头的文件,可以用:

find /etc -name "host*" -print

想要查找$HOME目录中的文件,可以用:

find ~ -name "*" -print 或find . -print

权限设置

  • chmod

命令格式:

chmod [-cfvR] [—help] [—version] mode file

命令功能:
用于改变文件或目录的访问权限,用它控制文件或目录的访问权限。

必要参数:

  • -c:当发生改变时,报告处理信息
  • -f:错误信息不输出
  • -R:处理指定目录以及其子目录下的所有文件

权限代号:

  • r:读权限,用数字4表示
  • w:写权限,用数字2表示
  • x:执行权限,用数字1表示
  • -:删除权限,用数字0表示
  • s:特殊权限

文字设定法:

chmod [who] [+ | - | =] [mode] 文件名

我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。 例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。 数字设定法的一般形式为:
chmod [mode] 文件名

数字与字符对应关系如下:

r=4,w=2,x=1

  • 若要rwx属性则4+2+1=7
  • 若要rw-属性则4+2=6;
  • 若要r-x属性则4+1=7。

如:

chmod 751 file

如果是当前root用户执行,前面需要加 sudo chmod 751 file

性能监控和优化命令

  • top

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

格式:

top [参数]
  • ifconfig

许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具, 也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。

格式:

ifconfig [网络设备] [参数] 
  • ping

linux下的ping命令和windows下的ping执行稍有区别,linuxping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。

  • 清除命令行内容
    clear

  • 显示当前日期
    date

  • 关机
    sudo shutdown -h now// -h 是关闭电源 now立即关机
    sudo shutdown -r now//重启
    sudo shutdown -h -time 60// 表示60分钟后关机,注意单位是分钟

  • file命令是一个方便的小工具,能够探测文件的内部并判断文件类型: $ file .bashrc .bashrc: ASCII text

  • pkill命令可以使用程序名代替PID来终止进程,这就方便多了。除此之外,pkill命令也允许使用通配符,当系统出问题时,这是一个非常有用的工具:

pkill http*

该命令将“杀死”所有名称以http起始的进程,比如Apahce Web Server的httpd服务。 警告 以root身份使用pkill命令时要格外小心。命令中的通配符很容易意外地将系统的重要进程终止。这可能会导致文件系统损坏。

Shell脚本

Shell的作用就是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式,Shell还有一种执行命令的方式称为批处理,用户事先写一个Shell脚本,其中有很多条命令,让Shell一次把这些命令执行完,而不是一条一条的敲命令。 Shell脚本和编程语言很类似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

#!/bin/bash
# This line is a comment
echo "Hello World"

一个shell脚本永远以#!开头,这个是一个脚本开始的标记,它是告诉系统执行这个文件需要使用某个解释器,后面的/bin/bash指明了解释器的具体位置。 第二行 # 这里表示是一个注解 第三行是输出Hello World

运行脚本

脚本的运行有好几种方式:

  • 在该脚本所在的目录中直接bash这个脚本,直接bash一个文件就是指定了使用Bash Shell来解释脚本内容。
  • 给该脚本加上可执行权限,然后使用./来运行,它代表运行的是当前目录下的Hello World.sh脚本, 如果采用这种方式而脚本没有可执行权限则会报错。
    sudu chmod 777 HelloWorld.sh
    ./HelloWorld.sh
  • 如果不想修改权限可以使用.来运行脚本
    . ./HelloWorld.sh
声明变量: declare、typeset

这两个命令都是用来声明变量的,作用完全相同。 很多语法严谨的语言对变量的声明都是有严格要求的,变量的使用原则是必须在使用前声明、声明时必须说明变量类型,而shell脚本中对变量声明的要求并不高,因为shell弱化了变量的类概念,所有shell又称为弱类型编程语言,声明变量时并不需要指明类型。

函数
function NAME() {
    .....
    return x;
}

function关键字可以省略。

命令代换
DATE=`date`
echo $DATE

由“`”反引号括起来的也是一条命令,Shell先执行该命令,然后将输出结果立刻代换到当前命令行中,也可以用$()表示:

DATE = $(date)

####### 输入输出 echo: 显示文本行或变量,或者把字符串输入到文件

tee

tee 命令把结果输出到标准输出,另一个副本输出到相应文件中。