硬链接

使链接的两个文件共享同样文件内容,就是同样的inode,一旦文件1和文件2之间有了硬链接,这么更改任何一个文件,更改的都是同一块内容,它的缺点是,只能创建指向文件的硬链接,不能创建指向目录的(虽然也可以,但比较复杂)而软链接都可以,因而软链接使用愈加广泛。

ln file1 file2  --> 创建 file2 为 file1 的硬链接复制代码

假如我们用rmfile1来删掉file1,对file2没有哪些影响,对于硬链接来说,删掉任意一方的文件,共同指向的文件内容并不会从硬碟上删掉。只有同时删掉了file1与file2后,它们共同指向的文件内容就会消失。

软链接

软链接就类似windows下快捷方法。

ln -s file1 file2复制代码

执行ls-l命名查看当前目录下文件的具体信息

total 0-rw-r--r-- 1 root root 0 Jan 14 06:29 file1lrwxrwxrwx 1 root root 5 Jan 14 06:42 file2 -> file1  # 表示file2 指向 file1复制代码

虽然file2只是file1的一个快捷方法,它指向的是file1,所以显示的是file1的内容,但毕竟file2的inode与file1并不相同。假如我们删掉了file2的话,file1是不会受影响的,但若果删掉file1的话,file2都会弄成死链接,由于指向的文件不见了。

用户与权限用户

Linux是一个多用户的操作系统。在Linux中,理论上来说,我们可以创建无数个用户,并且这种用户是被界定到不同的群组上面的,有一个用户,名叫root,是一个很特殊的用户,它是超级用户,拥有最高权限。

切换目录命令_linux切换目录命令_切换目录命令是什么

自己创建的用户是有限权限的用户,这样大大提升了Linux系统的安全性,有效避免误操作或是病毒功击,而且我们执行的个别命令须要更高权限时可以使用sudo命令

sudo

以root身分运行命令

sudo date  --> 当然查看日期是不需要sudo的这里只是演示,sudo 完之后一般还需要输入用户密码的复制代码

useradd+passwd

这两个命令须要root用户权限

useradd lion --> 添加一个lion用户,添加完之后在 /home 路径下可以查看passwd lion --> 修改lion用户的密码复制代码

userdel

删掉用户,须要root用户权限

userdel lion --> 只会删除用户名,不会从/home中删除对应文件夹userdel lion -r --> 会同时删除/home下的对应文件夹复制代码

su

切换用户,须要root用户权限

sudo su --> 切换为root用户(exit 命令或 CTRL + D 快捷键都可以使普通用户切换为 root 用户)su lion --> 切换为普通用户su - --> 切换为root用户复制代码

群组的管理

切换目录命令_切换目录命令是什么_linux切换目录命令

Linux中每位用户都属于一个特定的群组,假如你不设置用户的群组linux切换目录命令,默认会创建一个和它的用户名一样的群组,而且把用户并入到这个群组。

groupadd

创建群组linux 分区,用法和useradd类似。

groupadd friends复制代码

groupdel

删掉一个已存在的群组

groupdel foo  --> 删除foo群组复制代码

groups

查看用户所在群组

groups lion  --> 查看 lion 用户所在的群组复制代码

usermod

用于更改用户的帐户。

【常用参数】

chgrp

用于更改文件的群组。

chgrp bar file.txt --> file.txt文件的群组修改为bar复制代码

chown

改变文件的所有者,须要root身分能够运行。

chown lion file.txt --> 把其它用户创建的file.txt转让给lion用户chown lion:bar file.txt --> 把file.txt的用户改为lion,群组改为bar复制代码

【常用参数】

文件权限管理chmod

更改访问权限。

chmod 740 file.txt复制代码

【常用参数】

更改权限的确简单,并且理解其深层次的意义才是更加重要的。下边我们来系统的学习Linux的文件权限。

[root@lion ~]# ls -ldrwxr-xr-x 5 root root 4096 Apr 13  2020 climblrwxrwxrwx 1 root root    7 Jan 14 06:41 hello2.c -> hello.c-rw-r--r-- 1 root root  149 Jan 13 06:14 hello.c复制代码

其中drwxr-xr-x表示文件或目录的权限。让我们一上去剖析它具体代表哪些?

切换目录命令是什么_linux切换目录命令_切换目录命令

权限的整体是按用户来界定的,如右图所示:

切换目录命令_linux切换目录命令_切换目录命令是什么

如今再来理解这句权限drwxr-xr-x的意思:

如今理解了权限,我们使用chmod来尝试更改权限。chmod它不须要是root用户能够运行的,只要你是此文件所有者,就可以用chmod来更改文件的访问权限。

数字分配权限

权限数字r4w2x1

因而要改变权限,只要做一些简单的乘法就行:

chmod 640 hello.c # 分析6 = 4 + 2 + 0 表示所有者具有 rw 权限4 = 4 + 0 + 0 表示群组用户具有 r 权限0 = 0 + 0 + 0 表示其它用户没有权限对应文字权限为:-rw-r-----复制代码

用字母来分配权限

