[Linux](2)快速入门Linux基础指令

文章目录

  • ls 指令(list files)
  • pwd 指令(print work directory)
  • cd 指令(change directory)
    • 定位文件(路径)
    • cd 指令的使用
  • touch 指令
  • mkdir 指令(make directory)
  • rmdir 指令、rm 指令(remove)
  • man 指令
  • cp 指令(copy file)
  • mv 指令(move file)
  • cat 指令(concatenate)
  • more 指令、less 指令
  • > 输出重定向、>> 追加重定向
  • < 输入重定向
  • head 指令、tail指令
  • | 管道
  • 时间相关指令
    • date 指令
      • 显示时间
      • 时间戳
    • cal 指令
  • find 指令
  • grep 指令
  • zip/unzip 指令
  • tar 指令
  • bc 指令
  • uname 指令
  • 几个重要热键
  • 关机

ls 指令(list files)

功能

显示指定工作目录下的内容,对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

语法

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

选项

  • -l 列出文件的详细信息,包括文件名、文件型态、权限、拥有者、文件大小等
  • -a 列出目录下的所有文件,包括以 . 开头的隐藏文件。
  • -i 输出文件的 i 节点的索引信息。
  • -n 用数字的 UID,GID 代替名称。
  • -F 在每个文件名后附上一个字符以说明该文件的类型, “*”表示可执行的普通文件; “/”表示目录; “@”表示符号链接; “|”表示FIFOs; “=”表示套接字(sockets)。
  • -d 将目录象文件一样显示,而不是显示其下的文件。
  • -k 以 k 字节的形式表示文件的大小。
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -s 在 l 文件名后输出该文件的大小。
  • -R 列出所有子目录下的文件。 (递归)
  • -1 一行只输出一个文件。

举例

直接使用 ls 表示显示当前目录下的内容,为了方便演示,这里先用 touch 指令创建文件,mkdir 创建目录,pwd 显示当前路径:

[CegghnnoR@VM-4-13-centos ~]\$ ls					#列出当前目录下的内容
[CegghnnoR@VM-4-13-centos ~]\$ touch mytest.c		#创建文件
[CegghnnoR@VM-4-13-centos ~]\$ ls								
mytest.c
[CegghnnoR@VM-4-13-centos ~]\$ mkdir code			#创建目录
[CegghnnoR@VM-4-13-centos ~]\$ ls
code  mytest.c
[CegghnnoR@VM-4-13-centos ~]\$ pwd					#显示当前路径
/home/CegghnnoR

-l 展示文件的更多属性:

[CegghnnoR@VM-4-13-centos ~]$ ls -l					#显示文件的更多属性
total 4
drwxrwxr-x 2 CegghnnoR CegghnnoR 4096 Jun 29 21:42 code
-rw-rw-r-- 1 CegghnnoR CegghnnoR    0 Jun 29 21:27 mytest.c

文件包括文件内容和文件属性,文件属性同样要在硬盘中占据空间。我们学的所有文件操作无非就两类1.对文件的内容操作 2.对文件的属性操作。ls -l 也可以简写成 ll


-a 列出所有文件(包括隐藏文件),选项可以同时使用 ls -a -l,也可以组合 ls -al

[CegghnnoR@VM-4-13-centos ~]$ ls -a					#列出所有文件
.  ..  code  mytest.c #其余略。。。
[CegghnnoR@VM-4-13-centos ~]$ ls -al				#列出所有文件及详细信息
total 36
drwx------  5 CegghnnoR CegghnnoR 4096 Jun 29 21:42 .
drwxr-xr-x. 4 root      root      4096 Jun 28 22:46 ..
drwxrwxr-x  2 CegghnnoR CegghnnoR 4096 Jun 29 21:42 code
-rw-rw-r--  1 CegghnnoR CegghnnoR    0 Jun 29 21:27 mytest.c
#其余略。。。

:以 . 开头的文件为隐藏文件,我们也可以用 touch 创建这样的文件。

:在任意目录下,都会存在两个隐藏文件:. (当前路径)和 .. (上级路径)

