Bootstrap

Linux常见指令以及shell命令和运行原理

一、ls指令

语法

ls[选项][目录或文件名]

功能

显示文件的属性

常见用法

ls             只显示文件名

ls -l          显示文件名和文件属性  (可用别名 ll 代替)

ls -l -a      显示隐藏文件

ls -ld        查看指定目录属性

补充知识

1、文件 = 文件属性 + 文件内容

文件属性包括文件大小,文件创建时间,文件名称等。文件属性是数据,所以在文件内容为空时文件依然在磁盘中占据内存。

2、任何目录下都有两个隐藏目录 . 和 .. 

. 是指当前路径

.. 是指上级路径

并且以 . 开头的文件都是隐藏文件

二、pwd指令

语法

pwd

功能

显示当前所在路径

三、cd指令

语法

cd 目录名

功能

改变工作目录,将当前目录改变到指定目录下。

常见用法

cd ..                                 返回到上级目录

cd /root/111/test.txt          到指定路径(绝对路径)

cd ../test.txt                      到指定路径(相对路径)

cd -                                   返回到最近访问的目录

cd ~                                  到家目录

补充知识

1、为什么路径具有唯一性?

因为任何一个文件只有一个父目录。

2、想要执行一个可执行程序时要在当前目录下访问改文件

./a.out    在当前路径下执行a.out程序

3、Linux整个文件目录结构是一棵多叉树

4、普通文件在权限中是以 - 开头

目录是以d开头

四、touch指令

语法

touch[选项]...[文件名]...

功能

创建多个新文件,可更改文档或目录的日期时间,包括存取时间和更改时间。只能创建普通文件。

常见用法

touch filename

五、mkdir指令

语法

mkdir [选项] dirname

功能

创建一个目录。

常见用法

mkdir dirname

mkdir -p a/b/c/d         -p选项能在当前路径创建一个大目录里面包含多个目录。a/b/c/d表示在a目录中有一个b目录,在b目录中有一个c目录等。

补充知识

1、用 tree dirname 可以将一个名为dirname的目录用树的形式打印出来

2、文件的ACM属性

用 stat filename 来显示一个名为filename的文件详细属性

其中Access Modify Change需要了解一下

Access:文件最后的访问时间。

Modify:文件内容最后修改时间。

Change:文件属性最后修改时间。

六、alias指令

语法

alias myname='commandname'

功能

把linux中一个默认的指令(commandname)取一个别名(myname)。

举例

上面在讲 ls 指令时有一个 ls -l 指令可以用 ll 来替代就是因为 ll 是 ls -l 的别名。

补充知识

1、which指令

在上图我们使用了 which ll 指令,which 指令是用来查找一个指令在系统中所处的路径,一般用来查找是否有这条指令,或者也可用找到的路径(例如上图中找到的路径就是 /usr/bin/ls)来直接执行 ll 指令。

2、重新认识指令

在which指令介绍中我们提到用路径也可以直接执行指令,那这是为什么呢?

其实指令的本身就是程序,存在与 /usr/bin 路径下面(usr表示系统目录,bin表示二进制文件),不论是在 linux 还是在 windows 下面安装或卸载的本质就是把可执行程序拷贝或删除在系统目录中。那么在 windows 上面我们可以点击可执行程序让它工作,在 linux 上我们找到指令的所在路径也可以执行指令。

七、rm指令

语法

rm [选项] [文件/目录名]

功能

删除一个文件或目录。

常见选项

-f      在root账号下删文件要谨慎,他会问你是否要删除(回答y/n)加上 -f 可直接删除。

-r      因为目录是树状结构,删除目录要用递归,-r 是告诉他要用递归删目录。

补充知识

在 linux 中用户一般分为root(超级用户,权限大)和普通用户(权限小)。

八、man指令

语法

man [选项] [名字]

功能

man作为一个手册可以查询一些指令,库函数的用法。

常见用法

man手册分成九个板块,我们这里只了解前三个。

第一个是查询可执行程序和指令。

第二个是查询系统调用。

第三个是查询C库函数。

九、cp指令

语法

cp [选项] 源头 目的地/重命名

功能

拷贝文件或目录到其他目录。

常见用法

1、拷贝文件

cp test.txt ../      把一个名为test.txt的文件拷贝到上级目录。

2、拷贝目录

cp -rf dir /          选项 -f 是防止系统问你是否拷贝,选项 -r 表示递归拷贝目录。拷贝名为dir的目录到根目录。

补充知识

源头记src,目的地记dst

dst可以是一个带路径的文件名,这样的作用是不仅拷贝还重命名。

src 和 dst 都可携带绝对/相对路径进行拷贝。

十、mv指令

语法

mv [选项] 源头 目的地/重命名

功能

剪切一个文件到目标目录。

常见用法

1、对文件重命名就是剪切旧名字文件到当前目录    mv oldname newname

2、把文件目录剪切到其他目录下     mv src dst

3、mv log.txt ../111.txt       把一个名为log.txt文件剪切到上级路径并且重命名为111.txt

