linux打开命令提示行,linux打开程序命令行

虚拟机linux怎么打开命令行

安装了图形界面才需要考虑这个问题吧

成都创新互联专注于宽甸企业网站建设,自适应网站建设,购物商城网站建设。宽甸网站建设公司,为宽甸等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

一般在桌面右键菜单里就有“终端/terminal”啊,那就是命令行程序,打开就是了。

怎么linux下打开cmd命令

命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。输入一些命令,cmd.exe可以执行,比如输入shutdown -s就会在30秒后关机。总之,它非常有用。打开方法:开始-所有程序-附件 或 开始-寻找-输入:cmd/cmd.exe 回车。它也可以执行BAT文件。

Linux基本就是用命令行来运行的,不需要通过cmd来启动

linux下的“命令提示符”是什么啊,怎么进啊?

命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。

linux系统进入linux命令行的方法:

图形界面下ctrl+alt+space

重新修改文件

在dos下运行loadlin.exe文件

loadlin.exe是在DOS下的可执行文件,可以在纯DOS环境下迅速启动LINUX,而且无需重新启动,在光盘的kernels目录下,复制到DOS分区中,同时还需要复制一份你所使用的LINUX内核文件,都拷贝到DOS分区,在建立一个批处理文件LINUX.BAT

或者从linux主程序菜单中进入:在左下角点击开始-系统设备-终端选项。

linux的进入磁盘命令

在linux系统我们查看磁盘可以通过相关命令进入磁盘。下面由我为大家整理了linux下进入磁盘命令的相关知识,希望对大家有所帮助!

一、linux的进入磁盘命令

使用dos命令进入D盘的 方法 如下:

1.按windows和r键打开运行界面;

2.在运行界面输入cmd,按回车进入命令提示符中;

3.在命令提示符中输入 D: ,按回车即可进入D盘。

用CMD命令进入D盘的方法如下:

1、首先需要先进入cmd,点击电脑左下角的开始按钮,点击运行按钮,就会出现运行输入窗口,输入cmd就会进入。

2、如果开始按钮中没有运行按钮,那么可以通过右键查看开始属性,在开始菜单自定义中勾选运行,确定后就会出现了。

3、然后再cmd运行窗口中输入d:就是进入D盘根目录了。这时候只会提示你进入d盘了,而不会显示D盘都有哪些文件。如果在 其它 磁盘目录下需要返回D盘时,输入cd命令然后回车,再输入ldquo;D:rdquo; 即可回到D盘。

4、这时候在cmd中输入dir,就可以看到d盘下的各个文件名称了。

二、扩展:linux下查看磁盘命令

Df命令是Linux查看磁盘空间系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式:

df -hl

Linux查看磁盘空间 显示格式为:

文件系统 容量 已用 可用 已用% 挂载点

Filesystem Size Used Avail Use% Mounted on

/dev/hda2 45G 19G 24G 44% /

/dev/hda1 494M 19M 450M 4% /boot

/dev/hda6 4.9G 2.2G 2.5G 47% /home

/dev/hda5 9.7G 2.9G 6.4G 31% /opt

none 1009M 0 1009M 0% /dev/shm

/dev/hda3 9.7G 7.2G 2.1G 78% /usr/local

/dev/hdb2 75G 75G 0 100% /

/dev/hdb2 75G 75G 0 100% /

以上面的输出为例,表示的意思为:

HD硬盘接口的第二个硬盘(b),第二个分区(2),容量是75G,用了75G,可用是0,因此利用率是100%, 被挂载到根分区目录上(/)。

Linux命令

快照功能:记录当前的硬盘的状态。刚建快照时快照占用内存为0,标记了当前硬盘的存储状态。当虚拟机对快照标记的内容改写时,会将改写的内容存储进快照,与未改写的部分整合得到完整的快照。当快照标记的部分被完全改写,那么快照存储空间完整记录了当时拍摄时的内存状态。

参数形式

第一种:参数用一横的说明后面的参数是字符形式。

第二种:参数用两横的说明后面的参数是单词形式。

第三种:参数前有横的是 System V风格。