chmod u+rx file --> 文件file的所有者增加读和运行的权限chmod g+r file --> 文件file的群组用户增加读的权限chmod o-r file --> 文件file的其它用户移除读的权限chmod g+r o-r file --> 文件file的群组用户增加读的权限,其它用户移除读的权限chmod go-r file --> 文件file的群组和其他用户移除读的权限chmod +x file --> 文件file的所有用户增加运行的权限chmod u=rwx,g=r,o=- file --> 文件file的所有者分配读写和执行的权限,群组其它用户分配读的权限,其他用户没有任何权限复制代码

查找文件locate

搜索包含关键字的所有文件和目录。后接须要查找的文件名,也可以用正则表达式。

安装locate

yum -y install mlocate --> 安装包updatedb --> 更新数据库复制代码locate file.txtlocate fil*.txt复制代码

[注意]locate命令会去文件数据库中查找命令,而不是全c盘查找,因而刚创建的文件并不会更新到数据库中,所以未能被查找到,可以执行updatedb命令去更新数据库。

find

用于查找文件,它会去遍历你的实际硬碟进行查找,但是它容许我们对每位找到的文件进行后续操作,功能十分强悍。

find   复制代码

按照文件名查找

find -name "file.txt" --> 当前目录以及子目录下通过名称查找文件find . -name "syslog" --> 当前目录以及子目录下通过名称查找文件find / -name "syslog" --> 整个硬盘下查找syslogfind /var/log -name "syslog" --> 在指定的目录/var/log下查找syslog文件find /var/log -name "syslog*" --> 查找syslog1、syslog2 ... 等文件,通配符表示所有find /var/log -name "*syslog*" --> 查找包含syslog的文件 复制代码

[注意]find命令只会查找完全符合“何物”字符串的文件,而locate会查找所有包含关键字的文件。

按照文件大小查找

find /var -size +10M --> /var 目录下查找文件大小超过 10M 的文件find /var -size -50k --> /var 目录下查找文件大小小于 50k 的文件find /var -size +1G --> /var 目录下查找文件大小查过 1G 的文件find /var -size 1M --> /var 目录下查找文件大小等于 1M 的文件复制代码

按照文件近来访问时间查找

find -name "*.txt" -atime -7  --> 近 7天内访问过的.txt结尾的文件复制代码

仅查找目录或文件

find . -name "file" -type f  --> 只查找当前目录下的file文件find . -name "file" -type d  --> 只查找当前目录下的file目录复制代码

切换目录命令_linux切换目录命令_切换目录命令是什么

操作查找结果

find -name "*.txt" -printf "%p - %un" --> 找出所有后缀为txt的文件,并按照 %p - %un 格式打印,其中%p=文件名,%u=文件所有者find -name "*.jpg" -delete --> 删除当前目录以及子目录下所有.jpg为后缀的文件,不会有删除提示,因此要慎用find -name "*.c" -exec chmod 600 {} ; --> 对每个.c结尾的文件,都进行 -exec 参数指定的操作,{} 会被查找到的文件替代,; 是必须的结尾find -name "*.c" -ok chmod 600 {} ; --> 和上面的功能一直,会多一个确认提示复制代码

软件库房

Linux下软件是以包的方式存在,一个软件包或许就是软件的所有文件的压缩包,是二补码的方式,包含了安装软件的所有指令。RedHat家族的软件包后缀名通常为.rpm,Debian家族的软件包后缀是.deb。

Linux的包都存在一个库房,称作软件库房,它可以使用yum来管理软件包,yum是CentOS中默认的包管理工具,适用于RedHat一族。可以理解成Node.js的npm。

yum常用命令切换CentOS软件源

有时侯CentOS默认的yum源不一定是国外镜像,致使yum在线安装及更新速率不是很理想。这时侯须要将yum源设置为国外镜像站点。国外主要开源的镜像站点是网易和阿里云。

1、首先备份系统自带yum源配置文件mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup

2、下载阿里云的yum源配置文件到/etc/yum.repos.d/CentOS7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo复制代码

3、生成缓存

yum makecache复制代码

阅读指南

Linux命令种类繁多,我们凭着记忆不可能全部记住,因而学会查用指南是极其重要的。

man安装更新man

sudo yum install -y man-pages --> 安装sudo mandb --> 更新复制代码

man指南种类可执行程序或Shell命令;系统调用(Linux内核提供的函数);库调用(程序库中的函数);文件(比如/etc/passwd);特殊文件(一般在/dev下);游戏;杂项(man(7),groff(7));系统管理命令(一般只能被root用户使用);内核子程序。man+数字+命令

输入man+数字+命令/函数linux切换目录命令,可以查到相关的命令和函数,若不加数字,man默认从数字较小的指南中找寻相关命令和函数

man 3 rand  --> 表示在手册的第三部分查找 rand 函数man ls    --> 查找 ls 用法手册复制代码

man指南核心区域解析:(以manpwd为例)

