linux基础二 --基本命令操作

文件管理命令

cd

../ 命令可以多次使用
在这里插入图片描述
快速切换到当前用户的home目录的方式:

$ cd                    # 方式1
$ cd ~                  # 方式2
$ cd /home/用户名        # 方式3 //任意用户

如果我们要频繁的在两个路径之间切换, 也有相关的快捷操作:(cd -)长路径比较方便

# 通过cd进入到目录1:  /usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/
# 通过cd进入到目录2:  /home/luffy/get/onepiece/itis/a/goldfish
# 频繁在两个目录之间切换
$ cd -

ls

ls 就是 list, 打印指定的文件信息, 如果是目录, 显示对应目录中有哪些子文件, 语法格式如下:

$ ls [args]           # 查看当前目录
$ ls [args] 目录名 	# 查看指定目录
$ ls [args] 文件名 	# 查看某个文件的信息

[args]  可以多个一起使用
  • ls -a (隐藏+非隐藏)

给 ls添加 -a参数(就是 all 的意思)就可以显示指定目录中是所有文件了,
因为默认情况下具有隐藏属性的文件是不会显示出来的。那么在Linux中什么样是文件才能被隐藏呢?起始很简单只需要在文件名前边加一个点(.)文件就具有隐藏属性了,
例如: .demo, .a.txt。

在这里插入图片描述

  • ls -l : -l参数(就是 list 的意思) 查看文件的详细信息,简写 ll

其中包括: 文件类型, 文件所有者对文件的操作权限, 文件所属组用户对文件的操作权限, 其他人对文件的操作权限, 硬链接计数, 文件所有者,文件所属组, 文件大小, 文件的修改日期, 文件名

# 文件详细信息介绍
 d      rwx       rwx     r-x     5    robin    robin    4096    Jan 13 17:35    udp
 |       |         |       |      |      |        |       |          |	          |
文件    文件所    文件所   其他人 硬链接  文件     文件   文件大小  文件修改时间     文件名
类型   有者权限  属组权限  权限   计数   所有者   所属组    

在这里插入图片描述

  1. -: 普通的文件, 在Linux终端中没有执行权限的为白色, 压缩包为红色, 可执行程序为绿色字体
  2. d: 目录(directory), 在Linux终端中为蓝色字体, 如果目录的所有权限都是开放的, 有绿色的背景色
  3. l: 软链接文件(link), 相当于windows中的快捷方式, 在Linux终端中为淡蓝色(青色)字体
  4. c: 字符设备(char), 在Linux终端中为黄色字体(键盘)
  5. b: 块设备(block), 在Linux终端中为黄色字体(硬盘 )
  6. p: 管道文件(pipe), 在Linux终端中为棕黄色字体
  7. s: 本地套接字文件(socket), 在Linux终端中为粉色字体

ls -F 文件是目录则会在后边出现一个/

在这里插入图片描述

  • ls -lFh (h表示更复合人类的,比如内存显示MB单位) 没有h显示字节大小
    文件大小 —> 单位是字节 如果文件是目录显示为4096, 这是目录自身大小, 不包括目录中的文件大小
    在这里插入图片描述

用户类型与文件的权限

在Linux中有三大类用户: 文件所有者, 文件所属组用户, 其他人, 我们可以对同一个文件给这三种人设置不同的操作权限,用于限制用户对文件的访问。

  • 读权限:使用 r表示, 即: read
  • 写权限:使用 w表示, 即: write
  • 执行权限:使用 x表示, 即: excute
  • 没有任何权限:使用-表示

硬链接计数是一个整数,如果这个数为N(N>=1),(多个别名)就说明在一个或者多个目录下一共有N个文件, 但是这N个文件并不占用多块磁盘空间, 他们使用的是同一块, 如果通过其中一个文件修改了磁盘数据, 那么其他文件中的内容也就变了。每当我们给给磁盘文件创建一个硬链接(使用 ln),磁盘上就会出现一个新的文件名,硬链接计数加1,但是这新文件并不占用任何的磁盘空间,文件名还是映射到原来的磁盘地址上。

