功能
显示指定工作目录下的内容,对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
语法
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
举例
[CegghnnoR@VM-4-13-centos ~]$ pwd
/home/CegghnnoR
Linux 的目录结构本质是一棵多叉树。(和Windows一样)
/home/CegghnnoR/test.c
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 [目录名]
目录名表示可以用相对路径也可以用绝对路径。若目录名称省略,则变换至使用者的 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 [选项]... 文件...
选项
-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 [选项] 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
与 mkdir
指令相对,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 指令用于查看Linux手册。
如果没有,要先在root下安装,指令:yum install -y man-pages
语法
man [选项] [命令]
选项
-k
根据关键字搜索联机帮助num
只在第num章节找-a
将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。我们最常用的是123,不指定章节默认查第一章。
举例
用 man
查不同的手册
man printf #查printf指令
man 3 printf #查C语言函数printf
man man #用man查man
功能
复制文件或目录
语法
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 [options] source dest
mv [options] source... directory
选项
-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 [选项] [文件]
选项
-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:
功能
类似cat。不过会以一页一页的形式显示,更方便使用者逐页阅读、
语法
more [选项] [文件]
选项
-n
对输入的所有行编号
举例
为了演示 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
显示每行的行号
在生成 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查看文件的开头部分的内容,默认显示 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
直接显示时间:
[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 [参数] [月份] [年份]
选项
-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 [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 [选项] '搜寻字符串' [文件]
选项
-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 [选项] [压缩文件.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 #确实出现在里面
这个指令非常复杂,现阶段主要掌握的是压缩和解压
选项
-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
功能
计算器
举例
[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 [选项]
选项
-a
详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
-r
显示操作系统的发行编号
ctrl+c
终止,在上面输入重定向中讲到过,在程序失控时特别好用。
Tab
命令自动补齐。没补齐就再按一下显示所有以此开头的指令。
ctrl+r
搜索历史命令
ctrl+d
快速退出账户
语法
shutdown [选项]
选项
-h
将系统的服务停掉后,立即关机-r
将系统的服务停掉后,重新启动-t sec
sec秒后关机我们使用云服务器的不需要关机。