您的位置:首页 > 运维架构 > Linux

Linux文件管理必会的40个常用命令

2017-09-06 09:36 375 查看

1.文件管理

1.1 basename

1.1.1功能说明
从文件名中去掉路径
例1.
[root@mysql ~]# basename /etc/hosts
hosts
输出是 hosts

并没有从文件名中去点扩展名
例2
[root@mysql home]# basename ~/hegx.log
hegx.log

1.1.2 选线

--help  现实帮助信息并离开

--version 显示版本信息并离开

1.2 cat

1.2.1 功能说明
把档案串连接后传到几本输出(屏幕或加>filename到另一个档案)
1.2.2 语法
cat [-AbeEnstTuv] [--help] [--version] filename

1.2.3 参数

-n 或 --number 由 1 开始对所有输出的行数编号

-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号

-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

-v 或 --show-nonprinting

范例:

cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里

cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)

之后将内容附加到 textfile3 里。

1.3 cd

1.3.1 功能说明

切换目录

1.3.2 语法

cd [目的目录]

1.3.3 补充说明

cd指令可以让用户在不同的目录切换 但该用户必须有足够的权限进入目的目录

1.4 chgrp

1.4.1 功能说明

变更文件或目录的所属群组

1.4.2 语法

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]

或chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

1.4.3 补充说明

在unix系统家族里,文件或目录权限的掌控以拥有者及群组来管理,您可以使用chgrp指令来修改文件或目录的所属群组,设置方式使用群组名称或者群组识别码均可以。

1.4.4

-c或--changes 效果类似"-v"参数,但仅回报更改的部分。

-f或--quiet或--silent 不显示错误信息。

-h或--no-dereference 只对符号连接的文件作修改,而
4000
不更动其他任何相关文件。

-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose 显示指令执行过程。

--help 在线帮助。

--reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属

1.4.5 实战

首先我们来新建三个用户(默认方式创建用户,改用户被创造出来的时候默认是按自己的名字来命名所属群组的,如下 最靠左边的是用户名,其次是所属组名 )



使用指令 chgrp 修改上面三个文件的所属组

指令格式:chgrp 指定组名 指定用户名

[root@hadoop02 home]# chgrp hadoop chenlip
[root@hadoop02 home]# chgrop hadoop hegx
[root@hadoop02 home]# chgrp hadoop hadoop

total 12
drwx------ 2 chenlip hadoop 4096 Sep  5 08:25 chenlip
drwx------ 2 hadoop  hadoop 4096 Aug 31 21:49 hadoop
drwx------ 2 hegx    hadoop 4096 Sep  5 08:24 hegx
[root@hadoop02 home]#

1.5 chmod 

1.5.1 功能说明

变更文件或目录的权限

1.5.2  语法

chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]

或chmod [-cfRv][--help][--version][数字代号][文件或目录...]

或chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

1.5.3 补充说明

在UNIX系统家族里,文件或目录的权限的控制分别以读取,写入,执行3种一般权限来区分,另外有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chwon指令去变更文件或目录的权限,设置方式采用文字或数字代号皆可以。 符号链接的权限无法变更,如果您对符号链接修改权限,其修改会作用在被链接的原始文件,权限范围的表示如下:
u : User 即文件或目录的拥有者
g :Group,即文件或目录的所属组
o : Other,除了文件或目录拥有者或群组之外,其他用户皆属于这个范围
a : All,即全部用户,包括拥有者,所属群组以及其他用户。

有关权限代号的部分,列表于下:
r : 读取权限,数字代号为“4”
w : 写入权限,数字代号为“2”
x : 执行或切换权限,数字代号为“1”
- : 不具任何权限,数字代号为“0”

1.5.4 参数

-c或--changes 效果类似"-v"参数,但仅回报更改的部分。

-f或--quiet或--silent 不显示错误信息。

-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose 显示指令执行过程。

--help 在线帮助。

--reference=<参考文件或目录> 把指定文件或目录的权限全部设成和参考文件或目录的权限相同

--version 显示版本信息。

<权限范围>+<权限设置> 开启权限范围的文件或目录的该项权限设置。

<权限范围>-<权限设置> 关闭权限范围的文件或目录的该项权限设置。

<权限范围>=<权限设置> 指定权限范围的文件或目录的该项权限设置。

1.5.5 实战

例1.

(1)首先我们在root权限下面给目标用户设置sudo的权限,为了后面的操作简便,然后切换到改普通用户,用改用创建一个HelloWord.java的一个普通文
public class HelloWord {

public static void main(String[] args) {
String hello = "美女你好";

String word = "我是永远爱你的!";

System.out.println(hello+word);
}

}







(2)因为我们是用hadoop用户创建了给文件,所有用指令ll可以查看该文件的的拥有者hadoop和群组hadoop,并且他们都拥有读写执行的权限
[hadoop@hadoop02 ~]$ chmod -x test.sh
[hadoop@hadoop02 ~]$ ll
total 12
-rw-rw-r-- 1 hadoop hadoop 627 Sep  6 08:43 HelloWord.class
---------- 1 hadoop hadoop 234 Sep  6 08:38 HelloWord.java
-rw-r--r-- 1 hadoop hadoop  20 Sep  6 09:19 test.sh
[hadoop@hadoop02 ~]$ sh test.sh
Hello word!


备注:javac跟java此处是执行的操作(其实这并不是一个很好的例子,因为JVM是不受Linux系统限制的,跟java最初的原则一样,一次编译,随处执行!)



例2
这里在聚一次例是为了弥补例一的不足
首先我们来创建一个test.sh文件,并查看该文件(文件被创建出来的时候默认带有读写的权限)
[hadoop@hadoop02 ~]$ vi test.sh
-rw-rw-r-- 1 hadoop hadoop  20 Sep  6 09:19 test.sh
[hadoop@hadoop02 ~]$ cat test.sh
echo "Hello word!";
下面我们来执行该文件
[hadoop@hadoop02 ~]$ ./test.sh
-bash: ./test.sh: Permission denied
权限拒绝!这是很正常的因为该文件并没有执行的权限,下面给改文件加上执行的权限并执行,提示执行成功!
[hadoop@hadoop02 ~]$ chmod 755 test.sh
[hadoop@hadoop02 ~]$ ll
total 12
-rw-rw-r-- 1 hadoop hadoop 627 Sep  6 08:43 HelloWord.class
---------- 1 hadoop hadoop 234 Sep  6 08:38 HelloWord.java
-rwxr-xr-x 1 hadoop hadoop  20 Sep  6 09:19 test.sh
[hadoop@hadoop02 ~]$ ./test.sh
Hello word!
[hadoop@hadoop02 ~]$
同样,SH虚拟机也不受Linux系统的权限控制的,同样我们把文件的执行权限给去除,sh也可以去执行该文件的,所以这里需要注意这个问题!
[hadoop@hadoop02 ~]$ chmod -x test.sh
[hadoop@hadoop02 ~]$ ll
total 12
-rw-rw-r-- 1 hadoop hadoop 627 Sep  6 08:43 HelloWord.class
---------- 1 hadoop hadoop 234 Sep  6 08:38 HelloWord.java
-rw-r--r-- 1 hadoop hadoop  20 Sep  6 09:19 test.sh
[hadoop@hadoop02 ~]$ sh test.sh
Hello word!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: