linux 基础(3)基本文件操作

目录的基本操作

在 linux 文件系统里,以斜杠 / 开头的路径是绝对路径,从根目录开始寻找;其他的路径则都是相对路径,从当前目录(working directory)开始寻找。

相对目录中常用的符号:

符号 含义
~ 当前用户的主目录
~username 某个用户的主目录
. 当前目录
.. 当前目录的上一级目录(对于根目录/来说,上一目录还是自己)
- 前一个工作目录

常用的目录命令:

  • cd:change directory。切换工作目录,没有参数就回到~
  • pwd:print working directory。打印当前工作目录(绝对路径),控制台提示往往已经包括了当前目录。
  • mkdir:make directory。创建新目录。-p 选项可以递归创建一串目录。如mkdir -p a/b/c
  • rmdir:remove directory。删除空目录。有内容的目录需要用 rm 递归删除。同理可以用 -p 递归删除。

文件的基本操作

ls 命令

ls 意为 list,列出目录里所有文件。ls 是最最常用的指令,没有之一,所以即使将它的常用选项牢记也是值得的。

常用参数 含义
-a 列出隐藏文件。linux 下隐藏文件即 .开头的文件。
-l 列出文件的所有者,群组,权限,时间等信息,非常重要
-d 只列出目录本身,不列文件
-f 直接列出结果,而不是默认对文件名排序
-F 对每一项附加结构说明,比如目录在末尾添加/,可执行文件在末尾添加*
-h 显示文件大小的单位
-i 列出inode号码
-R 递归显示,子目录的目录也会显示
--color 设为为always后,文件名也会根据结构着色,目录、可执行文件等都有各自的颜色
--time 设定文件的时间,显示哪一种时间

复制,移动和删除

复制(copy),移动(move)和删除(remove)是最常见的文件操作。

cp a.cpp des # 若des是个目录,则复制到des下
cp a.cpp des # 若des本不存在,则复制成为des,若des是文件则尝试覆盖
cp a.cpp b.cpp c.cpp des # 将三个文件复制到des下,此时des必须是目录
常用参数 含义
-f 强制复制。若有新文件将尝试强行删除覆盖
-i 交互模式。已有文件将询问是否覆盖
-r -R 递归复制,用于目录
-u 若目标文件比源文件旧或不存在才复制
--preserve=all 将文件的权限,所有者等等一并复制,而非默认的新建文件属性
-s 创建软链接
-l 创建硬链接
-d 复制链接文件本身,而不是默认的复制源文件

链接暂不介绍。

mv 移动指令的语法和参数与 cp 基本相似,不再介绍。mv a b还可以快速更改一个文件的文件名。

rm 则是删除指令。

rm a.cpp
rm b.cpp c.cpp # 删除多个文件

rm 的 -i 选项在每个文件被删除时都会弹出确认,root 在使用 rm 命令时默认 -i 以防止误操作。

注意:操作目录时一定要加上 -r, 否则无法执行!

在控制台中查看文件

能在控制台中直接输出文件内容的指令太多了,做简单的介绍。

  • cat:意为concatenate。直接将整个文件以文本输出。选项支持查看特殊字符,显示行号等。
  • tac:cat倒过来写,也会将文件一行一行倒着输出,用于查看结尾
  • more和less:将文档载入控制台,一页一页显示,支持滚动翻页,查询等,非常好用(其实就是 man 的页面)。less的功能比more更多。
  • head和tail:head -n 10 a.cpp可以直接取出前10行,相反 tail 只取后面 10 行。
  • od:以二进制方式打开文件,并以文本的形式呈现出来。

文件的修改时间

在 linux 里,每个文件拥有三个“修改时间”:

  • modification time(mtime):指文件内容上一次变更的时间。
  • status time (ctime): 指文件状态(权限、属性)上一次变更的时间。
  • access time (atime):指文件内容上一次被打开的时间。

默认情况下,ls -l显示的是 mtime,添加参数可以查看 atime 和 ctime。

touch 指令除了创建新文件以外,也可以修改文件的时间:

touch -d "2 days ago" a.cpp # 将 atime 和 mtime 修改为两天前,也可以添加参数只修改一个

如果用 cp 复制文件,默认情况下新文件被当做一个新生的文件,atime 和 mtime 就是当前的时间。当你加上完全复制的选项时,atime 和 mtime 将和源文件相同,但是 ctime 表示文件属性的变更,他仍然是新文件诞生的时间。touch 也不能更改 ctime,想更改他需要另找手段。

本文转载于网络 如有侵权请联系删除

相关文章

  • 前端代码层面优化的一些想法

    代码风格和变量命名问题1.过于依赖三元选择符{curTab===TABSTYPE.ORDERSONG?( <SongSheet/> ):curTab===TABSTYPE.PLAYSONG?( <PlayList/> ):curTab===TABSTYPE.SEARCHSONG?( <SearchsearchKey={searchKey}/> ):null}复制这样连续使用三元选择符并不利于理解,并且如果有更多的类型,会导致过长的三元判断,可以使用map替换:constrenderComponent={ [TABSTYPE.ORDERSONG]:<SongSheet/>, [TABSTYPE.PLAYSONG]:<PlayList/>, [TABSTYPE.SEARCHSONG]:<SearchsearchKey={searchKey}/>, }, returnrenderComponent[curTab];复制2.变量命名问题<div> { listA.map(item=>{

  • React中static defaultProps报错问题详解

    在react中可以定义默认props,使用es5时,可以使用getDefaultProps:varMyDemo=React.createClass({ getDefaultProps:function(){ return{ name:'demo' }; }, render:function(){ return<h1>Thisismy{this.props.name}</h1>; } }); ReactDOM.render( <MyDemo/>, document.getElementById('demo') );复制es6中使用staticdefaultProps(报错,需要使用static的解决方案见下面):classMyDemoextendsReact.Component{ constructor(props){ super(props); } //如果babel设置为es6的转码方式,会报错,因为定义静态属性不属于es6,而在es7的草案中。ES6的class中只有静态方法,没有静态属性。 static

  • Linux内核配置-ARP系列

    all为所有,defalut为默认,其他为接口自己的如果接口没填写,将会把defalut的值放接口上,实际生效的为all和接口中参数值较大的那个#arp_ignorearp_ignore的参数含义如下:定义了对目标地址为本机IP的ARP询问的不同应答模式。net.ipv4.conf.all.arp_ignore=1net.ipv4.conf.default.arp_ignore=1net.ipv4.conf.lo.arp_ignore=1net.ipv4.conf.eth0.arp_ignore=1net.ipv4.conf.eth1.arp_ignore=10-(默认值):回应任何网络接口(网卡)上对任何本机IP地址的arp查询请求。比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使eth0收到来自10.1.1.2这样地址发起的对10.1.1.1的arp查询也会给出正确的回应;而原本这个请求该是出现在eth1上,也该由eth1回应的。1-只回答目标IP地址是本机上来访网络接口(网卡)IP地址的ARP查询请求。比如eth0=192.168.0.1/2

  • 不提升性能也拿奖?Dynamic Copysets 降低数据丢失概率

    近日,由TiDB社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDBHackathon2020比赛圆满落幕。今年是TiDBHackathon第四次举办,参赛队伍规模创历届之最,共有45支来自全球各地的队伍报名,首次实现全球联动。经过2天时间的极限挑战,大赛涌现出不少令人激动的项目。为了让更多小伙伴了解这些参赛团队背后的故事,我们开启了TiDBHackathon2020优秀项目分享系列,本篇文章将介绍CNCF特别奖森海飞霞团队赛前幕后的精彩故事。想象一下你有一个10台的TiKV集群,有一天3块磁盘同时坏了,恰好有一组RaftGroup就在这3块盘上,你不会担心丢数据,因为10台机器的集群,同时坏3块磁盘的概率太小了。那么如果这是一个 5000 台的TiKV集群呢?对于一个分布式存储系统,使用多副本机制可以保证数据的安全性。然而,通常情况下,随着集群规模的增长,绝大部分的数据副本数并不会随之增长。久而久之,就会出现当集群规模成百上千时,挂掉的机器节点数等于或者大于数据的副本数(这个数字通常是3)的概率也会随之上升。对于一个3副本的集群,当集群发生3个节点宕机时,对于不同的调度算

  • Django 添加自定义命令

    使用Django开发,对pythonmanage.py***命令模式肯定不会陌生。比较常用的有runserver,migrate等!有时候会有这样的需求,为Django执行一些定时任务,比如通知搜索引擎,例如百度,提交网站的一些地址给他们,则可以通过为Django的manage.py添加自定义命令可以很容易的解决这个问题。所以我们就来讲讲如何自定义扩展manage命令。源码分析manage.py文件是通过django-adminstartprojectproject_name生成的。manage.py的源码 首先设置了settings文件其次执行了一个函数django.core.management.execute_from_command_line(sys.argv),这个函数传入了命令行参数sys.argv #!/usr/bin/envpythonimportosimportsysif__name__=="__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE","CIServ

  • 知识图谱可视化前奏之d3.js

    知识图谱可视化前奏之d3.js0.说在前面1.d3.js初识2.绘制完整的柱形图3.让图表动起来4.浅析Update、Enter、Exit5.交互式操作6.作者的话0.说在前面这两天一直在更机器学习及leetcode,今天来一篇知识图谱的核心知识,那就是数据可视化,可视化方面霸主地位的d3,从认识到绘图,你将学会d3基本操作以及前端可视化的套路。 让我们一起来感受d3的魅力吧!1.d3.js初识D3.js是一个用于根据数据操作文档的JavaScript库。D3可帮助您使用HTML,SVG和CSS将数据变为现实。D3强调Web标准,为您提供现代浏览器的全部功能,而无需将自己与专有框架联系起来,将强大的可视化组件和数据驱动方法结合到DOM操作中。d3.js引用<scriptsrc="https://d3js.org/d3.v5.min.js"charset="utf-8"></script> 复制选择器<P>HelloWorld1</P> <P>HelloWorld2</P> &

  • iOS求两个数组里的相同元素

    条件:对两个数组已经排好序一:NSArray*A=@[@1,@2,@3,@4,@5,@6,@7,@8,@9,@13]; NSArray*B=@[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12]; NSMutableArray*newA=[[NSMutableArrayalloc]initWithArray:A]; NSIntegerminB=[B[0]integerValue];//取出B数组中最小的值 for(inti=0;i<A.count;i++){ NSIntegerminA=[A[0]integerValue]; if(minA<minB){ [newAremoveObjectAtIndex:i]; }else{ break; } } NSMutableArray*realA=[[NSMutableArrayalloc]initWithArray:newA];//这里注意要重新构建一个新数组,表示最终的在范围内的数组. NSIntegermaxB=[B[B.count-1]integerValue];//取出B数组中最大的值 f

  • Android开发笔记(一百零五)社会化分享SDK

    社会化分享 社会化分享,指的是用户通过互联网这个媒介,把文本/图片/多媒体信息分享到该用户的交际圈,从而加快信息传播的行为。对于app来说,网络社区虽多,但用户量足够大的就那几个,所以app的社会化分享功能抓住几个大的圈子就够了,比如说QQ、微信、QQ空间、微信朋友圈、新浪微博、腾讯微博等等。下面是截止到2016年6月6日,根据应用宝官网的统计,主要社交app的下载次数: QQ:42亿次下载 微信:24亿次下载 QQ空间:12亿次下载 新浪微博:5.8亿次下载 腾讯微博:1.4亿次下载 除了社交app的分享,还有传统的信息传播途径,例如发短信、发邮件等等。另外,出于安全考虑或流量消耗,有的用户不希望直接分享多媒体信息,所以应当允许用户复制文本或链接,由用户自行决定分享形式。 系统自带的分享APP分享 社会化分享的sdk也不少,只是都比较臃肿,其实我们可以使用android自带的发送功能"android.intent.action.SEND",只要用户手机上安装了对应的app,即可简单并快速地完成分享动作。下面是几个常用分享对象的调用信息: 微信:包名为com

  • 【图说】2014微博流行词汇榜单:80阿姨爱“暖男” 90女孩爱“约吗”

    2014年即将过去,这一年里微博依旧是人们分享心情、获取信息的主要平台,而在繁杂的社交活动当中,无数流行词语诞生了。今天,新浪微博就通过大数据统计列出了2014年在微博中出镜率最高的20个流行词,这些词汇背后的故事也代表了中国网民一年的生活热点。 其中,“萌萌哒”以出镜5298万次的超高曝光率夺得榜首,“醉了”(5012万次)、“根本停不下来”(3196万次)紧随其后,位居二、三名。另外,“哪家强”、“约吗”、“小鲜肉”等等也纷纷入选。有意思的是,通过进一步的数据统计,浙江的女生最爱“暖男”,而“约吗”也更多出现在女性用户微博当中,倒是一向被认为只会用下半身思考的男性最多提及了“APEC蓝”,凸显了对于国计民生问题的关心。一句话概括,小鲜肉萌萌哒根本停不下来;任性土豪喊着买买买,手拿辣条问约吗?如果能跟暖男吃炸鸡和啤酒,场面也是让人醉了。以下是年度微博流行词完整榜单,你说过哪些?请猛戳图!(数据来源:微博数据中心data.weibo.com)

  • 关关的刷题日记78 – Leetcode 69. Sqrt(x)

    关关的刷题日记78–Leetcode69.Sqrt(x)题目Implementintsqrt(intx).Computeandreturnthesquarerootofx.xisguaranteedtobeanon-negativeinteger.Example1:Input:4Output:2Example2:Input:8Output:2Explanation:Thesquarerootof8is2.82842...,andsincewewanttoreturnaninteger,thedecimalpartwillbetruncated.题目让我们求x的平方根,如果有小数部分,只取整数部分。方法1:二分查找求平方根,题目设置long的目的是为了防止越界。classSolution{ public: intmySqrt(intx){ longl=1,r=x,mid; while(l<=r) { mid=(l+r)/2; if(mid*mid>x) r=mid-1; elseif(mid*mid<x) l=mid+1; else returnmid; } retur

  • solr安装配置

    环境介绍 solr6.5.1 tomcat8 jdk1.8 一、下载solr安装包 下载地址:http://www.apache.org/dyn/closer.lua/lucene/solr 二、安装solr 1、将下载下来的solr-6.5.1.zip解压D:\httpserver\solr-6.5.1 2、在D:\httpserver\solr\下新建文件夹solr_home 3、在solr_home中新建文件夹solr_core 4、从solr-6.5.1\server\solr下的文件copy到solr_home中 5、将solr-6.5.1\server\solr\configsets\basic_configs下的conf文件夹copy到之前新建的solr_core中 三、solr应用部署到tomcat下1、将solr-6.5.1\server\solr-webapp中的webapp复制到tomcat的webapp下,并将web名字修改为solr 2、添加需要的扩展依赖包 从solr-6.5.1\server\lib\ext下将所有的jar包复制到to

  • Flask一步步搭建web应用

    專欄❈夏轩,Python中文社区专栏作者。 博客:http://blog.csdn.net/u012734441❈1.flask介绍2.所需工具和环境3.搭建flaskApp4.具体程序编写5.综上1.flask介绍flask是一款十分轻量级的pythonWeb应用框架,也被认为是一种微框架,我最初喜欢使用是因为flask中提供的那一套使用的注解跟我当时在公司中使用java开发的系统,里面使用的restful的框架jersey的用法比较像,都十分方便,简洁,等到我熟悉使用flask框架之后,就挺喜欢这种微框架了,使用方便,配置简单,也可以进行克重扩展,满足各自的需求,其中在这些里面还有一个flaskrestplus,将swagger工具整合到python里面,在进行相应测试的时候十分方便,这个放到下一期再讲。 2.所需工具和环境这一次运行flask需要使用的flask环境就不在物理机上安装运行了,直接使用上一篇讲述的virtualenv来安装flask,写出来的appdemo都是依赖在虚拟环境运行的,以下是我们这次演示所需要的python工具和相应包。pycharm2016virtua

  • Encode Explorer 单文件PHP目录列表源码

    EncodeExplorer是一款单文件PHP目录列表源码,能够列出同级目录下的所有文件以及文件夹,便于浏览以及下载。EncodeExplorer支持设置登录名及密码,并且附带了简单的上传功能。登陆界面采用了页面内输入形式,相比于弹出窗口登录更加美观,也便于浏览器记住密码。登陆后的主界面,支持创建文件夹以及删除文件,支持显示中文文件名。支持按文件名、大小、修改时间排序,但遗憾的是不支持搜索。不过 EncodeExplorer并没有分页功能,可以直接使用浏览器来搜索。源码下载使用方法:直接放置在想要启用目录列表的文件夹即可。下面对于部分设置进行解释:$_CONFIG[‘thumbnails’]=true; 图形文件在鼠标悬停时是否显示缩略图$_CONFIG[‘hidden_files’]=array(“.ftpquota”,“index.php”); 需要隐藏的文件类型$_CONFIG[‘require_login’]=false; 是否需要登录,默认否$_CONFIG[‘users’]=array(); 设置登录方式可分别设置普通用户以及管理员:array(array(“usernam

  • ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入

    原文:Dependencyinjectionintoviews 作者:SteveSmith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NETCore支持在视图中使用依赖注入。这将有助于提供视图专用的服务,比如本地化或者仅用于填充视图元素的数据。你应该尽量保持控制器和视图间的关注点分离(separationofconcerns)。你的视图所显示的大部分数据应该从控制器传入。 章节: 一个简单的示例 填充查找数据 重写服务 参考 查看或下载示例源码 一个简单的示例 你可以使用@inject指令将服务注入到视图中。可以把@inject看作是给你的视图增加一个属性,然后利用依赖注入给这个属性赋值。 @inject的语法: @inject<type><name> 一个使用@inject的例子: @usingSystem.Threading.Tasks @usingViewInjectSample.Model @usingViewInjectSample.Model.Services @modelIEnumerable<ToDoItem>

  • 腾讯程序员一年3亿代码意味着什么?

        这两天看到的新闻,还有配图:    后面还有好几张配图就不说啥了,反正大家可以去腾讯大讲堂看看,博客园头条也有新闻  大家对此的评论主要有以下几点:   1、 好牛,然后是膜拜   2、 代码贵在精,写这么多有啥牛的   3、 原来妹子程序员有这么多啊?我咋没发现啊   4、 QQ好臃肿啊,一个QQ软件要这么多代码,难怪这么慢   5、 级别越高代码写的越少。写代码多的都是新手   6、 腾讯吃饱了撑着干这种统计   7、 最苦逼的是80后码农   8、 。。。。。。。。      看了这么多,不得不说,任何一个事件出来,总有各个角度、各个年龄段、各个层次的人对事物有着不同角度的看法。   以下是我的看法,纯属扯淡,不喜勿喷:  一、统计、数据挖掘是互联网企业的基本功   腾讯靠的是大数据过日子。从员工提交代码的统计图就可以看得出来(不要告诉我大家认为这是腾讯员工手工统计的)。   你用QQ吗?大部人用。用微信

  • Opencv 多线程显示错误 [xcb] Unknown request in queue while dequeuing [xcb] Most likely this is a multi-thre

    本文转自 http://blog.csdn.net/michaelhan3/article/details/54707417 OpenCV多线程显示出现以下错误: [xcb]Unknownrequestinqueuewhiledequeuing [xcb]Mostlikelythisisamulti-threadedclientandXInitThreadshasnotbeencalled [xcb]Aborting,sorryaboutthat. Blurring_Images:../../src/xcb_io.c:178:dequeue_pending_request:Assertion`!xcb_xlib_unknown_req_in_deq'failed. Theprogramhasunexpectedlyfinished. 解决办法: 通过链接X11,包含xlib库和调用XinitThreads 例如:   //main.cpp #include<thread> #include<X11/Xlib.h> intmain(){

  • Question-C#中窗体接收上下左右键不工作

        窗体使用事件Form1_KeyDown时,按下键盘上的上下左右按键没反应。   因为Tab、Return、Esc以及向上键、向下键、向左键和向右键这些是预处理键,直接使用时不行的。   1privatevoidForm1_KeyDown(objectsender,KeyEventArgse) 2{ 3//KeysNowKeys=Keys.Right; 4this.NowKeys=e.KeyCode; 5}复制 像上面这么做时,并不会有反应。 这个时候需要使用e.IsInputKey=true;这个属性; 这个属性按钮里面有,也就是说按下按钮后才生效。 1privatevoidButton1_PreviewKeyDown(objectsender,PreviewKeyDownEventArgse) 2{ 3e.IsInputKey=true; 4}复制   现在还需要设置窗体的KeyPreview属性为True.      以上就可以使用了。 还有另外一种解决方式,就是下面这种

  • GAN网络之入门教程(三)之DCGAN原理

    目录DCGAN简介DCGAN的特点几个重要概念下采样(subsampled)上采样(upsampling)反卷积(Deconvolution)批标准化(BatchNormalization)激活函数G模型总结参考 如果说最经常被用来处理图像的网络模型,那么毋庸置疑,应该是CNN了,而本次入土教程的最终目的是做一个动漫头像生成的网络模型,因此我们可以将CNN与GAN结合,也就是组成了传说中的DCGAN网络。 DCGAN简介 DCGAN全称DeepConvolutionalGenerativeAdversarialNetworks,中文名曰深度卷积对抗网络。论文地址在这里。 因为DCGAN是不仅与GAN有关还与CNN有关,因此,如果不是很了解的CNN的话,建议先去看一看CNN相关的知识,也可以参考一下我以前的博客。 数据挖掘入门系列教程(十一点五)之CNN网络介绍 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10 这里我们可以在复述一下CNN的相关知识和特点。 CNN我们可以理解为如下的行为,逐层深入"抽丝剥茧”地“理解”一张图片或其他事物。图片经过CNN网

  • dns主从及智能dns搭建

    转自:https://www.jianshu.com/p/69f358d08bc0

  • docker 常用命令

    转载:https://www.wangt.cc/2020/12/docker%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E9%83%A8%E7%BD%B2laravel/ systemctlenabledocker//docker自启动 systemctldaemon-reload//daemo守护reload systemctlrestartdocker.service重启docker服务 dockerps-a//查看所有容器 dockerstartcontaineid//启动容器 dockerstopcontainerid//关闭容器 dockerrestartcontainerid dockerexec-itcontainerid/bin/bash//进入容器 dockerexportcontainerid>name.tar//导出容器 catdocker/name.tar|dockerimport-imagename//导入容器 dockerrm-fcontainerid//删除容器 dockerimages//列出本机镜像 复制   

  • 《安全测试指南》——信息收集测试【学习笔记】

    【信息收集测试】   1、搜索引擎信息收集(OTG-INFO-001)   通过搜索引擎收集以下:     ·网络拓扑图和配置     ·管理员和其他员工的归档文章和邮件     ·登录过程和用户名的格式     ·用户名和密码     ·错误信息内容     ·开发、测试的网站版本    方法:GoogleHacking数据库   在搜索引擎输入【site:域名】搜索(或是inurl、intitle、intxt等)。   查询分为几类:后门,包含用户名或密码的文件,敏感目录、在线购物信息,web服务器探测,存在漏洞的文件、服务器,错误消息,包含有价值信息的文件等。   工具:   FoundStoneSiteDIgger   GoogleHacker   Stach&Liu'sGoogleHackingDiggityProject   PunkSPIDER    2、Web服务器指纹识别(OTG-INFO-002)   主要识别服务器的版本和类型。   测试方法:   a、黑盒测试:查看HTTP响应头部的server字段。

相关推荐

推荐阅读