NAME # 命令名称和简单描述     pwd -- return working directory nameSYNOPSIS # 使用此命令的所有方法     pwd [-L | -P]DESCRIPTION # 包括所有参数以及用法     The pwd utility writes the absolute pathname of the current working directory to the standard output.     Some shells may provide a builtin pwd command which is similar or identical to this utility.  Consult the builtin(1) manual page.     The options are as follows:     -L      Display the logical current working directory.     -P      Display the physical current working directory (all symbolic links resolved).     If no options are specified, the -L option is assumed.SEE ALSO # 扩展阅读相关命令     builtin(1), cd(1), csh(1), sh(1), getcwd(3)复制代码

help

man命令像新华辞典一样可以查询到命令或函数的详尽信息,但显然我们还有更推动捷的方法去查询,command--help或command-hlinux命令ls,它没有man命令显示的这么详尽,而且它愈发便于阅读。

Linux进阶文本操作grep

全局搜索一个正则表达式,但是复印到屏幕。简单来说就是,在文件中查找关键字,并显示关键字所在行。

基础句型

grep text file # text代表要搜索的文本,file代表供搜索的文件# 实例[root@lion ~]# grep path /etc/profilepathmunge () {    pathmunge /usr/sbin    pathmunge /usr/local/sbin    pathmunge /usr/local/sbin after    pathmunge /usr/sbin afterunset -f pathmunge复制代码

常用参数中级用法

grep可以配合正则表达式使用。

grep -E path /etc/profile --> 完全匹配pathgrep -E ^path /etc/profile --> 匹配path开头的字符串grep -E [Pp]ath /etc/profile --> 匹配path或Path复制代码

sort

对文件的行进行排序。

基础句型

sort name.txt # 对name.txt文件进行排序复制代码

实例用法

为了演示便捷,我们首先创建一个文件name.txt,倒入以下内容:

ChristopherShawnTedRockNoahZacharyBella复制代码

执行sortname.txt命令,会对文本内容进行排序。

常用参数wc

wordcount的简写,用于文件的统计。它可以统计词组数量、行数、字符数,字节数等。

基础句型

wc name.txt # 统计name.txt复制代码

实例用法

[root@lion ~]# wc name.txt 13 13 91 name.txt复制代码

常用参数uniq

删掉文件中的重复内容。

基础句型

uniq name.txt # 去除name.txt重复的行数,并打印到屏幕上uniq name.txt uniq_name.txt # 把去除重复后的文件保存为 uniq_name.txt复制代码

【注意】它只能消除连续重复的行数。

常用参数cut

剪切文件的一部份内容。

基础句型

cut -c 2-4 name.txt # 剪切每一行第二到第四个字符复制代码

常用参数重定向管线流

在Linux中一个命令的去向可以有3个地方:终端、文件、作为另外一个命令的入参。

linux切换目录命令_切换目录命令是什么_切换目录命令

命令通常都是通过鼠标输入,之后输出到终端、文件等地方,它的标准用语是stdin、stdout以及stderr。

切换目录命令_linux切换目录命令_切换目录命令是什么

重定向

把原本要显示在终端的命令结果,输送到别的地方(到文件中或则作为其他命令的输入)。

输出重定向>

>表示重定向到新的文件,cut-d,-f1notes.csv>name.csv,它表示通过冒号剪切notes.csv文件(剪切完有3个部份)获取第一个部份,重定向到name.csv文件。

我们来看一个具体示例,学习它的使用,假定我们有一个文件notes.csv,文件内容如下:

Mark1,951/100,很不错1Mark2,952/100,很不错2Mark3,953/100,很不错3Mark4,954/100,很不错4Mark5,955/100,很不错5Mark6,956/100,很不错6复制代码

执行命令:cut-d,-f1notes.csv>name.csv最后输出如下内容:

Mark1Mark2Mark3Mark4Mark5Mark6复制代码

【注意】使用>要注意,假若输出的文件不存在它会新建一个,假若输出的文件早已存在,则会覆盖。因而执行这个操作要特别留神,以免覆盖其它重要文件。

输出重定向>>

表示重定向到文件末尾,因而它不会像>命令如此危险,它是追加到文件的末尾(其实假如文件不存在,也会被创建)。

再度执行cut-d,-f1notes.csv>>name.csv,则会把名子追加到name.csv上面。

Mark1Mark2Mark3Mark4Mark5Mark6Mark1Mark2Mark3Mark4Mark5Mark6复制代码

我们平常读的log日志文件虽然都是用这个命令输出的。

输出重定向2>

标准错误输出

cat not_exist_file.csv > res.txt 2> errors.log复制代码

输出重定向2>>

标准错误输出(追加到文件末尾)同>>相像。

输出重定向2>&1

标准输出和标准错误输出都重定向都一个地方

cat not_exist_file.csv > res.txt 2>&1  # 覆盖输出cat not_exist_file.csv >> res.txt 2>&1 # 追加输出复制代码

目前为止,我们接触的命令的输入都来自命令的参数,虽然命令的输入还可以来自文件或则按键的输入。

切换目录命令是什么_linux切换目录命令_切换目录命令

未命名文件(2).png

输入重定向

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复