当前位置: 首页 > news >正文

Linux篇【1】:入门与基本指令详解(中)

 

目录

3.7、man指令

3.8、cp指令

3.9、mv指令

3.10、cat指令

3.11、more指令 和 less命令

3.12、head 指令

3.13、tail 指令


3.7、man指令

    Linux系统下的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助,访问Linux系统手册页的命令是man、

语法: man [选项] 命令

常用选项:

1、-k   根据关键字搜索联机帮助、

2、num 只在第num章节找、

3、 -a   将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,直到找到就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕、
注意:
1  是普通的命令(指令), 默认
2  是操作系统提供的系统调用接口,如open,write之类的,通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件等等、
3  是c语言的库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件、
5  是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义、
6  是给游戏留的,由各个游戏自己定义、
7  是附件还有一些变量,比如向environ这种全局变量在这里就有说明、
8  是系统管理用的命令,这些命令只能由root使用,如ifconfifig、
其中5,6,7,8均不常用、

man指令的安装:

1、当使用除 root 之外的普通用户时,执行指令:sudo yum install -y man-pages 则有可能会报错(大概率会报错),当讲完多模式的编辑器Vim后,再具体阐述报错的原因、

2、当方法1报错后,可以切换到 root 用户,执行指令:yum install -y man-pages ,此时不管是 root 用户还是除 root 用户之外的普通用户,则都可以使用指令man、

    因为Linux操作系统本身是在c语言开发的,所以其中的man手册自带c语言的标准手册,所以,在Linux操作系统下既可以查询c语言的指令,也可以查询c语言的函数,如果想查询其他语言的标准手册(包括指令和函数),则需要自己手动安装,即做修改做配置,不过我们一般不会在Linux系统下查询其他语言的标准手册(包括指令和函数),可以直接在百度上查询即可,在Linux系统下,一般常用于查询c语言的指令,其他指令,c语言的函数(库函数)和操作系统提供的系统调用接口,除此之外,也支持部分查询,但不常用,就不再进行阐述、

若在Linux系统下查询c语言的指令,可使用指令:man xxx ,如下所示:

man printf
//输入上述指令,可得以下内容:
//注意:输入指令man printf和输入指令man 1 printf是一样的效果,当直接输入指令man printf时,
//默认的就是man 1 printf、

PRINTF(1)                     User Commands                       PRINTF(1)                

NAME
       printf - format and print data

SYNOPSIS
       printf FORMAT [ARGUMENT]...    //命令
       printf OPTION     //命令

DESCRIPTION
       Print ARGUMENT(s) according to FORMAT, or execute according to OPTION:

       --help display this help and exit

       --version
              output version information and exit

       FORMAT controls the output as in C printf.  Interpreted sequences are:

       \"     double quote

       \\     backslash

       \a     alert (BEL)

       \b     backspace

       \c     produce no further output

 Manual page printf(1) line 1 (press h for help or q to quit)
//查阅完毕之后输入q退出该页面、


//不常用:
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ printf "Hello,linux\n"
Hello,linux
[HJM@hjmlcc ~]$ 

若在Linux系统下查询c语言的函数(库函数),可使用指令:man 3 xxx ,如下所示:

man 3 printf
//输入上述指令,可得以下内容:

PRINTF(3)                 Linux Programmer's Manual             PRINTF(3)                                     

NAME
       printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion

SYNOPSIS
       #include <stdio.h>
//函数:
       int printf(const char *format, ...);
       int fprintf(FILE *stream, const char *format, ...);
       int sprintf(char *str, const char *format, ...);
       int snprintf(char *str, size_t size, const char *format, ...);

       #include <stdarg.h>

       int vprintf(const char *format, va_list ap);
       int vfprintf(FILE *stream, const char *format, va_list ap);
       int vsprintf(char *str, const char *format, va_list ap);
       int vsnprintf(char *str, size_t size, const char *format, va_list ap);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       snprintf(), vsnprintf():
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
           or cc -std=c99

DESCRIPTION
       The  functions  in the printf() family produce output according to a format as described below.  The functions
       printf() and vprintf() write output to stdout, the standard output stream; fprintf() and vfprintf() write out‐
 Manual page printf(3) line 1 (press h for help or q to quit)
//查阅完毕之后输入q退出该页面、

若在Linux系统下查询操作系统提供的系统调用接口,可使用指令:man 2 xxx ,如下所示:

man 2 fork
//输入上述指令,可得以下内容:

FORK(2)                Linux Programmer's Manual                     FORK(2)              

NAME
       fork - create a child process

SYNOPSIS
       #include <unistd.h>

       pid_t fork(void); //创建子进程、

DESCRIPTION
       fork()  creates  a new process by duplicating the calling process.  The new process, referred to as the child,
       is an exact duplicate of the calling process, referred to as the parent, except for the following points:

       *  The child has its own unique process ID, and this PID does not match the ID of any existing  process  group
          (setpgid(2)).

       *  The child's parent process ID is the same as the parent's process ID.

       *  The child does not inherit its parent's memory locks (mlock(2), mlockall(2)).

       *  Process  resource  utilizations  (getrusage(2))  and  CPU time counters (times(2)) are reset to zero in the
          child.

       *  The child's set of pending signals is initially empty (sigpending(2)).

       *  The child does not inherit semaphore adjustments from its parent (semop(2)).

       *  The child does not inherit record locks from its parent (fcntl(2)).
 Manual page fork(2) line 1 (press h for help or q to quit)