第四种:参数前没有横的是 BSD风格。

cat、more、less、head、tail命令的比较:

cat命令可以一次显示整个文件,如果文件比较大,使用不是很方便;

more命令可以让屏幕在显示满一屏幕时暂停,按空格往前翻页,按b往后翻页。

less命令也可以分页显示文件,和more命令的区别就在于: 支持上下键卷动屏幕、查找;不需要在一开始就读取整个文件,打开大文件时比more、vim更快。

head命令用于查看文件的前n行。

tail命令用于查看文件的后n行,加上-f命令,查看在线日志非常方便,可以打印最新增加的日志。

一般模式:

编辑模式:

命令模式:

编码

多行操作(列编辑模式)

插入:ctrl+v进入列编辑模式,上下移动光标选择需要插入的位置,然后输入大写I,输入需要文本,最后按esc键退出,就会发现文本会在选择的多行中插入。

删除:ctrl+v进入列编辑模式,上下移动光标选中需要删除的部分,然后按d,就会删除选中的内容。

①head:显示文件头部内容

②tail:输出文件尾部内容

注意:用vim和vi修改内容会删除源文件并生成新文件,所以tail -f会失效。需要用到

追加和覆盖语句(或),才能被tail -f监视到。

一般用于查看小文件

查看压缩文件中的文本内容

例:

①more:文件内容分屏查看器

②less:分屏显示文件内容,效率比more高

1、简单读取

运行脚本如下

测试结果为:

2、-p 参数,允许在 read 命令行中直接指定一个提示。

运行脚本如下

测试结果为:

echo [选项] [输出内容] (输出内容到控制台)

输出给定文本的sha256加密后的内容

①显示当前时间信息

②显示当前时间年月日

③显示当前时间年月日时分秒

④显示昨天

⑤显示明天时间

⑥显示上个月时间

需要注意的是取下个月的命令存在bug,执行如下命令会得到21-10,但是正常应该得到21-09,需要注意

date -d "2021-08-31 +1 month" +%y-%m

⑦修改系统时间

⑧获取当前时间戳

获取秒时间戳: date +%s

获取毫秒时间戳:$[ (date +%s%N) /1000000]

查看日历

(1)查看当前月的日历

(2)查看2017年的日历

例:

对比gzip/gunzip,zip/unzip可以压缩文件和目录且保留源文件。

①zip:压缩

②unzip:解压缩

只能压缩文件不能压缩目录,不保留原来的文件。

gzip 文件 (只能将文件压缩为*.gz文件)

gunzip 文件.gz (解压缩文件命令)

例: crontab -e

(1)进入crontab编辑界面。会打开vim编辑你的工作。

(2)每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字

*/1 * * * * /bin/echo ”11” /root/bailongma.txt

(3)可以用tail -f 目标文件来实施监控追加的内容

查看日志

可以用tail -f /var/log/cron.log观察

Cron表达式见文章:

ls [选项] [目录或是文件]

cd [参数]

例: cd -P $(dirname $p1) ; pwd 先跳转到文件的所在目录,再打印$p1文件的实际路径

概述

①cp(copy):只能在本机中复制

②scp(secure copy):可以复制文件给远程主机

scp -r test.sh hxr@hadoop102:/root

③rsync(remote sync):功能与scp相同,但是不会改文件属性

rsync -av test.sh test.sh hxr@hadoop102:/root

④nc(netcat):监听端口,可以实现机器之间传输文件。

nc -lk 7777 (-l表示listen,-k表示keep)

强制覆盖不提示的方法:\cp

例:scp -r test.sh hxr@bigdata1:/root

例:rsync -av test.sh hxr@bigdata1:/root

例:

nc -lp 10000 nc_test.txt

nc -w 1 hadoop102 nc_test.txt

远程登录时默认使用的私钥为~/.ssh/id_rsa

生成密钥对

将公钥发送到本机

将密钥发送到需要登录到本机的服务器上

修改密钥的权限

远程登陆

如果有多个节点需要远程登陆,可以在.ssh下创建config并输入

再次登陆

