Linux基本指令和权限理解

Posted SuchABigBug

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基本指令和权限理解相关的知识,希望对你有一定的参考价值。

指令目录

一、基本指令

1.1 背景介绍

Windows vs Linux:
为了讨好用户,微软的User Interface做的很好不对外开放,但是Linux是开源的,在当今互联网时代服务器上跑的基本上都是Linux,连咱们家微波炉,冰箱都是。由于开源的特性使得这套系统安全,稳定可靠。作为程序员的我们掌握这些是很有必要的

1.2 基本指令

1.2.1 ls

对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

1.2.1.1 which ls

ls通过which命令可以查看当前可执行程序ls的路径

1.2.1.2 ll

ls 和 ll有什么区别?
我们用which ll和which ls分别看一下有什么区别
然后可以自定义一个 alias lll=‘ls -l -a -I —color=auto’
alias给命令起别名

我们可以通过alias ls='ls --color=auto'显示颜色来区分文件的属性蓝色的为directory目录,白色为普通文件,而绿色的是可执行文件

1.2.1.3 man is

俗话说有不懂的就找男人,man一下此命令
我们可以通过man ls来查看带的相应参数的意义

1.2.2 pwd

显示用户当前所在的目录

1.2.3 tree

显示当前目录以及目录下的子树

1.2.4 cd

相信大家对这个命令都不陌生,用于改变工作目录,将当前工作目录改到指定目录下

cd … : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录
cd /home/henry/linux/ : 绝对路径
cd …/day2/ : 相对路径

1.2.5 touch和mkdir

touch新建一个不存在的文件,可更改文档或目录日期
-d 制定日期时间,而非现在时间

mkdir新建一个空目录, -p, --parents 建立多个目录

1.2.6 cp

用于拷贝源文件或目录 到 另外一个地方
如:cp fileName destinationFile -r

1.2.7 mv

用来移动文件或将文件改名,经常用来备份文件或目录

我们可以将rm改造成mv

vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() 
 mv -i ~/.trash/\\$@ ./

trash() 
 mv $@ ~/.trash/

1.2.8 cat, more和less

这三个命令都是用于查看目标文件的内容,但是有略微差异

cat指令
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行

more指令
-n 对输出的所有行编号
q 退出more

less指令可以对文件或其他输出进行分页显示,比其他两个更有弹性,支持用PageUp和PageDown前后翻页,支持搜索功能

-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q: quit

1.2.9 head和tail

顾名思义用来显示开头或结尾某个数量的文字区块

有一个文件共有100行内容,请取出第50行内容

seq 1 100 > test # 生成1到100的序列装入test

方法1 head -n50 test > tmp #将前50行装入临时文件tmp
tail -n1 tmp #得到中间行

方法2 head -n50 test | tail -n1 

1.2.10 date

date -s 设置当前时间
时间->时间戳:date +%s

为什么要有时间戳?
因为是累积的秒数,递归且不重复的,比较适合进行查找,尤其是范围查找,在日志当中可能会使用时间戳,得出时间戳在百度上转换

1.2.11 cal

用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历

1.2.12 stat

stat filename (查看文件信息详细修改时间)
-:一个杠开头的为普通文件(文本文件,可执行,各种库文件)
d:目录文件
l: 链接文件
p:管道文件
c:字符文件(字符设备,键盘,显示器)
b:块设备(磁盘),以一个块512字节为一个单位

1.2.13 find

语法: find pathname -options
用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)

which ls ,专门查找命令所在路径,在自己所在相关配置文件下找
如which gcc

Where commandName ,在系统中特定路径下,进行文档,命令等相关文件查找

find / -name temp.txt ,找的特别慢,真正根据所需要的名字去查找

1.2.14 grep

在文件中搜索字符串,将找到的行打印出来

-E ,让他支持正则表达 grep -E ‘999|888’ log.txt 搜索999或者888
-I , ignore忽略大小写
-n,带行好
-v,反向

1.2.15 zip/unzip

-r 递归处理,将制定目录下的所有文件和子目录一并处理

将test2目录压缩:zip test2.zip test2/*
解压到tmp目录:unzip test2.zip -d /tmp

1.2.16 tar

tar czf filename.tgz filename, 这里的czf为create zip file
tar xzf filename.tgz ,这里为解压

tar xzf lesson3.tgz -C /tmp , -C指明想要解压到哪个路径, -V 打印出执行过程

为什么要压缩包?
因为有大量文件,那么变成一个文件可以减少为网络或其他原因导致丢失的情况,减少存储或者传送成本

-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录

1.2.17 bc

可以很方便的进行浮点运算,类似计算器

1.2.18 uname

uname用来获取电脑和操作系统的相关信息

uname -r 查看内核版本

应用程的发布版本

1.2.19 扩展命令

安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

二、权限理解

2.1 超级用户与普通用户

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

su - 切换成超级用户
sudo + 普通用户 可短期提升权限,以roots身份运行
logout进行退出或者su userName切换用户

当用户登陆Linux系统的时候,系统会给用户创建一个进程,一般叫做bash(命令行解释器)

用户与shell打交到,而不是一直访问操作系统
因为用户不擅长直接与操作系统打交到,而是用外壳帮忙传递
用户如果有非法操作,shell会直接拒绝,从而保护了操作系统

很多人认为shell和bash是一个东西?大错特错
shell是所有 外壳的统称,命令行解释器
而bash 只是其中的一种,在centos7 用的是bash

2.2 文件类型和访问权限

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

文件权限属性:
r (读)
w (写)
x (执行权限)

2.3 chmod修改权限

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

chmod g-rw filename ,让group组不具备读和写权限
chmod o+rwx filename, 让other具备读写和执行权限

对多个人的多个条件进行修改

如果是按照八进制呢? 比如6 6 6, 那么转换成二进制就是1 1 0,对应的权限就是r w -
chmod 666 file.txt

chown 用于修改文件拥有者

chgrp 修改文件或目录的所属组

2.4 umask

查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

umask决定,是权限掩码,凡是在umask出现的权限都不应该在最终权限中出现,因为是取反 default &~umask

第一个0不管, 这里转换成二进制 就是000 000 010

下面为umask修改创建文件或目录时默认权限的转换:

举个例子
umask 777
然后touch newfile

2.5 chmod +t

如何防止误删呢?

chmod +t dirctoryName

这个就是设置粘滞位,解决同一个目录下,不同人创建的文件,可能会被其他人删掉,为了防止误删,接下来


创作不易,如果文章对你帮助的话,点赞三连哦:)

以上是关于Linux基本指令和权限理解的主要内容,如果未能解决你的问题,请参考以下文章

Linux基本指令和权限理解

Linux编程一Linux常见指令和权限理解(思维导图总结)

Linux编程一Linux常见指令和权限理解(思维导图总结)

Linux编程一Linux常见指令和权限理解(思维导图总结)

Linux编程一Linux常见指令和权限理解(思维导图总结)

Linux编程一Linux常见指令和权限理解(思维导图总结)