Linux基础(一):文件和目录管理

一、Linux文件管理

元字符

* 匹配一个或多个字符

? 匹配一个字符


注释:含有文件/目录的项都可以以绝对路径或者相对路径的形式表示。


文件操作命令

mv:移动/重命名文件或者目录

cp:复制文件

ls:列出文件或者目录信息(-l 详细信息)

wc:统计当前文件的行数、单词数和字符数

rm:删除文件

文件查看命令

cat:连接(concatenate)文件不打印;打印到标准输出设备(-n 显示行号;-A 显示不可打印字符,如$等)

tac:连接文件;以行倒序打印到标准输出设备

more:查看长文件(空格:下页; B:上页)

head:显示文件开头内容(-n 前n行; -c 开始的字符个数)

tail:显示文件末尾内容(-n 后n行;-c 末尾的字符个数)

标准的Linux流

一般情况下,每个Linux程序运行时都会创建三个文件流(三个文件):
  • 标准输入流(stdin):stdin的文件描述符为0,Linux程序默认从stdin读取数据。
  • 标准输出流(stdout):stdout 的文件描述符为1,Linux程序默认向stdout输出数据。
  • 标准错误流(stderr):stderr的文件描述符为2,Linux程序会向stderr流中写入错误信息。

二、Linux目录

/ 表示根目录

~ 表示主目录

. 表示当前目录

..  表示上级目录

- 在当前和上一个进入目录之间切换


以 / 开头——绝对路径

不以 / 开头——相对路径(与当前目录的关系)


pwd:显示绝对路径

mkdir:创建目录(+绝对路径或者相对路径; 同时创建多个目录;)——创建父目录(多级目录):-p(适用于上级目录不存在的情况)

rmdir:删除目录(目录必须为空)

注释:含有文件/目录的项都可以以绝对路径或者相对路径的形式表示。

三、Linux文件属性

Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。

Linux中的文件类型:

  1. 普通文件(regular file):是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本文件(ASCII)和二进制文件(binary)对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行——可以用cat、more等命令直接查看文本文件的内容;
  2. 目录文件(directory):类似于Windows的文件夹;
  3. 链接文件(软链接,link):类似于Windows的快捷方式;
  4. 设备文件:Linux 与外部设备(例如光驱,打印机,终端,modern等)通过设备文件进行通信。例如,每一个终端都有自己的设备文件来供 Linux 写数据(出现在终端屏幕上)和读取数据(用户通过键盘输入)。

特别:设备文件和普通文件不一样,设备文件中并不包含任何数据。

设备文件的类型:

  1. 字符设备文件:以字母"c"开头。字符设备文件向设备传送数据时,一次传送一个字符。典型的通过字符传送数据的设备有终端、打印机、绘图仪、modern等。
  2. 块设备文件:以字母"b"开头。块设备文件向设备传送数据时,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘。
特别:磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。

查看Linux文件属性:

 ls -l 查看当前目录下文件

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir
第1列:文件类型;所属主、所属组和其他用户的权限、

第1位为文件类型:

前缀 描述
-普通文件。如文本文件、二进制可执行文件、源代码等。
b块设备文件。通过内存中的buffer
c字符设备文件。硬盘也可以使用字符设备文件。
d目录文件。目录可以包含文件和其他目录。
l链接文件(软链接)。可以链接任何普通文件,类似于 Windows 中的快捷方式。
p管道。管道是进程间的一种通信机制。
s用于进程之间通信的套接字。
后边9位为三组权限:所属主(u)、所属组(g)、其他用户(o);分别为 rwx

第2列:链接占用的节点

第3列:所属主

第4列:所属组

第5列:文件大小

第6/7/8列:最后修改时间/创建时间

第9列:文件名

更改文件权限:

chgrp:改变文件和目录(只是该目录)的所属组(group)——chgrp [-R] group file/dir(list)

若要修改目录及之下的目录和文件,递归(recursive)修改 -R ;

大多数命令可以作用于 多个文件/目录;

chown:改变文件或目录的所属者(owner)——chown [-R] user file/dir(list)

chmod:改变文件或目录权限

注释:

1)目录权限:r 可读即可看见,x 可执行即打开目录;

2)Linux下,目录的默认权限为755(rwxr-xr-x,),文件的默认权限为644(rw-r--r--,)。

  1. chmod num file/dir(list)
  2. chmod [u/g/o/a][+/-/=][r/w/x/a] file/dir(list)

umask:修改文件或目录的默认权限

注释:

1)建立普通文件,预设没有可执行权限,即666(-rw-rw-rw-);建立目录,预设所有权限开放,即777(drwxrwxrwx)。

2)umask值为默认差值,即默认权限值=预设(666/777)-umask值(默认022)。因此,普通文件默认权限为644,目录默认权限为755