①正向代理:

②反向代理:

所谓“反向代理”就是让远端启动端口,把远端端口数据转发到本地。

HostA 将自己可以访问的 HostB:PortB 暴露给外网服务器 HostC:PortC,在 HostA 上运行:

那么链接 HostC:PortC 就相当于链接 HostB:PortB。

使用时需修改 HostC 的 /etc/ssh/sshd_config 的一条配置如下,不然启动的进程监听的ip地址为127.0.0.1,即只有本机可以访问该端口。

相当于内网穿透,比如 HostA 和 HostB 是同一个内网下的两台可以互相访问的机器,HostC是外网跳板机,HostC不能访问 HostA,但是 HostA 可以访问 HostC。

那么通过在内网 HostA 上运行 ssh -R 告诉 HostC,创建 PortC 端口监听,把该端口所有数据转发给我(HostA),我会再转发给同一个内网下的 HostB:PortB。

同内网下的 HostA/HostB 也可以是同一台机器,换句话说就是 内网 HostA 把自己可以访问的端口暴露给了外网 HostC。

例: 比如在我的内网机192.168.32.244上有一个RabbitMQ的客户端,端口号为15672。现在我希望在外网上访问固定ip的云服务器chenjie.asia的6009端口,通过跳板机192.168.32.243来转发请求到192.168.32.244:15672,从而实现在外网访问内网服务的功能,即内网穿透。

①在192.168.32.244上启动RabbitMQ服务

②将chenjie.asia云服务器的私钥复制到跳板机192.168.32.243的~/.ssh下,并重命名为id_rsa。通过如下命令看是否可以远程登陆到云服务,可以登陆则进行下一步。

③修改chenjie.asia服务器的ssh配置文件 /etc/ssh/sshd_config ,允许其他节点访问

然后重启sshd服务

④在跳板机192.168.32.243启动ssh反向代理

这个进程在关闭session时会停止,可以添加启动参数 -CPfN

例:

以 root 身份执行的程序有了所有特权,这会带来安全风险。Kernel 从 2.2 版本开始,提供了 Capabilities 功能,它把特权划分成不同单元,可以只授权程序所需的权限,而非所有特权。

例如:linux不允许非root账号只用1024以下的端口,使用root启动命令nginx,会导致nginx权限过高太危险。所以用setcap命令

sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx

正确的关机流程为 :sync shutdown reboot halt

(1)sync (功能描述:将数据由内存同步到硬盘中)

(2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff)

(3)reboot (功能描述:就是重启,等同于 shutdown -r now)

(4)shutdown [选项] [时间]

安装

yum install -y telnet-server telnet

ls -i 显示文件的节点号

find -inum 节点号 -delete 删除指定的节点即可删除对应的文件

启动一个服务: systemctl start postfix.service

关闭一个服务: systemctl stop postfix.service

重启一个服务: systemctl restart postfix.service

显示一个服务的状态: systemctl status postfix.service

在开机时启用一个服务: systemctl enable postfix.service

在开机时禁用一个服务: systemctl disable postfix.service

注:在enable的时候会打印出来该启动文件的位置

列出所有已经安装的服务及状态:

systemctl list-units

systemctl list-unit-files

查看服务列表状态:

systemctl list-units --type=service

查看服务是否开机启动: systemctl is-enabled postfix.service

查看已启动的服务列表: systemctl list-unit-files | grep enabled

查看启动失败的服务列表: systemctl --failed

查看服务日志: journalctl -u postfix -n 10 -f

命令类似systemctl,用于操作native service。

添加脚本为服务(需要指定启动级别和优先级): chkconfig --add [脚本]

删除服务: chkconfig --del [脚本]

单独查看某一服务是否开机启动的命令 : chkconfig --list [服务名]

单独开启某一服务的命令 : chkconfig [服务名] on

单独关闭某一服务的命令: chkconfig [服务名] off

查看某一服务的状态: /etc/intd.d/[服务名] status

