[持续更新]Linux和shell学习
本文用于更新学习Linux和shell命令的笔记。也许会进一步更新。
Windows与Linux的区别
windows下面有盘符的概念,C盘,D盘,E盘等等。但是在Linux没有盘符的概念。
Linux的目录结构:所有的目录都是从根目录“/”开始,是我们的根目录。
在Linux下查询命令的功能
$ man 命令用户
- Linux是多用户的系统,一个用户可以多次(同时)登录一个Linux系统,多个用户也可以(同时)登录一个Linux系统。(与Windows桌面版本不一样)
- 为了节约空间,操作在保存用户和组信息的时候,只保存两个整型数字,称为用户ID和组ID。用户ID和组ID和用户名和组名是一一对应的
初次登录配置root密码
$ sudo passwd root注意:为了保证系统的安全性,不允许root用户直接进行登录。(root用户都是有的,就知道账号)
显示所有用户
$ cat /etc/passwd显示的其中一条如下:
ubuntu:x:500:500:ubuntu,,,:/home/ubuntu:/bin/bash
冒号是分隔符
用户名 密码(x替代) uid(用户id) gid(group id,组id)注释字段 用户的home路径 shell类型
0 root用户
1~1000 系统用户
1000之后 普通用户添加用户
$ sudo useradd test3 //创建的用户属于三无产品,没有密码,在/home目录下面没有对应的文件夹,shell不一样
$ sudo useradd -m test4 -s /bin/bash
//-m指定了在/home目录创建对应文件夹,-s指定shell类型
$ sudo passwd test4 //给test4创建密码切换用户
$ su //切换到root
$ su usrname //切换到usrname用户退出当前用户
$ exit需要注意的是,当嵌套使用su指令来依次进入多个用户时候,多个用户是使用栈结构来管理的。执行su指令相当于将新用户压入栈顶,执行exit指令相当于弹出栈顶。
当用户在上述的栈结构中存在的时候,那个用户是不能被删除。
删除用户
//-r选项可以删除用户以及用户对应的在/home下的文件夹,如果不加-r,就只会在/etc/passwd下面删除账号,不会删除/home的文件夹
$ sudo userdel test5 -r
userdel: test5 mail spool (/var/mail/test5) not found文件
Linux下一切皆文件。
文件夹相关
$ mkdir test //创建test文件夹
$ mkdir -p dir3/dir4/dir5 //创建多级目录可以加上-p,或者可以一级一级的创建
$ rmdir //删除空目录
$ cd test //切换工作目录至test
$ pwd //显示当前的绝对路径
$ cd .. //切换到上一级目录
$ cd . //切换到当前目录
$ cd - //回到上一次的目录
$ ls //列出目录内容
$ tree //以树形显示目录内容(需要提前安装tree)文件的创建
touch (常用)
change file timestamps 改变时间戳1970.1.1 0:0:0
$ touch file //可以创建空文件
$ date //用于查看Linux下的时间和日期echo命令
display a line of text
$ echo "hello,world" > file2 //创建file2文件,并且将“hello,world”存到file2中
$ echo -n > file2 //创建空文件
> 重定向,重新指定方向 cat命令
$ cat > file3 //使用ctrl + d进行正常退出,ctrl + c异常退出,中断vi/vim(常用)
文件内容的查看
cat命令
用于查看文件内容,对于小文件好用,当文件内容特别多时,cat起不到应有的作用
head命令
- 默认输出文档的前10行
- 可以通过
-n+数字输出指定行数
tail命令
- 输出文档的后10行
- 可以通过
-n+数字输出指定行数
more命令
- 可以按行查看文件内容
- 只能向下翻,不能回退
less命令
- 类似于
more,但是可以回退
文件的拷贝、删除、移动
cp命令
copy files and directories
普通文件的拷贝
$ cp srcFile destFile //cp 源文件 目的文件
//源文件与目的文件都存在时,最好加-i选项,避免误操作(安全性问题)
$ cp -i srcFile destFile普通文件拷贝给目录
$ cp srcFile dir
//如果dir中有file文件,就会直接覆盖;如果dir中没有file文件,就会创建一个file文件;如果dir中的file与源文件file的内容不一样,最好还是继续加上-i选项。目录拷贝的目录
$ cp -r dir1 dir2 //-r表名是递归拷贝的含义mv命令
$ mv srcFile destFile
//mv进行移动的时候,源文件会删除。mv也有常用-i和-f选项rm命令
rm - remove files or directories 删除文件或者目录
删除普通文件
$ rm file 删除目录文件
$ rm -rf dir //-f是强制的意思,-r是递归的意思删除所有的文件(普通文件、目录文件)
$ rm -rf * //*星号是一个通配符,代表的是所有类型的文件,包括普通文件、目录文件注意:rm命令在使用的时候,最好加上-i选项,可以有一个提示作用。
ls命令详解
-a选项,可以显示文件夹下面的所有文件,包括隐藏文件。
在Linux线面,所有以‘.’(点)开头的文件都是隐藏文件。
-l选项,可以显示文件夹下的文件的具体信息
-h选项,可以将文件大小进行换算成人可读的
-i选项,可以将文件对应的结点号展示出来
drwxrwxr-x 2 ubuntu ubuntu 4.0K Jan 5 11:35 code/
drwxrwxr-x 8 ubuntu ubuntu 4.0K Nov 14 2020 vimplus-master/对于以上结果:
第一个字母表示文件类型
| 字母 | 文件类型 |
|---|---|
| - | 普通文件 |
| d | 目录文件 |
| l | 链接文件(软链接) |
| b | 块文件 |
| c | 字符设备文件 |
| s | 套接字文件 |
| p | 管理文件 |
后面的三组rwx表示权限,rwx的含义如下:
| 字母 | 含义 |
|---|---|
| r | 读 |
| w | 写 |
| x | 可执行 |
| - | 没有权限 |
三组分别表示:
| 本用户 | 组用户 | 其他用户 |
|---|
数字对于普通文件为链接数,对于目录文件是第一级子目录数(这里的子目录包括了.和..)
软链接和硬链接
硬链接
ln - make links between files 创建文件链接
$ ln srcFile destFile //源文件是已经存在的文件,目的文件是新创建的创建硬链接之后,相当于多创建了一个指向文件的指针
- 表现为:硬链接文件的节点号相同
- 修改任何一个文件,所有文件发生改变
- 删除任何一个文件对其他文件无影响
软链接
$ ln -r srcFile destFile创建软链接之后,相当于对源文件创建了一个快捷方式
- 表现为:源文件与目的文件结点号不同
- 目的文件的大小是源文件的名字(路径名)的大小
- 删除源文件的时候,软链接失效;删除软链接文件,源文件不受影响
文件权限的变更
文字设定法
$ chmod u=r, g+r, o=x file //本用户赋予读权限,组用户增加读权限,其他用户赋予写权限在此处各符号/字母代表的含义如下:
| 字母/符号 | 含义 |
|---|---|
| u | 本用户 |
| g | 组用户 |
| o | 其他用户 |
| a | 所有用户 |
| + | 增加权限 |
| - | 去掉权限 |
| = | 赋予权限 |
数字设定法
rwx rwx r-x
111 111 101
7 7 5
2^2 + 2^1 + 2^0 = 7
r = 4
w = 2
x = 1
- = 0
普通文件的权限就是664 rw-rw-r--举例:r-x -wx --x 531
文件的查找
find命令
$ find 路径(可以是绝对路径或者相对路径) -name "文件名字" //按名字查找
文件名字可以使用通配符
* 代表任意多个字符
? 代表任意一个字符
[] 代表一个范围,中括号中可以是数字,也可以是字母,可以数字与字母结合在一起的使用grep命令
$ grep 选项 模式 文件/路径
$ grep -rn "wangdao" ./ //在当前目录下递归的(-r)查找含有wangdao的文件,返回时显示行号(-n)
$ grep -nE "e" test //在test文件中正则查找(-E)含有e的内容并返回行号可以用正则表达式进行字符串匹配。
重定向
普通
重定向输入<,就是stdin
重定向输出 >,就是stdout
重定向的错误输出 2>,就是stderr
追加模式
>> 标准输出的追加,在原有的基础上,继续添加
2>> 标准错误的追加本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