Linux学习笔记之文件管理和目录管理类命令
在开始理解Linux文件管理和目录类命令之前,有必要先说一下,关于操作系统在计算机中都做了哪些工作。
0、操作系统的工作
1、文件管理,增删改查
2、目录管理
3、进程管理
4、软件安装
5、运行程序
6、网络管理
7、设备管理
本次笔记介绍的是文件管理和目录管理类命令。说起文件和目录,不禁让人思考到一个问题:
问题1:文件是目录吗?
归纳1:首先我们知道:
目录:是存放文件的路径。即是根文件系统rootfs上的非叶子节点。
文件:是根文件系统上的叶子节点。
根据Linux操作系统的“一切皆文件的思想”,就暗示着我们:目录就是文件。
问题2:所以,在同一个目录下,文件和目录是不能同名的。
那么,在不同目录下,文件和目录可以同名吗?
为什么在windows下,文件和文件夹(目录)可以同名吗?
归纳2:
1、文件类命令
1.1、创建文件:
方法一:使用#touch命令创建文件
#touch(用于change file timestamp,改变文件时间戳)
问题3:touch命令不是用于改变文件时间戳的命令吗?为什么可以用来创建文件?
归纳3:
首先,我们必须了解什么是时间戳?
时间戳=访问时间+修改时间+改变时间;
访问时间=最近一次访问文件的时间
修改时间=最近一次修改文件内容的时间
改变时间=最近一次修改文件属性的时间
所以当我们尝试着去touch一个不存在的文件,即我们尝试着去修改一个不存在文件的时间戳时,系统就会新创建一个空文件,并以当前的创建时间来修改文件的访问时间和修改时间。
问题4:为什么只能修改文件的访问时间和修改时间,而不能修改文件的改变时间?
归纳4:道理很简单,当我们知道了时间戳同样也是文件的属性信息时,这就难不倒我们了。
当访问时间和修改时间都变化了,改变时间还有理由不变吗?!
也就是说,我们通过修改"访问时间"和"修改时间",间接的去修改了“改变时间”。
那么,修改访问时间这个功能还有必要存在吗?!
这也符合Linux一贯的原则"能简单的,就一定不复杂"!
方法二:使用文本编辑器创建文件
问题5:什么是文本编辑器?Word是文本编辑器吗?
答:Word不是文本编辑器,Linux下的文本编辑器nano:该编辑器中,~表示ctrl,-表示空格
问题6:什么是文本?
答:ASCII
问题7:什么是ASCII?
答:想想如何用二进制数去表示128个字符?需要几个二进制位?那么可以理解ASCII其实就是将一些不同的字符与二进制位建立固定的关联关系
问题8:什么是UNICODE:
答:如0000 1001 0000 1001:上,标准:GB18030,GB2312,Unicode,GBK
问题9:汉字是如何在显示器上,显示的?字体?
1、2 文件的删除:
# rm = rm -i #\rm = rm
即当我们想要使用一个命令的本身,而不是它的别名命令时,可以再命令前面加\
-i 交互式
-f 强制性
-r 删除一个目录时,递归删除这个目录下的所有文件
自杀型操作:rm -rf /(通常是不小心造成的
1.3、复制文件:cp命令 (复制档案或目录)
1、# cp [-adfilprsu] 来源档(source) 目的档(destination)
2、# cp [options] source1 source2 source3 .... directory
参数:
-a(archive):相当于 -pdr 的意思;不改变源的所有属性,用于归档复制,常用于备份;= --backup
-d(no-dereference):若来源文件为链接文件的属性(link file),则复制连结文件属性而非档案本身;即如果源是链接,则复制链接
-f(force):为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i(interactive):若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l(link)(link files instead of copying) :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;即如果源是链接,则复制链接所指向的文件;
-P(no-dereference) :保持链接:如果源是链接,则复制链接
-p (不改变源的属主和属组):连同档案的属性一起复制过去,而非使用预设属性;
什么是预设属性:本来谁复制的,文件的属主和属组就是谁;
-r(recursive):递归持续复制,用于目录的复制行为;
-s(symbolic) :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u(update) :若 destination 比 source 旧才更新 destination ;或者是destination file is missing
问题
问题1:能不能把一个文件复制成另一个文件,一个文件复制成多个文件,多个文件复制成一个文件。即Src:Dest = 1:1,1:n,n:1,n:n
归纳1:目标destination只有一个,可以是文件也可以是目录。因此只存在Src:Dest=1:1和n:1这两种情况,但多个源的情况下(即Src:Dest=n:1时),目标(Dest)只能是目录,否则报错。
问题2:什么是符号链接?
答:相当于一个快捷方式,本身不存在,只是指向另一个文件的路径。
如果源是链接,复制的不是链接而是链接指向的那个文件
问题3:cp命令,默认不能复制目录;那么如何实现复制目录
答:# cp -r(recursive递归):
递归持续复制,用于目录的复制行为;
# cp -r /etc/init.d /tmp/passwd (目录到文件?)该命令能否执行?
指令解读:Src为目录,Dest为文件;Src:Dest=1:1
在没有r参数的情况下,是不允许执行的。
该指令执行
范例
一个源
范例1: # cp /etc/passwd /tmp,什么意思?
答:Src为文件,Dest为目录;
指令解读:
将/etc路径下的文件passwd,复制到目标目录/tmp下,复制后的文件名仍为passwd。
范例2: # cp /etc/passwd /tmp/test,什么意思?
答:Src为文件,Dest为目录or文件;
指令解读:
1、当Dest(test)为文件时:
则将文件passwd复制到目录/tmp下:
1.1 如果test不存在,则复制文件以test为文件名保存在/tmp目录下;
1.2 如果test已经存在,则询问用户是否用新复制的文件覆盖原来的test文件;
2、当Dest(test)为目录时:
则将文件passwd,复制到目录/tmp下,复制后的文件名仍为passwd。
多个源
范例3:# cp /etc/passwd /etc/issue /etc/inittab /tmp/abc,什么意思?
答:Src:Dest=N:1;Src为文件,Dest为文件or目录
指令解读:
1、当Dest(abc)为文件时:
问题来了,多个文件可以存放在一个文件中吗?
答案是不行,当用户试图将多个文件存放于一个文件中,系统会报错提示目标abc不是一个目录。
2、当Dest(abc)为目录时:
则将源文件(passwd,issue,inittab)复制到目标目录/tmp/abc下,并以原文件名保存文件。
2、目录管理
#ls
#cd
#pwd
创建空目录:mkdir,最后一个节点,才是需要创建的目录,之前的都是路径
选项: -p(p=parent 父):当需要创建的目标目录的父目录不存在时,则创建父目 录,以实现递归创建
-v(显示创建的详细信息)
如何用一个命令实现创建/mnt/test/x/m /mnt/test/y
答:mkdir -pv /mnt/test/{x/m,y}
{}:是bash shell的一个高级特性,叫命令行展开也叫花括号展开。
~USERNAME:叫波浪线展开
如何在/mnt/test2下创建:a_b,a_c,d_b,d_c
答:mkdir -pv /mnt/test2/{a,d}_{b,c}或
mkdir -pv /mnt/test2/{a_b,a_c,d_b,d_c}
删除空目录:rmdir
选项: -p(p=parent 父):只有一线单传才能,删除父目录,每个节点只有孩子
tree(查看目录树),
转载于:https://blog.51cto.com/xxaqwqm/1557051
相关文章:

张钹、朱松纯、黄铁军等同台激辩:人工智能的“能”与“不能”
整理 | AI科技大本营编辑部出品 | AI科技大本营(ID:rgznai100)10 月 31 日,由北京智源人工智能研究院主办的 2019 北京智源大会在国家会议中心开幕,本次大会吸引了国际人工智能领域的顶级专家学者参加,围绕人工智能基础…

ssqlit3.0数据库使用方法
由于考虑将来还要开发Android版本app,为了移植方便,所以使用了sqlite3来做数据持久化,到时候把sql语句拷过去还能用。 1、 首先用xcode载入sqlite3类库 选择工程的TARGETS-build phases-link binary with libraries,点击“”按钮&…
GCC中通过--wrap选项使用包装函数
在使用GCC编译器时,如果不想工程使用系统的库函数,例如在自己的工程中可以根据选项来控制是否使用系统中提供的malloc/free, new/delete函数,可以有两种方法: (1). 使用LD_PRELOAD环境变量:可以设置共享库的路径&…

[原]对Linux环境下任务调度一点认识
我一直以来有一个误解,那就是在终端运行某个程序时,按下Ctrl D时我误以为就是杀死了这个进程,今天才知道原来不是。比如我利用libevent在Linux环境下写了一个网络监听程序,当启动程序之后,就会一直监听本地的6789端口…
决策树的C++实现(CART)
关于决策树的介绍可以参考: https://blog.csdn.net/fengbingchun/article/details/78880934 CART算法的决策树的Python实现可以参考: https://blog.csdn.net/fengbingchun/article/details/78881143 这里参考 https://machinelearningmastery.com/impl…

iOS开发-由浅至深学习block
作者:Sindri的小巢(简书) 关于block 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调。这不免让我们想到在C函数中,我们可以定义一个指向函数…

Google和微软分别提出分布式深度学习训练新框架:GPipe PipeDream
【进群了解最新免费公开课、技术沙龙信息】作者 | Jesus Rodriguez译者 | 陆离编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】微软和谷歌一直在致力于开发新的用于训练深度神经网络的模型,最近,谷歌和微软分别…

fragment 横竖屏 不重建
2019独角兽企业重金招聘Python工程师标准>>> android:configChanges"screenSize|orientation" 这样设置 切屏时都不会重新调用fragment里面的onCreateView了 转载于:https://my.oschina.net/u/1777508/blog/317811
二叉树简介及C++实现
二叉树是每个结点最多有两个子树的树结构,即结点的度最大为2。通常子树被称作”左子树”和”右子树”。二叉树是一个连通的无环图。 二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:(1)、空二叉树…

swift实现ios类似微信输入框跟随键盘弹出的效果
为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么…

行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
作者 | Jiaxu Miao、Yu Wu、Ping Liu、Yuhang Ding、Yi Yang译者 | 刘畅编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导语】在以人搜人的场景中,行人会经常被各种物体遮挡。之前的行人再识别(re-id)方法…

WinAPI: Arc - 绘制弧线
为什么80%的码农都做不了架构师?>>> //声明: Arc(DC: HDC; {设备环境句柄}X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer {四个坐标点} ): BOOL;//举例: procedure TForm1.FormPaint(Sender: TObject); constx1 10;y1 10;…

提高C++性能的编程技术笔记:跟踪实例+测试代码
当提高性能时,我们必须记住以下几点: (1). 内存不是无限大的。虚拟内存系统使得内存看起来是无限的,而事实上并非如此。 (2). 内存访问开销不是均衡的。对缓存、主内存和磁盘的访问开销不在同一个数量级之上。 (3). 我们的程序没有专用的CPUÿ…

2019年不可错过的45个AI开源工具,你想要的都在这里
整理 | Jane 出品 | AI科技大本营(ID:rgznai100)一个好工具,能提高开发效率,优化项目研发过程,无论是企业还是开发者个人都在寻求适合自己的开发工具。但是,选择正确的工具并不容易,有时这甚至是…

swift中delegate与block的反向传值
swift.jpg入门级 此处只简单举例并不深究,深究我也深究不来。对于初学者来说delegate或block都不是一下子能理解的,所以我的建议和体会就是,理不理解咱先不说,我先把这个格式记住,对就是格式,delegate或blo…

Direct2D (15) : 剪辑
为什么80%的码农都做不了架构师?>>> 绘制在 RenderTarget.PushAxisAlignedClip() 与 RenderTarget.PopAxisAlignedClip() 之间的内容将被指定的矩形剪辑。 uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject); varcvs: TDirect2DCanvas;…