启用服务就是在当前"runlevel"的配置文件目录 /etc/systemd/system/multi-user.target.wants 里,建立 /usr/lib/systemd/system 里面对应服务配置文件的软链接;禁用服务就是删除此软链接,添加服务就是添加软连接。

su 用户名称 (切换用户,只能获得用户的执行权限,不能获得环境变量)

su - 用户名称 (切换到用户并获得该用户的环境变量及执行权限)

echo $PATH 打印环境变量

设置普通用户具有root权限

修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下 所示:

或者配置成采用sudo命令时,不需要输入密码

修改完毕,现在可以用hxr 帐号登录,然后用命令 sudo ,即可获得root权限进行操作。

以azkaban用户执行引号中的命令

gpasswd -d [username] [groupname] 将用户从组中删除

gpasswd -a [username] [groupname] 将用户加入到组中

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。

0首位表示类型 - 代表文件 d 代表目录 l 链接文档(link file)

三种特殊权限suid、sgid、sticky

例子:

变更文件权限方式一

例:chmod u-x,o+x houge.txt

变更文件权限方式二

例:chmod -R 777 /mnt/ 修改整个文件夹的文件权限

在linux中创建文件或者目录会有一个默认权限的,这个默认权限是由umask决定的(默认为0022)。umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。一般在/etc/profile 、~/.bashprofile 或者 ~/.profile中设置umask值。

umask计算

如root用户的默认umask为0022(第一个0 代表特殊权限位,这里先不考虑),创建的文件默认权限是644(即默认666掩上umask的022),创建的目录是755(即默认777掩上umask的022)。

对于root用户的umask=022这个来说,777权限二进制码就是(111)(111)(111),022权限二进制码为(000)(010)(010)。

上面就是一个umask的正常计算过程,但是这样实在是太麻烦了。我们使用如下的简单的方法快速计算。

上面的这个方法计算是非常方便的, 为何得到奇数要+1呢?

文件的最大权限是666,都是偶数,你得到奇数,说明你的umask有奇数啊,读为4,写为2,都是偶数,说明你有执行权限的。

就按照上面的umask=023为例,在计算其他用户权限的时候6-3=3 ,6是读写,3是写和执行,其实应该是读写权限减去读权限的得到写权限的,相当于我们多减去了一个执行权限。所以结果加1。

umask修改

如果想单独修改某个文件夹的新建文件的权限,可以使用setfacl命令。

例:递归改变文件所有者和所有组 chown -R hxr:hxr /mnt

例:

Linux 从 0 到 1(一) - 终端简介,文件与目录以及相关操作,常用命令

模式:

当打开终端,第一行所见的就叫命令行提示符。我的是这样的:

命令行提示符,顾名思义就是提示在其后面输入命令。在你输入新的一行命令前,这个命令提示符都会出现。分别解析一下上边代表什么意思:

oscar 这是当前用户的名字。Linux是一个多用户的操作系统,Windows也可以。不过Linux的多用户管理更方便。我们一般建议每个使用Linux系统的用户都创建一个属于自己的账户,便于隐私管理。

@ 这个符号我们应该不陌生,我们的电子邮件一般都是 name@domain.com 这样的不是吗。这个@就表示英语里的at,是“在...里面,落户在...的,在其中”的意思。@前面是用户名,后面是所在的域。

oscar-laptop 这是当前电脑/操作系统的名字。上面说了在@后面的是一个域,所以 oscar@oscar-laptop 就表示oscar-laptop这台电脑的oscar这个用户。oscar-laptop这个名称在安装此Linux系统时可以任意指定。

: 这是分隔符,没有什么特别的涵义。

~ 这是当前所在目录的名字,会随着用户进入不同目录而改变。~表示当前用户的家目录,有点类似Windows系统的“我的文档”这个目录。

$ 指示你所具有的权限的字符。在Linux系统中有两种可能:

因此, oscar@oscar-laptop:~$ 的意思就是:

你目前是以oscar这个用户登录;你的电脑名称为oscar-laptop;你目前位于 ~ 目录下,就是你的用户家目录。你是普通用户,拥有有限的权限。