注意:umask的计算方法,换算成数字做减法,有时会出错。如666-033=633,实则为“-rw-rw-rw-”-“-----wx-wx”=“-rw-r--r--”=644

chattr:修改文件或目录的特殊权限

lsattr:读取文件或目录的特殊权限

set uid、set gid、sticky bit:

  • chmod [u/g/o/a][+s] file/dir(list)

四、Linux环境变量

which:查看某个命令的绝对路径

同时,在Linux中断中输入命令时,只是打出命令,而不使用命令的绝对路径,就是因为环境变量PATH起作用。

例如:echo $PATH

即可以看到PATH环境变量的值。


在Linux中,环境变量是一个很重要的概念。环境变量可以由系统、用户、Shell以及其他程序来设定。

变量就是一个可以被赋值的字符串,赋值范围包括数字、文本、文件名、设备以及其他类型的数据。

下面的例子,我们将为变量 TEST 赋值,然后使用 echo 命令输出:

$ TEST="Linux Programming"
$ echo $TEST
Linux Programming
注意:变量赋值时前面不能加 $ 符号,变量输出时必须要加 $ 前缀。退出 Shell 时,变量将消失。

PS1和PS2变量

PS1变量用来保存命令提示符,可以随意修改,如果你不习惯使用 $ 作为提示符,也可以改成其他字符。PS1变量被修改后,提示符会立即改变。

例如,把命令提示符设置成'=> ':

$PS1='=> '
=> 
=> 
也可以将提示信息设置成当前目录,例如:
=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/Linux]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/Linux]$

命令提示信息包含了用户名、主机名和当前目录。

下表中的转义字符可以被用作PS1的参数,丰富命令提示符信息。

转义字符描述
\t当前时间,格式为 HH:MM:SS
\d当前日期,格式为Weekday Month Date
\n换行
\W当前所在目录
\w当前所在目录的完整路径
\u用户名
\h主机名(IP地址)
#输入的命令的个数,每输入一个新的命令就会加1
\$如果是超级用户 root,提示符为#,否则为$。

你可以在每次登录的时候修改提示符,也可以在 .profile 文件中增加 PS1 变量,这样每次登录时会自动修改提示符。

PS2 变量:如果用户输入的命令不完整,Shell还会使用第二提示符来等待用户完成命令的输入。默认的第二命令提示符是 >,保存在 PS2 变量,可以随意修改。

下面的例子使用默认的第二命令提示符:

$ echo "this is a
> test"
this is a
test
$
下面的例子通过PS2变量改变提示符:
$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

常用环境变量

下表列出了部分重要的环境变量,这些变量可以通过上面提到的方式修改。
变量描述
DISPLAY用来设置将图形显示到何处。
HOME当前用户的主目录。
IFS内部域分隔符。
LANGLANG可以让系统支持多语言。例如,将LANG设为pt_BR,则可以支持(巴西)葡萄牙语。
PATH指定Shell命令的路径。
PWD当前所在目录,即 cd 到的目录。
RANDOM生成一个介于 0 和 32767 之间的随机数。
TERM设置终端类型。
TZ时区。可以是AST(大西洋标准时间)或GMT(格林尼治标准时间)等。
UID以数字形式表示的当前用户ID,shell启动时会被初始化。

下面的例子中使用了部分环境变量:
$ echo $HOME
/root
]$ echo $DISPLAY

$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$

五、Linux下搜索文件

*** ls 等命令时按条件显示或输出???

1、which

查找可执行文件的绝对路径。(注:只能查找PATH环境变量中出现的路径下的可执行文件)

2、whereis

3、locate

4、find

find  [选项] [参数]

find命令链接:http://man.linuxde.net/find

-name:文件名匹配

find /usr/bin/ -name v*——搜索以v 开头的文件

-iname:文件名匹配且忽略大小写

find /usr/bin/ -name v*——即搜索以v开头的文件且忽略大小写

-o:同时满足选项

find /usr/bin/ -name v* -o -name h*——搜索以v 和h 开头的文件

-type:类型匹配搜索(f:普通文件;d:目录文件;c:字符设备文件;b:块设备文件)

find /usr/bin/ -type l——搜索 l 类型的文件

-maxdepth:基于目录深度搜索

find /usr/bin/ -maxdepth 3 -name v*——基于三层目录以文件名匹配搜索

-size:文件大小匹配(b:块512字节;c:一字节;w:2字节;k:千字节;M;G)

find /usr/bin/ -size +5M -type f——搜索目录下 大于5M字节 的普通文件。(-5k 即小于; 5k 即等于)

-empty:列出所有长度为0的相关文件

find /usr/bin/ -empty -name h*——搜索以h 开头的长度为0的文件




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值