linux拷贝文件到指定目录命令并命名(linux拷贝目录到指定目录)

每天1次,打卡学习

积累1个新知识,增1分职场底气

linux拷贝文件到指定目录命令并命名(linux拷贝目录到指定目录)

个人介绍:不断学习的数字后端工程师

半导体知识分享第25期

技能升级,从这里开始

1相对路径和绝对路径

绝对路径和相对路径在shell环境中经常遇到,各有用处。

1.1绝对路径

绝对路径必定由“/”开头,绝对路径是为档案/文件的所在位置做指向,在任何时候,都可以用绝对路径来找到我们想要的文件。绝对路径举例:

1.2相对路径

相对路径不由“/”开头,相对路径是相对于现在目前所在的位置,为目的地指向。通常相对路径比绝对路径短一点,可以当成我们迅速找到文件/档案的捷径

相对路径举例:

1.3系统如何识别相对路径指向的绝对路径

在给出相对路径时,系统如何识别其相应的绝对路径呢?

事实上,相对路径是根据PATH环境变量来查找绝对路径的。

举例来说,我目前在 /home/test 这个 test 使用者的家目录中,我想要看看里面的 .bashrc 这个档案的数据,使用的是 more 这个指令,而这个指令在 /bin/more 当中。通常的命令写法是:

$ more .bashrc

而由于PATH变量的值为:

$ echo $PATH

/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user/bin

在执行more命令时,shell会根据PATH变量的路径中顺序查找,一旦查找匹配到(此例匹配到的应该是/bin/more),便执行/bin/more .bashrc。这便是执行命令时由相对路径查找绝对路径的过程。

所以我们就可以理解为什么执行当前目录下的可执行程序应该用的格式是:

$ ./test.sh。而不是直接用test.sh了。因为通常PATH变量不包含当前路径。如果不加./会导致相对路径格式的命令找不到绝对路径。

2目录相关的操作

2.1路径符号

2.2目录处理命令

2.2.1cd

cd命令用来切换工作目录至dirname。其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。

?? 语法

?? 选项

?? 实例

2.2.2pwd

pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。

?? 语法

?? 选项

?? 实例

2.2.3mkdir

mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。

注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。

在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。

?? 语法

?? 选项

?? 参数

目录:指定要创建的目录列表,多个目录之间用空格隔开。

?? 实例

在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问。

在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问。

2.2.4rmdir

rmdir命令用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname 表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。

注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm 命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。

虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。

?? 语法

?? 选项

?? 参数

目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。

?? 实例

删除子目录os_1和其父目录bin。

3 linux环境变量PATH和可执行文件添加到PATH环境变量的方法

3.1linux环境变量PATH

为什么一些指令我在哪个目录下都可以执行啊,而不会告诉我说找不到可执行文件呢?这是因为系统环境变量 PATH 的帮助所致。

先执行下命令,看看你的系统环境变量 $PATH 长得什么样子啊:echo $PATH

可以看到这个变量的内容是由一堆目录所组成的。每个目录中间用冒号(:)来隔开, 每个目录是有『顺序』之分的。当我们在执行一个指令的时候,就拿『ls』举例来说好了,系统会依照 PATH 的设定去每个 PATH 定义的目录下搜寻文件名为 ls 的可执行文件, 如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件,那么先搜寻到的同名指令先被执行。

假设你是 root,如果你将 ls 由/bin/ls 移动成为/root/ls(可用『mv /bin/ls /root』指令达成),然后你自己本身也在/root目录下, 请问:

(1)你能不能直接输入 ls 来执行?

接下来无论你在哪个目录底下输入任何与 ls 相关的指令,都没有办法顺利的执行 ls 了!也就是说,你不能直接输入 ls 来执行,因为/root 这个目录并不在 PATH 指定的目录中,所以,即使你在/root 目录下,也不能够搜寻到 ls 这个指令!

(2)若不能,你该如何执行 ls 这个指令?

因为这个 ls 确实存在于/root 底下,并不是被删除了!所以我们可以透过使用绝对路径或者是相对路径直接指定这个执行文件名, 底下癿两个方法都能够执行 ls 这个指令:

/root/ls

./ls

(3)若要直接输入 ls 即可执行,又该如何迚行?

