导航
在 Linux 中导航、创建、移动、编辑和删除文件和文件夹并在操作系统上找到它们
查看当前目录
$ pwd
/home/dark
查看当前文件夹中的内容
$ ls
$ ls -l /var/
切换目录
切换到 /var/ 目录下
$ cd /var/
切换到上次所在目录
$ cd -
切换到家目录
$ cd ~
使用文件和目录
创建、移动和复制
创建文件
$ touch <name>
创建目录
$ mkdir <name>
查看目录结构
查看当前目录结构
$ $ree .
.
├── 1.png
├── 2.png
编辑文件
编辑文件的方法有很多种,最常见的文本编辑器是vi
和vim
,简单一点的nano。编辑器指定文件名可直接创建。
创建并编辑文件 notes.txt
$ nano notes.txt
^G Get Help ^O Write Out ^W Where Is ^K Cut Text ^J Justify ^C Cur Pos M-U Undo
^X Exit ^R Read File ^\ Replace ^U Uncut Text ^T To Spell ^_ Go To Line M-E Redo
^ 代表 [CTRL] [CTRL + O] 并回车确认 保存 [CTRL + X] 退出编辑
查看文件
$ cat notes.txt
查找文件和目录
找到我们需要的文件和文件夹至关重要,当我们获取Linux系统的访问权限后,就必须找到配置文件、用户或管理员创建的脚本以及其他文件和文件夹。
which 返回应执行文件或者链接的路径,可确认某些工具在系统上是否可用。
$ which python
/usr/bin/python
$ which abcd
find 查找文件和文件夹,过滤结果。过滤参数:文件大小、日期等
$ find <location> <options>
$ find / -type f -name *.conf -user root -size +20k -vewermt 2022-09-17 -exec ls -al {} \; 2>dev/null
选项 | 描述 |
---|---|
-type f |
定义搜索对象的类型。'f' 代表 'file' |
-name *conf |
定义文件名称,* 通配符代表以.conf结尾的文件 |
-user root |
过滤出所有者为root用户的所有文件 |
-size +20k |
查看大于20kib的文件 |
-newermt 2022-09-17 |
仅显示比指定日期新的文件 |
-exec ls -al {} \; |
执行指定的命令,大括号作为每个结果的站位符,反斜杠使下一个字符不会被shell作为指令执行,否则分号将终止命令并且不会到达重定向 |
2>dev/null |
STDERR标准错误重定向到null device ,确保终端不显示任何错误信息,不是find 命令的选项。 |
locate
更新本地数据库
$ sudo updatedb
搜索.conf扩展名文件
$ locate *.conf
文件描述和重定向
文件描述符
Unix/Linux 操作系统中的文件描述符(FD)是由内核维护以执行输入/输出操作的连接指示器
1、输入数据流
STDIN - 0
2、输出数据流
STDOUT - 1
3、与发生错误相关的输出数据流
STDERR - 2
认识标准输入和标准输出
$ cat
I am j #标准输入
I am j #标准输出
认识标准错误
$ find /etc/ -name shadow
find: '/etc/dovecot/private': Permission denied #标准错误'Permission denied'
标准输出和标准错误重定向
将标准错误重定向至 /dev/null 等于丢弃
$ find /etc/ -name shadow 2>/dev/null
将标准输出重定向到文本文件
$ find /etc/ -name shadow 2>/dev/mull > results.txt
将标准输出重定向给grep
$ find /etc/ -name *.conf 2>/dev/null | grep systemd
标准输出标准错误重定向到不同文件
$ find /etc/ -name shadow 2>stderr.txt > stdout.txt
将标准输出追加到stdout.txt,而不是覆盖文件内容
$ find /etc/ -name passwd >> stdout.txt 2>/dev/null
标准输入重定向
将 stdout.txt 的文件内容作为标准输入
$ cat < stdout.txt
将标准输入流重定向到文件,EOF函数定义了输入的结束
$ cat << EOF > stream.txt
内容过滤
页面形式浏览文本文件
$ more /etc/passwd
$ less /etc/passwd #文本不会保留在终端
查看文本文件的部分信息
$ head /etc/passwd #默认显示前10行
$ tail /etc/passwd #默认显示最后10行
给输出内容排序
$ cat /etc/passwd | sort #默认字母顺序
使用分隔符进行分隔
$ cat /etc/passwd | grep -v "false\|nologin" | cut -d":" -f1
替换
$ cat /etc/passwd | grep -v "false\|nologin" | tr ":" " " #将 ":" 替换成空格
以表格形式显示
$ cat /etc/passwd | column -t
指定要显示的行
$ cat /etc/passwd | grep -v "false\|nologin" | tr ":" " " | awk '{print $1, $NF}' #展示第一行和最后一行
sed 替换 regex查找 并替换
$ cat /etc/passwd | grep -v "false\|nologin" | tr ":" " " | awk '{print $1, $NF}' | sed 's/bin/HTB/g' #s代表替换命令 g代表替换所有匹配项
计数 行数
wc -l
权限管理
Linux 中每个文件和目录都属于特定用户和特定组,每个用户和组创建的文件都归属于自己。分为三种不同类型的权限 r
(读), w
(写), x
(执行),分别赋给owner
(当前用户), group
(当前用户所属组), others
(其他用户或组) 角色。
$ ls -l /etc/passwd
- rwx rw- r-- 1 root root 1641 May 4 23:42 /etc/passwd
- --- --- --- | | | | |__________|
| | | | | | | | |_ Date
| | | | | | | |__________ File Size
| | | | | | |_______________ Group
| | | | | |____________________ User
| | | | |_______________________ Number of hard links
| | | |_ 其他用户组权限 (read)
| | |_____ 组权限 (read, write)
| |_________ 用户权限 (read, write, execute)
|____________ 文件类型 (- = File, d = Directory, l = Link, ... )
更改权限
设置 owner
, group
, others
权限
$ ls -l text
-rw-r----x 1 root root 0 Sep 22 15:58 text
$ chmod a+r text && ls -l text #给所用角色分配读权限
-rw-r--r-- 1 root root 0 Sep 22 15:58 text
$ chmod 754 text && ls -l text #8进制分配
-rwxr-xr-- 1 root root 0 Sep 22 15:58 text
更改所有者
语法
$ chown <user>:<group> <file/directory>
SUID & GUID
https://cloud.tencent.com/developer/article/1728129