使用 cd 命令可以更改所在目录,cd .. 就表示跳到上级目录:

[CegghnnoR@VM-4-13-centos ~]$ pwd					#显示当前路径
/home/CegghnnoR
[CegghnnoR@VM-4-13-centos ~]$ cd ..					#回到上级路径
[CegghnnoR@VM-4-13-centos home]$ pwd
/home
[CegghnnoR@VM-4-13-centos home]$ cd ..
[CegghnnoR@VM-4-13-centos /]$ pwd
/
[CegghnnoR@VM-4-13-centos /]$ cd ..
[CegghnnoR@VM-4-13-centos /]$ pwd
/

:Linux 的路径分隔符:/,Windows 的路径分隔符:\

:退到 / 就不能继续回退了,它叫做根目录。

回到原来的目录:

[CegghnnoR@VM-4-13-centos /]$ cd /home/CegghnnoR
[CegghnnoR@VM-4-13-centos ~]$ pwd
/home/CegghnnoR

那么 . 有什么用呢?这里稍微演示一下:

这里使用 vim 在 mytest.c 里编写了一个 hello world 程序(编写过程略,vim 的操作以后讲),然后 gcc 编译会生成一个 a.out 文件,要运行此文件应该输入的指令为 ./a.out

[CegghnnoR@VM-4-13-centos ~]$ vim mytest.c
[CegghnnoR@VM-4-13-centos ~]$ gcc mytest.c
[CegghnnoR@VM-4-13-centos ~]$ ls
a.out  code  mytest.c
[CegghnnoR@VM-4-13-centos ~]$ ./a.out
hello world!

:这里的 ./ 就代表要执行当前文件下的程序。


-i 会发现列出的文件前面多了一串数字,具体是什么会在以后讲解。

[CegghnnoR@VM-4-13-centos ~]$ ls -i
656092 a.out  656093 code  658302 mytest.c
[CegghnnoR@VM-4-13-centos ~]$ ls -il
total 20
656092 -rwxrwxr-x 1 CegghnnoR CegghnnoR 8360 Jun 30 13:20 a.out
656093 drwxrwxr-x 2 CegghnnoR CegghnnoR 4096 Jun 29 21:42 code
658302 -rw-rw-r-- 1 CegghnnoR CegghnnoR   78 Jun 30 13:20 mytest.c

-n 会发现原来的用户名显示被替换成了数字。

[CegghnnoR@VM-4-13-centos ~]$ ls -nl
total 20
-rwxrwxr-x 1 1001 1001 8360 Jun 30 13:20 a.out
drwxrwxr-x 2 1001 1001 4096 Jun 29 21:42 code
-rw-rw-r-- 1 1001 1001   78 Jun 30 13:20 mytest.c

-F 在文件后面加一个字符表示文件类型,什么都不加的表示是普通的文本文件。

[CegghnnoR@VM-4-13-centos ~]$ ls -Fl
total 20
-rwxrwxr-x 1 CegghnnoR CegghnnoR 8360 Jun 30 13:20 a.out*
drwxrwxr-x 2 CegghnnoR CegghnnoR 4096 Jun 29 21:42 code/
-rw-rw-r-- 1 CegghnnoR CegghnnoR   78 Jun 30 13:20 mytest.c

总结

最常用的就是 -a-l,剩下的选项不多演示。以上主要通过了 -a 选项讲解了什么是隐藏文件,隐藏文件 . (当前路径) … (上级路径)的作用。

pwd 指令(print work directory)

功能

显示当前所在的工作目录的绝对路径。

语法

pwd

举例

[CegghnnoR@VM-4-13-centos ~]$ pwd
/home/CegghnnoR

cd 指令(change directory)

定位文件(路径)

Linux 的目录结构本质是一棵多叉树。(和Windows一样)