创建删除目录

tree 命令 --以树的形式展示目录结构

目录的创建分为两种, 一种是创建单个目录, 另一种是一次性创建多层目录, 使用的命令是mkdir, 后边参数是要创建的目录的名字,
如果是多层目录需要添加参数**-p**。

关于创建的目录所在的路径可以是相对路径, 也可以是绝对路径。
在这里插入图片描述

# 单层目录
$ mkdir 新目录的名字

mkdir  a  b //同时创建多个单层目录

# 多层目录, 需要加参数 -p
$ mkdir parent/child/baby1/baby2 -p
  • 删除目录

如果要删除已经存在的路径一共有两种方式, 可以使用rmdir或者rm

rmdir: 只能删除空目录,有点low,不好用

rm: 可以删除文件也可以删除目录, 如果删除的的是目录, 需要加参数 -r, 意思是递归(recursion)

rm命令还有另外两个经常使用的参数:

  • -i: 删除的时候给提示
  • -f: 强制删除文件, 没有提示直接删除并且不能恢复, 慎用
    在这里插入图片描述

cp命令(复制文件)

使用这个命令可以拷贝文件也可以拷贝目录

# `语法: cp 要拷贝的文件  得到的文件`

# `场景1: 文件A, 将A拷贝一份得到文件B`
$ cp 文件A 文件B

# `场景2: 文件A存在的, 文件B也是存在的, 执行下边的拷贝 ==> 文件A覆盖文件B`
$ cp 文件A 文件B
  • #拷贝目录需要参数 -r
# 场景1: 目录A, 通过拷贝得到不存在的目录B
$ cp 目录A 目录B -r

# 场景2: 目录A存在的, 目录B也是存在的, 执行下边的拷贝 ==> **目录A会被拷贝并将其放到目录B中**
$ cp 目录A 目录B -r

# 场景3: 把A目录里的某一个或者多个文件拷贝到B目录中
$ cp A/a.txt B	# 拷贝 A目录中的 a.txt 到目录B中
$ cp A/* B -r	# 拷贝 A目录中的所有文件到目录B中, 不能确定A目录中是否有子目录, 因此需要加 -r

mv 文件的移动,命名,覆盖

mv 就是move, 这个Linux命令既能移动文件所在目录也可以给文件改名。

  • 文件的移动

语法: mv 要移动的文件 目录
有一个文件A, 移动到目录B中
其中A可以是文件也可以是目录, B必须是目录而且必须是存在的
$ mv A B (A可以是多个文件 如 A.tmp b.tmp)

  • 文件改名

语法: mv 要改名的文件 新名字(原来是不存在的,这点很重要)
其中A可以是文件也可以是目录,并且是存在的, B原来是不存在的 $ mv A B

  • 文件覆盖

语法: mv 存在文件A 存在的文件B
其中A是文件(非目录)并且是存在的, B也是一个文件(非目录)并且也存在
A文件中的内容覆盖B文件中的内容, A文件被删除, 只剩下B文件 $ mv A B

查看文件内容

最常用的就是vim,下面介绍一下vim以外的一些的一些方式:

$ cat 文件名
该命令可以将文件内容显示到终端, 由于终端是有缓存的, 因此能显示的字节数也是受限制的。 如果文件太大数据就不能完全显示出来了,因此该命令适合查看比较小的文件内容。

move
该命令比cat要高级一点, 我们可以以翻屏的方式查看文件中的内容,使用方式如下:

$ more 文件名

  • 回车: 显示下一行
  • 空格: 向下滚动一屏
  • b: 返回上一屏
  • q: 退出more

less 和more差不多

$ less 文件名

  • b: 向上翻页
  • 空格: 向后翻页
  • 回车: 显示下一行
  • 上下键: 上下滚动
  • q:退出

head 默认前10行 相似tail命令
$ head 文件名 指定显示头部的前多少行 $ head -行数 文件名

链接的创建

软链接(相当于快捷方式)和硬链接(并不会拷贝,只是多了一个新的文件名,且硬链接计数会加1,可直接修改源文件)

  • 软链接
# 语法: ln -s 源文件路径 软链接文件的名字(可以带路径)

# 查看目录文件
[root@VM-8-14-centos ~/luffy]# ll
total 8
drwxr-xr-x 3 root root 4096 Jan 25 17:27 get
-rw-r--r-- 1 root root   37 Jan 25 17:26 onepiece.txt

# 给 onepiece.txt 创建软连接, 放到子目录 get 中
[root@VM-8-14-centos ~/luffy]# ln -s /root/luffy/onepiece.txt get/link.lnk  
[root@VM-8-14-centos ~/luffy]# ll get
total 4
lrwxrwxrwx 1 root root   24 Jan 25 17:27 link.lnk -> /root/luffy/onepiece.txt
drwxr-xr-x 2 root root 4096 Jan 24 21:37 onepiece

在这里插入图片描述

注意:创建链接文件时,如果创建的链接文件写绝对路径时,可以随意移动链接文件,对于相对路径,就不能移动,否则会找不到链接的路径文件。

  • 硬链接(与软连接相比,缺少参数s)
# 语法: ln 源文件 硬链接文件的名字(可以带路径)

# 创建硬链接文件, 放到子目录中
[root@VM-8-14-centos ~/luffy]# ln onepiece.txt get/link.txt

# 查看链接文件和硬链接计数,1 --> 2
[root@VM-8-14-centos ~/luffy]# ll get
total 8
lrwxrwxrwx 1 root root   24 Jan 25 17:27 link.lnk -> /root/luffy/onepiece.txt
-rw-r--r-- 2 root root   37 Jan 25 17:26 link.txt
drwxr-xr-x 2 root root 4096 Jan 24 21:37 onepiece

硬链接和软链接不同, 它是通话文件名直接找对应的硬盘地址, 而不是基于路径, 因此 源文件使用相对路径即可, 无需为其制定绝对路径。

目录是不允许创建硬链接的。

修改文件的权限

文件权限是针对文件所有者, 文件所属组用户, 其他人这三类人而言的, 对应的操作指令是chmod。设置方式也有两种,分别为文字设定法和数字设定法。

  • 文字设定法是通过一些关键字r, w, x, -来描述用户对文件的操作权限。
  • 数字设定法是通过一些数字 0, 1, 2, 4, 5, 6, 7 来描述用户对文件的操作权限。
  • chomd
    #chmod

#语法格式: chmod who [+|-|=] mod 文件名

  • who:
    • u: user -> 文件所有者
    • g: group -> 文件所属组用户
    • o: other -> 其他
    • a: all, 以上是三类人 u+g+o
  • 对权限的操作: +: 添加权限 -: 去除权限 =: 权限的覆盖
  • mod: 权限 r: read, 读 w: write, 写 x: execute, 执行 -: 没有权限
    数字设定: # 语法格式: chmod [+|-|=] mod 文件名
  • mod: 权限描述, 所有权限都放开是 7
    - 4: read, r
    - 2: write, w
    - 1: execute , x
    - 0: 没有权限
# 将文件所有者权限设置为读和执行, 也就是权限覆盖
robin@OS:~/Linux$ chmod u=rx b.txt 
robin@OS:~/Linux$ ll b.txt         
-r-xrw-r-- 2 robin robin 2929 Apr 14 18:53 b.txt*

# 给其他人添加写和执行权限
robin@OS:~/Linux$ chmod o+wx b.txt 
robin@OS:~/Linux$ ll b.txt         
-r-xrw-rwx 2 robin robin 2929 Apr 14 18:53 b.txt*

# 给文件所属组用户去掉读和执行权限
robin@OS:~/Linux$ chmod g-rx b.txt 
robin@OS:~/Linux$ ll b.txt         
-r-x-w-rwx 2 robin robin 2929 Apr 14 18:53 b.txt*

# 将文件所有者,文件所属组用户,其他人权限设置为读++执行
robin@OS:~/Linux$ chmod a=rwx b.txt
robin@OS:~/Linux$ ll b.txt 
-rwxrwxrwx 2 robin robin 2929 Apr 14 18:53 b.txt*

 分解: chmod 0567 a.txt

    0           5           6             7
  八进制     文件所有者  文件所属组用户    其他人
              r + x       r + w         r+w+x

修改文件的所有者

默认情况下, 文件是通过哪个用户创建出来的, 就属于哪个用户, 这个用户属于哪个组, 文件就属于哪个组

chown 可以修改文件所有者,同时修改文件所有者是跨用户操作,需要借助管理员权限(sudo)才能完成操作

但一般新用户是没有sudo权限的,默认不能够使用管理员权限执行某些管理员才能执行的命令。

添加新用户(adduser,设置密码passwd,切换su)
# 添加新用户 sanji
[root@VM-8-14-centos ~]# adduser sanji

# 给新用户 sanji 设置一个密码
[root@VM-8-14-centos ~]# passwd sanji
Changing password for user sanji.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

# 切换到 sanji 用户
[root@VM-8-14-centos ~]# su - sanji
添加sudo权限(位于sudoers文件中)

sudoers的文件位于/etc目录下。

我们惊奇的发现这个文件的所有者root对它也只有读权限, 默认是不能修改的, 作为root以外的其他用户对它没有任何的操作权限。
在这里插入图片描述

解决方案:
先切换到root用户
在root用户下修改这个文件属性, 给其添加写权限
修改文件内容, 把普通用户sanji添加进去, 保存退出
将文件权限修改为原来的 400 (r--------)
切换到用户 sanji, 这时候就可以使用 sudo了, 权限添加成功
# 1. 切换到root用户
$ su root
Password: 		# 输入root用户的密码

# 2. 修改文件权限, 暴力一点没有关系, 反正还需要改回去, 直接 777 就行
$ chmod 777 sudoers

# 3. 使用 vim 打开这个文件
$ vim sudoers

# 4. 在文件中找到这一行, 在文件偏尾部的位置
root    ALL=(ALL)       ALL

# 5. 照葫芦画瓢, 在下边新添加一行内容如下:
root    ALL=(ALL)       ALL           # 原来的内容
sanji    ALL=(ALL)       ALL          # 新添加的行, 将用户名指定为 sanji 即可

# 6. 保存退出 (先按esc, 然后输入 :wq)
# 7. 将文件改回原来的权限
$ chmod 400 sudoers

重定向命令(使用最多的就输出重定向)

修改输出的数据位置,使用重定向可以方便的进行文件的复制,文件内容的追加, 符号:> 或者>>
> 将文件内容写入到指定文件中, 如果文件中已有数据, 则会使用新数据覆盖原数据
>> 将输出的内容追加到指定的文件尾部

可以与cat命令一起使用。

  • 输出重定向:

使用 > 符号可以将命令的输出重定向到一个文件。如果文件不存在,它会被创建;如果文件已经存在,它的内容会被覆盖。

cat filename > outputfile
  • 输入重定向:

使用 < 符号可以从一个文件获取输入。这经常与一些接受输入并基于该输入执行操作的命令一起使用。

 cat < inputfile

这会将 inputfile 的内容显示到终端。

  • 管道:

虽然这不是直接的重定向,但 |(管道)符号允许你将一个命令的输出作为另一个命令的输入。这与重定向类似,但更加灵活。

cat filename | grep "pattern"

这会显示 filename 中包含 “pattern” 的所有行。

echo命令

在Linux Shell中,echo命令是一个常用的内置命令,用于在终端上显示文本或字符串。它主要用于显示变量的值,创建文件的内容,或者简单地输出一些信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值