女朋友啥时候怒了?Keras识别面部表情挽救你的膝盖
作者 | 叶圣出品 | AI科技大本营(ID:rgznai100)【导读】随着计算机和AI新技术及其涉及自然科学的飞速发展,整个社会上的管理系统高度大大提升,人们对类似人与人之间的交流日渐疲劳而希望有机器的理解。计算机系统和机械人如果需要…

提高C++性能的编程技术笔记:构造函数和析构函数+测试代码
对象的创建和销毁往往会造成性能的损失。在继承层次中,对象的创建将引起其先辈的创建。对象的销毁也是如此。其次,对象相关的开销与对象本身的派生链的长度和复杂性相关。所创建的对象(以及其后销毁的对象)的数量与派生的复杂度成正比。 并不是说继承根…

swim 中一行代码解决收回键盘
//点击空白收回键盘 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { view.endEditing(true) }

WinAPI: SetRect 及初始化矩形的几种办法
为什么80%的码农都做不了架构师?>>> 本例分别用五种办法初始化了同样的一个矩形, 运行效果图: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 class(TForm)Butto…

Windows10上使用VS2017编译OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.6.2操作步骤
1. 从https://github.com/opencv/opencv/releases 下载opencv-3.4.2.zip并解压缩到D:\soft\OpenCV3.4.2\opencv-3.4.2目录下; 2. 从https://github.com/opencv/opencv_contrib/releases 下载opencv_contrib-3.4.zip并解压缩到D:\soft\OpenCV3.4.2\opencv_contrib-3…