十一、cat指令

语法

cat [选项] [文件名]

功能

查看小文件。

常见用法

cat -n 文件名     额外显示行数。

cat -s 文件名     把连续的空行变成一的空行。

补充知识

1、echo 是一个指令,用来在显示器文件写入文本。

2、> 符号是输出重定向,< 符号是输入重定向。

echo 默认从键盘文件中读取数据输出到显示屏文件。

所以 echo > filename 表示从键盘中读取数据输出到文件中(用>来进行输出的重定向)

cat 默认从键盘中读取数据显示到显示屏文件上。

所以 cat < filename 表示从普通文件中读取数据显示到显示屏文件上(用<来进行输入的重定向)

3、>的功能

echo "..." > filename 表示先清除文件中内容,把"..."写入文件,若文件一开始不存在就先创建。

> filename 表示创建一个空文件。

>> 追加重定向,>>像c语言中以"a"方式打开文件,在文件后面写入。

>像c语言中以读"w"方式打开文件,清空文件再写文件。

4、总结

command > filename:输出重定向
command >> filename:追加重定向
command < filename:输入重定向

十二、more指令

语法

more [选项] [文件名]

功能

查看大文件,用回车来进行逐行阅读。

常见用法

more -n filename     带行号的阅读文件。

/字符串:向下搜索“字符串”的功能。

?字符串:向上搜索“字符串”的功能。

q:退出阅读。

十三、less指令

语法

less [选项] [文件名]

功能

查看大文件,用键盘上下键进行逐行阅读。

常见用法

 /字符串:向下搜索“字符串”的功能。

?字符串:向上搜索“字符串”的功能。

q:退出阅读。

补充知识

1、head -行数 文件名    查看文件头几行

tail -行数 文件名    查看文件最后几行

2、| 管道符号

用来多级指令的级联,用于数据传输。

head -8010 big.txt | tail -11        先取出big.txt前8010行,将数据通过管道再取新文件最后10行数据。

3、wc -l 文件名    统计文本行数。

十四、时间指令

1、date指令

功能

显示时间。

常见用法

date +标记     时间的格式化输出。

标记列表

%H    小时

%M   分钟

%S   秒

%X   相当于%H:%M:%S

%d   日

%m  月

%Y   年

%F   相当于%Y-%m-%d

date +%s   输出时间戳。

date +%F_%X -d@1382478395     将1382478395时间戳转换成格式是%F_%X的时间。

举例

2、cal指令

功能

打印日历。

常见用法

cal   显示当前月的日历。

cal -y   显示当前年的日历。

cal -3   显示当前月的前一个月,当前月,后一个月的日历。

举例

十五、find指令

语法

find [路径] [选项] [文件名]

功能

在系统树形结构中查找文件。

常见用法

find pathname -name filename   

常用选项 -name  按文件名查找。

十六、grep指令

语法

grep [选项] [关键字] [文件名]

功能

行文本过滤器,在文件中查找关键字所在的行,并打印。

常见选项

-n   显示行号。

-v   找到文本中不包含关键字的行。

-i    关键字不区分大小写。

十七、压缩解压缩指令

1、zip/unzip指令

功能

zip   对多个文件或目录进行打包压缩。

unzip   对压缩包进行解压缩。

常见用法

zip -rf name.zip file1 file2...         把多个文件file1,file2...压缩成名为name.zip的压缩包。

unzip name.zip -d pathname      把名为name.zip压缩包解压缩到pathname路径下(-d选项标明路径)

2、tar指令

功能

对多个文件或目录进行打包压缩,并且对压缩包进行解压缩。

常见选项

-c   创建一个压缩文件。

-x   解压缩一个压缩文件。

-z   使用压缩算法。

-f   使用档名,压缩文件的名字要紧跟在-f选项后面。

-v   把压缩过程显示出来。

-C   解压缩到指定目录。

举例

tar -czf test.zip dir    把dir目录压缩成test.zip压缩文件。

tar -xzf test.zip -C /   把test.zip压缩文件解压缩到根目录。

十八、uname指令

语法

uname [选项]

功能

获取电脑和操作系统相关信息。

常见用法

unname -r

3.10.0-1160.92.1    内核版本

el7   centos 7

x86_64   cpu架构

十九、shell命令以及运行原理

首先我们要明确大部分的指令是文件,存在于磁盘中。在我们执行某种指令时,不是直接让操作系统来执行指令,而是要先交给外壳程序。

shell就叫外壳程序

那什么是外壳程序?

介于用户与操作系统之间的软件命令行解释器。

那为什么要有外壳程序?

1、用户不善于与操作系统内核进行交流。

2、外壳程序可以对用户的命令进行检查,保护操作系统内核。

外壳程序作用

把用户命令翻译给内核处理。

把内核处理结果翻译给用户。

shell是外壳程序的统称,我们常用的bash就是一种外壳程序。

一般shell程序不会亲自执行,它会创建子进程来执行,shell只需等待结果。

 

;