参数里可以包含多个参数,由空格隔开,也可以包含数字,字母,等等。可以说,参数没有固定的格式,但是一般来说还是遵循一定的规范的。

如果我们要一次加好几个短参数,可以用空格隔开,例如:

多个短参数也可以合并在一起,例如上面的命令等价于:

请注意:参数的字母的大小写是有区别的,大写的T和小写的t通常表示不同意思。

如果有多个长参数,是不能像多个短参数那样合并写的。而是只能以空格隔开,例如:

当然我们也可以组合使用短参数和长参数,例如:

有时候,同一个意义的参数有短参数和长参数两种形式,效果是一样的,可以任选哪一种。

有一些参数你还需要给它赋一个值才行。而且短参数和长参数的赋值的方式不尽相同。

例如,短参数赋值,通常是这样的:

表示把10赋值给p参数。

如果是长参数,则一般是这样赋值:

长参数的方式更加容易理解,但是不如短参数那么简洁。

正如我们说过的,参数的形式没有绝对的准则。我们上面给出的规则是一般的,有些命令的参数格式可能是我们没怎么见过的。

有些参数就不一样,而且取决于命令。例如对于 ls 这个命令,假如后面带了一个参数,这个参数是一个目录的路径名的话,那么就会列出此目录下的文件。

两种类型的文件

简单起见,我们把Linux下的文件分为两大类:

在一个文件系统中,我们总有一个被称为根目录的东西,这个根目录里包含了所有其他目录和文件。Linux中有且只有一个根目录,就是

是的,就是用一个斜杠表示。没有比根目录再高一阶的目录了,因为没有目录包含根目录,根目录就是Linux最顶层的目录。

Linux系统安装后,包含了很多的文件和目录(虽然其实都是文件),我们很容易迷失在“茫茫文海”中。

当然我们不可能一下子列出Linux中的所有文件,那不现实。但是我们可以向你展示如何在Linux的目录树中来回穿梭,你可以知道此刻你位于哪个目录下。就好比能看懂Linux这个很大的“地图”。

pwd 是英语Print Working Directory的缩写,表示“打印当前工作目录”。

which 命令:获取命令的可执行文件的位置,which命令用于显示一个命令的对应的可执行程序的位置。可能听起来有点拗口。

在Linux下,每一条命令其实对应了一个可执行程序。我们在终端中输入命令,再按回车的时候,其实就是执行了对应的那个程序。比如说,pwd命令对应的pwd程序就是存在于Linux中的。

which命令接受一个参数,也就是你想要知道其可执行程序位于哪里的那个命令。

我们来测试一下,就拿pwd命令来测试好了:

得到:

因此,pwd命令对应的pwd这个可执行程序位于/bin目录中。

我们也可以注意到Linux中的可执行程序和Windows中不太一样,在Windows中可执行程序一般以.exe结尾,而Linux中一般是没有后缀名的。

Linux中的可执行程序也不是都位于相同目录的。我们可以来测试一下which命令本身对应的可执行程序位于哪里:

我们可以看到,which命令对应的可执行程序which并不位于/bin中,而是在/usr/bin中。

Ubuntu的终端默认是有颜色标注的,一般来说:

如果在你的终端里没有标明颜色,那么你可以加上参数 --color=auto 来开启颜色标注。如下:

如果你不需要颜色标注,那么可以用 --color=none 来关闭颜色标注。如下:

当然,为了避免每次都输入这么一串额外的参数,其实我们可以在一个配置文件里修改,使得永久显示颜色或不显示颜色。

在Linux,以点( . )开头的文件是隐藏文件,不过这里不包括开头的两个 . 和 .. ,这两个的含义如下:

- . (一个点)表示当前目录。在当前情况下,就是 /home/oscar 。

- .. (两个点)表示上一级目录。因为当前目录是/home/oscar,所以上一级目录就是 /home 。

我们有一个大写的参数 -A,它的作用和小写的-a几乎一样,唯一不同就是-A不列出 . 和 .. 这两个文件。

-l 这个参数算是ls命令最常用的了。加上-l参数使得ls命令列出一个显示文件和目录的详细信息的列表。

