目录
1、切换目录
2、查看系统信息
3、文本的创建和编辑
3-1)创建文件
3-2)查看文件
3-3)输出重定向和追加重定向等
3-4)使用 vi 编辑器编辑文件
4、文件和文件夹的处理
4-1)对文件的处理
4-2)查看目录信息
4-3)对目录的操作
5、文件查找
6、查找文件中的内容
7、使用条件测试命令 test 来判断文件的信息
7-1)test 用作文件信息判断
7-2)test 的其他使用方法
逻辑运算
用作字符串测试
数值测试
使用 [[ ····· ]]
8、用户与用户组权限
9、文件和文件夹权限
10、文件归档和压缩
1、切换目录
cd ../ 或 cd .. |
切换到上一层目录(相对) |
cd 目录名 |
切换到指定目录(绝对) |
pwd |
查看当前所在的目录路径 |
cd ~ |
切换到当前用户的主目录中
|
2、查看系统信息
fdisk -l |
查看磁盘分区列表 |
free |
查看内存使用情况 |
cat /proc/meminfo |
查看内存信息 |
cat /proc/cpuinfo |
查看CPU信息 |
top命令(类似于window中的资源管理器):
top
|
默认进入到完整界面实时查看系统的消耗,进程的情况;
点击ctrl + C 或 q 键退出
|
top -n 1 | 查看当前的消耗,不用进入到界面实时观看 |
3、文本的创建和编辑
3-1)创建文件
vi /opt/learn.txt |
在指定目录下创建learn.txt文件,并进入 vi 编辑界面 |
touch /opt/learn |
在指定目录下创建learn文件。touch 仅单纯创建一个空白文件 |
cat > /opt/learn.txt << EOF |
在指定目录下创建文件,并在屏幕上输入内容,最后输入EOF表示输入结束。 如果不使用 << EOF 来结束,也可以在输入结束时直接按Ctrl+D来结束。 每次重复执行会将原有的内容覆盖掉。 |
echo "Hello World" > test.txt | 将指定内容输出重定向到文件中,如果文件不存在,则创建一个文件,如果存在,则会把原来的内容覆盖。 |
3-2)查看文件
vi /opt/test.txt |
在vi编辑器中输出文本内容(如果没有就会创建一个) |
cat /opt/test.txt |
在屏幕上输出文本内容 |
more /opt/test.txt |
分屏输出文本内容(在无法滚动的情况下比较适用,预先加载完全部内容,按回车键显示下一行) |
less /opt/test.txt |
分屏输出文本内容(与more的区别是,看到哪一行,就加载到哪一行,查看大文件适用) |
strings /opt/test.txt |
打印文件中可打印的字符 |
head -n 11 /opt/test.txt |
查看指定文件的前11行 |
head /opt/test.txt |
查看指定文件的前10行(默认10行) |
tail -n 20 /opt/test.txt |
查看指定文件的后20行 |
tail /opt/test.txt |
查看指定文件的后10行(默认是10行) |
tail -f /opt/test.txt |
通过流的方式实时查看最新的文件内容(实时监控日志) |
3-3)输出重定向和追加重定向等
> 为输出重定向(将前面执行的结果输出到指定文本中,会覆盖文本中原有的内容);
>> 为追加重定向,将前面执行的内容追加到指定文本的末尾;
ll /self/testDir/ 1> llout.txt |
执行ll /self/testDir/,如果执行正确,则将结果写入到 llout.txt 中(覆盖),屏幕无输出;如果有错误,则将错误输出到屏幕,而将空内容写入到 llout.txt 文件中(覆盖) |
ll /self/testDir/ 2> llerr.txt |
执行ll /self/testDir/,如果执行正确,则将结果在屏幕上输出,将空内容写入到 llerr.txt 文件中;如果执行有误,则屏幕上没有内容输出,而将错误的信息提示输出到 llerr.txt 中。 |
ll /self/testaDir/ 1> llout.txt 2> llerr.txt |
执行命令ll /self/testaDir/ ,不管命令执行成功与否都不在屏幕输出任何信息,正确执行时将命令的输出信息输出到 llout.txt 中,执行错误时则将错误的提示信息输出到 llerr.txt 中。执行正确时,llerr.txt 文件中没有内容,执行错误时,llout.txt 文件中没有内容。 |
ifconfig > /dev/null |
执行 ifconfig指令,重定向到 /dev/null 后,将不会在屏幕输出任何内容 |
&& (正确则往后继续执行) 和 || (错误则往后执行)
ls /opt && echo "前方执行成功" |
&& 前的命令执行成功后,会执行 && 后面的命令 |
ls /opt || echo "前方执行失败" |
|| 前面的命令执行失败时,会执行 || 后面的命令 |
| tee
管道符 | 和 tee 组合也可以将前面命令输出的内容重定向到指定的文件中
3-4)使用 vi 编辑器编辑文件
# 进入vi编辑器。如果没有这个文本文件,就会自动新建并进入vi编辑器
vi file.txt
进入vi编辑器后,首先会处于命令模式,即当前情况下所输入的都是命令;可以点击i、a、o等进入编辑模式;在编辑模式下,在按ESC键可以重新进入到命令模式。
以下为在 vi 编辑器命令模式中的一些命令。
i 或 a |
从命令模式进入到编辑模式;i为插入文本,a为追加文本;都在光标的位置输入 |
ESC |
从编辑模式进入命令模式 |
:w |
保存文本但不退出 |
:q! |
强制退出,不保存文本 |
:wq |
保存文本并退出 |
o |
在当前行的后面新增一行 |
O |
在当前行的前一行后新增一行 |
dd |
删除一行内容 |
D |
删除当前光标到行尾的内容 |
x |
删除当前光标所在处的一个字符 |
s |
删除一个字符并切换回编辑模式 |
S |
删除一行并切换回编辑模式 |
:n |
移动光标到第n行 |
$ |
光标移动到当前行文本的行尾 |
A |
光标移动到行尾并切换回编辑模式 |
^ |
光标移动到文本的行首 |
G |
光标移动到文本的末尾 |
gg |
光标移动到文本的行首 |
ZZ |
存盘退出 |
/字符串 |
查找某个字符串 |
n |
继续查找 |
:u |
撤销(相当于Ctrl+Z) |
:redo |
重做(相当于Ctrl+Y) |
4、文件和文件夹的处理
4-1)对文件的处理
cp —— 复制 | |
cp hello.txt /opt/test |
把 hello.txt 文件复制一份到 /opt/test 目录下 |
cp hello.txt /opt/test/he.txt |
把 hello.txt 文件复制一份到 /opt/test 目录下,并重命名为he.txt |
cp /opt/hello.txt ./ |
将指定的文件复制到当前文件夹下 |
rm —— 删除 | |
rm hello.txt |
删除指定文件 |
rm -f hello.txt |
强制删除,不重复确认 |
rm *.txt | 删除当前目录下的所有 .txt 文件 |
mv —— 移动(剪切) | |
mv hello.txt he.txt |
重命名hello.txt 文件为 he.txt |
mv hello.txt /opt/test |
将文件剪切到指定目录下 |
mv hello.txt /opt/test/he.txt |
将文件剪切到指定目录下并重命名为he.txt |
du -h hello.txt |
查看 hello.txt 文件的大小 |
true > test.txt | 清空文件内容 |
echo "" > test.txt | 清空文件内容 |
4-2)查看目录信息
ls 或 ls /opt |
查看当前目录(或指定目录)下没有被隐藏的所有文件(列出文件名称) |
ls -l 或 ll |
以列表的形式查看当前目录下各文件的信息 |
ls -a |
显示当前目录下的所有文件,包括隐藏文件 |
ls *.txt |
显示当前目录下所有以txt为后缀名的文件 |
ls /opt/test |
显示指定目录下的内容 |
ls -R /opt |
显示指定目录及其子目录的内容 |
在linux系统下如果要创建一个隐藏文件,只需要在文件名的最前面加一个点 "." 即可。
ls 直接查询不会查询到隐藏文件。ls -a 查询可以查询到。
4-3)对目录的操作
mkdir folder |
创建指定名称的目录 |
mkdir folder1 folder2 folder3 |
连续创建若干个目录 |
mkdir -p /opt/folder1/folder2/folder3 |
连续创建层次目录(folder1/folder2/folder3) |
rmdir /opt/mydir |
删除空的目录(不能删除非空的目录) |
rm -r ./test |
删除目录 |
rm -rf /opt/folder |
强制删除文件夹 |
cp -r /opt/test1 /opt/test2 |
拷贝文件夹(加上参数-r是深度拷贝) |
mv /opt/test /opt/test2 |
重命名文件夹 |
5、文件查找
find ./ -name "hello.txt" |
查找当前目录下名为hello.txt的文件或文件夹 |
find /home -name "hello" |
查找/home目录下名字为hello的文件或文件夹 |
find ./ -name "*" |
查找当前目录下的所有文件或文件夹 |
find ./ -name "[h|f]*" |
查找当前目录下所有以h或f开头的文件或文件夹 |
find ./ -name "[a-fA-F]*" |
查找当前目录下所有以小写字母a~f或大写字母A~F开头的文件或文件夹 |
find ./ -name "[^a-fA-F]" |
查找当前目录下所有不以a、b、c、d、e、f、A、B、C、D、E、F开头的文件 |
find ./ -name "h?llo" |
查找当前目录下满足h?llo条件的文件,其中?的位置代表一位任意字符 |
find ./ -perm 741 |
查找当前目录下所有权限为741的文件或文件夹 |
find ./ -user mary |
查找所有者为mary的文件或文件夹 |
find ./ -group dev |
查找所属组为dev的文件或文件夹 |
find ./ -mtime -3 |
查找3天内更新过的文件或文件夹 |
find ./ -mtime +3 |
查找3天前更新过的文件或文件夹 |
find ./ -newer hello.txt |
查找比hello.txt更新的文件或文件夹 |
find ./ ! -newer hello.txt |
查找比hello.txt更旧的文件或文件夹 |
find ./ -type d |
查找当前目录下的所有文件夹 ( f:普通文件 d:目录(文件夹) l:软链接文件 c:字符设备,如终端、磁带机等 b:块设备,如光盘、硬盘 ) |
find ./ -size 602c |
查找当前目录下文件大小为602字节的文件 ( c:byte k:kilobytes M:megabytes G:gigabytes ) |
find ./ -size +600c |
查找当前目录下文件大小大于602字节的文件 |
find ./ -name "hello*" -exec ls -l {} \; |
查找当前目录下所有以hello开头的文件,并将其细节显示出来(目录也会) |
find ./ -name "hello*" -exec rm {} \; |
查找当前目录下所有以hello开头的文件并将其删除 |
find ./ -name "hello*" | xargs ls -l |
查找当前目录下所有以hello开头的文件并将其细节显示出来 |
“|” 是管道符,管道符主要用于多重命令处理,前面命令的打印结果作为后面命令的输入。
xargs 的作用是 把前面管道符的输入作为后面指令的参数。
6、查找文件中的内容
grep "root" /etc/passwd |
查找/etc/passwd文件中包含root的行 |
grep -n "root" /etc/passwd |
查找/etc/passwd文件中包含root的行,并在每行的前方标注在原文中的行号 |
grep "^ma" /etc/passwd |
查找以ma开头的行 |
grep "bash$" /etc/passwd |
查找以bash结尾的行 |
grep "^[r|d]" /etc/passwd |
查找以r或d开头的行 |
grep -v "root" |
排除掉包含root在内的行 |
ls | grep test |
从ls的输出中过滤出包含test的行 |
grep -r games /etc |
在/etc目录下查找包含games的文件 |
find ./ name "*" | xargs grep word |
输出当前目录下文件名或目录名包含word的文件或目录 |
wc -l |
统计文件行数或输出的个数。 -c、--bytes、--chars只显示bytes数。 -l、--lines显示行数。 -w、--words只显示字数。 如不指定参数,则显示所有的统计信息 |
7、使用条件测试命令 test 来判断文件的信息
test 命令执行完成后没有输出,可以紧接着使用 echo $? 来查看结果,如果输出0,则表示真,如果输入1,则表示假(错误)
[ ******** ] 是test 命令的另一种写法,把test 后面紧跟的内容放到 中括号中即可,两边临近中括号的位置都需要有空格。
7-1)test 用作文件信息判断
test -e /etc/passwd |
测试文件是否存在,存在时,使用echo $?将返回0,否则返回1 |
[ -e /etc/passwd ] |
与test -e /etc/passwd 的功能一致,是 test 命令的另一种写法(临近两个中括号都要空格) |
-d |
如果文件为一个目录,则为真 |
-e |
如果文件存在时为真 |
-f |
如果文件是一个普通文件时为真 |
-r |
如果文件可读时为真 |
-w |
如果文件可写时为真 |
-x |
如果文件可执行时为真 |
-s |
如果文件的内容长度不为零时为真 |
-L |
如果文件为符号文件时为真(链接文件) |
7-2)test 的其他使用方法
逻辑运算
[ -e /etc/passwd -a -s /etc/shadow ] |
逻辑与运算 |
[ -e /etc/passwd -o -e /abc/aaa.txt ] |
逻辑或运算 |
[ ! -e /etc/passed ] |
逻辑非运算 |
用作字符串测试
[ "$USER" = "root" ] |
字符串比较,相等时echo $? 将返回0 |
[ "$USER" != "123" ] |
不相等判断 |
[ -z "$USER" ] |
字符串为空 |
[ -n "$USER" ] |
字符串不为空 |
数值测试
[ $$ -eq 12345 ] |
判断当前脚本运行时的进程id是否为12345 |
-eq |
判断相等 |
-ne |
判断不等 |
-le |
less or equal 第一个数小于或等于第二个数 |
-ge |
gread or equal 第一个数大于或等于第二个数 |
-gt |
greater then 第一个数大于第二个数 |
-lt |
less then第一个数小于第二个数 |
使用 [[ ····· ]]
[[ ]] 相比于 [ ] 支持更多的比较运算符,在处理字符串时更加灵活;
&& 与运算;|| 或运算
=~ 表示前方的字符串是否匹配后面的正则表达式,^ 表示字符串的开始(如果是在正则表达式的中括号中则表示 非),[0-9a-z] 表示可以去任意数字和任意小写字符,后面的 + 表示至少满足一次,最后的 $ 是结束标志。
8、用户与用户组权限
在 linux 中,root 拥有最高的权限,所有文件或文件夹的权限设定对 root 都是无效的。
在正式的生产和服务器环境中,尽量使用普通的账号+人工权限设定的方式,避免出现漏洞后被人以root权限利用系统。
在 window 中,administrator 和 Linux 中的 root 等同。
cat /etc/group |
查看当前系统存在的用户组,<1000的是系统使用的,>1000的是用户创建的 |
groupadd test |
创建一个用户组名为test |
groupmod -n test testing |
将用户组test更名为testing |
groupdel test |
删除用户组test |
groups root |
查看用户root所在的所有组 |
cat etc/passwd |
查看所有账户 该文件每行代表一个用户账号,记录了账号的所有信息,包括用户名、密码、用户ID(UID)、组ID(GID)、连接、主目录和默认的shell等。 |
useradd -g test jack |
创建一个用户jack,主组归属于test |
useradd -g test jam -G dev |
创建一个用户jam,主组归属于test,附属组dev |
useradd ben |
创建一个用户ben,因为没有设定其归属的主组,默认将新增一个对应名为ben的组 |
passwd jack | 为用户 jack 指定登录密码(提示输入两次) |
usermod -g dev ben |
将用户ben换到dev组中 |
usermod -G 505 ben |
将用户ben附加到gid为505的组中 |
usermod -d /home/test ben |
将用户ben的登入目录改为/home/test (在修改前需要保证该目录存在) |
userdel ben |
删除用户ben |
userdel -f ben |
强制删除用户ben(即使该用户已经登录) |
userdel -r ben |
删除用户ben并删除其主目录 |
9、文件和文件夹权限
在任意的一个文件夹中,可以用ls -l或ll命令来显示其基本的信息和权限信息:
![]()
每一行中依次代表的内容如下:
1、文件权限:表示文件的访问权限,如读取、写入和执行权限。
2、链接数量:表示文件在文件系统中的硬链接数量。
3、文件所有者:表示文件的所有者用户及用户所属的组。
4、文件大小:表示文件的大小,以字节为单位。
5、修改时间:表示文件的最后修改时间。
6、文件名:表示文件的名称。
每一个文件都占一行来展示其信息,每一行的前10个字符所表示的意义如下:
如:drwxr-xr-x
第1个字母:‘-’代表普通文件,‘d’代表目录,‘l’为链接文件,相当于快捷方式
第2、3、4个字母代表当前文件或文件夹所属用户(owner)的权限,用u表示
第5、6、7个字母代表当前文件或文件夹所属的用户组(group)的权限,用g表示
地8、9、10个字母代表其他用户组和其他用户(other)的权限,用o表示
权限的表示方式:
r 读:也可以用数字 4 来表示
w 写:也可以用数字 2 来表示
x 执行:也可以用数字 1 来表示
su jame |
切换到jame用户 |
whoami |
查看当前的用户 |
chmod u+x test.txt |
为test.txt文件的所有者添加可执行权限 |
chmod u-w test.txt |
为文件的所有者去除写权限 |
chmod g-r test.txt |
为文件的所在组去除可读权限 |
chmod o+w test.txt |
为文件所在组之外的组添加可写权限 |
chmod a+w test.txt |
为所有角色添加可写权限 |
chmod a+wx test.txt |
为所有角色添加可写和可执行权限 |
chmod a-rwx test.txt |
去除所有用户对文件的读写和执行权限,此时只有root用户可以操作 |
chmod 777 test.txt |
将文件的权限设置为rwxrwxrwx,等同于chmod a-rwx test.txt (7就是4+2+1) |
chmod 643 test.txt |
将文件的权限设置为rw-r---wx |
chmod -R 755 /opt/temp |
将/opt/temp即其所有的子文件、子目录的权限改为755(连带) |
chown mary test.txt |
将test.txt文件的所有者改为mary |
chown mary /opt/temp |
将目录的所有者改为mary |
chown -R mary /opt/temp |
将目录及其子目录、子文件的所有者改为mary |
chgrp test hello.txt |
将hello.txt 所在的组该为test组 |
chgrp test /opt/temp |
将指定目录的所有组改为test组 |
chgrp -R mary /opt/temp |
将指定目录及其下属的目录和文件的所有组改为mary |
10、文件归档和压缩
在Linux中,文件归档的作用是将多个文件组合成一个单一的文件,这个过程称为归档。
它通常用于系统备份、将旧数据移至长期存储设备以及方便文件传输等场景。
tar 命令是用于创建归档文件的常用命令。
归档文件不是文件夹,虽然它们看起来像是文件夹,但实际上它们是单一的文件。可以在这个“文件夹”中放入任何类型的文件,包括文本文件、图片、视频等。归档文件的好处之一是,它们可以轻松地复制和移动到其他位置,而不需要单独管理每个文件。
文件归档后并不会被压缩大小;一般是多个文件一起归档后再进行压缩。
归档后的文件后缀为.tar;归档文件压缩后一般后缀为.tar.gz;
tar -cvf hello.tar ./* |
将当前目录下的所有文件归档为hello.tar; 修饰符c:创建一个新归档 v:详细列出被处理的文件 f:指定要创建的归档文件的文件名或要解压的归档文件的名字。它必须是tar命令的最后一个参数,后面直接接文件名 |
tar -cvf hello.tar /opt/test |
将指定目录下的所有文件归档为hello.tar; |
tar -cf all.tar test1 test2 test3 |
选择当前目录下的三个文件进行归档,归档文件命名为all.tar |
tar -tf test.tar |
将归档文件test.tar中的文件显示出来 |
tar -xvf test.tar |
将归档文件解压缩到当前目录下,恢复其中的文件和目录结构。 |
tar -zcvf hello.tar.gz hello.tar |
将归档文件hello.tar压缩成hello.tar.gz |
tar -zxvf hello.tar.gz |
将压缩文件解压成hello.tar归档文件 |
gzip hello.tar |
将归档文件hello.tar压缩成hello.tar.gz |
gzip -d hello.tar.gz |
将压缩文件解压成hello.tar归档文件 |
zip hello.zip hello.txt |
将hello.txt压缩并命名为hello.zip |
zip -r test.zip /opt/test |
将指定的目录进行压缩并命名为test.zip |
unzip -v hello.zip |
查看压缩文件hello.zip中的文件信息 |
unzip hello.zip文章来源:https://www.toymoban.com/news/detail-700362.html |
解压缩hello.zip文章来源地址https://www.toymoban.com/news/detail-700362.html |
到了这里,关于Linux 学习笔记(2)—— 关于文件和目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!