网站开发中心,贺州市城乡住房建设厅网站,企业门户网站设计论文,自己可以做招聘的网站吗文章目录 一、通配符 *二、man指令三、cp指令1.先给一个文件里面写入数据2. cp指令拷贝普通文件3.cp指令拷贝文件目录4.常用的选项总结 四、mv指令1.mv命令简介2.使用 五、一些插曲1.一些注意事项2.指令的本质3.再谈输出重定向4.追加重定向5.输入重定向 六、cat指令七、more指令… 文章目录 一、通配符 *二、man指令三、cp指令1.先给一个文件里面写入数据2. cp指令拷贝普通文件3.cp指令拷贝文件目录4.常用的选项总结 四、mv指令1.mv命令简介2.使用 五、一些插曲1.一些注意事项2.指令的本质3.再谈输出重定向4.追加重定向5.输入重定向 六、cat指令七、more指令1.cat缺陷2.more指令 八、less指令1.简介2.使用3、为什么要看大文本呢 九、head指令十、tail指令十一、如何提取中间的某一段区间行数的文本 一、通配符 *
我们先在Linux上创建一些普通文件 如果我们 然后我们现在来使用一下这个通配符。如果我们直接使用ls \* 操作那么其实和直接ls没有什么区别 如果说我们使用ls *.c这样的话就会自动将.c为后缀的文件全部给筛选出来 如果使用ls test.\*那么他就会把所有前面是test.的文件给拿出来 这样的话如果我们要删除一部分文件的话我们就可以使用通配符了 我们可以注意到我们当前是个普通用户当我们删除东西的时候并不会询问我们只有root账号才会去询问我们那么如果我们想要让普通用户也被询问我们就可以在rm后面加上 -i
二、man指令
Linux的命令有很多参数我们不可能全记住我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项] 命令
比如说我们按住man ls指令就可以罗列出该指令的手册
我们想要离开的话按住q就可以离开了
也可试一下man pwd指令看看它的解释
我们也可以man rm甚至于我们可以man man问它自己是干啥的 在这里我们可以看到它有九个手册 第一个手册是查询当前Linux基本命令 第二个手册是查询系统调用接口 第三个手册一般用于查询C语言的接口 后面几个手册我们暂时不关心
比如我们可以直接man printf查询这个函数 而我们发现printf除了在C语言中是一个函数外它在Linux下还是一个指令 而这个指令和我们之前C语言的指令没半毛钱关系
而如果我们需要查C语言中的printf接口的话我们就得查3号手册了这里需要注意了我们可能需要先下载一个东西yum install man-pages 注意一定要用root账号然后会让你选择y/d/n选择y即可
然后我们就可以正常使用这条指令了man 3 printf 如果我们想使用2号手册的话我们可以先随便选一个接口进行系统调用比如man 2 fork
man手册除了指定编号以外也可以不指定编号这样的话就是按照手册的编号一个一个往下找了。如man printf,man fork,man ls等等
这也就解释了为什么直接man printf会显示一号手册的。因为它默认先按手册的编号去寻找多个手册同时存在优先前面的手册。
三、cp指令
1.先给一个文件里面写入数据
cp是一个拷贝指令我们可以先创建一个普通文件 然后Linux中还有一条指令echo 一些字符串这条指令会将一些字符原封不动的打印到屏幕上去 看上去这个指令很无聊没有什么用但其实如果我们将这个字符串后面加一个 文件名在这里就是echo hello Linux test.txt 就会发现不在屏幕上打印了。而且我们的文件的字节数由0上升到了12也就是说这个字符串写到了这个文件中了 接下来我们可以使用cat 文件名指令来进行打印文件中的东西也就是cat test.txt指令
我们继续回到刚刚的话题我们使用以后出现了两件事情一是屏幕上不在打印原来的字符串了没有在显示屏是显示二是 而是这个数据被写入了文件中我们将这件事称作输出重定向输出重定向的含义就是本来应该显示到显示器上的内容打印到文件中
2. cp指令拷贝普通文件
我们上面做了这么一大堆操作目的就是为了给一个文件里面写入数据 cp指令的基本用法就是cp src dest也就将src文件的数据拷贝给dest文件,这里的顺序与C语言的是相反的 如下所示我们将test.txt的数据拷贝给test_backup.txt 这里就是同一个路径不同名的文件之间的拷贝
如果我们不小心写错了自己拷贝自己这是不允许的。会显示错误 也就是说拷贝的文件源头和目的不能一样
如果我们想将文件拷贝到上级目录也是可以的只需要将文件的路径写对即可绝对或者相对路径都是可以的 常识告诉我们同一个目录下不可以有两个同名文件但是不同目录下是可以的
然后我们上级目录下的test.txt已经完成了任务我们现在就可以删除它了直接使用rm ../test.txt即可 3.cp指令拷贝文件目录
我们有时候也需要将一个目录的文件全部拷贝到另外一个地方那么这该怎么办呢
如下所示我们已经创建好了一个目录d1/d2/d3即一个目录里面也有很多的目录 如下图所示当我们直接拷贝的时候我们发现不可以直接拷贝 这其实是因为里面有很多的文件所以我们拷贝的时候要加上-r代表递归式拷贝 我们还可以通过去查看test.txt文件的内容来判断是不是我们所期望的那样我们发现果然如此 为了方便后序讨论我们先把我们拷贝的这个目录给删掉 我们可以在观察一下如果我们加上-i选项的话它会询问我们是否拷贝这个文件不过在这里并没有询问我们。 下面由于刚刚我们已经拷贝过一次2号文件了那个文件已经存在当我们想要进行拷贝也就是覆盖的时候我们使用-i就会进行询问了 不过我们一般也会使用-f选项来强制拷贝 如果我们使用-if指令的话那么其实它会选择听询问的那个因为这样安全系数更高 4.常用的选项总结
对于cp指令事实上我们最常使用的就是-r选项和-f选项 cp指令用于复制文件或目录如同时指定两个以上的文件或目录且最后的目的地是一个已经存在的目录则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录而最后的目的地并非一个已存在的目录则会出现错误信息 -f 或 --force 强行复制文件或目录 不论目的文件或目录是否已经存在 -i 或 --interactive 覆盖文件之前先询问用户 -r递归处理将指定目录下的文件与子目录一并处理。若源文件或目录的形态不属于目录或符号链接则一律视为普通文件处理 -R 或 --recursive递归处理将指定目录下的文件及子目录一并处理 四、mv指令
1.mv命令简介 mv命令是move的缩写可以用来移动文件或者将文件改名move (rename) files是Linux系统下常用的命令经常用来备份文件或者目录。 语法: mv [选项] 源文件或目录 目标文件或目录 功能: 视mv命令中第二个参数类型的不同是目标文件还是目标目录mv命令将文件重命名或将其移至一个新的目录中。 当第二个参数类型是文件时mv命令完成文件重命名此时源文件只能有一个也可以是源目录名它将所给的源文件或目录重命名为给定的目标文件名。 当第二个参数是已存在的目录名称时源文件或目录参数可以有多个mv命令将各参数指定的源文件均移至目标目录中。 常用选项 -f force 强制的意思如果目标文件已经存在不会询问而直接覆盖 -i 若目标文件 (destination) 已经存在时就会询问是否覆盖 2.使用
如下所示我们使用mv命令使得一个文件改名 然后我们可以进行剪切 然后我们在可以剪切回来 而且还可以剪切并重命名 那么到底何时剪切何时重命名呢 如果mv的第二个参数是纯目录形式的那么就是单纯的剪切 如果mv的第二个参数是目录后面带一个名字那么就是剪贴并重命名 其实我们也可理解所有的mv行为叫做剪切并重命名
只不过如果未来没有指定名字的时候就使用原来的名字。
五、一些插曲
1.一些注意事项 一些注意事项 ctrl C 是终止因为程序或者指令异常导致我们无法进行指令输入无名可以直接无脑ctrl C 由于在linux系统中本身没有垃圾桶导致了rm操作是很危险的而垃圾桶的本质其实就是一个文件所以我们可以通过某些方式让rm操作变成mv操作也就是说将文件移入一个垃圾桶里面去从而可以模拟一个垃圾桶 2.指令的本质
还有一点是关于我们应该如何看待指令 其实指令和可执行程序是都是可以被执行的所以指令就是可执行程序 执行指令之前我们应该先做什么 应该先在系统中查找对应的指令因为我们输入一个非法指令的时候就会提示没有找到该指令。 所以指令一定在系统中的某个位置存在的 由于指令就是可执行程序而且指令一定在系统中的某个位置存在的那么究竟存在在哪里呢
其实指令是存在在/usr/bin路径下的
当我们输入指令ls /usr/bin以后我们可以直接观察到 我们也可以通过以下方式去查看对应的指令 所以我们得出一个结论指令是在系统中特定的路径下存在的一定是某种可执行程序
有了上面的思路当我们写了一段代码以后并生成了可执行程序以后我们可以对其进行重命名为一个关键字然后将他拷贝到/usr/bin/路径下。这样的话我们就可以直接使用这个关键字去运行对应的功能了这样过程其实就是软件的安装
如下所示下面的a.out就是一个可执行程序不过它其实就是将.c程序编译以后形成的 但是我们一般最好不要这样搞虽然它是可以的。
我们也可以使用rm指令对其指定目录删除这条指令这就是卸载
所以我们所用的一切指令都是别人写的可执行程序放在了指定的目录中仅此而已
即便是我们所熟悉的windows系统也是一样的这些快捷方式就可以看作是指令实际的这些都是放在了一个固定的位置都是可执行程序
指令的本质就是文件可执行文件罢了就是安装到了系统的某种路径下
不过这里还有一个问题下面的指令比如ll可以直接使用但为什么我们找不到这个呢 我们可以使用which指令这个which指令是查看某条指令的路径 在这里我们可以看到ll其实就是等于ls -l的也就是说ll是ls -l的别名后面的color是一个配色方案就比如在linux中各种指令有一些颜色这里我们不用管他
这里使用重命名的是使用alias完成的。
如下所示就是我们对一个指令取别名 当我们重命名以后我们也可以对他使用which了 对于同一个名字我们可以再给他来一次重命名如下所示我们给_cmd一个空指令那么执行它就什么也不发生了 那么如果去将这个重命名给不让他重命名了呢其实我们可以直接关闭Xshell就可以了也就是说这里只是临时的重命名当我们再度打开Xshell的时候以前的重命名就不见了
3.再谈输出重定向
Linux下一切皆文件比如显示器键盘普通文件… 对于显示器它只有fwrite写方法但是没有读方法,或者我们可以认为它的读方法为空。我们平时scanf在屏幕上看到的都是键盘读取的只不过回显到了屏幕上 对于键盘它只有fread读方法但是没有写方法或者我们认为它的写方法为空。 对于普通文件它既可以读取也可以写入。
总而言之就是具有读写方法的就是文件
既然如此了那么下面指令的说法我们也可以称之为将这个字符串写入显示器上去 而向下面这种行为就是将本应该写入显示器上的字符串写入到了一个文件中这种方法我们称之为输出重定向 像下面这个cat就相当于将test2.txt的内容写到了显示器上ll就相当于将文件的属性写到了显示器上 还有一点我们需要关心的就是echo看起来好像是直接覆盖原来的内容
其实它里面做的是两件事情1. 清空文件 2. 写入新内容这也是输出重定向的特点 我们也可以这样操作直接输出重定向什么也不写那么就是将test2给清空了 4.追加重定向
由于输出重定向会将原来的文件给清空但是有时候我们不想去清空有办法吗当然有
那就是连续的两个注意不可以分开他们是一起的 类似于之前C语言的时候如果打开文件的时候我们可以使用a方法这个a其实全称是append
如果是echo的话会换行的。如果不想要换行的话我们可以使用printf 关于cat指令还有一点注意的是如果我们直接输入cat后面什么都不跟那么它就是默认从键盘中读取也就是说我们输入什么他就打印什么 注意对于输出重定向和追加重定向如果后面的文件不存在会自动创建一个文件所以当我们创建一个新文件的时候不一定非要touch才可以我们也可以用重定向来创建新文件
5.输入重定向
如下所示对于输入也有重定向它的符号是小于符号。意思是本来应该从键盘文件中读取现在不用从键盘读取从指定的文件读取 不过这个输入重定向看起来似乎没什么用。因为cat本身直接加文件名也可以打印文件的内容。
在这里我们暂时理解为它两没有什么区别。但是他们还是存在一些区别后序在谈
六、cat指令 语法cat [选项][文件] 功能 查看目标文件的内容 常用选项 -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 我们来应用一下
如下所示是直接cat可以打印文件的内容 我们可以加上-n选项来看一下即对每一行进行编号 如下所示是对于-s选项的应用即对于连续的空行不会进行打印 对于-b选项它不会对空行进行编号下面是它与-n选项的对比 如果两个都带那么它会选择听-b的 七、more指令
1.cat缺陷
对于cat我们前面输出的都是一些比较小的文件那么如果遇到大的文件它还可以吗
我们肯定不能自己一个一个敲进去所以我们使用如下的脚本
cnt1;while [ $cnt -le 10000 ];do echo Hello world $cnt;let cnt;done;最终我们可以看到在屏幕上打印了1w行文本 有了这样的效果现在我们不让他打印到屏幕上而是重定向到一个文件中 如果我们直接cat的话会直接打印出来1w行 这时候问题来了如果我们想看第1052行那么是很难翻到的。
所以说cat不适合看大文本cat适合看小文本
2.more指令 语法more [选项][文件] 功能more命令功能类似 cat 常用选项 -n 对输出的所有行编号 q 退出more 如下所示我们直接输入指令
more test.txt那么就会是下面的这样子只会打印出一个屏幕然后不在打印 当我们想往下继续看的时候我们直接按住回车它就会自顶向下自动往下翻 当我们想要退出的时候直接按住q即可
我们还可以对more指令带上一个数字选项代表着到第多少行停止如下面的就是到第500行停止
more -500 test.txt不过对于more存在的一个问题就是只能向下翻
但是我们可以使用/9999来直接定位到对应的位置 其实实践中more命令使用的并不是很多
八、less指令
1.简介 less 工具也是对文件或其它输出进行分页显示的工具应该说是linux正统查看文件内容的工具功能极强大。 less 的用法比起 more 更加的有弹性。在 more 的时候我们并没有办法向前面翻 只能往后面看 但若使用了 less 时就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件更容易用来查看一个文件的内容 除此之外在 less 里头可以拥有更多的搜索功能不止可以向下搜也可以向上搜 语法 less [参数] 文件 功能 less与more类似但使用less可以随意浏览文件而more仅能向前移动却不能向后移动而且less在查看之前 不会加载整个文件。 选项 -i 忽略搜索时的大小写 -N 显示每行的行号 /字符串向下搜索“字符串”的功能 ?字符串向上搜索“字符串”的功能 n重复前一个搜索与 / 或 ? 有关 N反向重复前一个搜索与 / 或 ? 有关 q:quit 2.使用
less指令相比于more指令要更好一些
它与more一致的是会先打印出一页但是可以使用上下来进行翻页 其次它也支持使用/n直接定位但是我们不可以像more一样直接less -n进行定位 不过这个/n,这样的仅仅是后向搜索。当我们再度输入/500的时候找到的是1500 为了能够前向搜索我们可以使用n来进行操作 当我们要退出的时候可以用q来退出ctrlC是无法退出的
3、为什么要看大文本呢
那么现在的问题就是为什么要看一个比较大的文本呢什么都属于大文本呢 这是因为我们在项目中的代码量很大而我们有时候是不喜欢使用记事本等打开 其次就是日志信息我们使用less和more等打开。 这些日志和项目等等都属于大文本 九、head指令 head 与 tail 就像它的名字一样的浅显易懂它是用来显示开头或结尾某个数量的文字区块head 用来显示档案的开头至标准输出中而 tail 想当然的就是看档案的结尾。 语法 head [参数]… [文件]… 功能 head 用来显示档案的开头至标准输出中默认head命令打印其相应文件的开头10行。 选项 -n行数 显示的行数 下面是使用 十、tail指令 tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 语法 tail[必要参数][选择参数][文件] 功能 用于显示指定文件末尾内容不指定文件时作为输入信息进行处理。常用查看日志文件 选项: -f 循环读取 -n行数 显示行数 十一、如何提取中间的某一段区间行数的文本
我们有时候是需要提取出中间的某一段信息。那么该如何提取呢我们可以这样做
假设我们要提取1000行到1020行的信息
因为head可以提取前n行所以我们可以先提取前1020行写入一个文件中 然后我们可以利用tail指令将最后的21行写入一个文件中 可是上面的方法会存在一个问题那就是会创建一个临时文件。
如果我们不想要创建这个临时文件又该如何做呢
我们可以使用这样的方法来完成 中间的这个|其实是一种符号后面会被“系统”解释成为管道文件
这个管道文件是一种内存级别的因为所有的数据资源要被修改一定要先加载到内存中
那么什么是管道呢
就好比现实生活的管子一定有一个入口和一个出口
这个入口就是|前面的数据经过这个管道以后就输出了后面的这个21行
还有下面的例子 还可以继续加上管道其中wc -l指令是显示打印的行数 这就很像流水线所以管道通常支持流水线工作。一步一步的对数据进行加工。