当我们仅用ls -l时,列出的文件详细信息中,文件的大小是以字节为单位的。有时这不是太直观。我们可以再加一个参数-h,h是humain readable的缩写,表示“适合人类阅读的”。所以我们的命令变成了:

t是time的缩写。

du命令也是很有用的,因为它可以让我们知道文件和目录所占的空间大小。

虽然ls -l命令也可以显示文件和目录的大小,但是du命令统计的才是真正的文件大小。du命令会深入遍历每个目录的子目录,把所有文件的大小都做一个统计。

du是英语disk usage的缩写,表示“磁盘使用/占用”。

我们的du命令也可以使用参数。

cat命令和less命令:显示文件内容,这两个命令只能显示文件内容,并不能对文件内容进行修改。

一次性显示文件的所有内容,如果你想要在显示的文件内容上加上行号,那么你可以加上 -n 这个参数。

分页显示文件内容

head命令和tail命令:显示文件的开头和结尾。

显示文件开头,默认情况下,head会显示文件的头10行。我们也可以指定显示的行数,用 -n 这个参数:

就会显示文件的头5行。

显示文件结尾。默认情况下,tail会显示文件的尾10行。

我们也可以指定显示的行数,用 -n 这个参数:

就会显示文件的尾5行。

tail命令还可以配合 -f 参数来实时追踪文件的更新:

这样,就会检查文件是否有追加内容,如果有,就显示新增内容。

默认地,tail -f会每过1秒检查一下文件是否有新内容。你也可以指定间隔检查的秒数,用 -s 参数:

可以用快捷键 Ctrl + c 来终止tail -f 命令。

touch命令和mkdir命令:创建文件和目录

创建一个空白文件。事实上,Linux没有一个命令是专门用来创建一个空白文件的。touch命令其实一开始的设计初衷是修改文件的时间戳,就是可以修改文件的创建时间或修改时间,让电脑以为文件是在那个时候被修改或创建的。但是touch命令如果后面跟着的文件名是不存在的,那么它就会新建一个。

事实上,我们可以用touch命令同时创建多个文件:

如果我所要创建的文件的名字里有空格怎么办呢?

很简单,加上双引号:

创建一个目录。

mkdir也可以同时创建好几个目录:

如果我所要创建的目录的名字里有空格怎么办呢?

很简单,加上双引号:

我们还可以用 -p 参数来递归创建目录结构。

比如:

cp命令和mv命令:拷贝文件和移动文件

拷贝文件或目录

cp是英语copy的缩写,表示“拷贝”。所以,顾名思义,此命令用于拷贝。cp命令不仅可以拷贝单个文件,还可以拷贝多个文件,也可以拷贝目录。

复制文件到另一个目录只需要把cp命令的第二个参数换成目录名。

拷贝目录

要拷贝目录,只要在cp命令之后加上-R参数(注意是大写的R)。拷贝的时候,目录中的所有内容(子目录和文件)都会被拷贝。

使用通配符*

*号(星号)是很常用的正则表达式的符号,被称为“通配符”,

所以如果我们用如下命令:

那么就会把当前目录下所有txt文件拷贝到folder这个子目录当中。

又如:

那么就会把当前目录下凡是以ha开头的文件都拷贝到folder目录中。

移动文件

mv是英语move的缩写,表示“移动”。mv命令有两个功能:

用mv命令来移动目录很简单,不需要额外的参数,就跟移动文件一样:

当然,我们也可以使用通配符。

除了移动文件,mv命令还可以用于重命名文件。

事实上,Linux中没有一个专门的命令用于重命名文件。之所以mv命令可以重命名文件,其实还是归因于它的机制:移动文件。经过mv移动之后,原始文件变成了新的名字的文件,文件内容是不变的,这不就相当于重命名了吗?

以上命令会将new_file重命名为renamed_file。

删除文件和目录

rm命令可以删除一个文件,多个文件,目录,甚至你的整个Linux系统(如果你愿意的话)。

以上命令删除当前目录下的new_file_copy这个文件。

我们也可以同时删除多个文件,只要用空格隔开每个文件即可。例如:

保险起见,用rm命令删除文件时,可以加上 -i 参数,这样对于每一个要删除的文件,终端都会询问我们是否确定删除。i是英语inform的缩写,表示“告知,通知”。

有两种回答:

y:是英语yes的缩写,表示“是”。那么回车确认后,文件就删除了。

n:是英语no的缩写,表示“否”。那么回车确认后,文件不会删除。

如果在rm命令后加上-f参数,那么终端不会询问用户是否确定删除文件,不论如何,文件会立刻被强制删除。

f是英语force的缩写。

以上命令会强制删除file文件。

r是英语recursive的缩写,表示“递归的”。所以使用-r参数,可以使rm命令删除目录,并且递归删除其包含的子目录和文件。

这个命令也挺危险的,用得不好可能你的子目录和文件都没了。

以上命令会删除one这个目录,包括其子目录和文件。

其实,也存在一个命令

看着和 rm -r 挺像的。但是这个命令有个局限性:只能删除空的目录。

创建链接

事实上,Linux下有两种链接类型:

为了区分这两种链接类型的不同,我们首先来谈一谈如Linux这样的操作系统中文件在硬盘上的存放。

文件在硬盘上存储时,大致来说(请注意我用了“大致来说”),每个文件有两部分:

文件名的列表是储存在硬盘的其他地方的,和文件内容分开存放,这样方便Linux管理。

注意:为什么我上面要用“大致说来”呢?因为此处我们简化了描述,其实每个文件有三部分:

我们这里简化地将文件分为两部分:文件名和文件内容。因为我们不想把事情复杂化,我们想要理解两种链接类型的区别,暂时只要知道这些就够了。

每个文件的文件内容被分配到一个标示号码,就是inode。因此每个文件名都绑定到它的文件内容(用inode标识)。原理如下图:

下面我们学习如何创建硬链接和软连接。

比之软链接,硬链接的使用几率小很多。但是我们还是要学习一下,毕竟可能会用到。

硬链接的原理:使链接的两个文件共享同样的文件内容,也就是同样的inode。

所以一旦文件1和文件2之间有了硬链接,那么你修改文件1或文件2,其实修改的是相同的一块内容。只不过我们可以用两个文件名来取到文件内容。

硬链接有一个缺陷:只能创建指向文件的硬链接,不能创建指向目录的硬链接。但是软链接可以指向文件或目录。当然了,事实上,通过一些参数的修改,也可以创建指向目录的硬链接,但是比较复杂,这里不再详述。所以对于目录的链接,我们一般都是用软链接。

硬链接原理图:

要创建硬链接,直接用ln命令,不加任何参数:

我们可以用ls -i命令查看一下(-i参数可以显示文件的inode)。对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除。

我们用ls -l命令查看文件信息的时候,第二列的那个2,其实是表示拥有相同inode号的文件数。不难理解,因为它们指向相同的文件内容,所以共享一个inode。

这个第二列的数字,一般来说对于普通文件,都是1,因为不同文件inode不同嘛。对于目录来说,这第二列的数字标明目录内所含文件数目。

其实,软链接才是真正像我们在Windows下的快捷方式的,其原理很相似。

创建硬链接是ln不带任何参数,但是要创建软链接需要加上-s参数。s是symbolic(符号的)的缩写。

file2指向的不再是file1的文件内容(和硬链接不同),而是指向file1的文件名。

软链接原理图:

用ls -l命令查看一下,会发现形式和之前的硬链接不一样噢,file2的信息是这样的: file2-file1,表示file2指向file1。

而且file2前面的权限那里的第一个字母变成了l,表示link(链接)。之前硬链接的时候是没有l的,硬链接外表看起来就和普通文件类似。

我们用ls -l命令查看文件信息的时候,第二列的那个1,表示拥有相同inode号的文件数。不难理解,因为file2指向file1,它们并没有指向同一块文件内容,所以它们的inode号不相同。

软链接的特点:


当前题目:linux打开命令提示行,linux打开程序命令行
网页链接:http://hbruida.cn/article/hsepis.html