如果想要让 root 在任何目录下均可执行/root 底下的 ls ,那么就将/root 加入 PATH 当中即可。加入的方法很简单,就像底下这样:

PATH=”$PATH”:/root

不过这样只是临时的,当你退出下次再登录的时候 $PATH 的值还是从前的样子

如果确定这个问题进行得没有问题了,请将 ls 搬回/bin 底下,不然系统会挂掉的!

mv /root/ls /bin

那你就要问了,怎么不拿当前目录【.】加入系统环境变量 PATH 呢,这样上面的问题(2),我输入 ls 就可以执行了啦,这个主要处于以下考虑:

如果在 PATH 中加入本目录(.)后,确实我们就能够在指令所在目录中进行指令的执行了。但是由于你的工作目录并非固定(常常会使用 cd 来切换到不同癿目录), 因此能够执行的指令会有变动(因为每个目录底下的可执行文件都不相同嘛!),这对使用者来说幵非好事。

另外,如果有个坏心使用者在/tmp 底下做了一个指令,因为/tmp 是大家都能够写入的环境,所以他当然可以这样做。假设该指令可能会窃取用户的一些数据,如果你使用 root 的身份来执行这个指令,那不是很糟糕? 如果这个指令的名称又是经常会被用到的 ls 时,那『中标』癿机率就更高了。

所以,为了安全起见,不建议将『.』加入 PATH 的搜寻目录中

如果是超级用户登录,在没有执行/etc/profile之前,PATH已经设定了下面的路径:

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

如果是普通用户,PATH在/etc/profile执行之前设定了以下的路径:

/usr/local/bin:/bin:/usr/bin。

3.2可执行文件添加到PATH环境变量的方法

linux命令行下面执行某个命令的时候,首先保证该命令是否存在,若存在,但输入命令的时候若仍提示:command not found。

这个时候就的查看PATH环境变量的设置了,当前命令是否存在于PATH环境变量中。

举例说,命令 composr 在/usr/loca/bin

但执行的时候提示:

-bash: composr: command not found 。

这个时候,通过echo $PATH,,发现composer并未在PATH环境变量中有设置,这个时候就需要把composer所在路径添加到PATH中

所以需要修改PATH环境变量,具体如下:

3.2.1方法一

3.2.2方法二

3.2.3方法三

3.2.4方法四

4文件与目录管理命令

4.1 ls

ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

?? 语法

?? 选项

?? 参数

目录:指定要显示列表的目录,也可以是具体的文件。

?? 实例

(1)显示当前目录下非影藏文件与目录。

(2)显示当前目录下包括影藏文件在内的所有文件列表。

(3)输出长格式列表。

(4)显示文件的inode信息。索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。

(5)水平输出文件列表

(7)显示递归文件

(8)打印文件的UID和GID

(9)列出文件和文件夹的详细信息

(10)列出可读文件和文件夹详细信息

(11)显示文件夹信息

(12)按时间列出文件和文件夹详细信息

(13)按修改时间列出文件和文件夹详细信息

(14)按照特殊字符对文件进行分类

(15)列出文件并标记颜色分类

4.2cp

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

?? 语法

?? 选项

?? 参数

源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项。

目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

?? 实例

(1)如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

(2)所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。

将文件file 复制到目录/usr/men/tmp下,并改名为file1。

(3)将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中。

(4)交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中。

4.3rm

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

?? 语法

?? 选项

?? 参数

文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

?? 实例

(1)交互式删除当前目录下的文件test和example.

(2) 删除当前目录下除隐含文件外的所有文件和子目录

4.4 mv

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:

如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。

如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。

注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

?? 语法

?? 选项

?? 参数

源文件:源文件列表。

目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。

实例

(1)将文件ex3改名为new1。

(2)将目录/usr/men中的所有文件移到当前目录(用.表示)中。

5取得文件路径的文件名与目录名称

5.1basename

basename命令用于打印目录或者文件的基本名称。basename和dirname 命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。

?? 语法

?? 选项

?? 参数

文件:带路径信息的文件;

后缀:可选参数,指定要去除的文件后缀字符串。

?? 实例

(1)要显示一个shell变量的基本名称