[Linux](2)快速入门Linux基础指令_第1张图片

  1. 每一个子结点既可以是一个普通文件也可以是一个目录,目录里面可以再放目录或者普通文件,这是递归式的定义。
  2. 这棵多叉树的叶子结点,一定是一个普通文件或者空目录。
  3. 由根目录向下查找的路径为绝对路径,对于每一个文件,它的绝对路径是唯一的,比如 /home/CegghnnoR/test.c
  4. 相对路径则是相对于用户所处的路径。比如如果当前处在 CegghnnoR 下,passwd 的相对路径就是 ../../etc/passwd
[CegghnnoR@VM-4-13-centos 6_30]$ ls /home/CegghnnoR/code/6_29/test.c	#绝对路径
/home/CegghnnoR/code/6_29/test.c
[CegghnnoR@VM-4-13-centos 6_30]$ ls ../6_29/test.c		#相对路径
../6_29/test.c

如果是日常使用,建议使用相对路径——简单

如果是进行添加配置文件,推荐绝对路径——不容易出错

cd 指令的使用

功能

切换当前工作目录。

语法

cd [目录名]

目录名表示可以用相对路径也可以用绝对路径。若目录名称省略,则变换至使用者的 home 目录。另外,~ 也表示为 home 目录的意思,. 表示当前目录,.. 表示上级目录。

举例

code 下有 6_29 和 6_30 两个目录,如下分别使用绝对路径和相对路径在两个目录间切换:

[CegghnnoR@VM-4-13-centos 6_30]$ pwd
/home/CegghnnoR/code/6_30
[CegghnnoR@VM-4-13-centos 6_30]$ cd /home/CegghnnoR/code/6_29  #绝对路径
[CegghnnoR@VM-4-13-centos 6_29]$ pwd
/home/CegghnnoR/code/6_29
[CegghnnoR@VM-4-13-centos 6_29]$ cd ../6_30					   #相对路径
[CegghnnoR@VM-4-13-centos 6_30]$ pwd
/home/CegghnnoR/code/6_30

使用 cd ~cd 回到当前用户的家目录,也就是登陆时的位置:

[CegghnnoR@VM-4-13-centos 6_30]$ cd ~
[CegghnnoR@VM-4-13-centos ~]$ pwd
/home/CegghnnoR

使用 cd - 回到上一次所在的目录:

[CegghnnoR@VM-4-13-centos 6_29]$ pwd	#当前目录
/home/CegghnnoR/code/6_29
[CegghnnoR@VM-4-13-centos 6_29]$ cd /	#前往根目录
[CegghnnoR@VM-4-13-centos /]$ pwd
/
[CegghnnoR@VM-4-13-centos /]$ cd -		#回到上一次所在目录
/home/CegghnnoR/code/6_29
[CegghnnoR@VM-4-13-centos 6_29]$ pwd
/home/CegghnnoR/code/6_29

touch 指令

功能

修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

语法

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

选项

  • -a 或–time=atime或–time=access或–time=use只更改存取时间。
  • -c 或–no-create 不建立任何文档。
  • -d 使用指定的日期时间,而非现在的时间。
  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  • -m 或–time=mtime或–time=modify 只更改变动时间。
  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  • -t 使用指定的日期时间,而非现在的时间。

举例

直接用 touch 新建文件

[CegghnnoR@VM-4-13-centos 6_30]$ ls
test.c
[CegghnnoR@VM-4-13-centos 6_30]$ touch file.txt		#新建文件
[CegghnnoR@VM-4-13-centos 6_30]$ ls
file.txt  test.c

当前只用得到这个用法,其他的选项暂时不看。

mkdir 指令(make directory)

功能

创建目录

语法

mkdir [选项] dirName

选项

  • -p dirname可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

举例

[CegghnnoR@VM-4-13-centos 6_30]$ ls
[CegghnnoR@VM-4-13-centos 6_30]$ mkdir dir		#创建一个目录
[CegghnnoR@VM-4-13-centos 6_30]$ ls
dir
[CegghnnoR@VM-4-13-centos 6_30]$ mkdir -p dir/dir1/dir2 #创建一串路径
[CegghnnoR@VM-4-13-centos 6_30]$ cd dir/dir1/dir2
[CegghnnoR@VM-4-13-centos dir2]$ pwd
/home/CegghnnoR/code/6_30/dir/dir1/dir2

