2、linux笔记—文件与目录管理

1、目录与路径

①、目录的相关操作

回到上层目录
cd ..
回到前一个工作目录
cd -
回到家目录
cd ~
进入到某个用户的家目录
cd ~user

②、新建目录

mkdir -m 711 -p ./mrsun/dir1

其中-m为该目录指定权限,-p递归的创建目录。下面是mrsun目录和dir1目录的权限,dir1目录的权限为711,mrsun为755其为默认权限,与系统的umask有关。

drwxr-xr-x   3 root root 4096 Jun 16 23:03 mrsun
drwx--x--x   2 root root 4096 Jun 16 23:03 dir1

删除目录时可以使用rmdir删除,但是需要保证该目录为空。一般使用rm -r进行递归的删除。

③、查看执行文件路径的变量:$PATH

echo $PATH

④、复制cp

cp -a xxx xxx

-a可实现递归、不修改权限的进行复制,尤其是不修改权限-p的复制。 

cp -u xxx1 xxx2

当xxx1比xxx2新时才会发生复制,或xxx2不存在是发生复制。

如果复制的是符号链接文件,假如存在文件dir,dirslink为其符号链接,使用如下第一个复制会将文件复制过去为dirslink1,加上-d才是将符号链接复制过去。

cp dirslink dirslink1
cp -d dirslink dirslink2

⑤、删除rm

删除文件或目录的参数主要有-rif,r表示递归的删除,f忽略不存在的文件,不会出现警告信息。-i表示询问。

⑥、移动mv

其参数有fiu,f如果目标文件已经存在,移动时不会询问直接覆盖。u当文件有更新时才移动覆盖。


2、查看文件内容

cat 从第一行显式文件内容
tac 从最后一行开始显示
nl 显示的时候输出行号
more 一页一页的显示文件内容
less 与more类似,可以前后翻页
head 只看前面几行
tail 只看后面几行
od 以二进制的方式读取文件内容

①、cat

-A 相当于-vET
-b 列出行号,空白行忽略
-E 将结尾的换行符$显示出来
-n 列出行号,空白行也列出
-T 将tab按键以^I显示出来
-v 列出一些看不出来的特殊字符

例如有如下文件:

Class MyClass
{
        public static void main(String[] args)
        {
                System.out.println("hello world");

                System.out.println("hello java");

                System.out.println("hello c++");
        }
}
>> cat -n hello.java

	Class MyClass
     2	{
     3		public static void main(String[] args)
     4		{
     5			System.out.println("hello world");
     6			
     7			System.out.println("hello java");
     8	
     9			System.out.println("hello c++");
    10		}
    11	}
>> cat -A hello.java 
Class MyClass$
{$
^Ipublic static void main(String[] args)$
^I{$
^I^ISystem.out.println("hello world");$
^I^I$
^I^ISystem.out.println("hello java");$
$
^I^ISystem.out.println("hello c++");$
^I}$
}$

 ②、tac

倒着查看文件内容。

③、nl

带行号的显示文件内容。

-b -b a 空行也列出行号
-b t 空行不列行号
-n -n ln 行号在屏幕的最左方显示
-n rn 行号在栏位最右方显示,不加0
-n rz 行号在栏位最右方显示,加0
-w 行号栏位占用的数字位数
>> nl hello.java
     1  Class MyClass
     2	{
     3		public static void main(String[] args)
     4		{
     5			System.out.println("hello world");
       
     6			System.out.println("hello java");
       
     7			System.out.println("hello c++");
     8		}
     9	}

 

>> nl -b a -n rz -w 3 hello.java
001	Class MyClass
002	{
003		public static void main(String[] args)
004		{
005			System.out.println("hello world");
006	
007			System.out.println("hello java");
008	
009			System.out.println("hello c++");
010		}
011	}

上面三个命令都是直接将内容全部输出到屏幕上无法翻页。接下来介绍几个可以翻页的命令。

④、more

如下,使用more可以分页显示内容,在屏幕底部还会显示目前所占百分比。在该页面下,可以使用如下键

空格 向下翻页
enter

向下翻页

/字符串 在当前显示内容中,向下查找字符串,若要继续往下查找按n即可
:f 显示当前文件名与当前显示的行数
q 退出
b 或者ctrl b 往回翻页
>> more hello.java
Class MyClass
{
	public static void main(String[] args)
	{
		System.out.println("hello world");

		System.out.println("hello java");

		System.out.println("hello c++");
	}
}
Class MyClass
{
        public static void main(String[] args)
        {
                System.out.println("hello world");

                System.out.println("hello java");

                System.out.println("hello c++");
        }
}Class MyClass
{
        public static void main(String[] args)
        {
                System.out.println("hello world");

                System.out.println("hello java");

                System.out.println("hello c++");
        }
}Class MyClass
{
        public static void main(String[] args)
        {
                System.out.println("hello world");

                System.out.println("hello java");
--More--(11%)

使用:f的效果 

2、linux笔记—文件与目录管理_第1张图片

⑤、less

比more功能更丰富。在less查看内容是可使用如下快捷键。

 

空格 向下翻页
pagedown 向下翻页
pageup 向上翻页
/字符串 向下查找字符串,按n/N可以实现选中下一个/上一个目标
?字符串 向上查找字符串,n/N可以实现如上的功能
G 跳到数据的最后一行
g 跳到数据的第一行
q 退出

 

⑥、head、tail数据截取

head表示显示文件前面n行,tail表示显示文件后面n行。

 -n number表示显示前number行数据,当number为负数时,表示除开文件后面的number绝对值行不显示,前面的全显示。

head -n 100 hello.java
head -n -100 hello.java

-n number表示显示后number行数据,当number前面带+时,表示 从该文件的第100行开始显示到文件的末尾。

tail -n number hello.java
tail -n +number hello.java

在屏幕上动态的显示hello.java文件末尾的内容,可以配合-n一起使用
tail -f hello.java

例子:取文件的第11行到20行的数据,并显示文件原始的行数,使用管道完成

cat -n hello.java | head -n 20 | tail -n 10

⑦、非纯文本文件:od

使用od可查看二进制文件,并以指定的编码方式显示出来

od -t c /usr/bin/passwd

3、文件和目录的默认权限与隐藏权限

①、umask

在创建文件与目录时,系统会默认为该文件或目录生成权限。该权限由umask确定。在linux中输入umask即可查看默认的值。

 第一个数字为特殊权限,后面三个数字为一般权限。该数字的意义为:创建目录或文件时去除umask的值即为目录或文件的默认权限。比如umask为022,即对于所属用户不去除任何权限,对于同组内的其他用户去除2权限(w权限),对于其他用户去去除2权限(w权限)

当目录具有x权限时,其他用户才能进入该目录,所以对于目录我们可以默认其具有777的全部权限,而对于文件而言,创建出来不要求其具有可执行x权限,所以默认其具有666权限。

目录未去除umask默认权限为:drwxrwxrwx

文件未去除umask默认权限为:-rw-rw-rw-

当使用文件或目录的默认权限减去umask之后就是创建文件或目录时的默认权限了。

目录:(drwxrwxrwx)-(d----w--w-)=drwxr-xr-x

文件:(-rw-rw-rw-)-(----w--w-)=-rw-r--r--

在未修改umask之前

修改umask为011

2、linux笔记—文件与目录管理_第2张图片

②、文件隐藏属性

主要用于安全方面考虑,命令有chattr与lsattr

 

你可能感兴趣的:(2、linux笔记—文件与目录管理)