常用命令行大全
文件目录操作命令
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
Linux
下find
命令提供了相当多的查找条件,功能很强大。格式:
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
执行稍有区别,linux
下ping
不会自动终止,需要按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 命令把结果输出到标准输出,另一个副本输出到相应文件中。
- 邮箱 :[email protected]
- Good Luck!