此命令显示指定给shell变量WORKFILE的值的基本名称。如果WORKFILE变量的值是/home/jim/program.c文件,则此命令显示program.c。

(2)要构造一个和另一个文件名称相同(除了后缀)的文件名称

此命令指定给 OFILE 文件第一个位置上的参数($1)的值,但它的 .c 后缀更改至 .o。如果 $1 是 /home/jim/program.c 文件,则 OFILE 成为 program.o。因为 program.o 仅是一个基本文件名称,它标识在当前目录中的文件。

5.2dirname

dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname 和 basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。

?? 语法

?? 选项

?? 实例

6文件内容查阅

6.1cat

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type 命令。

注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more 等命令分屏显示。为了控制滚屏,可以按Ctrl S键,停止滚屏;按Ctrl Q键可以恢复滚屏。按Ctrl C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

?? 语法

?? 选项

?? 参数

文件列表:指定要连接的文件列表。

?? 实例

设ml和m2是当前目录下的两个文件。

6.2tac

tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示(可以理解为cat的倒写形式)。

?? 语法

?? 选项

?? 参数

文件列表:指定要保存内容的文件列表。

6.3nl

nl命令读取file 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。在输出中,nl命令根据您在命令行中指定的标志来计算左边的行。输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。除非使用-p选项,nl 命令在每个逻辑页开始的地方重新设置行号。可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。其默认的结果与cat -n有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能。

?? 语法

?? 选项

?? 实例

(1)用 nl 列出 log2015.log 的内容。

说明:文件中的空白行,nl 不会加上行号。

(2)用 nl 列出 log2015.log 的内容,空本行也加上行号

(3)让行号前面自动补上0,统一输出格式

说明:nl -b a -n rz命令行号默认为六位,要调整位数可以加上参数-w 3调整为3位。

6.4more

该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:

按Space键:显示文本的下一屏内容。

按Enier键:只显示文本的下一行内容。

按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。

按H键:显示帮助屏,该屏上有相关的帮助信息。

按B键:显示上一屏内容。

按Q键:退出rnore命令。

?? 语法

?? 选项

?? 参数

文件:指定分页显示内容的文件。

?? 实例

(1)显示文件file 的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。

(2)显示文件file的内容,每10行显示一次,而且在显示之前先清屏。

6.5less

less命令的作用与more 十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

?? 语法

?? 选项

?? 参数

文件:指定要分屏显示内容的文件。

6.6head

head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。

?? 语法

?? 选项

?? 参数

文件列表:指定显示头部内容的文件列表。

6.7tail

tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

注意:如果表示字节或行数的N值之前有一个” ”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。

?? 语法

?? 选项

?? 参数

文件列表:指定要显示尾部内容的文件列表。

?? 实例

6.8od

od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。

常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。

?? 语法

?? 选项

?? 参数

文件:指定要显示的文件。

?? 实例

说明:先准备一个tmp文件

说明:使用ASCII码进行输出,注意其中包括转义字符

说明:使用单字节十进制进行解释

说明:跳过开始的两个字节

说明:跳过开始的两个字节,并且仅输出两个字节

说明:每行仅输出1个字节

说明:每行输出两个字节

说明:每行输出3个字节,并使用八进制单字节进行解释.

往期回顾

1.每日学习:门控时钟低功耗–在Placement阶段有什么技巧?

2.每日学习:对症下药,方能药到病除——如何修复drv?

3.每日学习:28nm工艺下,自动生成管脚排列文件(.tdf),给设计加PAD,并在PAD上面打Label的流程(含脚本)

4.每日学习:岁月的脚步,被时间冲刷——如何修复EM ?

5.每日学习:机器学习在IC设计中的应用(一)–利用率可达99%的神技–Placement及Relative Placement

6.每日学习:机器学习在IC设计中的应用(二)–根据GBA时序结果来预测PBA

7.每日学习:深度好文 | 一个考虑了Scan、Boundary Scan、分频时钟、门控时钟的CTS的分析设计示例(含脚本)

8.每日学习:数字IC设计EDA软件教程整理

9.每日学习:静态时序分析STA合集二

10.每日学习:静态时序分析STA合集一

特别鸣谢摩尔精英的支持

发表评论

登录后才能评论