//查阅完毕之后输入q退出该页面、

若在Linux系统下查询其他指令,也可使用指令:man xxx 或 man 1 xxx ,如下所示:

man man
//输入上述指令,可得以下内容:
//注意:输入指令man man和输入指令man 1 man是一样的效果,当直接输入指令man man时,
//默认的就是man 1 man,要注意,由于man本身就是一个指令,所以可以直接使用man man,当然
//也可以使用man 1 man

MAN(1)                                            Manual pager utils                                           MAN(1)

NAME
       man - an interface to the on-line reference manuals

SYNOPSIS
       man  [-C  file]  [-d]  [-D]  [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S
       list] [-e extension] [-i|-I] [--regex|--wildcard] [--names-only] [-a]  [-u]  [--no-subpages]  [-P  pager]  [-r
       prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p string] [-t] [-T[device]] [-H[browser]]
       [-X[dpi]] [-Z] [[section] page ...] ...
       man -k [apropos options] regexp ...
       man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
       man -f [whatis options] page ...
       man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager] [-r prompt]  [-7]  [-E
       encoding] [-p string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] file ...
       man -w|-W [-C file] [-d] [-D] page ...
       man -c [-C file] [-d] [-D] page ...
       man [-?V]

DESCRIPTION
       man  is  the system's manual pager. Each page argument given to man is normally the name of a program, utility
       or function.  The manual page associated with each of these arguments is then found and displayed. A  section,
       if  provided,  will direct man to look only in that section of the manual.  The default action is to search in
       all of the available sections, following a pre-defined order and to show only the first page  found,  even  if
       page exists in several sections.

       The table below shows the section numbers of the manual followed by the types of pages they contain.

       1   Executable programs or shell commands
 Manual page man(1) line 1 (press h for help or q to quit)
//查阅完毕之后输入q退出该页面、

3.8、cp指令

语法:cp [选项] 源普通文件或目录 目标普通文件或目录、

功能:   复制普通文件或目录、
说明:   cp指令用于复制普通文件或目录,如同时指定两个以上的普通文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中,若同时指定多个普通文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息、
常用选项:
-f  或  --force 强行复制普通文件,不论目的普通文件是否已经存在、
-i  或  --interactive 覆盖普通文件或目录之前先询问用户、
-r  递归处理,将指定目录下的文件与子目录一并处理,若源普通文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理、
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
[HJM@hjmlcc ~]$ touch file.txt
[HJM@hjmlcc ~]$ ls
file.txt
[HJM@hjmlcc ~]$ cat file.txt    //打印文件内容、
[HJM@hjmlcc ~]$ nano file.txt   //nano为文本编辑器、
[HJM@hjmlcc ~]$ cat file.txt
lccandhuijunming
[HJM@hjmlcc ~]$ ls
file.txt
[HJM@hjmlcc ~]$ cp file.txt file-bak.txt  
//在普通文件file.txt当前所在的目录下,先创建一个普通文件,其名称为file-bal.txt,然后再把普通文件
//file.txt中的内容拷贝到普通文件file-bal.txt里去、
[HJM@hjmlcc ~]$ ls
file-bak.txt  file.txt
[HJM@hjmlcc ~]$ cat file-bak.txt
lccandhuijunming
[HJM@hjmlcc ~]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code
[HJM@hjmlcc ~]$ cd code
[HJM@hjmlcc code]$ ls
file.txt
[HJM@hjmlcc code]$ cat file.txt
AAAAA
BBBBB
CCCCC

[HJM@hjmlcc code]$ ls
file.txt
[HJM@hjmlcc code]$ cp file.txt ../file2.txt
//指定路径的拷贝,在普通文件file.txt当前所在的目录的上一级目录下,先创建一个普通文件,其名称为file2.txt,然后再把普通文件file.txt中的内容拷贝到普通文件file2.txt里去,但是要保证,普通文件file.txt当前所在的目录的上一级目录不能是目录home,即,当指定路径拷贝时,路径不能在home目录下、
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ cd ..
[HJM@hjmlcc ~]$ ls
code  file2.txt
[HJM@hjmlcc ~]$ cat file2.txt
AAAAA
BBBBB
CCCCC

[HJM@hjmlcc ~]$ 

    当在cp时,要拷贝的普通文件是拷贝在要拷贝的普通文件当前路径下的时候,则两个普通文件不能重名,其他情况则可相同,如下所示:

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code  file2.txt
[HJM@hjmlcc ~]$ cp file2.txt file2.txt
cp: ‘file2.txt’ and ‘file2.txt’ are the same file
[HJM@hjmlcc ~]$ 

拓展:

[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ ls
file.txt
[HJM@hjmlcc code]$ cp file.txt ..  
//在普通文件file.txt当前所在的目录的上一级下,先创建一个普通文件,其名称也为file.txt,然后再把code目录下的普通文件file.txt中的内容拷贝到HJM目录下的普通文件file.txt里去、
[HJM@hjmlcc code]$ ls
file.txt
[HJM@hjmlcc code]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code  file.txt
[HJM@hjmlcc ~]$ 

    默认情况下,指令cp只能拷贝普通文件,不允许拷贝目录,如果需要,则应该携带选项,即:-r  即,递归的意思,如下所示:

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code
[HJM@hjmlcc ~]$ cp code code1
cp: omitting directory ‘code’  //失败
[HJM@hjmlcc ~]$ cp -r code code1
//这种情况才会造成覆盖的情况,但由于此时目录code1并不在目录HJM内,所以,此时加不加 -i的效果都是一样的, -i均不起作用,不加 -i,系统也不会自动选择y,此时 -i也不起任何作用,并且也不会涉及到 -f的问题、
[HJM@hjmlcc ~]$ ls
code  code1
[HJM@hjmlcc ~]$ tree code
code
`-- file.txt

0 directories, 1 file
[HJM@hjmlcc ~]$ tree code1
code1
`-- file.txt

0 directories, 1 file
[HJM@hjmlcc ~]$ cp -rf code code2
//-f: force , 强制,此时的 -f不起作用,不加-f也是可以的,加不加都不会弹出提示框,同时系统也不会
//自动选择y、
[HJM@hjmlcc ~]$ ls
code  code1  code2
[HJM@hjmlcc ~]$ tree code
code
`-- file.txt

0 directories, 1 file
[HJM@hjmlcc ~]$ tree code2
code2
`-- file.txt

0 directories, 1 file
[HJM@hjmlcc ~]$ 

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cd code1
[HJM@hjmlcc code1]$ ls
aaaaaa.c              //注意点1
[HJM@hjmlcc code1]$ cd ..
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cd code2
[HJM@hjmlcc code2]$ ls
a.c  file.txt         //注意点2
[HJM@hjmlcc code2]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cp -r code1 code2
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cd code1
[HJM@hjmlcc code1]$ ls
aaaaaa.c
[HJM@hjmlcc code1]$ cd ..
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cd code2
[HJM@hjmlcc code2]$ ls
a.c  code1  file.txt  //是:a.c  code1  file.txt   并不是: aaaaaa.c   
//当进行指令cp -r code1 code2时,发现在目录code1当前所在的目录下已经存在了目录code2,那么此时并不是把目录code1中的内容覆盖掉目录code2中的内容,而是把目录code1整体拷贝到目录code2中、
[HJM@hjmlcc code2]$ cd code1
[HJM@hjmlcc code1]$ ls
aaaaaa.c              //注意点3
[HJM@hjmlcc code1]$ 
//这种情况下不会出现覆盖的情况,所以不会涉及到 -i的问题,也不会涉及到 -f的问题、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
[HJM@hjmlcc ~]$ touch la.c
[HJM@hjmlcc ~]$ touch lb.c
[HJM@hjmlcc ~]$ nano la.c
[HJM@hjmlcc ~]$ nano lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
bbb
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cp -i la.c lb.c
//在当前HJM目录下已经存在普通文件lb.c,所以就不会再先创建一个新的名为lb.c的空普通文件,而是询问是否用原普通文件la.c中的内容覆盖掉原普通文件lb.c的内容,输入y,则代表同意本次操作、
cp: overwrite ‘lb.c’? y
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
aaa
[HJM@hjmlcc ~]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
BBB
[HJM@hjmlcc ~]$ cp -i la.c lb.c
//在当前HJM目录下已经存在普通文件lb.c,所以就不会再先创建一个新的名为lb.c的空普通文件,而是询问是否用原普通文件la.c中的内容覆盖掉原普通文件lb.c的内容,输入n,则代表放弃本次操作,此时原普通文件
//la.c和lb.c中的内容不发生任何改变、
cp: overwrite ‘lb.c’? n
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
BBB
[HJM@hjmlcc ~]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
BBB
[HJM@hjmlcc ~]$ cp la.c lb.c
//在当前HJM目录下已经存在普通文件lb.c,所以就不会再先创建一个新的名为lb.c的空普通文件,由于
//指令中没有加 -i,所以不会弹出提示框,系统会自动选择y,此时原普通文件la.c中的内容覆盖掉原普
//通文件lb.c的内容、
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
aaa
[HJM@hjmlcc ~]$ 


[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
bbb
[HJM@hjmlcc ~]$ cp -f la.c lb.c
//此时这个指令和上述指令 cp la.c lb.c 的效果是一模一样的、
[HJM@hjmlcc ~]$ ls
la.c  lb.c
[HJM@hjmlcc ~]$ cat la.c
aaa
[HJM@hjmlcc ~]$ cat lb.c
aaa
[HJM@hjmlcc ~]$ 


3.9、mv指令

    mv命令是move的缩写,可以用来剪切普通文件和剪切目录,或者重命名普通文件和重命名目录是Linux系统下常用的命令,经常用来备份普通文件或者目录、
语法:    mv [选项]  源普通文件或源目录 目标普通文件或目标目录、
功能:
1、视mv命令中第二个参数类型的不同(是目标普通文件还是目标目录),mv命令将普通文件重命名或将其移至一个新的目录中、
2、当第二个参数是已存在的目录名称时,源普通文件或源目录参数可以有多个,mv命令将各参数指定的源普通文件和源目录均剪切至已存在的目标目录中、
[HJM@hjmlcc code8]$ pwd
/home/HJM/code8
[HJM@hjmlcc code8]$ ls
code6  code7  code8
[HJM@hjmlcc code8]$ mv code6 code7 code8
//在当前code8目录下,已经存在目录code8,现在执行指令mv code6 code7 code8,则是剪切操作,把目录
//code6整体和目录code7整体均剪切至目录code8下、
[HJM@hjmlcc code8]$ ls
code8
[HJM@hjmlcc code8]$ cd code8
[HJM@hjmlcc code8]$ ls
code6  code7
[HJM@hjmlcc code8]$ 

常用选项:

-f : force 强制的意思,如果目标普通文件已经存在,不会询问而直接覆盖,在重命名时才考虑,此时不会询问,Linux系统自动默认选择y、
-i : 若目标普通文件已经存在时,就会询问是否覆盖,在重命名时才考虑!
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cd code1
[HJM@hjmlcc code1]$ ls
aaaaaa.c
[HJM@hjmlcc code1]$ mv aaaaaa.c ..   //把普通文件 aaaaaa.c 剪切至上一目录下、
[HJM@hjmlcc code1]$ ls
[HJM@hjmlcc code1]$ cd ..
[HJM@hjmlcc ~]$ ls
aaaaaa.c  code1  code2
[HJM@hjmlcc ~]$ 

//Linux系统下的mv指令类似于Windows系统下的剪切命令、

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
aaaaaa.c  code1  code2
[HJM@hjmlcc ~]$ mv aaaaaa.c code1   //把普通文件 aaaaaa.c 剪切至目录code1下、
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cd code1
[HJM@hjmlcc code1]$ ls
aaaaaa.c
[HJM@hjmlcc code1]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ mv code1 code2   //将目录code1整体剪切至目录code2下、
[HJM@hjmlcc ~]$ ls
code2
[HJM@hjmlcc ~]$ cd code2
[HJM@hjmlcc code2]$ ls
code1
[HJM@hjmlcc code2]$ mv code1 ..  //将目录code1整体剪切至上一级目录下、
[HJM@hjmlcc code2]$ ls
[HJM@hjmlcc code2]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ 
[HJM@hjmlcc code1]$ pwd
/home/HJM/code1
[HJM@hjmlcc code1]$ ls
la.c
[HJM@hjmlcc code1]$ mv la.c lc.c   //把当前目录下的普通文件la.c重命名为lc.c、
[HJM@hjmlcc code1]$ ls
lc.c
[HJM@hjmlcc code1]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ mv code2 code3  //把当前HJM目录下的code2目录重命名为code3目录、
[HJM@hjmlcc ~]$ ls
code1  code3
[HJM@hjmlcc ~]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code3
[HJM@hjmlcc ~]$ cd code1
[HJM@hjmlcc code1]$ ls
lc.c
[HJM@hjmlcc code1]$ touch la.c
[HJM@hjmlcc code1]$ ls
la.c  lc.c
[HJM@hjmlcc code1]$ mv -i la.c lb.c  //把当前目录下的普通文件la.c重命名为lb.c,由于当前目录下
//并不存在普通文件lb.c,所以即使加上 -i,也不会弹出提示框,此时 -i不起作用,若不加 -i,系统也不会自动选择y,此时 -i也不起任何作用,当重命名时,如果目标普通文件不存在,则加不加 -i的效果都是一样的,都不会弹
//出提示框,即 -i都不起作用、
[HJM@hjmlcc code1]$ ls
lb.c  lc.c
[HJM@hjmlcc code1]$ 



[HJM@hjmlcc code1]$ pwd
/home/HJM/code1
[HJM@hjmlcc code1]$ ls
lb.c  lc.c
[HJM@hjmlcc code1]$ mv -i lb.c lc.c  //把当前目录下的普通文件lb.c重命名为lc.c,由于当前目录下
//已经存在了普通文件lc.c,并且加上了 -i,故会弹出提示框选择是否确认,输入y,则普通文件lb.c中的内容
//会把普通文件lc.c中的内容覆盖掉,此时当前目录下只保留一个普通文件为lc.c,且该普通文件中的内容就
//是原来的普通文件lb.c中的内容、
mv: overwrite ‘lc.c’? y
[HJM@hjmlcc code1]$ ls
lc.c
[HJM@hjmlcc code1]$ 
[HJM@hjmlcc code1]$ pwd
/home/HJM/code1
[HJM@hjmlcc code1]$ ls
lb.c  lc.c
[HJM@hjmlcc code1]$ mv -i lb.c lc.c
//把当前目录下的普通文件lb.c重命名为lc.c,由于当前目录下
//已经存在了普通文件lc.c,并且加上了 -i,故会弹出提示框选择是否确认,输入n,则相当于放弃本次操作,
//原来的普通文件lb.c和lc.c中的内容均未发生改变、
mv: overwrite ‘lc.c’? n
[HJM@hjmlcc code1]$ ls
lb.c  lc.c
[HJM@hjmlcc code1]$ cat lb.c
BBBBBB
[HJM@hjmlcc code1]$ cat lc.c
CCCCC
[HJM@hjmlcc code1]$ 
[HJM@hjmlcc code1]$ pwd
/home/HJM/code1
[HJM@hjmlcc code1]$ ls
lb.c  lc.c
[HJM@hjmlcc code1]$ cat lb.c
BBBBBB
[HJM@hjmlcc code1]$ cat lc.c
CCCCC
[HJM@hjmlcc code1]$ mv lb.c lc.c
//把当前目录下的普通文件lb.c重命名为lc.c,由于当前目录下
//已经存在了普通文件lc.c,但是没加上了 -i,故不会弹出提示框选择是否确认,而是自动选择了y,那么此时
//普通文件lb.c中的内容会把普通文件lc.c中的内容覆盖掉,此时当前目录下只保留一个普通文件为lc.c,
//且该普通文件中的内容就是原来的普通文件lb.c中的内容、
[HJM@hjmlcc code1]$ pwd
/home/HJM/code1
[HJM@hjmlcc code1]$ ls
lc.c
[HJM@hjmlcc code1]$ cat lc.c
BBBBBB
[HJM@hjmlcc code1]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code3  code4
[HJM@hjmlcc ~]$ cd code3
[HJM@hjmlcc code3]$ ls
l3.c
[HJM@hjmlcc code3]$ cd ..
[HJM@hjmlcc ~]$ cd code4
[HJM@hjmlcc code4]$ ls
l4.c
[HJM@hjmlcc code4]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code3  code4
[HJM@hjmlcc ~]$ mv code3 code5
//此时,在目录HJM下,存在目录code3和code4,而此时执行命令mv code3 code5,而目录code5并不在目录HJM
//内,所以此时则会把目录code3重命名为code5、
[HJM@hjmlcc ~]$ ls
code4  code5
[HJM@hjmlcc ~]$ 
//这种情况才会造成重命名的情况,但由于此时目录code5并不在目录HJM内,所以,此时加不加 -i的效果都是一样的, -i均不起作用、


[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code6  code7
[HJM@hjmlcc ~]$ mv -i code6 code8
//此时,在目录HJM下,存在目录code6和code7,而此时执行命令mv -i code6 code8,而目录code8并不在目录HJM
//内,所以此时即使加上 -i,也不会弹出提示框,此时 -i不起作用,若不加 -i,系统也不会自动选择y,此时 -i也不起任何作用,当重命名时,如果目标目录不存在,则加不加 -i的效果都是一样的,都不会弹
//出提示框,即 -i都不起作用、
[HJM@hjmlcc ~]$ ls
code7  code8
[HJM@hjmlcc ~]$ 




[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code3  code4
[HJM@hjmlcc ~]$ cd code3
[HJM@hjmlcc code3]$ ls
l3.c
[HJM@hjmlcc code3]$ cd ..
[HJM@hjmlcc ~]$ cd code4
[HJM@hjmlcc code4]$ ls
l4.c
[HJM@hjmlcc code4]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code3  code4
[HJM@hjmlcc ~]$ mv code3 code4
//此时,在目录HJM下,存在目录code3和code4,而此时执行命令mv code3 code4,而目录code4在目录HJM
//内,所以此时执行的就是剪切操作,会把code3整体剪切到code4目录下、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code4
[HJM@hjmlcc ~]$ cd code4
[HJM@hjmlcc code4]$ ls
code3  l4.c
[HJM@hjmlcc code4]$ 
//这种情况下不会出现重命名的情况,所以不会涉及到 -i的问题、

     在Linux系统中,一定要注意不要轻易的执行删除操作,除非特别确定本次删除操作没有问题,否则就要避免轻易执行删除操作,因为Linux系统中没有回收站,不像Windows系统中具有回收站,可以采用下面的这种方法来创造一个Linux系统下的回收站,具体如下所示:

//将rm改造成mv:

vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
 mv -i ~/.trash/\$@ ./
}
trash() {
 mv $@ ~/.trash/
}

3.10、cat指令

语法: cat [选项][文件]
功能: 查看短文本或者短代码、
常用选项:
-b  对非空输出行编号、
-n  对输出的所有行编号、
-s  不输出多行空行、
[HJM@hjmlcc code1]$ pwd
/home/HJM/code1
[HJM@hjmlcc code1]$ ls
la.c
[HJM@hjmlcc code1]$ cat la.c   //正序打印普通文件中的内容、
AAAAA
BBBBB
CCCCC
[HJM@hjmlcc code1]$ tac la.c   //倒序打印普通文件中的内容、
CCCCC
BBBBB
AAAAA
[HJM@hjmlcc code1]$ cat -n la.c   //正序打印普通文件中的内容,并带上行号、
     1	AAAAA
     2	BBBBB
     3	CCCCC
[HJM@hjmlcc code1]$ tac -n la.c   //不可如此操作、
tac: invalid option -- 'n'
Try 'tac --help' for more information.
[HJM@hjmlcc code1]$ 

//cat和tac指令的作用:比较适合查看短文本或者短代码,两者是使用c和c++写的、

3.11、more指令 和 less命令

more指令:
语法:  more [选项][文件]
功能:  more命令,功能类似 cat 、
常用选项:
-n: 对输出的所有行编号、
q : 退出more指令、
举例:
[atong@LiWenTong ~]$ ls -l / | more
total 162
drwxr-xr-x 2 root root 4096 Apr 25 05:39 bin
drwxr-xr-x 4 root root 1024 Apr 25 04:11boot
drwxr-xr-x 9 root root 3820 May 4 23:20 dev
drwxr-xr-x 84 root root 4096 May 5 00:37 etc

less指令:

1、less 工具也是对普通文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大、
2、less 的用法比起 more 更加的有弹性,在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
3、除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜、
语法: less [参数] 文件
功能:
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动、
选项:
-i   :忽略搜索时的大小写
-N :显示每行的行号
/   : 字符串:向下搜索“字符串”的功能
?  : 字符串:向上搜索“字符串”的功能
n  : 重复前一个搜索(与 / 或 ? 有关)
N : 反向重复前一个搜索(与 / 或 ? 有关)
q  :   quit

已知,cat指令比较适合查看短文本或短代码,那如果是长文本或者是长代码,应该怎么办呢?

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cnt=1; while [ $cnt -le 10000 ]; do echo "hello lcc $cnt"; let cnt++; done
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
hello lcc 6
...
...
hello lcc 10000
[HJM@hjmlcc ~]$

//执行上述操作则会向显示器中打印10000行内容、



[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ cnt=1; while [ $cnt -le 10000 ]; do echo "hello lcc $cnt"; let cnt++; done > file.txt
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ 

//此时,执行上述指令,由于当前目录HJM下并不存在普通文件file.txt,所以系统会先自动创建一个名为
//file.txt的普通文件,然后并在该普通文件中写入10000行内容,如果在执行该指令之前,当前目录HJM
//下已经存在普通文件file.txt,那么系统会直接向该普通文件中写入10000行内容,且把原来普通文件
//file.txt中的内容覆盖掉、

//此时如果使用指令cat file.txt的话,由于该普通文件中的内容过多,而指令cat只适合查看短文本或短
//代码,所以再使用cat指令就不再合适、



[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ echo "Hello,lcc"   //把字符串中的内容显示(写)到显示器(文件)中、
Hello,lcc
[HJM@hjmlcc ~]$ 

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ echo "liuchenchen" > hello.txt  //把字符串中的内容写到普通文件hello.txt中,
//若当前目录下不存在该普通文件,则系统会先自动创建一个名为hello.txt的普通文件,再把字符串中的内
//容写入该普通文件中,若当前目录下已经存在了普通文件hello.txt,则本次操作会直接把原来的普通文件
//hello.txt中的内容覆盖掉,换成字符串中的内容、
[HJM@hjmlcc ~]$ ls
code1  code2  hello.txt
[HJM@hjmlcc ~]$ cat hello.txt
liuchenchen
[HJM@hjmlcc ~]$ 

//注意:在指令echo "liuchenchen" > hello.txt中,>,该符号叫做输出重定向,目前可以简单理解成
//本来应该写入显示器的内容,现在写入了普通文件中,这就叫做输出重定向、

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2
[HJM@hjmlcc ~]$ echo "liuchenchen" > hello.txt
[HJM@hjmlcc ~]$ ls
code1  code2  hello.txt
[HJM@hjmlcc ~]$ cat hello.txt
liuchenchen
[HJM@hjmlcc ~]$ echo "huijunming" > hello.txt
[HJM@hjmlcc ~]$ ls
code1  code2  hello.txt
[HJM@hjmlcc ~]$ cat hello.txt
huijunming           //注意:输出重定向会清除原始普通文件中的内容,进行重新写入、
[HJM@hjmlcc ~]$ echo "liuchenchen" >> hello.txt
[HJM@hjmlcc ~]$ cat hello.txt    //此处的>>称之为追加重定向,不会清空原始普通文件中的内容,
//而是会在原始普通文件中的内容后面进行新增式的写入、
huijunming
liuchenchen
[HJM@hjmlcc ~]$ 



[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cat   //只输入指令cat,默认会从键盘(标准输入)读取,此处把键盘也当做文件,即:
                      //Linux系统下,一切皆文件、
lcc   //输入
lcc   //输出
hjm   //输入
hjm   //输出

//ctrl+c退出cat指令,ctrl+c是万能的,但是此处不能使用ctrl+z用来退出cat指令,ctrl+z表示暂停
//并不是终止:
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cat
^Z                 //不小心输入了ctrl+z,代表暂停、
[1]+  Stopped                 cat
[HJM@hjmlcc ~]$ fg 1   //删除暂停,根据序号、
cat  //自动启动cat指令、
AAA   
AAA



[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cat
^Z
[1]+  Stopped                 cat
[HJM@hjmlcc ~]$ cat   //手动启动cat指令、
BBB
BBB
^Z
[2]+  Stopped                 cat
[HJM@hjmlcc ~]$ cat
CCC
CCC
^C                   //退出cat指令、 
[HJM@hjmlcc ~]$ jobs  //查看存在几个暂停,
[1]-  Stopped                 cat
[2]+  Stopped                 cat
[HJM@hjmlcc ~]$ fg 1
cat
^C
[HJM@hjmlcc ~]$ fg 2    //编号1和2均成为任务编号、
cat
^C
[HJM@hjmlcc ~]$ jobs   //此时所有的暂停均被删除、
[HJM@hjmlcc ~]$ 





[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  hello.txt
[HJM@hjmlcc ~]$ cat hello.txt
huijunming
liuchenchen
[HJM@hjmlcc ~]$ cat < hello.txt   //代表从普通文件hello.txt中读取,<代表输入重定向,简单理解为
//本来应该从键盘(标准输入)文件中读取数据,现改为从指定的普通文件hello.txt中读取、
huijunming
liuchenchen
[HJM@hjmlcc ~]$
 
//上述两个指令可以达到相同的效果,


//Linux系统下,一切皆文件:
//如: 键盘,显示器,显卡,网卡,磁盘,鼠标等,均可看成普通文件,这些设备都叫做外设,在操作系统上,不能把内存和CPU看做普通
//文件,所有的代码都是由CPU完成的,一般来说,除了CPU和内存,其他设备基本都是外设、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ wc -l file.txt   //统计一下普通文件file.txt中有多少行内容、
10000 file.txt
[HJM@hjmlcc ~]$ 

//cat指令不适合查看长代码或长文本、

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ more file.txt
//开始
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
hello lcc 6
hello lcc 7
....
....
hello lcc 23
hello lcc 24
hello lcc 25
hello lcc 26
hello lcc 27
hello lcc 28
hello lcc 29 //结束显示,占满一屏,再敲回车才会继续向下显示、
--More--(0%)
//输入q退出more指令,其次,ctrl+c也可以退出、

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ more file.txt
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
...
...
hello lcc 25
hello lcc 26
hello lcc 27
hello lcc 28
hello lcc 29
/100         //删除--More--(0%),输入/100,敲回车直接跳转到第100行,可以再输入q退出more指令、
//若不小心输入了dd,点删除会出现^H,如:/dd^H^H^H ,此时ctrl+del,便可删除,或者敲Esc,便可以重新
//输入、
...skipping
hello lcc 98
hello lcc 99
hello lcc 100
hello lcc 101
hello lcc 102
....
....
hello lcc 116
hello lcc 117
hello lcc 118
hello lcc 119
hello lcc 120
hello lcc 121
hello lcc 122
hello lcc 123
hello lcc 124
hello lcc 125
--More--(1%)
//输入q退出more指令,其次,ctrl+c也可以退出、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ less file.txt
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
...
...
hello lcc 22
hello lcc 23
hello lcc 24
hello lcc 25
hello lcc 26
hello lcc 27
hello lcc 28
hello lcc 29  //结束显示,占满一屏、
file.txt  //此时再敲回车,然后按上(k)便可往上查阅,按下(j)便可往下查阅,即less指令支持长文本或长代码的
//前翻和后翻,接着,可以输入q退出less指令,但不可以使用ctrl+c退出,在长文本和长代码中比较推荐使用
//less指令,不推荐使用more命令、



//more和less命令,尤其是less指令的功能:可以帮助我们进行日志查看、

[root@hjmlcc ~]# pwd
/root
[root@hjmlcc ~]# cat /var/log/messages    //必须在root用户下执行本次操作,加载完之后直接到达
//[root@hjmlcc ~]#,或者在加载中直接ctrl+c到达[root@hjmlcc ~]#、
//注意:若此时不是root用户,可以输入指令 sudo cat /var/log/messages ,但是大概率会报错,在后期
//再进行阐述,sudo的目的是为了提升权限,使得当前用户HJM以root用户的身份进行操作,由于此处用的是
//cat指令,不合适,所以在root用户下可以执行:less /var/log/messages、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ more -5 file.txt   ,more -n file.txt,只显示普通文件中的前n行、
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
--More--(0%)

3.12、head 指令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示普通文件的开头至标准输出中,而 tail 就是看普通文件的结尾、
语法: head [参数]... [文件]... 
功能:
head 用来显示普通文件的开头至标准输出中,默认head命令打印其相应文件的开头10行、 
选项:
-n<行数>:显示的行数、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ ll
total 156
drwxrwxr-x 2 HJM HJM   4096 Oct  3 15:28 code1
drwxrwxr-x 4 HJM HJM   4096 Oct  3 11:40 code2
-rw-rw-r-- 1 HJM HJM 148894 Oct  3 20:59 file.txt
[HJM@hjmlcc ~]$ head file.txt  //只提取普通文件file.txt的文本头,即只提出来普通文件file.txt的
//前10行内容,等价于指令: head -10 file.txt ,当只执行指令:head file.txt,默认只提取普通文件的
//前10行、
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
hello lcc 6
hello lcc 7
hello lcc 8
hello lcc 9
hello lcc 10
[HJM@hjmlcc ~]$ 


[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ head -15 file.txt
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
hello lcc 6
hello lcc 7
hello lcc 8
hello lcc 9
hello lcc 10
hello lcc 11
hello lcc 12
hello lcc 13
hello lcc 14
hello lcc 15
[HJM@hjmlcc ~]$ 

3.13、tail 指令

    tail 命令从指定点开始将文件写到标准输出,使用tail命令的 -f 选项可以方便的查阅正在改变的日志文件,tail - f fifilename会把fifilename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容、
语法: tail[必要参数][选择参数][文件] 
功能 : 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件、
选项:
-f    循环读取、         -n   显示行数、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ tail file.txt
//只提取普通文件file.txt的文本末,即只提出来普通文件file.txt的
//后10行内容,等价于指令: tail -10 file.txt ,当只执行指令:tail file.txt,默认只提取普通文件的
//后10行、
hello lcc 9991
hello lcc 9992
hello lcc 9993
hello lcc 9994
hello lcc 9995
hello lcc 9996
hello lcc 9997
hello lcc 9998
hello lcc 9999
hello lcc 10000
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ tail -20 file.txt
hello lcc 9981
hello lcc 9982
hello lcc 9983
hello lcc 9984
hello lcc 9985
hello lcc 9986
hello lcc 9987
hello lcc 9988
hello lcc 9989
hello lcc 9990
hello lcc 9991
hello lcc 9992
hello lcc 9993
hello lcc 9994
hello lcc 9995
hello lcc 9996
hello lcc 9997
hello lcc 9998
hello lcc 9999
hello lcc 10000
[HJM@hjmlcc ~]$ 

拓展:

如何查看普通文件 file.txt 中的 [3000,3020] 行内容?

方法一(临时普通文件法):

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ head -3020 file.txt
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
...
...
hello lcc 3017
hello lcc 3018
hello lcc 3019
hello lcc 3020
[HJM@hjmlcc ~]$ head -3020 file.txt > temp.txt   //临时的普通文件temp.txt,输出重定向、
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt  temp.txt
[HJM@hjmlcc ~]$ cat temp.txt
hello lcc 1
hello lcc 2
hello lcc 3
hello lcc 4
hello lcc 5
hello lcc 6
hello lcc 7
...
...
hello lcc 3017
hello lcc 3018
hello lcc 3019
hello lcc 3020
[HJM@hjmlcc ~]$ tail -21 temp.txt
hello lcc 3000
hello lcc 3001
hello lcc 3002
hello lcc 3003
hello lcc 3004
hello lcc 3005
hello lcc 3006
hello lcc 3007
hello lcc 3008
hello lcc 3009
hello lcc 3010
hello lcc 3011
hello lcc 3012
hello lcc 3013
hello lcc 3014
hello lcc 3015
hello lcc 3016
hello lcc 3017
hello lcc 3018
hello lcc 3019
hello lcc 3020
[HJM@hjmlcc ~]$ 

方法二(管道法):

 

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ head -3020 file.txt | tail -21   //管道法,其中 | 代表管道,用来传输数据资源
//在上述指令中,head -3020 file.txt 代表的是数据的放入,运行结果不写入到显示器中,而是写入到管道
//中,tail -21代表数据的取出,它从管道里把放入的数据按照一定的条件写到显示器中,管道的具体实现原
//理在后期会进行阐述,此处只需要会使用即可、
hello lcc 3000
hello lcc 3001
hello lcc 3002
hello lcc 3003
hello lcc 3004
hello lcc 3005
hello lcc 3006
hello lcc 3007
hello lcc 3008
hello lcc 3009
hello lcc 3010
hello lcc 3011
hello lcc 3012
hello lcc 3013
hello lcc 3014
hello lcc 3015
hello lcc 3016
hello lcc 3017
hello lcc 3018
hello lcc 3019
hello lcc 3020
[HJM@hjmlcc ~]$ 
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1  code2  file.txt
[HJM@hjmlcc ~]$ head -10 file.txt | tail -6
hello lcc 5
hello lcc 6
hello lcc 7
hello lcc 8
hello lcc 9
hello lcc 10
[HJM@hjmlcc ~]$ head -10 file.txt | tail -6 | head -2
hello lcc 5
hello lcc 6
[HJM@hjmlcc ~]$ head -10 file.txt | tail -6 | head -2 | tail -1  
               //级联多个命令来完成流水线式的数据处理工作,这就是管道的应用、
hello lcc 6
[HJM@hjmlcc ~]$ 

相关文章:

  • 基于强化学习PPO(Proximal Policy Optimization)算法的无人机姿态控制系统
  • HDFS源码分析——NameNode启动流程
  • 【Day20】LeetCode算法题【1784. 检查二进制字符串字段】【14. 最长公共前缀】
  • 状态反馈镇定之非线性系统反馈线性化
  • 【408计算机组成原理】—加减运算和溢出判断(八)
  • vue3 setup的四点注意
  • Python 输入与输出
  • 基于JAVA校园租赁系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署
  • 【Linux初阶】从0到1带你用云服务器搭建Linux环境
  • Kubernetes技术与架构-10
  • 基于微信小程序云开(统计学生信息并导出excel)3.0版
  • 【JAVAEE框架】浅谈 AOP 及代码实现
  • React获取DOM和获取组件实例的方式
  • [Spark、hadoop]spark Streaming的核心DStream
  • 【Vue】父子组件通信
  • C# 免费离线人脸识别 2.0 Demo
  • docker-consul
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • httpie使用详解
  • k个最大的数及变种小结
  • Less 日常用法
  • overflow: hidden IE7无效
  • Python学习之路13-记分
  • React-flux杂记
  • Vim Clutch | 面向脚踏板编程……
  • Web Storage相关
  • 阿里云购买磁盘后挂载
  • 阿里云应用高可用服务公测发布
  • 从零开始在ubuntu上搭建node开发环境
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 如何利用MongoDB打造TOP榜小程序
  • 温故知新之javascript面向对象
  • 学习笔记:对象,原型和继承(1)
  • 异常机制详解
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 06-01 点餐小程序前台界面搭建
  • 函数计算新功能-----支持C#函数
  • 湖北分布式智能数据采集方法有哪些?
  • ​学习一下,什么是预包装食品?​
  • !$boo在php中什么意思,php前戏
  • #、%和$符号在OGNL表达式中经常出现
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)Elastix图像配准:3D图像
  • (ibm)Java 语言的 XPath API
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (篇九)MySQL常用内置函数
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)WLAN定义和基本架构转
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *p++,*(p++),*++p,(*p)++区别?
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复