rmdir 指令、rm 指令(remove)

rmdirmkdir 指令相对,mkdir 建立目录,rmdir 删除目录

emdir:

功能

删除空目录

适用对象

具有当前目录操作权限的所有使用者。

语法

rmdir [-p] dirName

选项

  • -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

:因为只能删除空目录,所以不常用。


rm:

功能

删除一个文件或者目录。

使用权限

所有使用者

语法

rm [options] name...

选项

  • -r 删除目录及其下所有文件。
  • -f 即使文件属性为只读(即写保护),亦直接删除,不提示是否确认。
  • -i 删除前逐一询问确认。

举例

删除一个普通文本文件:

[CegghnnoR@VM-4-13-centos 6_30]$ ls
a.out  dir  file.txt  test.c
[CegghnnoR@VM-4-13-centos 6_30]$ rm file.txt	#删除文本文件
[CegghnnoR@VM-4-13-centos 6_30]$ ls
a.out  dir  test.c

删除目录需要加上 -r

[CegghnnoR@VM-4-13-centos 6_30]$ rm dir		#直接删除删不了
rm: cannot remove ‘dir’: Is a directory
[CegghnnoR@VM-4-13-centos 6_30]$ rm -r dir	#删除目录
[CegghnnoR@VM-4-13-centos 6_30]$ ls
a.out  test.c

提醒:Linux中如果不是特别确认,不要轻易删除文件,因为LInux没有回收站。

man 指令

功能

man 指令用于查看Linux手册。

如果没有,要先在root下安装,指令:yum install -y man-pages

语法

man [选项] [命令]

选项

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
  • man手册分为8章
    1. 普通的命令
    2. 系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
    3. 库函数,如printf,fread
    4. 是特殊文件,也就是/dev下的各种设备文件
    5. 指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
    6. 给游戏留的,由各个游戏自己定义
    7. 附件还有一些变量,比如向environ这种全局变量在这里就有说明
    8. 系统管理用的命令,这些命令只能由root使用,如ifconfig

我们最常用的是123,不指定章节默认查第一章。

举例

man 查不同的手册

man printf		#查printf指令
man 3 printf	#查C语言函数printf
man man			#用man查man

cp 指令(copy file)

功能

复制文件或目录

语法

cp [options] source dest

选项

  • -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -f 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 与-f相反,覆盖文件之前先询问用户
  • -R 递归处理,将指定目录下的文件及子目录一并处理

举例

cat可以打印文件内容,后面具体讲。这里首先在file.txt文件里写入了内容,然后使用cp,拷贝的副本叫file-bak.txt,再打印file-bak.txt的内容:

[CegghnnoR@VM-4-13-centos 6_30]$ ls
file.txt
[CegghnnoR@VM-4-13-centos 6_30]$ cat file.txt				#打印原文件
abcdefg
[CegghnnoR@VM-4-13-centos 6_30]$ cp file.txt file-bak.txt	#拷贝
[CegghnnoR@VM-4-13-centos 6_30]$ ls
file-bak.txt  file.txt
[CegghnnoR@VM-4-13-centos 6_30]$ cat file-bak.txt			#打印副本
abcdefg														#内容一样

也可以把文件拷贝到其他目录cp file.txt ../file.txt-1

拷贝目录要加上 -r 选项

[CegghnnoR@VM-4-13-centos code]$ ls
6_29  6_30
[CegghnnoR@VM-4-13-centos code]$ cp 6_30 6_30-bak
cp: omitting directory ‘6_30’							#不能直接拷贝
[CegghnnoR@VM-4-13-centos code]$ cp -r 6_30 6_30-bak	#要加上-r
[CegghnnoR@VM-4-13-centos code]$ ls
6_29  6_30  6_30-bak

mv 指令(move file)

功能

为文件或目录改名、或将文件或目录移入其它位置。

语法

