linux文件管理

文件分析

ls命令及文件种类特点

来查看文件或目录的类型。ls命令以列表的形式显示文件和目录,并使用不同的标识符来表示它们的类型。以下是一些常见的文件类型标识符:

  • - 表示普通文件。
  • d 表示目录。
  • l 表示符号链接(Symbolic Link)。
  • c 表示字符设备文件。
  • b 表示块设备文件。
  • s 表示套接字(socket)文件。
  • p 表示命名管道(named pipe)文件。
ll命令文件分析
drwxr-xr-x 2 root root 4096 1015 17:40 testdir_backup
  • d:以字母 “d” 开头表示这是一个目录,一个杠代表文件
  • rwxr-xr-x:(所有者、所属组、其他用户)的权限 ,u,g,o
  • 2:这个目录中的项目数目(包括子目录)。
  • root:所有者的用户名。
  • root:所属组的组名。
  • 4096:目录的大小(以字节为单位)。
  • 10月 15 17:40:最后一次修改该目录的日期和时间。
  • testdir_backup:目录的名称
wc统计文件参数的命令

统计文件,文本的行数,字节数,单词数

可以通过管道符来对前一结果进行数据统计

who>test                        //相对于当前文件下的test
wc test

who|wc -l  ##统计登录的用户终端数
-l 统计前一个who的标准输出流中的行数
文件分布

一个软件的文件分布在各个文件夹中

有python目录可以得出

whereis $(readlink -f $(which python))
python2: /usr/bin/python2 /usr/bin/python2.7-config /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz

意味着在您的系统中,python2命令的相关文件可以在以下位置找到:

  • /usr/bin/python2: python2的可执行文件路径
  • /usr/bin/python2.7-config: python2.7-config的可执行文件路径
  • /usr/bin/python2.7: python2.7的可执行文件路径
  • /usr/lib/python2.7: python2.7的库文件路径
  • /usr/lib64/python2.7: python2.7的64位版本库文件路径
  • /usr/include/python2.7: python2.7的头文件路径
  • /usr/share/man/man1/python2.1.gz: python2的手册页路径
常用目录特点

是的,这在Linux系统中很常见。一个软件通常由多个组件或文件组成,它们可能包括可执行文件、配置文件、库文件、头文件、文档等。为了组织和管理这些文件,它们被放置在系统中不同的目录中。

在Linux中,常见的目录结构如下:

  • /bin: 存放系统的基本命令,可以直接在命令行中执行的可执行文件。
  • /sbin: 存放系统管理员使用的命令,一般需要超级用户权限才能执行的可执行文件。
  • /usr/bin: 存放用户安装的软件的可执行文件。
  • /usr/sbin: 存放用户安装的软件的管理员命令的可执行文件。
  • /lib: 存放系统所需的共享库文件。
  • /usr/lib: 存放用户安装的软件所需的共享库文件。
  • /include: 存放C/C++头文件。
  • /usr/include: 存放用户安装的软件所需的C/C++头文件。
  • /usr/share/man: 存放命令的手册页。
  • /etc: 存放系统的配置文件。
  • /var: 存放变量数据,例如日志文件、缓存文件等。

每个目录都有其特定的用途,通过将软件的不同组件放置在合适的目录中,可以更好地管理和组织软件文件,并使系统能够正确地找到和使用这些文件。

文件权限

文件目录权限更改

文件权限有:

  • 可读权限(read)(数值表示为 4):允许查看文件内容。
  • 可写权限(write)(数值表示为 2):允许修改文件内容。
  • 可执行权限(execute)(数值表示为 1):允许文件被运行。

一般来说,给一个脚本文件添加可执行权限是比较常见的需求。给用户、群组和其他用户分别赋予不同的权限可以通过以下命令实现:

chmod u+x a.sh   ##给该文件所有者加上可执行权限
## u所有者 g组 o其他人

##也可以这样写
chmod 744 a.sh 
## 读取(4)+写入(2)+执行(1)

chmod g+x script.sh  # 给所属群组添加可执行权限
chmod o+x script.sh  # 给其他用户添加可执行权限
chmod +x script.sh   # 给所有用户添加可执行权限

chmod -R 755 directory  ##使用421修改权限  -R递归修改

这些命令中的 u 表示文件所有者,g 表示所属群组,o 表示其他用户,+x 表示添加可执行权限。你可以根据具体需求来选择给哪些用户添加可执行权限。

例如,要给自己(所有者)、所属群组和其他用户同时添加可执行权限,可以使用以下命令:

chmod ugo+x script.sh
更改所有者和所属组
修改所有者
chown user1 file.txt
修改所属组
chown :newgroup file.txt

总结:

  1. 查看文件权限:使用 ls -l 命令查看文件的权限、所有者和所属组。
  2. 修改文件权限:使用 chmod 命令修改文件的权限,可以通过符号模式(如u+r)或数字模式(如644)来修改权限。
  3. 修改文件所有者和所属组:使用 chown 命令修改文件的所有者,使用 chgrp 命令修改文件的所属组。
  4. 递归修改文件权限:使用 -R 选项可以递归修改目录及其下所有文件的权限。
  5. 精确控制文件权限:了解权限位的含义,包括读、写、执行权限,以及文件所有者、所属组和其他用户的权限设置。

文本编辑

vim
  • 命令行模式

按esc进入命令行模式,该模式可以通过按键代替鼠标移动光标,进行移动光标操作

命令行模式的快捷按键:

hjkl移动光标 0移到行首 shift+4移动到行尾

/查找,光标到下面时输入你要找的值,和ctrl+f一个效果

