Linux指令学习

常用Linux指令的学习与整理

基础知识

读懂man手册

其实,对于任何不理解的指令,我们可以执行man command查看指令的详细用法。下面我们学习一下man手册的语法结构。

man手册中,我们主要关心SynopsisDescription。前者是命令语法的摘要,后者是完整的描述

Synopsis

通常的结构为command [OPTION]... [FILE]...。其中要注意以下事项。

  • []里面的选项表示可有可无
  • ...表示选项可以列多个
  • 选项通常有两种表示方法
    • 长选项: 用--引导,后面跟完整的单词,如--help
    • 短选项: 用-引导,后面跟单个字符,如-a
  • 多个短选项可以组合使用,例如-a -l可以写为-al
  • |分开的几个选项,表示只能从几个选项中选择一个
Description

一般描述中会列举参数的详细含义

基本指令

在这里,主要介绍基于文件增删查改的指令

ls指令

ls [OPTION]… [FILE]…

列出目录下的文件,常用的用法有:

1
2
3
4
$ ls --color 以彩色显示档案 
$ ls -l 显示详细资料
$ ls -a 显示隐藏档案
$ ls -al 同时显示隐藏档案与详细资料

cp指令

cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY

将一个或多个文件进行拷贝,常用的用法有:

1
2
3
$ cp 1.txt 2.txt 	复制1.txt,并重命名为2.txt 
$ cp 1.txt ./dir/ 将1.txt复制到dir目录下
$ cp 1.txt 2.txt ./dir 将两个文件复制到dir目录下

mv指令

mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY

将一个或多个文件进行移动。我们会发现cpmv的指令结构完全一致,常用的用法有:

1
2
3
$ mv 1.txt 2.txt 	移动1.txt,并重命名为2.txt 
$ mv 1.txt ./dir/ 将1.txt移动到dir目录下
$ mv 1.txt 2.txt ./dir 将两个文件移动到dir目录下

rm指令

cp [OPTION]… FILE…

将一个或多个文件进行删除,常用的用法有:

1
$ rm -rf directory 将文件夹下的所有文件强制删除

pwd指令

pwd [OPTION]…

显示当前的文件目录

cat指令

cat [OPTION]… [FILE]…

列出文件的内容,但配合重定向符号有很多种用法。常用的用法有:

1
2
$ cat 1.txt 	列出1.txt里的内容 
$ cat > 2.txt 将后面输入的内容存入2.txt

高级指令

find指令

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression]

但是[-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec]并不常用,因此指令可以简化为

find [path…] [experssion]

该指令执行查找,常用的用法有:

1
2
3
$ find . -name file.txt    在当前目录下搜索文件file.txt
$ find . -name "*.txt" 在当前目录下搜索所有txt文件
$ find . -perm 755 在当前目录下查找权限为755的文件

chmod指令

chmod [OPTION]… MODE[,MODE]… FILE…

修改一个或多个文件的权限,常用的用法有:

1
2
$ chmod 777 1.txt           将1.txt权限修改为777
¥ chmod a+x 1.txt 2.txt 给两个文件的所有用户添加执行权限

要注意[ugoa]的含义。u->owner, g->group, o->other, a->all

grep指令

grep [OPTION]… PATTERN [FILE]…

在FILE的每一行中,查找满足PATTERN的行并输出:

1
2
$ ls | grep 2.txt        在当前路径中查找似乎否有2.txt
$ grep '[^0-9]' 3.txt 在3.txt种查找包含非数字的行

awk指令

awk 指令比较复杂,但是也特别灵活。今后有时间会详细写一下,这里只列举几个例子

1
$ awk < 1.csv -F, '{print $7}'  将文件1.csv的每一行按照','分割,输出第七列

再来一个复杂的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cat 2.csv | awk '
BEGIN {
maxCount = 0;
id;
FS = ",";
}
{
count[$5]+=$13;
name[$5] = $7;
}
END {
for (c in count) {
if (count[c] > maxCount) {
maxCount = count[c];
id = c;
}
}

print name[id];
}
'

如果在2.csv种,第5列表示id,第7列表示名字,第13列表示销量。那么该代码表示找到总销量最多的id,并输出其中的一个名字。

感觉awk写复杂了就是c语言代码了。

cut指令

cut OPTION… [FILE]…

从文件中截取特订的列,常见的用法有:

1
2
$ cut -d',' -f1 file.txt		将file.txt已逗号分隔,输出第一列
$ find -c1-3 file.txt 输出file.txt的前三列

sed指令

该指令也是一个比较复杂的指令,暂不介绍。

系统指令

ps指令

ps [OPTIONS]

查看当前进程,通常和grep一起用:

1
$ ps | grep bash 	查看名为bash的进程

kill指令

kill [-s signal|-p] [–] pid…

向pid进程发送信号

telent指令

用于和主机通信的指令,通常用于诊断服务器

1
2
$ telent myhost.com
$ telent -l myusername myhost.com:5555

parted指令

parted [options] [device [command [options…]…]]

查看或操作分区,常用的指令:

1
$ parted -l 列出所有的磁盘分区