Linux 实用命令 及 权限 理解

目录:

前言:

1、 Linux内核是系统的核心,控制着内存、程序和硬件之间的交互。

2、 你将会发现Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在Linux中,反斜线用来标识转义字符,要是用在文件路径中的话会导致各种各样的问题。如果你之前用的是Windows环境,就需要一点时间来适应。

一、常用命令整理:

cd 就不要多说了,都知道、
1、有两个特殊字符可用于相对文件路径中:

 单点符(.),表示当前目录;
 双点符(…),表示当前目录的父目录。
你可以使用单点符,不过对cd命令来说,这没有什么意义。

2、tree :显示目录文件下的子目录
3、touch命令创建了你指定的新文件,并将你的用户名作为文件的属主。
4、mkdir 创建目录
5、 cat 查看整个文件
cat命令的主要缺陷是:一旦运行,你就无法控制后面的操作。
6、more命令是分页工具。

more命令会显示文本文件的内容,但会在显示每页数据之后停下来。

7、tail命令中加入-n参数来修改所显示的行数。
8. head命令

head命令,顾名思义,会显示文件开头那些行的内容。。默认情况下,它会显示文件前10行的文本。

二、探查Linux统的内部信息 :

1、 ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息。

默认情况下,ps命令并不会提供那么多的信息:


表4-1 Unix风格的ps命令参数

-A 显示所有进程
-N 显示与指定参数不符的所有进程
-a 显示除控制进程(session leader①)和无终端进程外的所有进程
-d 显示除控制进程外的所有进程
-e 显示所有进程
-C cmdlist 显示包含在cmdlist列表中的进程
-G grplist 显示组ID在grplist列表中的进程
-U userlist 显示属主的用户ID在userlist列表中的进程
-g grplist 显示会话或组ID在grplist列表中的进程②
-p pidlist 显示PID在pidlist列表中的进程
-s sesslist 显示会话ID在sesslist列表中的进程
-t ttylist 显示终端ID在ttylist列表中的进程
-u userlist 显示有效用户ID在userlist列表中的进程
-F 显示更多额外输出(相对-f参数而言)
-O format 显示默认的输出列以及format列表指定的特定列
-M 显示进程的安全信息
-c 显示进程的额外调度器信息
-f 显示完整格式的输出
-j 显示任务信息
-l 显示长列表
-o format 仅显示由format指定的列
-y 不要显示进程标记(process flag,表明进程状态的标记)
-Z 显示安全标签(security context)①信息
-H 用层级格式来显示进程(树状,用来显示父进程)
-n namelist 定义了WCHAN列显示的值
-w 采用宽输出模式,不限宽度显示
-L 显示进程中的线程
-V 显示ps命令的版本号

使用ps命令的关键不在于记住所有可用的参数,而在于记住最有用的那些参数。

#如果你想查看系统上运行的所有进程,可用-ef参数组合(ps命令允许你像这样把参数组合在一起)。

ps -ef 显示的信息如下:
在这里插入图片描述

2.1.2 实时监测进程

top

2.2.3 查看磁盘空间

使用 df 命令有时你需要知道在某个设备上还有多少磁盘空间。df命令可以让你很方便地查看所有已挂载磁盘的使用情况。
df命令会显示每个有数据的已挂载文件系统。
,有些已挂载设备仅限系
统内部使用。命令输出如下:

  • 设备的设备文件位置;
  • 能容纳多少个1024字节大小的块;
  • 已用了多少个1024字节大小的块;
  • 还有多少个1024字节大小的块可用;
  • 已用空间所占的比例;
  • 设备挂载到了哪个挂载点上。
  • df命令有一些命令行参数可用,但基本上不会用到。一个常用的参数是-h。它会把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。

使用 du 命令

通过df命令很容易发现哪个磁盘的存储空间快没了。系统管理员面临的下一个问题是,发生这种情况时要怎么办

下面是能让du命令用起来更方便的几个命令行参数。

  • -c:显示所有已列出文件总的大小。
  • -h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字
    节。
  • -s:显示每个输出参数的总计。

2.2.4排序数据

处理大量数据时的一个常用命令是sort命令。顾名思义,sort命令是对数据进行排序的。
默认情况下,sort命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。


其他一些方便的sort参数组合可用

-b --ignore-leading-blanks 排序时忽略起始的空白

-C --check=quiet 不排序,如果数据无序也不要报告

-c --check 不排序,但检查输入数据是不是已排序;未排序的话,报告

-d --dictionary-order 仅考虑空白和字母,不考虑特殊字符

-f --ignore-case 默认情况下,会将大写字母排在前面;这个参数会忽略大小写

-g --general-number-sort 按通用数值来排序(跟-n不同,把值当浮点数来排序,支持科学计数法表示的值)

-i --ignore-nonprinting 在排序时忽略不可打印字符

-k --key=POS1[,POS2] 排序从POS1位置开始;如果指定了POS2的话,到POS2位置结束
-M --month-sort 用三字符月份名按月份排序

-m --merge 将两个已排序数据文件合并

-n --numeric-sort 按字符串数值来排序(并不转换为浮点数)

-o --output=file 将排序结果写出到指定的文件中

-R --random-sort 按随机生成的散列表的键值排序

–random-source=FILE 指定-R参数用到的随机字节的源文件

-r --reverse 反序排序(升序变成降序)

-S --buffer-size=SIZE 指定使用的内存大小

-s --stable 禁用最后重排序比较

-T --temporary-directory=DIR 指定一个位置来存储临时工作文件

-t --field-separator=SEP 指定一个用来区分键位置的字符

-u --unique 和-c参数一起使用时,检查严格排序;不和-c参数一起用时,仅
输出第一例相似的两行

-z --zero-terminated 用NULL字符作为行尾,而不是用换行符

