Linux 处理目录的常用命令
- ls:列出目录及文件名;
- cd:切换目录;
- pwd:显示目前的目录;
- mkdir:创建一个新的目录;
- rmdir:删除一个空的目录;
- cp:复制文件或目录;
- rm:移除文件或目录;
- mv:移动文件与目录,或修改文件与目录的名称。
我们可以在终端使用 man [命令] 来查看各个命令的使用文档,如:man cp。
ls(列出目录)
常用语法:
ls [-adl] 目录名称
选项参数:
- -a:全部的文件,连同隐藏文件(开头为 . 的文件)一起列出来;
- -d:仅列出目录本身,而不是列出目录内的文件数据;
- -l:长数据串列出,包含文件的属性与权限等等数据,ls -l 可简写为 ll。
cd(切换目录)
cd 是 Change Directory 的缩写,这是用来变换工作目录的命令。
常用语法:
cd [相对路径或绝对路径]
相对路径是指相对于当前目录位置的路径,绝对路径是指由根目录写起的路径。
pwd(显示目前所在的目录)
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
常用语法:
pwd [-P]
选项参数:
- -P:显示出确实的路径,而非使用连结(link)路径。
mkdir(创建新目录)
mkdir 是 Make Directory 的缩写,也就是创建目录。
常用语法:
mkdir [-mp] 目录名称
选项参数:
- -m:手动配置文件的权限;
- -p:帮助你直接将所需要的目录(包含上一级目录)递归创建起来。
mkdir test <=可以成功
mkdir test1/test2/test3 <=不能成功
mkdir -p test1/test2/test3 <=可以成功,且连 test1 和 test2 目录也创建成功
mkdir -m 711 test
711三个数字表示 rwx(读写执行)在不同用户下的权限和。
第一个数字表示「属主」权限的权限和,第二个数字表示「属组」权限的权限和,第三个数字表示「其他用户」权限的权限和。
r(读)表示的数字是 4,w(写)表示的数字是 2,x(执行)表示的数字是 1,所以 7 代表 4+2+1,表示「属主」权限为 rwx,后面的数字以此类推。
rmdir(删除空的目录)
常用语法:
rmdir [-p] 目录名称
选项参数:
- -p:连同上一级的空目录也一起删除。
要注意,这个 rmdir 仅能删除空的目录,可以使用 rm 命令来删除非空目录。
cp(复制文件或目录)
cp 即 copy 文件或目录。
常用语法:
cp [-adfilprsu] 来源档(source) 目标档(destination)
选项参数:
- -a:相当于 -pdr 的意思(常用);
- -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- -i:若目标档已经存在时,在覆盖时会先询问动作的进行(常用);
- -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- -r:递归持续复制,用于目录的复制行为(常用);
- -s:复制成为符号连结档(symbolic link),亦即『捷径』文件;
- -u:若目标档比来源档旧才升级目标档。
cp ~/.bashrc /tmp/bashrc <=将用户本身目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
cp -i ~/.bashrc /tmp/bashrc <=若 bashrc 已经存在,则会进行询问动作
注:Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。
硬连接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止『误删』的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是『主从』关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
rm(移除文件或目录)
rm 即 remove 文件或目录。
常用语法:
rm [-fir] 文件或目录
选项参数:
- -f:就是强制(force)的意思,忽略不存在的文件,不会出现警告信息;
- -i:互动模式,在删除前会询问使用者是否动作;
- -r:递归删除!最常用在目录的删除!这是非常危险的选项!
mv(移动文件与目录,或修改名称)
mv 即 move 的意思。
常用语法:
mv [-fiu] 来源档(source) 目标档(destination)
mv [-fiu] source1 source2 source3 source4 destination
mv 更前名 更后名
选项参数:
- -f:就是强制(force)的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i:若目标文件已经存在时,就会询问是否覆盖;
- -u:若目标文件已经存在,且 source 比较新,才会更新。
Linux 文件内容查看命令
在 Linux 系统中可以使用如下命令来查看文件的内容:
- cat:由第一行开始显示文件内容;
- tac:从最后一行开始显示,可以看出 tac 是 cat 的倒着写;
- nl:显示的时候输出行号;
- more:一页一页的显示文件内容;
- less:与 more 类似,但是比 more 更好的一点是他可以往前翻页;
- head:只看头几行;
- tail;只看尾巴几行。
cat
由第一行开始显示文件内容。
语法:
cat [-AbEnTv] 文件
选项参数:
- -A:相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b:列出行号,仅针对非空白行做行号显示,空白行不标行号;
- -E:将结尾的断行字节 $ 显示出来;
- -n:列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T:将 [tab] 按键以 ^I 显示出来;
- -v:列出一些看不出来的特殊字符。
tac
与 cat 命令相反,文件内容从最后一行开始显示。
nl
显示行号。
语法:
nl [-bnw] 文件
选项参数:
- -b:指定行号的指定方式,主要有两种:
- -b a:表示不论是否为空行,也同样列出行号(类似 cat -n);
- -b t:如果有空行,空的那一行不要列出行号(默认值);
- -n:列出行号表示的方法,主要有三种:
- -n ln:行号在荧幕的最左方显示;
- -n rn:行号在自己栏位的最右方显示,且不加 0;
- -n rz:行号在自己栏位的最右方显示,且加 0;
- -w:行号栏位的占用的位数。
more
一页一页向后翻动。
语法:
more 文件
在 more 这个程序的运行过程中,我们有几个按键可以按:
- 空格键(space):代表向下翻一页;
- Enter:代表向下翻『一行』;
- /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f:立刻显示出文件名以及目前显示的行数;
- q:代表立刻离开 more,不再显示该文件内容;
- b 或 [ctrl]+b:代表往回翻页,不过这动作只对文件有用,对管线无用。
less
一页一页翻动,不同于 more,less 可向前或者向后翻。
在 less 这个程序的运行过程中可以输入的命令有:
- 空格键(space):向下翻一页;
- [pagedown]:向下翻一页;
- [pageup]:向上翻一页;
- /字串:向下搜寻『字串』这个关键字;
- ?字串:向上搜寻『字串』这个关键字;
- n:重复前一个搜寻 (与 / 或 ? 有关);
- N:反向的重复前一个搜寻 (与 / 或 ? 有关);
- q:离开 less 这个程序。
head
取出文件前面几行。
语法:
head [-n number] 文件
选项参数:
- -n:后面接数字,代表显示几行的意思。
注:默认是10行
tail
取出文件后面几行,用法与 head 类似。
Vim 的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
以下是常用的几个命令:
- i:切换到输入模式,以输入字符;
- x:删除当前光标所在处的字符;
- :(英文冒号):切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动 Vim,进入了命令模式,按下 i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下 i 就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及 Shift 组合,输入字符;
- ENTER,回车键,换行;
- BACK SPACE,退格键,删除光标前一个字符;
- DEL,删除键,删除光标后一个字符;
- 方向键,在文本中移动光标;
- HOME/END,移动光标到行首/行尾;
- Page Up/Page Down,上/下翻页;
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线;
- ESC,退出输入模式,切换到命令模式。
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q:退出程序;
- w:保存文件。
按 ESC 键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
yum 命令
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum [options] [command] [package ...]
- options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等;
- command:要进行的操作;
- package:操作的对象。
yum常用命令
- 列出所有可更新的软件清单命令:yum check-update;
- 更新所有软件命令:yum update;
- 仅安装指定的软件命令:yum install
; - 仅更新指定的软件命令:yum update
; - 列出所有可安裝的软件清单命令:yum list;
- 删除软件包命令:yum remove
; - 查找软件包命令:yum search
; - 清除缓存命令:
- yum clean packages:清除缓存目录下的软件包;
- yum clean headers:清除缓存目录下的 headers;
- yum clean oldheaders:清除缓存目录下旧的 headers;
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders):清除缓存目录下的软件包及旧的headers。
替换国内 yum 源
- 首先打开 CentOS 的 yum 文件夹,备份原始 yum 源:
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
- 然后下载国内对应版本的 repo 文件,我这里使用的是 CentOS7 的 Linux 版本,国内镜像使用的是阿里 yum 源:http://mirrors.aliyun.com/repo/Centos-7.repo ,现在开始用 wget 下载 repo 文件:
wget http://mirrors.aliyun.com/repo/Centos-7.repo
如果 wget 命令不生效,说明还没有安装 wget 工具,输入 yum -y install wget 回车进行安装。
- 将下载好的 repo 文件替换为系统原来的 repo 文件:
mv Centos-7.repo CentOS-Base.repo
- 最后执行 yum 源更新命令即可:
yum clean all
yum makecache
yum update
如有理解错误或偏差,望大家指出,非常感谢!
文档信息
- 本文作者:Bin Tu
- 本文链接:https://plandocheckaction.github.io/2020/07/15/Linux2-CommonCommands/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)