Linux常用脚本命令总结

时间:2022-03-01 19:56:25

基本操作

通用操作

1. export

显示所有的环境变量,也可以获取到某个变量的详细信息;

export # 显示所有
echo $SHELL # 只显示SHELL

2. whereis

使用系统自动构建的数据库来搜索可执行文件

whereis python # 如果搜不到就不输出

3. which

它在环境变量PATH指定的目录中搜索可执行文件。此命令将打印可执行文件的完整路径。

which python # 如果搜不到就不输出

4. clear

清除窗口上的内容。

文件操作

5. ls

ls # 显示当前目录下非隐藏文件与目录
ls -a # 显示当前目录所有文件与目录(包括非隐藏)
ls -lh # 列出可读文件和文件夹详细信息
ls -lt # 按最后修改时间列出文件和文件夹详细信息
ls -ltr # 以最后修改时间反序列出文件和文件夹详细信息
ls -F # 在每个输出项后追加文件的类型标识符

6. touch

touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

7. cat

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容

注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

cat file1 file2  # 同时打印file1和file2的内容
cat -n file1 # 在每行的前面加上行号
cat -n file1 file2 > file3 # 将同时打印file1和file2的内容合并到file3中

8. more

它以全屏幕的方式按页显示文本文件的内容

more -dc file # 显示文件file的内容,但在显示之前先清屏
more -c -10 file # 显示文件file的内容,每10行显示一次,而且在显示之前先清屏

9. head

head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。

head -n10 file  # 指定显示头部内容的行数
head -c10 file # 指定显示头部内容的字符数

10. tail

tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行

tail file (显示文件file的最后10行)
tail -n20 file (显示文件file的最后20行)
tail +20 file (显示文件file的内容,从第20行至文件末尾)
tail -c 10 file (显示文件file的最后10个字符)

11. mv

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