swift 跳转网页写法
var alert : UIAlertView UIAlertView.init(title: "公安出入境网上办事平台", message: "目前您可以使用网页版进行出入境业务预约与查询,是否进入公安出入境办事平台?", delegate: nil, cancelButtonTitle: "取消", o…

智能边缘计算:计算模式的再次轮回
作者 | 刘云新来源 | 微软研究院AI头条(ID:MSRAsia)【导读】人工智能的蓬勃发展离不开云计算所带来的强大算力,然而随着物联网以及硬件的快速发展,边缘计算正受到越来越多的关注。未来,智能边缘计算将与智能云计算互为…

WinAPI: 钩子回调函数之 SysMsgFilterProc
为什么80%的码农都做不了架构师?>>> SysMsgFilterProc(nCode: Integer; {}wParam: WPARAM; {}lParam: LPARAM {} ): LRESULT; {}//待续...转载于:https://my.oschina.net/hermer/blog/319736

提高C++性能的编程技术笔记:虚函数、返回值优化+测试代码
虚函数:在以下几个方面,虚函数可能会造成性能损失:构造函数必须初始化vptr(虚函数表);虚函数是通过指针间接调用的,所以必须先得到指向虚函数表的指针,然后再获得正确的函数偏移量;内联是在编译…

ICCV 2019 | 无需数据集的Student Networks
译者 | 李杰 出品 | AI科技大本营(ID:rgznai100)本文是华为诺亚方舟实验室联合北京大学和悉尼大学在ICCV2019的工作。摘要在计算机视觉任务中,为了将预训练的深度神经网络模型应用到各种移动设备上,学习一个轻便的网络越来越重要。…

oc中特殊字符的判断方法
-(BOOL)isSpacesExists { // NSString *_string [NSString stringWithFormat:"123 456"]; NSRange _range [self rangeOfString:" "]; if (_range.location ! NSNotFound) { //有空格 return YES; }else { //没有空格 return NO; } } -(BOOL)i…

理解 Delphi 的类(十) - 深入方法[23] - 重载
为什么80%的码农都做不了架构师?>>> {下面的函数重名, 但参数不一样, 此类情况必须加 overload 指示字;调用时, 会根据参数的类型和个数来决定调用哪一个;这就是重载. }function MyFun(s: string): string; overload; beginResult : 参数是一个字符串: …

玩转ios友盟远程推送,16年5月图文防坑版
最近有个程序员妹子在做远程推送的时候遇到了困难,求助本帅。尽管本帅也是多彩的绘图工具,从没做过远程推送,但是本着互相帮助,共同进步的原则,本帅还是掩饰了自己的彩笔身份,耗时三天(休息时间…

提高C++性能的编程技术笔记:临时对象+测试代码
类型不匹配:一般情况是指当需要X类型的对象时提供的却是其它类型的对象。编译器需要以某种方式将提供的类型转换成要求的X类型。这一过程可能会产生临时对象。 按值传递:创建和销毁临时对象的代价是比较高的。倘若可以,我们应该按指针或者引…