Linux常用命令!
Linux常用命令
Linux的命令确实非常多,然而熟悉Linux的人从来不会因为Linux的命令太多而烦恼。因为我们仅仅只需要掌握常用命令,就完全可以驾驭Linux。
接下来,让我们一起来看看都有那些常用的Linux命令吧!
一、文件目录操作
1. ls命令
ls命令不仅可以查看Linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)和目录信息等。
命令格式
1 | ls [选项] [目录] |
常用参数
-l:列出长数据串,包含文件的属性与权限数据等-a:列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)-d:仅列出目录本身,而不是列出目录的文件数据-h:将文件容量以较易读的方式(GB,kB等)列出来-R:连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
使用实例
列出home目录下的所有文件和目录的详细资料
1
2ls -a -l /home
ls -al /home列出当前目录下所有以”d”开头的文件目录详情内容
1
ls -l d*
2. cd命令
最基本的命令语句,其他命令语句要进行操作,都是建立在使用cd命令上的。用于切换当前目录至指定目录。
命令格式
1 | cd [目录名] |
操作案例
从当前目录进入系统根目录
1
cd /
跳转到home/Code目录
1
cd /home/Code
3. pwd命令
查看”当前工作目录”的完整路径。
命令格式
1 | pwd [选项] |
常用参数
-P:显示实际物理路径,而非使用连接(link)路径-L:当目录为连接路径时,显示连接路径
操作案例
- 显示当前所在路径
1
pwd
4. mkdir命令
用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
命令格式
1 | mkdir [选项] 目录 |
常用参数
-m, --mode=模式:设定权限<模式>(类似chmod),而不是rwxrwxrwx减umask-p, --parents:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录-v, --verbose:每次创建新目录都显示信息--help:显示此帮助信息并退出--version:输出版本信息并退出
使用实例
创建一个空目录
1
mkdir test
递归创建多个目录
1
mkdir -p test/test1
创建权限为777的目录
1
mkdir -m 777 test2
创建目录都显示信息
1
mkdir -v test4
5. rm命令
删除一个目录中的一个或多个文件或目录,如果没有使用-r选项,则rm不会删除目录。如果使用rm来删除文件,通常仍可以将该文件恢复原状。
命令格式
1 | rm [选项] 文件 |
常用参数
-f, --force:忽略不存在的文件,从不给出提示-i, --interactive:进行交互式删除-r, -R, --recursive:指示rm将参数中列出的全部目录和子目录均递归地删除-v, --verbose:详细显示进行的步骤--help:显示此帮助信息并退出--version:输出版本信息并退出
使用实例
删除文件test.txt,系统会提示是否删除
1
rm test.txt
强制删除test.txt,系统不再提示
1
rm -f test.txt
将test子目录及目录中所有档案删除
1
rm -r test
6. rmdir命令
该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限。
命令格式
1 | rmdir [选项] 目录 |
常用参数
-p:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息-v, --verbose:显示指令执行过程
使用实例
删除空目录test1,非空目录无法删除
1
rmdir test1
当子目录被删除后使它也成为空目录的话,则顺便一并删除
1
rmdir -p test2 # test目录下仅有test2
7. mv命令
可以用来移动文件或者将文件改名(move (rename) files)。当第二个参数类型是文件时,mv命令完成文件重命名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
命令格式
1 | mv [选项] 源文件或目录 目标文件或目录 |
常用参数
-b:若需覆盖文件,则覆盖前先行备份-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i:若目标文件(destination)已经存在时,就会询问是否覆盖-u:若目标文件已经存在,且source比较新,才会更新(update)-t:--target-directory=DIRECTORYmove all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后
使用实例
将test1.txt重命名为test2.txt
1
mv test1.txt test2.txt
移动文件test1.txt到目录test2
1
mv test1.txt test2
将文件test1.txt、test2.txt、test3.txt移动到目录test3
1
mv test1.txt test2.txt test3.txt test3
8. cp命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
命令格式
1 | cp [选项] 源文件 目录 |
常用参数
-t --target-directory:指定目标目录-i --interactive:覆盖前询问(使前面的-n选项失效)-n --no-clobber:不要覆盖已存在的文件(使前面的-i选项失效)-f --force:强行复制文件或目录,不论目的文件或目录是否已经存在-u --update:使用这项参数之后,只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件
使用实例
复制文件test1.txt到test1目录
1
cp test1.txt test1 # 若文件存在,会提示是否覆盖。若不存在直接完成复制
复制test1整个目录到test2
1
cp -a test1 test2
9. touch命令
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。
命令格式
1 | touch [选项] 文件 |
常用参数
-a或--time=atime或--time=access或--time=use:只更改存取时间-c或--no-create:不建立任何文档-d:使用指定的日期时间,而非现在的时间-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题-m或--time=mtime或--time=modify:只更改变动时间-r:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同-t:使用指定的日期时间,而非现在的时间
使用实例
创建不存在的文件test.txt
1
touch test.txt
更新test.txt的时间戳和test1.txt时间戳相同
1
touch -r test.txt test1.txt
10. cat命令
用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
命令格式
1 | cat [选项] [文件] |
常用参数
-A, --show-all:等价于-vET-b, --number-nonblank:对非空输出行编号-e:等价于-vE-E, --show-ends:在每行结束处显示$-n, --number:对输出的所有行编号,由1开始对所有输出的行数编号-s, --squeeze-blank:有连续两行以上的空白行,就代换为一行的空白行-t:与-vT等价-T, --show-tabs:将跳格字符显示为^I-u:(被忽略)-v, --show-nonprinting:使用^和M-引用,除了LFD和TAB之外
使用实例
把test.log的文件内容加上行号后输入test1.log这个文件里
1
cat -n test.log > test1.log
将test.log的文件内容反向显示
1
tac test.log
11. nl命令
输出的文件内容自动的加上行号!其默认的结果与cat -n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能。
命令格式
1 | nl [选项] [文件] |
常用参数
-b:指定行号指定的方式,主要有两种:-b a:表示不论是否为空行,也同样列出行号(类似cat -n)-b t:如果有空行,空的那一行不要列出行号(默认值)
-n:列出行号表示的方法,主要有三种:-n ln:行号在萤幕的最左方显示-n rn:行号在自己栏位的最右方显示,且不加0-n rz:行号在自己栏位的最右方显示,且加0
-w:行号栏位的占用的位数
使用实例
用nl列出test.log的内容
1
nl test.log
用nl列出test.log的内容,空本行也加上行号
1
nl -b a test.log
12. more命令
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
命令格式
1 | more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file...] |
常用参数
+n:从第n行开始显示-n:定义屏幕大小为n行+/pattern:在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示-c:从顶部清屏,然后显示-d:提示”Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能-l:忽略Ctrl+l(换页)字符-p:通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似-s:把连续的多个空行显示为一行-u:把文件内容中的下画线去掉
操作指令
Enter:向下n行,需要定义。默认为1行Ctrl+F:向下滚动一屏空格键:向下滚动一屏Ctrl+B:返回上一屏=:输出当前行的行号:f:输出文件名和当前行的行号V:调用vi编辑器!命令:调用Shell,并执行命令q:退出more
使用实例
显示文件test.log第3行起内容
1
more +3 test.log
从文件test.log查找第一个出现”day3”字符串的行,并从该处前2行开始显示输出
1
more +/day3 test.log
设置每屏显示行数
1
more -5 test.log
13. less命令
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
命令格式
1 | less [参数] 文件 |
常用参数
-b <缓冲区大小>:设置缓冲区的大小-e:当文件显示结束后,自动离开-f:强迫打开特殊文件,例如外围设备代号、目录和二进制文件-g:只标志最后搜索的关键词-i:忽略搜索时的大小写-m:显示类似more命令的百分比-N:显示每行的行号-o <文件名>:将less输出的内容在指定文件中保存起来-Q:不使用警告音-s:显示连续空行为一行-S:行过长时间将超出部分舍弃-x <数字>:将”tab”键显示为规定的数字空格
操作命令
/字符串:向下搜索”字符串”的功能?字符串:向上搜索”字符串”的功能n:重复前一个搜索(与/或?有关)N:反向重复前一个搜索(与/或?有关)b:向后翻一页d:向后翻半页h:显示帮助界面Q:退出less命令u:向前滚动半页y:向前滚动一行空格键:滚动一行回车键:滚动一页[pagedown]:向下翻动一页[pageup]:向上翻动一页
使用实例
- 查看文件test.log
1
less test.log
14. head命令
head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
命令格式
1 | head [参数] [文件] |
常用参数
-q:隐藏文件名-v:显示文件名-c<字节>:显示字节数-n<行数>:显示的行数
使用实例
显示文件test.log的前5行
1
head -n 5 test.log
显示文件test.log前20个字节
1
head -c 20 test.log
15. tail命令
显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
命令格式
1 | tail [必要参数] [选择参数] [文件] |
常用参数
-f:循环读取-q:不显示处理信息-v:显示详细的处理信息-c<数目>:显示的字节数-n<行数>:显示行数--pid=PID:与-f合用,表示在进程ID,PID死掉之后结束-q, --quiet, --silent:从不输出给出文件名的首部-s, --sleep-interval=S:与-f合用,表示在每次反复的间隔休眠S秒
使用实例
显示文件test.log最后5行内容
1
tail -n 5 test.log
循环查看文件内容
1
tail -f test.log
二、文件查找
16. which命令
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
命令格式
1 | which 可执行文件名称 |
常用参数
-n:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名-p:与-n参数相同,但此处的包括了文件的路径-w:指定输出时栏位的宽度-V:显示版本信息
使用实例
查找文件、显示命令路径
1
which pwd
用which去找出which
1
which which
17. whereis命令
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。
命令格式
1 | whereis [-bmsu] [BMS 目录名 -f] 文件名 |
常用参数
-b:定位可执行文件-m:定位帮助文件-s:定位源代码文件-u:搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件-B:指定搜索可执行文件的路径-M:指定搜索帮助文件的路径-S:指定搜索源代码文件的路径
使用实例
将和svn文件相关的文件都查找出来
1
whereis svn
只将二进制文件查找出来
1
whereis -b svn
18. locate命令
可以很快速的搜寻档案系统内是否有指定的档案。
命令格式
1 | locate [选择参数] [样式] |
常用参数
-e:将排除在寻找的范围之外-1:如果是1,则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为locate必须至实际的档案系统中取得档案的权限资料-f:将特定的档案系统排除在外,例如我们没有到理要把proc档案系统中的档案放在资料库中-q:安静模式,不会显示任何错误讯息-n:至多显示n个输出-r:使用正规运算式做寻找的条件-o:指定资料库存的名称-d:指定资料库的路径
使用实例
查找和pwd相关的所有文件
1
locate pwd
搜索etc目录下,所有以m开头的文件
1
locate /etc/m
19. find命令
主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
命令格式
1 | find [选项] [搜索路径] [表达式] |
常用参数
-print:find命令将匹配的文件输出到标准输出-exec:find命令对匹配的文件执行该参数所给出的shell命令-name:按照文件名查找文件-type:查找某一类型的文件
使用实例
打印当前目录文件目录列表
1
find . -print
打印当前目录下所有不以.txt结尾的文件名
1
find . ! -name "*.txt"
打印当前目录下所有权限为777的php文件
1
find . -type f -name "*.php" -perm 777
找到当前目录下所有php文件,并显示其详细信息
1
find . -name "*.php" -exec ls -l {} \;
查找当前目录下所有c代码文件,统计总行数
1
find . -type f -name "*.c" | xargs wc -l
xargs命令说明:xargs命令可以从标准输入接收输入,并把输入转换为一个特定的参数列表。
命令格式:command | xargs [选项] [command]
xargs命令应该紧跟在管道操作符之后,因为它以标准输入作为主要的源数据流。
常用参数:
-n:指定每行最大的参数数量-d:指定分隔符
三、文件打包上传和下载
20. tar命令
用来压缩和解压文件。tar本身不具有压缩功能。它是调用压缩功能实现的。
命令格式
1 | tar [必要参数] [选择参数] [文件] |
常用参数
必要参数:
-A:新增压缩文件到已存在的压缩-B:设置区块大小-c:建立新的压缩文件-d:记录文件的差别-r:添加文件到已经压缩的文件-u:添加改变了和现有的文件到已经存在的压缩文件-x:从压缩的文件中提取文件-t:显示压缩文件的内容-z:支持gzip解压文件-j:支持bzip2解压文件-Z:支持compress解压文件-v:显示操作过程-l:文件系统边界设置-k:保留原有文件不覆盖-m:保留文件不被覆盖-W:确认压缩文件的正确性
可选参数:
-b:设置区块数目-C:切换到指定目录-f:指定压缩文件--help:显示帮助信息--version:显示版本信息
使用实例
将文件全部打包成tar包
1
2
3tar -cvf test.tar test.log # 仅打包,不压缩!
tar -zcvf test.tar.gz test.log # 打包后,以gzip压缩
tar -jcvf test.tar.bz2 test.log # 打包后,以bzip2压缩将tar包解压缩
1
tar -zxvf test.tar.gz
21. gzip命令
使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出”.gz”的扩展名。
命令格式
1 | gzip [参数] [文件或者目录] |
常用参数
-a或--ascii:使用ASCII文字模式-c或--stdout或--to-stdout:把压缩后的文件输出到标准输出设备,不去更动原始文件-d或--decompress或--uncompress:解开压缩文件-f或--force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接-h或--help:在线帮助
使用实例
- 把test1目录下的每个文件压缩成.gz文件
1
gzip *
四、文件权限设置
22. chmod命令
用于改变Linux系统文件或目录的访问权限。
命令格式
1 | chmod [-cfvR] [--help] [--version] mode file |
常用参数
必要参数:
-c:当发生改变时,报告处理信息-f:错误信息不输出-R:处理指定目录以及其子目录下的所有文件-v:运行时显示详细处理信息
选择参数:
--reference=<目录或者文件>:设置成具有指定目录或者文件具有相同的权限--version:显示版本信息<权限范围>+<权限设置>:使权限范围内的目录或者文件具有指定的权限<权限范围>-<权限设置>:删除权限范围的目录或者文件的指定权限<权限范围>=<权限设置>:设置权限范围内的目录或者文件的权限为指定的值
权限范围:
u:目录或者文件的当前的用户g:目录或者文件的当前的群组o:除了目录或者文件的当前用户或群组之外的用户或者群组a:所有的用户及群组
权限代号:
r:读权限,用数字4表示w:写权限,用数字2表示x:执行权限,用数字1表示-:删除权限,用数字0表示
使用实例
增加文件所有用户组可执行权限
1
chmod a+x test.log
删除所有用户的可执行权限
1
chmod a-x test.log
23. chgrp命令
可采用群组名称或群组识别码的方式改变文件或目录的所属群组。
命令格式
1 | chgrp [选项] [组] [文件] |
常用参数
必要参数:
-c:当发生改变时输出调试信息-f:不显示错误信息-R:处理指定目录以及其子目录下的所有文件-v:运行时显示详细的处理信息--dereference:作用于符号链接的指向,而不是符号链接本身--no-dereference:作用于符号链接本身
选择参数:
--reference=<文件或者目录>--help:显示帮助信息--version:显示版本信息
使用实例
- 改变文件的群组属性
1
chgrp -v bin test.log
24. chown命令
通过chown改变文件的拥有者和群组。
命令格式
1 | chown [选项] [所有者][:[组]] 文件 |
常用参数
必要参数:
-c:显示更改的部分的信息-f:忽略错误信息-h:修复符号链接-R:处理指定目录以及其子目录下的所有文件-v:显示详细的处理信息--deference:作用于符号链接的指向,而不是符号链接本身
选择参数:
--reference=<目录或文件>:把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组--from=<当前用户:当前群组>:只有当前用户和群组跟指定的用户和群组相同时才进行改变--help:显示帮助信息--version:显示版本信息
使用实例
- 改变拥有者和群组
1
chown mail:mail test.log
五、磁盘管理
25. df命令
显示磁盘空间使用情况。
命令格式
1 | df [选项] [文件] |
常用参数
-a:全部文件系统列表-h:方便阅读方式显示-i:显示inode信息-k:区块为1024字节-l:只显示本地磁盘-T:文件系统类型
使用实例
显示磁盘使用情况
1
df -l
以易读方式列出所有文件系统及其类型
1
df -haT
26. du命令
显示每个文件和目录的磁盘使用空间。
命令格式
1 | du [选项] [文件] |
常用参数
-a:显示目录中个别文件的大小-b:显示目录或文件大小时,以byte为单位-c:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和-k:以KB(1024bytes)为单位输出-m:以MB为单位输出-s:仅显示总计,只列出最后加总的值-h:以K,M,G为单位,提高信息的可读性-x:以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过-L:显示选项中所指定符号链接的源文件大小-S:显示个别目录的大小时,并不含其子目录的大小-X<文件>:在<文件>指定目录或文件--exclude=<目录或文件>:略过指定的目录或文件-D:显示指定符号链接的源文件大小-H:与-h参数相同,但是K,M,G是以1000为换算单位-l:重复计算硬件链接的文件
使用实例
以易读方式显示文件夹内及子文件夹大小
1
du -h test/
显示几个文件或目录各自占用磁盘空间的大小,并统计总和
1
du -ch test1 test2
27. ln命令
为某一个文件在另外一个位置建立一个同步的链接。
命令格式
1 | ln [参数] [源文件或目录] [目标文件或目录] |
常用参数
-b:删除,覆盖以前建立的链接-d:允许超级用户制作目录的硬链接-f:强制执行-i:交互模式,文件存在则提示用户是否覆盖-n:把符号链接视为一般目录-s:软链接(符号链接)-v:显示详细的处理过程
使用实例
给文件创建软链接
1
ln -s /usr/local/mysql/bin/mysql /usr/bin
给文件创建硬链接
1
ln /usr/local/mysql/bin/mysql /usr/bin
六、系统管理
28. ps命令
用来列出系统中当前运行的那些进程。
命令格式
1 | ps [参数] |
常用参数
-a:显示所有进程-u:用户以及其他详细信息-x:显示没有控制终端的进程
使用实例
显示所有进程信息
1
ps -A
显示指定用户信息
1
ps -u root
29. kill命令
发送指定的信号到相应进程。
命令格式
1 | kill [参数] [进程号] |
常用参数
-l:信号,若不加信号的编号参数,则使用-l参数会列出全部的信号名称-a:当处理当前进程时,不限制命令名和进程号的对应关系-p:指定kill命令只打印相关进程的进程号,而不发送任何信号-s:指定发送信号-u:指定用户
使用实例
- 先使用ps查找进程pro1,然后用kill杀掉
1
kill -9 $(ps -ef | grep pro1)
30. top命令
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。
命令格式
1 | top [参数] |
常用参数
-b:批处理-c:显示完整的治命令-I:忽略失效过程-s:保密模式-S:累积模式-i<时间>:设置间隔时间-u<用户名>:指定用户名-p<进程号>:指定进程-n<次数>:循环显示的次数
使用实例
显示进程信息
1
top
显示完整命令
1
top -c
31. free命令
显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
命令格式
1 | free [参数] |
常用参数
-b:以Byte为单位显示内存使用情况-k:以KB为单位显示内存使用情况-m:以MB为单位显示内存使用情况-g:以GB为单位显示内存使用情况-o:不显示缓冲区调节列-s<间隔秒数>:持续观察内存使用状况-t:显示内存总和列-V:显示版本信息
使用实例
- 显示内存使用情况
1
free -m
32. vmstat命令
显示虚拟内存状态。
命令格式
1 | vmstat [参数] |
常用参数
-a:显示活动内页-f:显示启动后创建的进程总数-m:显示slab信息-n:头信息仅显示一次-s:以表格方式显示事件计数器和内存状态-d:报告磁盘状态-p:显示指定的硬盘分区状态-S:输出信息的单位
使用实例
- 显示活动和非活动内存
1
vmstat -a 2 5
33. iostat命令
被用于监视系统输入输出设备和CPU的使用情况。
命令格式
1 | iostat [参数] [时间] [次数] |
常用参数
-c:仅显示CPU使用情况-d:仅显示设备利用率-k:显示状态以千字节每秒为单位,而不使用块每秒-m:显示状态以兆字节每秒为单位-p:仅显示块设备和所有被使用的其他分区的状态-t:显示每个报告产生时的时间-V:显示版号并退出-x:显示扩展状态
使用实例
- 显示所有设备负载情况
1
iostat
34. watch命令
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令。
命令格式
1 | watch [参数] [命令] |
常用参数
-n:或--interval:watch缺省每2秒运行一下程序,可以用-n或--interval来指定间隔的时间-d:或--differences:用-d或--differences选项watch会高亮显示变化的区域。-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来-t:或-no-title:会关闭watch命令在顶部的时间间隔,命令,当前时间的输出-h:或--help:查看帮助文档
使用实例
每隔一秒高亮显示网络链接数的变化情况
1
watch -n 1 -d netstat -ant
每隔一秒高亮显示http链接数的变化情况
1
watch -n 1 -d 'pstree|grep http'
35. at命令
在指定时间执行一个任务,只能执行一次。
命令格式
1 | at [参数] [时间] |
常用参数
-m:当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出-I:atq的别名-d:atrm的别名-v:显示任务将被执行的时间-c:打印任务的内容到标准输出-V:显示版本信息-q<队列>:使用指定的队列-f<文件>:从指定文件读入任务而不是从标准输入读入-t<时间参数>:以时间参数的形式提交要运行的任务
使用实例
三天后的下午5点执行/bin/ls
1
2at 5pm + 3 days
/bin/ls明天17点钟,输出时间到指定文件内
1
2at 17:20 tomorrow
date > /root/2016.log
36. crontab命令
被用来提交和管理用户的需要周期性执行的任务。
命令格式
1 | crontab [选项] [文件] |
常用参数
-e:编辑该用户的计时器设置-l:列出该用户的计时器设置-r:删除该用户的计时器设置-u<用户名称>:指定要设定计时器的用户名称
使用实例
每1分钟执行一次command
1
* * * * * command
每小时的第3和第15分钟执行
1
3,15 * * * * command
在上午8点到11点的第3和第15分钟执行
1
3,15 8-11 * * * command
37. scp命令
用于Linux之间复制文件和目录。
命令格式
1 | scp [参数] [原路径] [目标路径] |
常用参数
-1:强制scp命令使用协议ssh1-2:强制scp命令使用协议ssh2-4:强制scp命令只使用IPv4寻址-6:强制scp命令只使用IPv6寻址-B:使用批处理模式(传输过程中不询问传输口令或短语)-C:允许压缩(将-C标志传递给ssh,从而打开压缩功能)-p:保留原文件的修改时间,访问时间和访问权限-q:不显示传输进度条-r:递归复制整个目录-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh-l limit:限定用户所能使用的带宽,以Kbit/s为单位-o ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式-P port:注意是大写的P,port是指定数据传输用到的端口号-S program:指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项
使用实例
从本地复制到远程
1
2
3
4scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file从远程复制到本地
1
2scp root@www.test.com:/home/root/others/music /home/space/music/1.mp3
scp -r www.test.com:/home/root/others/ /home/space/music/
38. wget命令
用来从指定的URL下载文件。
命令格式
1 | wget [参数] [URL地址] |
常用参数
-b:后台下载模式-P:下载到指定目录-t:最大尝试次数-c:断点续传-p:下载页面内所有资源,包括图片、视频等-r:递归下载
使用实例
使用wget下载单个文件
1
wget http://www.test.com/testfile.zip
下载并以不同的文件名保存
1
wget -O test.zip http://www.test.com/download?file=testfile.zip
七、网络管理
39. ifconfig命令
被用于配置和显示Linux内核中网络接口的网络参数。
命令格式
1 | ifconfig [参数] |
常用参数
add<地址>:设置网络设备IPv6的IP地址del<地址>:删除网络设备IPv6的IP地址down:关闭指定的网络设备up:启动指定的网络设备IP地址:指定网络设备的IP地址
使用实例
显示网络设备信息
1
ifconfig
启动关闭指定网卡
1
2ifconfig eth0 down
ifconfig eth0 up
40. ping命令
用于测试主机之间网络的连通性。
命令格式
1 | ping [参数] [主机名或IP地址] |
常用参数
-d:使用Socket的SO_DEBUG功能-c<完成次数>:设置完成要求回应的次数-f:极限检测-i<间隔秒数>:指定收发信息的间隔时间-I<网络界面>:使用指定的网络界面送出数据包-l<前置载入>:设置在送出要求信息之前,先行发出的数据包-n:只输出数值-p<范本样式>:设置填满数据包的范本样式-q:不显示指令执行过程,开头和结尾的相关信息除外-r:忽略普通的Routing Table,直接将数据包送到远端主机上-R:记录路由过程-s<数据包大小>:设置数据包的大小-t<存活数值>:设置存活数值TTL的大小-v:详细显示指令的执行过程
使用实例
- 检测是否与主机连通
1
ping www.google.com
41. netstat命令
用于显示网络状态。
命令格式
1 | netstat [参数] |
常用参数
-a或--all:显示所有连线中的Socket-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址-c或--continuous:持续列出网络状态-C或--cache:显示路由器配置的快取信息-e或--extend:显示网络其他相关信息-F或--fib:显示FIB-g或--groups:显示多重广播功能群组组员名单-h或--help:在线帮助-i或--interfaces:显示网络界面信息表单-l或--listening:显示监控中的服务器的Socket-M或--masquerade:显示伪装的网络连线-n或--numeric:直接使用IP地址,而不通过域名服务器-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称-o或--timers:显示计时器-p或--programs:显示正在使用Socket的程序识别码和程序名称-r或--route:显示Routing Table-s或--statistice:显示网络工作信息统计表-t或--tcp:显示TCP传输协议的连线状况-u或--udp:显示UDP传输协议的连线状况-v或--verbose:显示指令执行过程-V或--version:显示版本信息-w或--raw:显示RAW传输协议的连线状况-x或--unix:此参数的效果和指定”-A unix”参数相同--ip或--inet:此参数的效果和指定”-A inet”参数相同
使用实例
列出所有端口
1
netstat -a
显示TCP端口
1
netstat -at
42. telnet命令
用于登录远程主机,对远程主机进行管理。
命令格式
1 | telnet [参数] [主机] |
常用参数
-8:允许使用8位字符资料,包括输入与输出-a:尝试自动登入远端系统-b<主机别名>:使用别名指定远端主机名称-c:不读取用户专属目录里的.telnetrc文件-d:启动排错模式-e<脱离字符>:设置脱离字符-E:滤除脱离字符-f:此参数的效果和指定”-F”参数相同-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机-k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名-K:不自动登入远端主机-l<用户名称>:指定要登入远端主机的用户名称-L:允许输出8位字符资料-n<记录文件>:指定文件记录相关信息-r:使用类似rlogin指令的用户界面-S<服务类型>:设置telnet连线所需的IP TOS信息-x:假设主机有支持数据加密的功能,就使用它-X<认证形态>:关闭指定的认证形态
使用实例
- 远程服务器无法访问
1
telnet 192.168.0.5 8080
43. ssh命令
用于远程登录上Linux主机。
命令格式
1 | ssh [参数] [远程主机] |
常用参数
-1:强制使用ssh协议版本1-2:强制使用ssh协议版本2-4:强制使用IPv4地址-6:强制使用IPv6地址-A:开启认证代理连接转发功能-a:关闭认证代理连接转发功能-b<IP地址>:使用本机指定的地址作为对位连接的源IP地址-c<请求认证>:选择所请求的认证方式。用逗号分隔列表-C:请求压缩所有数据-F<配置文件>:指定ssh指令的配置文件-f:后台执行ssh指令-g:允许远程主机连接主机的转发端口-i<身份文件>:指定身份文件(即私钥文件)-l<登录名>:指定连接远程服务器的登录用户名-N:不执行远程指令-o<选项>:指定配置选项-p<端口>:指定远程服务器上的端口-q:静默模式,所有的警告和诊断信息被禁止输出-s:请求远程系统上的一个子系统调用。子系统是SSH2协议的一个特性,有助于将SSH用作其他应用程序的安全传输。子系统由远程命令指定-T:禁止分配伪终端-t:强制分配伪终端。可以在远程机器上执行任何全屏幕(screen-based)程序,所以非常有用,例如菜单服务。重复使用-t选项可以强制分配终端,即使没有本地终端-v:详细模式。使ssh打印关于进度的调试信息。这对于调试连接、认证和配置问题很有帮助。多个-v选项会增加详细程度。最大为3-V:显示版本信息-x:关闭X11转发-X:开启X11转发-y:开启信任X11转发
使用实例
- 登录远程服务器
1
ssh 192.168.0.11
八、用户管理
44. useradd命令
用于建立用户帐号。
命令格式
1 | useradd [选项] 用户名 |
常用参数
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中-d<登入目录>:指定用户登入时的启始目录-D:变更预设值-e<有效期限>:指定帐号的有效期限-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号-g<群组>:指定用户所属的群组-G<群组>:指定用户所属的附加群组-m:自动建立用户的登入目录-M:不要自动建立用户的登入目录-n:取消建立以用户名称为名的群组-r:建立系统帐号-s<shell>:指定用户登入后所使用的shell-u<uid>:指定用户id
使用实例
- 新建用户加入组
1
useradd -g root testuser
45. userdel命令
用于删除用户帐号。
命令格式
1 | userdel [选项] 用户名 |
常用参数
-f:强制删除用户,即使用户当前已登录-r:删除用户的同时,删除与用户相关的所有文件
使用实例
- 删除用户账号
1
userdel testuser
46. passwd命令
用于设置用户的认证信息,包括用户密码、密码过期时间等。
命令格式
1 | passwd [选项] [用户名] |
常用参数
-d:删除密码,仅有系统管理者才能使用-f:强制执行-k:设置只有在密码过期失效后,方能更新-l:锁住密码-s:列出密码的相关信息,仅有系统管理者才能使用-u:解开已上锁的帐号
使用实例
- 修改用户密码
1
passwd testuser
47. su命令
用于切换当前用户身份到其他用户身份。
命令格式
1 | su [选项] [用户名] |
常用参数
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份-f或--fast:适用于csh与tsch,使shell不用去读取启动文件-l或--login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量-m,-p或--preserve-environment:变更身份时,不要变更环境变量-s<shell>或--shell=<shell>:指定要执行的shell--help:显示帮助--version:显示版本信息
使用实例
- 变更帐号为root并在执行ls指令后退出变回原使用者
1
su -c ls root
九、其他常用命令
48. clear命令
用于清除当前终端屏幕。
命令格式
1 | clear |
使用实例
- 清屏
1
clear
49. history命令
用于显示历史命令。
命令格式
1 | history [选项] [参数] |
常用参数
-c:清空当前历史命令-a:将历史命令缓冲区中命令写入历史命令文件中-r:将历史命令文件中的命令读入当前历史命令缓冲区-w:将当前历史命令缓冲区命令写入历史命令文件中
使用实例
显示所有历史命令
1
history
执行历史记录中第n条命令
1
!n
50. alias命令
用于设置指令的别名。
命令格式
1 | alias [别名]=[指令名称] |
使用实例
查看系统当前所有别名
1
alias
设置别名
1
alias l='ls -l'
51. unalias命令
用于删除别名。
命令格式
1 | unalias [别名] |
使用实例
- 删除别名
1
unalias l
52. date命令
显示或设定系统的日期与时间。
命令格式
1 | date [选项] [格式] |
常用参数
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号-u:显示GMT--help:在线帮助--version:显示版本信息
使用实例
显示当前时间
1
date
设置系统时间
1
date -s "2024-01-01 12:00:00"
53. cal命令
用于显示当前日历,或者指定日期的日历。
命令格式
1 | cal [选项] [[[日] 月] 年] |
常用参数
-1:显示一个月的日历-3:显示前一个月、当前月、下一个月的日历-s:星期天作为一周的第一天-m:星期一作为一周的第一天-j:显示在当年中的第几天(一年日期按天算,从1月1日算起,默认显示当前月在一年中的天数)-y:显示当前年份的日历
使用实例
显示当前月份日历
1
cal
显示指定年份的日历
1
cal 2024
54. echo命令
用于在shell中打印shell变量的值,或者直接输出指定的字符串。
命令格式
1 | echo [选项] [字符串] |
常用参数
-e:激活转义字符-n:不换行输出
使用实例
输出字符串
1
echo "Hello World"
输出变量值
1
echo $PATH
55. grep命令
强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。
命令格式
1 | grep [选项] 模式 [文件] |
常用参数
-i:忽略大小写-v:反向选择,即显示不包含匹配文本的所有行-n:显示匹配行及行号-c:计算匹配的行数-r:递归搜索-l:只显示文件名-w:匹配整个单词
使用实例
在文件中搜索指定字符串
1
grep "error" test.log
递归搜索目录
1
grep -r "function" /home/user/code/
56. sed命令
流编辑器,用于对文本进行过滤和转换。
命令格式
1 | sed [选项] '命令' 文件 |
常用参数
-n:只显示处理后的结果-e:直接在命令行模式上进行sed动作编辑-i:直接修改文件内容-r:使用扩展正则表达式
常用命令
s:替换d:删除p:打印a:追加i:插入
使用实例
替换文件中的字符串
1
sed 's/old/new/g' file.txt
删除文件中的空行
1
sed '/^$/d' file.txt
57. awk命令
强大的文本分析工具,用于处理文本文件。
命令格式
1 | awk [选项] '模式 {动作}' 文件 |
常用参数
-F:指定分隔符-v:定义变量-f:从脚本文件中读取awk命令
使用实例
打印文件的第一列
1
awk '{print $1}' file.txt
使用冒号作为分隔符
1
awk -F: '{print $1}' /etc/passwd
58. sort命令
用于对文本文件的行进行排序。
命令格式
1 | sort [选项] [文件] |
常用参数
-n:依照数值的大小排序-r:以相反的顺序来排序-k:指定排序的列-u:去除重复行-t:指定分隔符
使用实例
对文件进行排序
1
sort file.txt
按数值排序
1
sort -n file.txt
59. uniq命令
用于报告或忽略文件中的重复行。
命令格式
1 | uniq [选项] [输入文件] [输出文件] |
常用参数
-c:在每行旁边显示该行重复出现的次数-d:仅显示重复出现的行-u:仅显示出现一次的行-i:忽略大小写
使用实例
显示重复行
1
uniq -d file.txt
统计每行出现次数
1
uniq -c file.txt
60. wc命令
用于计算文件的字节数、字数、行数。
命令格式
1 | wc [选项] [文件] |
常用参数
-c:显示字节数-l:显示行数-w:显示字数-m:显示字符数
使用实例
统计文件行数
1
wc -l file.txt
统计多个文件
1
wc file1.txt file2.txt
十、总结
Linux命令虽然繁多,但掌握这些常用命令已经足够应对日常的系统管理和开发工作。建议:
- 分类记忆:将命令按功能分类,便于记忆和使用
- 实践为主:多在实际工作中使用这些命令
- 善用帮助:使用
man命令查看命令的详细说明 - 组合使用:学会将多个命令通过管道组合使用
- 建立别名:为常用命令设置别名,提高工作效率
记住,熟练使用Linux命令的关键在于实践。随着使用经验的积累,这些命令会逐渐成为你的第二本能。