mv [options] source dest
mv [options] source... directory
  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时, mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv命令将各参数指定的源文件均移至目标目录中。

选项

  • -f 如果目标文件已经存在,不会询问而直接覆盖
  • -i 若目标文件已经存在,则会询问是否覆盖

举例

移动文件,类似于剪切功能:

[CegghnnoR@VM-4-13-centos 6_30]$ ls
file-bak.txt  file.txt
[CegghnnoR@VM-4-13-centos 6_30]$ mv file.txt ../	#将文件移到上级目录
[CegghnnoR@VM-4-13-centos 6_30]$ ls
file-bak.txt
[CegghnnoR@VM-4-13-centos 6_30]$ ls ..				#查看上级目录
6_29  6_30  file.txt

移动目录:

[CegghnnoR@VM-4-13-centos code]$ ls
6_29  6_30  file.txt
[CegghnnoR@VM-4-13-centos code]$ mv 6_30 ..		#移到上级目录
[CegghnnoR@VM-4-13-centos code]$ ls ..
6_30  code

重命名:

[CegghnnoR@VM-4-13-centos 6_30]$ ls
file-bak.txt
[CegghnnoR@VM-4-13-centos 6_30]$ mv file-bak.txt file.txt-bak	#对文件重命名
[CegghnnoR@VM-4-13-centos 6_30]$ ls
file.txt-bak
[CegghnnoR@VM-4-13-centos code]$ ls
6_29  6_30
[CegghnnoR@VM-4-13-centos code]$ mv 6_30 6-30	对目录重命名
[CegghnnoR@VM-4-13-centos code]$ ls
6_29  6-30

cat 指令(concatenate)

功能

连接文件并打印到标准输出设备上。

比较适合查看短文本,或者代码。

语法

cat [选项] [文件]

选项

  • -n 对输出的所有行编号。
  • -b 和 -n 相似,只不过对于空白行不编号。
  • -s 当遇到有连续两行以上的空白行,就替换为一行的空白行。

举例

cat 相似,还有个 tac 指令也可以打印文件内容,但是 tac 是从最后一行开始打印。

[CegghnnoR@VM-4-13-centos 6_30]$ cat file.txt
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeee
[CegghnnoR@VM-4-13-centos 6_30]$ tac file.txt
eeeeeeeeee
dddddddddd
cccccccccc
bbbbbbbbbb
aaaaaaaaaa
[CegghnnoR@VM-4-13-centos 6_30]$ cat -n file.txt	#带有行号,tac不可以
     1	aaaaaaaaaa
     2	bbbbbbbbbb
     3	cccccccccc
     4	dddddddddd
     5	eeeeeeeeee

more 指令、less 指令

more:

功能

类似cat。不过会以一页一页的形式显示,更方便使用者逐页阅读、

语法

more [选项] [文件]

选项

  • -n 对输入的所有行编号
    • 使用中按 q 退出
    • 空格键向下翻页
    • b 键向前翻页
    • enter 键向下翻一行
    • /[字符串] 向下搜索
    • h 查看帮助

举例

为了演示 more 指令,我们先创建一个 file.txt 文件,然后向里面输入100000行数据。输入数据的代码如下:

cnt=1; while [ $cnt -le 100000 ]; do echo "hello world $cnt"; let cnt++; done > file.txt

然后使用 wc -l file.txt 查看里面是不是真的有了100000行数据。

[CegghnnoR@VM-4-13-centos 6_30]$ cnt=1; while [ $cnt -le 100000 ]; do echo "hello world $cnt"; let cnt++; done > file.txt
[CegghnnoR@VM-4-13-centos 6_30]$ wc -l file.txt
100000 file.txt

如果用 cat 查看这个文件就直接刷屏了,显然不合适。

more file.txt

less的功能更加强大,更推荐使用 less

less支持方向键↑↓翻页

选项

  • -i 忽略搜索时的大小写
  • -N 显示每行的行号
    • /字符串:向下搜索“字符串”的功能
    • ?字符串:向上搜索“字符串”的功能
    • n:重复前一个搜索(与 / 或 ? 有关)
    • N:反向重复前一个搜索(与 / 或 ? 有关)
    • q:quit