2.3.5 搜索数据

你会经常需要在大文件中找一行数据,而这行数据又埋藏在文件的中间。这时并不需要手动翻看整个文件,用grep命令来帮助查找就行了。
grep命令的命令行格式如下。
参数:

-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或–silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --revert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。

查看历史操作

  1. 使用history命令

三、在bash shell中,环境变量分为两类:

  • 全局变量
  • 局部变量

尽管bash shell使用一致的专有环境变量,但不同的Linux发行版经常会添加其自有的环境变量。

  • 设置用户定义变量
    一旦启动了bash shell(或者执行一个shell脚本),就能创建在这个shell进程内可见的局部变量了。

    $ echo $myuser

窍门

在涉及环境变量名时,什么时候该使用 使 , 什么时候不该使用 ,实在让人摸不着头脑。
记住一点就行了:如果要用到变量,使用$

如果要操作变量,不使用$。这条规则的一个例外就是使用printenv显示某个变量的值。

四、理解Linux 文件权限

4.2.1 文件概述

Linux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录系统时用的账户。
Linux系统使用一个专门的文件来将用户的登录名匹配到对应的UID值。这个文件就是 /etc/passwd文件,它包含了一些与用户有关的信息。

使用文件权限符那应该知道ls命令可以用来查看Linux系统上的文件、目录和设备的权限。
$ ls –l
total 68
-rw-rw-r-- 1 rich rich 50 2010-09-13 07:49 file1.gz
-rw-rw-r-- 1 rich rich 23 2010-09-13 07:50 file2
-rw-rw-r-- 1 rich rich 48 2010-09-13 07:56 file3
-rw-rw-r-- 1 rich rich 34 2010-09-13 08:59 file4
-rwxrwxr-x 1 rich rich 4882 2010-09-18 13:58 myprog
-rw-rw-r-- 1 rich rich 237 2010-09-18 13:58 myprog.c
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test1
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test2
输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象
的类型:

  • -代表文件
  • d代表目录
  • l代表链接
  • c代表字符型设备
  • b代表块设备
  • n代表网络设备之后有3组三字符的编码。每一组定义了3种访问权限:
  • r代表对象是可读的
  • w代表对象是可写的
  • x代表对象是可执行的
    若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:
  • 对象的属主
  • 对象的属组
  • 系统其他用户
    这个概念在图7-1中进行了分解、
    在这里插入图片描述
    文件myprog有下面3组权限。
     rwx:文件的属主(设为登录名rich)。
     rwx:文件的属组(设为组名rich)。
     r-x:系统上其他人。
    这些权限说明登录名为rich的用户可以读取、写入以及执行这个文件(可以看作有全部权限)。
    类似地,rich组的成员也可以读取、写入和执行这个文件。然而不属于rich组的其他用户只能读取
    和执行这个文件:w被单破折线取代了,说明这个安全级别没有写入权限。

4.2.2 改变安全性设置

如果你已经创建了一个目录或文件,需要改变它的安全性设置,在Linux系统上有一些工具能够完成这项任务。本节将告诉你如何更改文件和目录的已有权限、默认文件属主以及默认属组。
修改文件:chown
修改权限:chmod

五、 改变权限:chmod 权限 命令详细用法

指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR] [–help] [–version] mode file…
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
参数 :
mode : 权限设定字串,格式如下 : [ugoa…][[±=][rwxX]…][,…],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

  • 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
    r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
    -c : 若该档案权限确实已经更改,才显示其更改动作
    -f : 若该档案权限无法被更改也不要显示错误讯息
    -v : 显示权限变更的详细资料
    -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
    –help : 显示辅助说明
    –version : 显示版本
    范例 :将档案 file1.txt 设为所有人皆可读取 :
    chmod ugo+r file1.txt
    将档案 file1.txt 设为所有人皆可读取 :
    chmod a+r file1.txt
    将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
    chmod ug+w,o-w file1.txt file2.txt
    将 ex1.py 设定为只有该档案拥有者可以执行 :
    chmod u+x ex1.py
    将目前目录下的所有档案与子目录皆设为任何人可读取 :
    chmod -R a+r *
    此外chmod也可以用数字来表示权限如 chmod 777 file
    语法为:chmod abc file
    其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
    r=4,w=2,x=1
    若要rwx属性则4+2+1=7;
    若要rw-属性则4+2=6;
    若要r-x属性则4+1=7。
    范例:
    chmod a=rwx file

    chmod 777 file
    效果相同
    chmod ug=rwx,o=x file

    chmod 771 file
    效果相同
    若用chmod 4755 filename可使此程序具有root的权限.
    指令名称 : chown
    使用权限 : root

使用方式 : chmod [-cfhvR] [–help] [–version] user[] file…

说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

把计 :

user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)–help : 显示辅助说明–version : 显示版本

范例 :
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt

将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
-rw------- (600) – 只有属主有读写权限。
-rw-r–r-- (644) – 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) – 只有属主有读、写、执行权限。
-rwxr-xr-x (755) – 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx–x--x (711) – 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) – 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) – 所有用户都有读、写、执行权限。更不可取的做法。
以下是对目录的两个普通设定:

drwx------ (700) - 只有属主可在目录中读、写。
drwxr-xr-x (755) - 所有用户可读该目录,但只有属主才能改变目录中的内容。

运行 .sh 文件类型的文件:
用file命令测试一下看是什么类型的
file xxxx.sh
如果是Bourne-Again shell script 可以sh xxxx.sh 或者chmod +x xxxx.sh 再./xxx.sh
一般 .sh 的直接添加x(可执行属性) chmod +x xxx.sh 然后./xxx.sh就可以了

【转载注明出处,尊重原创 】

【作者水平有限,如有错误欢迎指正 .】

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46163590/article/details/106157901