然后n是跳到下一个结果,shift+n跳到上一个匹配成功的结果

  • 插入模式

i和一些其他键,进入写入模式

  • 终结模式

按: 进入然后参数w保存,参数q退出

其他命令行模式命令

d删除

u相当于ctrl+z

r相当于ctrl+y反向撤销,和ctrl+z相反

gg跳到第一行,shift+g跳到最后一行

v选择块,然后移动光标

y复制,p粘贴

grep过滤

查找过滤一个文件/文本含有对应匹配条件的内容

当我们对一批文件进行了操作但只想显示目的文件,我们就可以在命令后面加管道符| grep

管道符

管道符会将前面的终端输出视作一个文本文件

管道后面的命令会将这个终端输出的所有字符当做一个文件去使用

命令解析占位符

管道符的逆向,一些无法读取标准输入(控制台输入的文字)的命令想用另外一个命令的结果当做参数

此时就得用

readlink -f $(which python)
``也可以代替$()
##which命令   输出某个命令的可执行文件的地址,只包含可执行文件的地址
## 与之相比
##whereis命令 输出某个命令相关的所有文件路径,包括源代码,可执行文件,手册

whereis $(readlink -f $(which python))
python2: /usr/bin/python2 /usr/bin/python2.7-config /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz 
##因为python本身是环境变量,所以which python获得python这个命令的路径
##发现这个路径是软连接,所以用readlink -f来递归找到其文件路径
lrwxrwxrwx  1 root root           7 323 2023 python -> python2
lrwxrwxrwx  1 root root           9 323 2023 python2 -> python2.7
-rwxr-xr-x  1 root root        7144 628 2022 python2.7
##一路递归最终找到python这个软连接指向的python2.7  -rwxr说明这是个文件,l开头表示软连接
##whereis python2.7就能获取该文件的相关所有源代码,可执行文件,手册

文件操作

更改创建文件touch

touch意味触摸的意思,更改一个已存在文件并更新其时间戳,如果文件不存在则创建文件

摸过一次就会创建时间戳

用文件名查找文件
find 路径 -name 文件名
##文件名可以用通配符

##从usr/lib路径下寻找以test结尾的文件
find /usr/lib -name *test

*表示空或任意多个的任意符号所以很好用
*aaa:以aaa结尾的文件
aaa*:以aaa为头的文件
*aaa*:文件名包含aaa的文件

linux中的所有命令相当于可执行文件,你可以这样理解:在linux中软件,二进制可执行文件,一行命令

这些都是软件,只不过由于windows这个图形化操作系统让我们误认为有界面的才是软件,其实一个命令也好,一个可执行程

序也好,都是软件

输出当前路径pwd
pwd   ##print work directory打印当前目录路径
路径规则

以/开头就是以根路径作为锚点

不以/开头就是以当前路径作为锚点 进行路径查找

./当前路径为锚点 ##take the current path as the source point |  take .. as把..当做   
../从上一路径为锚点## take the previous path as the source point

find ./ -name a.txt  ##find a.txt from the current directory
复制文件
cp  /test/test.txt /test/test2.txt  #把text文件复制一份,名字叫test2
cp -r ##递归复制
cp -r /testdir /home/arr   ##复制到home文件夹下,名字叫arr
## 后面复制后生成的文件夹,所以不能cp -r /test / ,这相当于把根目录给覆盖了
移动文件
mv移动命令

mv 要移动的文件文件夹 被移动后生成的文件夹文件
##移动文件夹不需要加r
删除文件
rm删除目录

rm a.txt
rm -rf testdir ##递归删除文件,-f不询问,否则文件夹中的每个文件都会询问一遍
查看使用历史命令
history
313  2023-10-15 20:48:42 ./ash.sh sjdksad
314  2023-10-15 20:48:50 vim ash.sh 
315  2023-10-15 20:02:11 export LANG="en_US";export LANGUAGE="en_US";export LC_ALL="en_US";top

!313  ##感叹号 历史命令id  快速复用命令  最多记录3000个
终端输出重定向符
> 一个是覆盖到对应文件
>> 两个表示追加到文件

ll -a -l > b.txt

echo命令可以将字符串输出到终端,也就是说echo可以将一个字符串转化为一个文件单位

而重定向符号和管道都可以利用终端上的内容

echo hello >> ./testdir/b.txt
跟踪文件实时写入

输出文件最后几行

tail -5 -f a.txt  ##-f means to follow,to listen for the changes to this file

tail -3 c.txt| tail -1  ##take the last third line as the text and read the last line
终止当前终端

ctrl+c终止当前终端的程序执行

ctrl+d退出当前应用的命令行,回到终端

退出当前运行的终端,但不停止程序

exit   

软件包管理及下载

得先区分linux的发行版
debian和Ubuntu是apt-get
red hat和centos/fedora是yum

##查看是否已经安装,当然也可以使用--version
sudo apt-cache policy vim
##安装vim
sudo apt-get install vim
##配置vim
vim /etc/vim/vimrc
##卸载vim
sudo apt-get remove vim
查找不到,apt-get:找不到命令,就是用的centos
yum update
yum install -y vim
软件打包压缩
##将多个文件或目录打包成一个文件,但不进行压缩。因此,使用`tar`打包后的文件大小比较大,但打包速度快。通常需要结合其他压缩工具(如`gzip`
tar -czvf archive.tar.gz /path/to/directory  #z表示使用gzip进行压缩
tar -xzvf  ##表示将压缩文件进行解压

zip
upzip  ##解压

gzip   ##对单个文件进行压缩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值