> 输出重定向、>> 追加重定向

在生成 100000 行数据的代码中,最后有一个 > ,这个 > 是干什么的呢?

比如我们可以使用 echo 将字符串打印出来:

[CegghnnoR@VM-4-13-centos 6_30]$ echo "hello world"
hello world

如果在后面加一个 > 符号再加一个文件名,就会发现它创建了这个文件,并把内容写了进去。

[CegghnnoR@VM-4-13-centos 6_30]$ echo "hello world" > hello.txt
[CegghnnoR@VM-4-13-centos 6_30]$ ls
file.txt  hello.txt
[CegghnnoR@VM-4-13-centos 6_30]$ cat hello.txt
hello world

本来应该写入到显示器内容,写入到了文件中,这种就叫做输出重定向

当我们将另一个内容再次输入到这个文件中,会发现原来的内容被覆盖了:

[CegghnnoR@VM-4-13-centos 6_30]$ echo "goodbye world" > hello.txt
[CegghnnoR@VM-4-13-centos 6_30]$ cat hello.txt
goodbye world

输出重定向会清空原始文件的内容,进行重新写入

>> 则表示追加重定向,不会清空原内容

[CegghnnoR@VM-4-13-centos 6_30]$ echo "hello world" >> hello.txt
[CegghnnoR@VM-4-13-centos 6_30]$ cat hello.txt
goodbye world
hello world

< 输入重定向

cat 默认从键盘读取

也就是说,当你直接使用 cat 指令,后面不带文件,那么你输入什么就会打印什么:

[CegghnnoR@VM-4-13-centos 6_30]$ cat
a
a
b
b
cc
cc
dd
dd

:ctrl+c 终止

注意:ctrl+c 是终止。ctrl+z 是暂停,程序依然存在,要想回到这个程序 fg 编号 即可。

[CegghnnoR@VM-4-13-centos 6_30]$ cat
^Z											#暂停
[1]+  Stopped                 cat
[CegghnnoR@VM-4-13-centos 6_30]$ fg 1		#继续运行1号任务
cat
^C

:使用 jobs 查看当前暂停的任务:

[CegghnnoR@VM-4-13-centos 6_30]$ jobs
[1]   Stopped                 cat
[2]-  Stopped                 cat
[3]+  Stopped                 cat

通过 < 连接一个文件,可以让它打印文件内容,当然这和直接加文件的效果一样

[CegghnnoR@VM-4-13-centos 6_30]$ cat < hello.txt
goodbye world
hello world
[CegghnnoR@VM-4-13-centos 6_30]$ cat hello.txt
goodbye world
hello world

本来应该从键盘中读取数据,改成从指定的文件中读取,这就叫输入重定向

head 指令、tail指令

功能

head查看文件的开头部分的内容,默认显示 10 行内容。

tail查看文件的结尾部分的内容,默认显示 10 行内容。

语法

head [选项] [文件]
tail [选项] [文件]

选项

  • -行数 表示显示的行数。

举例

[CegghnnoR@VM-4-13-centos 6_30]$ head file.txt		#显示前10行
hello world 1
hello world 2
hello world 3
hello world 4
hello world 5
hello world 6
hello world 7
hello world 8
hello world 9
hello world 10
[CegghnnoR@VM-4-13-centos 6_30]$ head -20 file.txt	#显示前20行
#此处省略20行

tail 则默认显示后10行:

[CegghnnoR@VM-4-13-centos 6_30]$ tail file.txt		#显示后10行
hello world 99991
hello world 99992
hello world 99993
hello world 99994
hello world 99995
hello world 99996
hello world 99997
hello world 99998
hello world 99999
hello world 100000

| 管道

问:如何查看文本的第30000行到第30020行的内容?

第一种方法:

取钱30020行放到 temp.txt 文件,然后取 temp.txt 文件的后21行。