mv file1 file2 # 将file1命名为file2
mv /uer/* . # 将user目录中的文件移动到当前目录下

12. cp

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。

注意:cp命令不能复制目录,如果要复制目录,则必须使用-R/-r选项,当“源文件”为多个文件时,要求“目标文件”为指定的目录。

cp -p file1 file2 # 拷贝文件1到文件2,并保持文件的权限、属主和时间戳
cp -i file1 file2 #拷贝file1到file2,如果file2存在会提示是否覆盖
cp -r /usr/men /usr/zh # 将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中

13. rm

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。

rm -i file  # 删除文件前先确认
rm -r * # 删除当前目录下的所有文件和子目录

14. diff

diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。

diff -w file1 file2 # 比较的时候忽略空白符

15. chmod

chmod命令用来变更文件或目录的权限。

Linux常用脚本命令总结

chmod ug+rwx file.txt # 给指定文件的属主和属组所有权限(包括读、写、执行)
chmod g-rwx file.txt # 删除指定文件的属组的所有权限
chmod -R ug+rwx dict # 修改目录的权限,以及递归修改目录下面所有文件和子目录的权限

16. gzip

gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令

gzip filename  # 压缩文件
gzip dict # 压缩目录下的文件
gzip -d filename # 解压

17. gunzip

gunzip命令用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

gzip –d /opt/etc.zip.gz |  gunzip /opt/etc.zip.gz  # 解压当前目录,效果相同
gzip -l /opt/etc.zip.gz # 查看上述etc.zip.gz文件的压缩信息。

19. lpr

lpr命令用于将文件发送给指定打印机进行打印,如果不指定目标打印机,则使用默认打印机。

lpr -P lp man1 man2  # 将man1和man2送到打印机lp进行打印(-P指定接受打印任务的目标打印机)

20. lpq

lpq命令用于显示打印队列中的打印任务的状态信息。

21. lprm

lprm命令用于删除打印队列中的打印任务。尚未完成的打印机任务会被放在打印机贮列之中,这个命令可用来将常未送到打印机的任务取消。

文本操作

22. awk

这个命令的作用特别多,其基本结构是BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,可选,任意一个都可以不出现在脚本中。

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file

具体视题目而定,实在太多栗子。

23. grep

全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep -i "the" demo_file  # 在文件中查找字符串(不区分大小写)
grep -A 3 -i "example" demo_text # 输出成功匹配的行,以及该行之后的三行
grep -r "ramesh" * #在当前目录中递归查询包含指定字符串的文件

参考文章

24. wc

wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

25. sed

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

参考文章

26. sort

将文件进行排序后输出到标准输出上。

这里比较常用的是-n-r-k,它们分别代表的是-n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位,-t指定栏位分隔符

#将CC列数字从大到小顺序排列:
# sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC
# 只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:
$ sort -t ' ' -k 1.2,1.2 -nrk 3,3 facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000

由于只对第二个字母进行排序,所以我们使用了-k 1.2,1.2的表示方式,表示我们“只”对第二个字母进行排序。(如果你问“我使用-k 1.2怎么不行?”,当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。对于员工工资进行排 序,我们也使用了-k 3,3,这是最准确的表述,表示我们“只”对本域进行排序,因为如果你省略了后面的3,就变成了我们“对第3个域开始到最后一个域位置的内容进行排序” 了。

具体参考

27. uniq

通常和sort一起使用,在sort的参数中存在这么一个参数实现去除重复行

# 删除重复行,下面三种方式都可以
uniq file.txt
sort file.txt | uniq
sort -u file.txt
# 只显示出现一次的行
uniq -u file.txt
sort file.txt | uniq -u
# 统计各行在文件中出现的次数:
sort file.txt | uniq -c
# 和前面相反的是,这里-d则找出重复的行
sort file.txt | uniq -d

28. cut

比较重要的几个选项是-f-d-c,它们分别代表的是显示指定范围的内容,指定字段的分隔符(之前默认的是空格),仅显示指定范围的字符

假定有如下信息:

cat test.txt
#No Name Mark Percent
#01 tom 69 91
#02 jack 71 87
#03 alex 68 98
# 输出第二个到第三个的内容
cut -f2,3 test.txt
#Name Mark
#tom 69
#jack 71
#alex 68
# 假定文件内容发生了变化
#No;Name;Mark;Percent
#01;tom;69;91
#02;jack;71;87
#03;alex;68;98
# 用;作区分,并且输出第二个范围的值
cut -f2 -d";" test2.txt
#Name
#tom
#jack
#alex
# 假定文件内容发生了变化
#abcd
#fghijk
#qrstu
# 打印第1个到第3个字符
cut -c1-3 test.txt
#abc
#fgh
#qrs

29. echo

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

30. fmt

fmt命令读取文件的内容,根据选项的设置对文件格式进行简单的优化处理,并将结果送到标准输出设备。

31. tr

tr命令可以对来自标准输入的字符进行替换、压缩和删除。

32. nl

nl命令读取 file 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。

33. egrep

egrep命令用于在文件内查找指定的字符串。

egrep Linux *

查找当前目录下所有文件包含字符串中包含Linux的文件。

34. fgrep

fgrep命令是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。

fgrep strcpy *.c

在当前目录下所有以 .c 字符串结尾的文件中搜索字符串 strcpy。

目录操作

35. mkdir

创建目录

mkdir -m 700 /usr/meng/test

在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问。

36. cd

切换目录

cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在"/";".."为上级目录的意思);
cd ../.. 返回上两级目录;

37. pwd

pwd命令以绝对路径的方式显示用户当前工作目录。

SSH,系统信息 & 网络操作

38. ssh

ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

39. whoami

whoami命令用于打印当前有效的用户名称,相当于执行id -un命令。

40. passwd

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

41. quota

quota命令用于显示用户或者工作组的磁盘配额信息。

42. date

date命令是显示或设置系统时间与日期。

date -d "1 day ago" +"%Y-%m-%d"

输出昨天日期

44. uptime

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。

45. w

w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。

46. finger

finger命令用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。

47. uname

uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

48. man

49. df

df命令用于显示磁盘分区上的可使用的磁盘空间

50. du

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看

51. last

last命令用于显示用户最近登录信息。

52. ps

ps命令用于报告当前系统的进程状态。

53. kill

kill命令用来删除执行中的程序或工作。

54. killall

killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。

55. top

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。

56. bg

bg命令用于将作业放到后台运行,使前台可以执行其他任务。

57. fg

fg命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。

58. ping

ping命令用来测试主机之间网络的连通性。

60. dig

dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。

61. wget

wget命令用来从指定的URL下载文件。

62. scp

scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。

参考文章

10 分钟学会Linux常用 bash命令W2School Linux 教程