[CegghnnoR@VM-4-13-centos 6_30]$ head -30020 file.txt > temp.txt
[CegghnnoR@VM-4-13-centos 6_30]$ tail -21 temp.txt
#此处省略21行

第二种方法:

[CegghnnoR@VM-4-13-centos 6_30]$ head -30020 file.txt | tail -21
#此处省略21行

第二种方法直接获取到了想要的内容,其中 | 就是管道

管道就类似于第一种方法中的temp.txt,它把左指令的内容存起来,然后让右指令操作。

它可以让我们级联多个命令,来完成流水线式的数据处理工作:

[CegghnnoR@VM-4-13-centos 6_30]$ head -100 file.txt | tail -15 | head -3
hello world 86
hello world 87
hello world 88

时间相关指令

date 指令

显示时间

使用 date 直接显示时间:

[CegghnnoR@VM-4-13-centos 6_30]$ date 	#默认格式
Fri Jul  1 14:11:57 CST 2022

格式控制:

+ 号后跟要控制的格式,年:%Y 月:%m 日:%d 时:%H 分:%M 秒:%S

[CegghnnoR@VM-4-13-centos 6_30]$ date +%Y-%m-%d_%H:%M:%S	#格式控制
2022-07-01_14:19:08

时间戳

使用 date +%s 可以显示时间戳:

[CegghnnoR@VM-4-13-centos 6_30]$ date +%s
1656656677

时间戳是指世界标准时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

将时间戳转为日期:date -d@[时间戳]

[CegghnnoR@VM-4-13-centos 6_30]$ date -d@0	#将时间戳0转换为日期
Thu Jan  1 08:00:00 CST 1970
[CegghnnoR@VM-4-13-centos 6_30]$ date +%Y-%m-%d_%H:%M:%S -d@0   #格式化显示
1970-01-01_08:00:00

cal 指令

功能

显示日历

语法

cal [参数] [月份] [年份]

选项

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
  • -y 显示当前年份的日历

举例

[CegghnnoR@VM-4-13-centos 6_30]$ cal
      July 2022     
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

find 指令

功能

用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)

语法

find [pathname] [-options]

选项

  • -name 按文件名查找文件

举例

[CegghnnoR@VM-4-13-centos 6_30]$ find /usr/include/ -name stdio.h	#找stdio.h头文件
/usr/include/bits/stdio.h
/usr/include/c++/4.8.2/tr1/stdio.h
/usr/include/stdio.h

grep 指令

功能

行文本过滤工具,在文件中搜索字符串,将找到的行打印出来

语法

grep [选项] '搜寻字符串' [文件]

选项

  • -i 忽略大小写
  • -v 反向选择,即显示没有 ‘搜寻字符串’ 内容的行
  • -n 显示行号

举例

如下文件内容:

[CegghnnoR@VM-4-13-centos 6_30]$ cat hello.txt
goodbye world
hello world
hello world
hello Linux
hello 世界
c++ C
c
C++
Java
[CegghnnoR@VM-4-13-centos 6_30]$ grep 'c++' hello.txt
c++ C

:小写的c++被匹配上了,大写的没有,说明 grep 默认区分大小写

加上 -i 则不区分大小写:

[CegghnnoR@VM-4-13-centos 6_30]$ grep -i 'c++' hello.txt
c++ C
C++

加上 -v ,有c++的行都不见了

[CegghnnoR@VM-4-13-centos 6_30]$ grep -iv 'c++' hello.txt
goodbye world
hello world
hello world
hello Linux
hello 世界
c
Java

zip/unzip 指令

功能

压缩/解压

语法

zip [选项] [压缩文件.zip] [目录或文件]
unzip [压缩文件.zip] [选项] [目录]

选项

zip:

  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。

unzip:

  • -d 解压到指定路径

举例

我们先准备好要压缩的目录 tar_package 里面放了5个普通文本文件,其中一个写入了内容。

然后进行压缩,注意一定要加 -r 否则目录里面的文件不会被压缩:

[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
tar_package
[CegghnnoR@VM-4-13-centos 2022_7_1]$ zip -r test.zip tar_package  #压缩
  adding: tar_package/ (stored 0%)
  adding: tar_package/flie4 (stored 0%)
  adding: tar_package/file2 (stored 0%)
  adding: tar_package/file3 (stored 0%)
  adding: tar_package/flie5 (stored 0%)
  adding: tar_package/file1 (stored 0%)
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls		#压缩包出现
tar_package  test.zip
[CegghnnoR@VM-4-13-centos 2022_7_1]$ mv tar_package ..	#将原文件移走
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
test.zip												#只剩压缩文件
[CegghnnoR@VM-4-13-centos 2022_7_1]$ unzip test.zip		#解压
Archive:  test.zip
   creating: tar_package/
 extracting: tar_package/flie4       
 extracting: tar_package/file2       
 extracting: tar_package/file3       
 extracting: tar_package/flie5       
 extracting: tar_package/file1       
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
tar_package  test.zip									#解压完成
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls tar_package
file1  file2  file3  flie4  flie5						#该目录下的文件还在
[CegghnnoR@VM-4-13-centos 2022_7_1]$ cat tar_package/file3
hello world												#也可以正常打印

默认解压到当前目录,也可以解压到其他目录:

[CegghnnoR@VM-4-13-centos 2022_7_1]$ unzip test.zip -d ../6_30  #解压到昨天的目录里
Archive:  test.zip
   creating: ../6_30/tar_package/
 extracting: ../6_30/tar_package/flie4  
 extracting: ../6_30/tar_package/file2  
 extracting: ../6_30/tar_package/file3  
 extracting: ../6_30/tar_package/flie5  
 extracting: ../6_30/tar_package/file1  
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls ../6_30
file.txt  hello.txt  tar_package								#确实出现在里面

tar 指令

这个指令非常复杂,现阶段主要掌握的是压缩和解压

选项

  • -c 建立新的备份文件
  • -z 通过gzip指令处理备份文件
  • -f<备份文件> 指定备份文件
  • -x 解开一个压缩文件的参数指令!
  • -t 列出备份文件的内容
  • -v 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
  • -j 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
  • -C 解压到指定目录

最常用的就是czf和xzf选项,分别表示压缩和解压:

[CegghnnoR@VM-4-13-centos 2022_7_1]$ tar czf test.tgz tar_package	#压缩
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
tar_package  test.tgz
[CegghnnoR@VM-4-13-centos 2022_7_1]$ rm -rf tar_package
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
test.tgz
[CegghnnoR@VM-4-13-centos 2022_7_1]$ tar xzf test.tgz				#解压
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
tar_package  test.tgz
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls tar_package
file1  file2  file3  flie4  flie5

-C 解压到指定目录。

[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls
test.tgz
[CegghnnoR@VM-4-13-centos 2022_7_1]$ tar xzf test.tgz -C ../6_30	#解压到指定目录
[CegghnnoR@VM-4-13-centos 2022_7_1]$ ls ../6_30
file.txt  hello.txt  tar_package

bc 指令

功能

计算器

举例

[CegghnnoR@VM-4-13-centos 2022_7_1]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1
2
3*8
24
^C
(interrupt) Exiting bc.

也可以配合管道:

[CegghnnoR@VM-4-13-centos 2022_7_1]$ echo "1+2*4" | bc
9

uname 指令

功能

uname用来获取电脑和操作系统的相关信息

语法

uname [选项]

选项

  • -a 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

  • -r 显示操作系统的发行编号

几个重要热键

ctrl+c 终止,在上面输入重定向中讲到过,在程序失控时特别好用。

Tab 命令自动补齐。没补齐就再按一下显示所有以此开头的指令。

ctrl+r 搜索历史命令

ctrl+d 快速退出账户

关机

语法

shutdown [选项]

选项

  • -h 将系统的服务停掉后,立即关机
  • -r 将系统的服务停掉后,重新启动
  • -t sec sec秒后关机

我们使用云服务器的不需要关机。

你可能感兴趣的:(Linux,linux,运维,服务器,后端,开发语言)