一. 为什么文件的起始权限都是664,目录都是775?
文件: 默认创建没有执行权限
目录: 默认有执行权限 --> 因为目录没有没有执行权限,就不能切换到目录中

-rw-rw-r-- 1 gec gec 66 Feb 25 18:40 project.c
drwxrwxr-x 2 gec gec 4096 Mar 8 01:34 abc

  1. 文件/目录起始权限计算公式

无论是目录还是文件,都跟系统的一个东西 “umask” 有关
gec@ubuntu:~$ umask
0002 -> 决定所有文件/目录起始权限
-> 第一个0是无效位,后三位才是真正位数!

文件起始权限=666-当前系统umask的值=666-002=664
目录起始权限=777-当前系统umask的值=777-002=775

  1. umask掩码值如何修改?

    1)临时修改umask --> 重启终端无效

gec@ubuntu:~$ umask 0000 --> 使用umask命令直接修改
gec@ubuntu:~$ umask
0000

2)永久修改umask   --> 重启终端还有效
思路: 终端在启动都会先执行一个脚本文件“~/.bashrc”,我们的思路应该是把命令写在脚本中1. 编辑脚本

gec@ubuntu:~$ gedit .bashrc

 2. 把需要执行的命令加在脚本的最后,保存退出!

fi

export PATH=$PATH:/usr/local/arm/bin
umask 0000

 3. 重新加载脚本文件 / 重启终端

gec@ubuntu:~$ source ~/.bashrc

3)如果在代码执行过程中需要修改掩码值  --> umask函数   --> man 3 umask#include <sys/stat.h>mode_t umask(mode_t cmask);   mode_t: 八进制权限数据类型
cmask: 修改之后掩码值,例如: 0002返回值:当前掩码值

注意: 1. umask()只是在代码运行时修改掩码值,并没有永久修改系统中umask。
2. 当程序结束后,umask会还原回系统的值。

二. 文件/目录权限对文件/目录影响

文件:
r: 如果没有读权限,不能使用gedit/vi/cat命令查看文件内容

gec@ubuntu:~$ cat project.c
cat: project.c: Permission denied

w: 如果没有写权限,则不能修改文件的内容
x: 如果没有执行权限,则执行文件时会提示权限拒绝

gec@ubuntu:~$ ./project
bash: ./project: Permission denied

目录:
r: 如果没有读权限,则不能使用ls命令查看目录下的内容  readdir()执行失败

gec@ubuntu:~/abc$ ls
ls: cannot open directory .: Permission denied

w: 如果没有写权限,则不能在这个目录下创建任何内容

gec@ubuntu:~/abc$ touch abc.txt
touch: cannot touch `abc.txt’: Permission denied

x: 如果没有执行权限,则不能使用cd命令切换到目录

gec@ubuntu:~$ cd abc/
bash: cd: abc/: Permission denied

三. linux下文件的种类
1. 在windows下,是如何区分文件种类?

 是使用文件的后缀进行区分,不同后缀会决定以不同的方式对文件进行解析!例子: 1.mp3  --> 就以mp3文件格式来解析文件的内容2.c    --> 就使用C语言语法!2. 在linux中,如何区别文件种类?不能通过颜色区分文件种类,不是通过后缀进行区分,只能通过文件属性进行查看。

-rwxrwxrwx 1 gec gec 0 Mar 8 01:34 abc.c --> 不要看后缀,看前面的类型,只要是-,就一定是一个普通文件
drwxrwxrwx 2 gec gec 4096 Mar 10 20:00 abc.txt --> 不要看后缀,看前面的类型,只要是d,就一定是一个目录文件

3. linux下,一共7种文件类型

1)普通文件"-" --> touch命令
2)目录文件"d" --> mkdir命令
3)链接文件"l" --> ln -s命令
如何创建链接文件?
已知abc.c,需要创建一个链接文件link指向它!
创建命令: ln -s abc.c link

4)管道文件"p" --> 在系统编程进程之间通信方式之有名管道
5)套接字文件"s" --> 网络编程TCP/UDP协议套接字
6)字符设备文件"c" --> 硬件模块驱动文件,红外,温湿度
7)块设备文件"b" --> 储存设备驱动文件,U盘,SD卡,nandfalsh

四. 根目录文件
gec@ubuntu:/$ ls /
bin dev home lost+found opt run srv usr
boot initrd.img media proc sbin sys var
cdrom etc lib mnt root selinux tmp vmlinuz

注意: linux与windows不一样,某些文件一定要存放在固定的目录才会生效。

常用目录:
bin: 存放linux命令与可执行程序
dev: 主要字符设备文件/块设备文件 -> linux硬件驱动文件
home: 存放所有普通用户的家目录
usr: 第三方程序安装头文件,库文件,可执行程序,帮助文档,目标源程序
头文件:
/usr/include
/usr/local/include

 库文件:  --> 第三方程序安装进来linux的库文件/usr/lib   /usr/local/lib可执行程序:/usr/bin/usr/local/bin

boot: 存放linux系统镜像文件
lrwxrwxrwx 1 root root 32 Jun 27 2013 initrd.img -> boot/initrd.img-3.5.0-23-generic 文件系统
lrwxrwxrwx 1 root root 29 Jun 27 2013 vmlinuz -> boot/vmlinuz-3.5.0-23-generic 系统内核

proc: 存放linux进程的相关信息 ID=1000进程的信息存放名字为1000目录下
sbin: 存放超级用户才能使用的linux命令
etc: linux配置文件 配置开机启动脚本,网络配置…
lib: linux系统自带的库文件
mnt: 挂载到linux系统目录,例如: 共享目录 / U盘挂载
root: 超级用户root的家目录

不常用目录:
lost+found:系统奔溃,会产生一些碎片存放到此目录,当系统重启时,系统修复碎片
opt:功能性代码,可选程序
run:系统运行时产生信息存放目录
srv:系统服务日志
media:多媒体设备挂载点
sys:系统运行时产生信息存放目录
var:存放系统运行时需要改变的数据
cdrom: 光驱挂载目录
selinux:加固系统目录
tmp:临时文件存放的目录

五. 环境变量
环境变量存在于linux系统中一种变量,不同于C语言中语法变量。

  1. 查看当前linux系统下环境变量
    gec@ubuntu:~$ env

环境变量名字=需要赋的值
SHELL=/bin/bash --> linux命令解析器
–> 只要终端启动了,就会执行该文件
OLDPWD=/sys --> 保存上一次的工作路径 ("cd -"切换到的路径)
USER=gec --> 命令: whoami 查询当前的用户名
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/bin

//当我们需要使用ls命令时,正常来讲,系统会在当前目录下寻找ls这个程序,如果系统在当前目录下没有找到ls命令,系统就会在PATH这个环境变量下的路径寻找ls。如果找到了,则可以在任何的路径下都使用ls命令。

PWD=/home/gec --> 当前所在的工作路径 ("cd ."切换到的路径)
HOME=/home/gec --> 家目录路径 (“cd”/"cd ~"切换到的路径)

  1. 如何修改环境变量PATH这个值?

1)不在原来的基础上修改PATH,直接给PATH赋新的值
gec@ubuntu:~$ export PATH=/home/gec --> 环境变量PATH只等于家目录,系统在寻找可执行程序,只会在家目录下寻找
gec@ubuntu:~$ ls
Command ‘ls’ is available in ‘/bin/ls’ //ls这个程序其实是在/bin有效
The command could not be located because ‘/bin’ is not included in the PATH environment variable.//因为/bin不在环境变量PATH下
ls: command not found

2)在原来的基础上添加一个新的路径
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin/:/usr/games:/usr/local/arm/bin
引用原来PATH的变量: $PATH

$PATH等价于/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/bin

例子: 临时在系统PATH环境变量基础上添加家目录命令:
gec@ubuntu:~$ export PATH=$PATH:/home/gec

3)永久修改: 把命令写在.bashrc脚本中。

练习1: 永久添加/home/gec/project/到环境变量PATH

1)在家目录创建project目录mkdir /home/gec/project
2)把该路径添加到PATH中export PATH=$PATH:/home/gec/project
3)永久修改只需要把这句话添加到~/.bashrc就可以
4)重启终端 / source ~/.bashrc

练习2: 写一个helloworld程序project.c,使用环境变量,使得可以在任何的路径下都可以执行该文件。

1)在任意的路径下写一个helloworld程序/home/gec/aaa/bbb    project.c  -->  project
2)把该路径添加到PATH中export PATH=$PATH:/home/gec/aaa/bbb/          //正确export PATH=$PATH:/home/gec/aaa/bbb/project     //错误
3)可以在任何的路径下都可以执行该文件

gec@ubuntu:~$ project
helloworld!
gec@ubuntu:/$ project
helloworld!
gec@ubuntu:~/aaa/bbb$ project
helloworld!

4)如果不小心把环境变量修改错误,怎么办?

1. 修改脚本,提示gedit所在的路径

gec@ubuntu:~$ gedit .bashrc
Command ‘gedit’ is available in ‘/usr/bin/gedit’
The command could not be located because ‘/usr/bin’ is not included in the PATH environment variable.
gedit: command not found

2. 使用gedit绝对路径打开脚本

gec@ubuntu:~$ /usr/bin/gedit .bashrc

3. 修改脚本内容:

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

系统可执行程序常用路径:
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin

4. 重启终端

六. linux shell命令功能

  1. 查看历史命令 – 方向键"上"“下”
    1). 使用方向键查看历史写过linux命令
    gec@ubuntu:~$ history --> 查看最近使用的1000条
    1626 env
    1627 ls
    1628 gedit .bashrc
    1629 /usr/bin/gedit .bashrc
    1630 source .bashrc
    1631 env
    1632 ls
    1633 history

2). 所有写过的命令都会保存在~/.bash_history下
想清除历史记录,删除该文件中的内容即可。

  1. linux命令与文件名补齐 – Tab键
    gec@ubuntu:~$ mk
    –> 按一下Tab键,提示当前目录下所有以mk开头的文件名,如果只有一个mk开头的文件,则直接补齐。
    –> 按两下Tab键,提示当前系统中所有以mk开头的linux命令

  2. 给linux命令取别名 --> alias命令

系统脚本中已经有存在取别名:

some more ls aliases

alias ll=‘ls -l’
alias la=‘ls -la’
alias l=‘ll’
alias c=‘clear’ --> "c"命令 等价于 "clear"命令

练习: "p" 代替 "pwd"

七. man手册(linux中的新华字典)

当我们在linux系统中遇到一些我们不懂的函数/命令时,就可以查阅man手册,所以用户不用刻意记住命令参数,函数的参数,返回值,头文件。我们只需要学会如何区查询函数/命令用法即可!

  1. 查看man自身的用法
    gec@ubuntu:~$ man man
    –> 第一个man: 使用man这个命令
    –> 第二个man: 查看的内容

手册数 手册内容的简单描述
1 Executable programs or shell commands --> 可执行程序/linux命令
2 System calls (functions provided by the kernel) --> 系统调用函数 open() read()
3 Library calls (functions within program libraries) --> 库调用函数 printf() scanf() -> 标准C库

  1. man命令所在路径
    gec@ubuntu:~$ which man
    /usr/bin/man

  2. man命令如何查看内容?

使用格式:
1)man 查询的手册数 需要查看的内容
man [[section] page …] …

2)查询man的手册数
man -f [whatis options] page …

例子:查看printf函数用法:
1)已知printf手册数:man 3 printf
2)未知printf手册数:
gec@ubuntu:~$ man -f printf
printf (1) - format and print data --> printf命令
printf (3) - formatted output conversion --> printf函数 --> man 3 printf

Linux基础.umask,权限影响,文件类型,/根目录文件,环境变量,alias别名,man手册相关推荐

  1. Linux文件类型与文件权限详解(一)

    今天继续给大家介绍Linux基础知识,本文的主要内容是Linux文件类型和文件权限. 一.Linux文件类型 在Linux系统下,一切皆文件.文件又可以分为普通文件和特殊文件,普通文件包括可执行文件. ...

  2. Linux下的文件类型、文件后缀名 知识点解析

    文章目录 1.Linux文件的扩展名: 2.Linux 文件类型: 参考博客: https://blog.csdn.net/AQRSXIAO/article/details/82774729 人需要不 ...

  3. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

  4. 目录文件和根目录文件夹

    目录文件和根目录文件夹. 相对路径: 相对路径分类 符号 说明 (1)同一级路径: 图像文件位于HTML文件同一级,如<img src="baidu.gif"/> (2 ...

  5. php 怎么查看文件类型信息,php获取文件类型和文件信息的方法

    php获取文件类型和文件信息的方法 发布于 2015-10-07 05:26:52 | 81 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  6. Webstorm添加新建文件类型 创建文件模板

    Webstorm添加新建文件类型 以创建Vue文件为例:   File-Setting-Editor-File and Code Template分支,点击添加,依次输入Name和Extension, ...

  7. Java基础之JDK 8下载、安装和环境变量配置

    2020.7.03 更新,添加 Mac 的环境变量配置 Tip:看热闹的朋友可以只看前言,想看安装教程的朋友请跳过前言. 文章目录 1. 前言 2. JDK下载 3. JDK安装 4. 配置环境变量( ...

  8. python文件打不开 环境变量错误,《自拍教程27》环境变量的常见错误,环境变量错误...

    <自拍教程27>环境变量的常见错误,环境变量错误 错误一: 把文件路径放到Path环境变量 测试同学经常出现,把文件路径,放到Path环境变量里去. 比如添加:C:\Adb\adb.exe ...

  9. 将python添加到环境变量是什么意思_将python文件加入到python环境变量中

    在python中,如何把一个python文件夹(及其包含的python文件)加入到python环境变量中以方便其他python文件调用呢.有两种方法,下面对其进行简单的介绍. 1. import sy ...

最新文章

  1. 设置VSCode Git签出分支快捷键Alt+G
  2. Vivado Hardware Manager的使用
  3. SMTPDiag 诊断工具
  4. java 排名相同_Java程序员十年面试经验,助你成为offer收割机
  5. 计算机应用对口升学后能学啥专业,计算机应用专业的对口升学生考什么大学好...
  6. Python变量的复制
  7. java中随机数边界问题,java 简单Dice问题(随机数的运用)
  8. 文件隐藏服务器版本信息,如何隐藏Apache版本号和其他敏感信息
  9. org.apache.subversion.javahl.ClientException: Working copy is not up-to-date
  10. Oracle优化问题
  11. vue 及sass安装
  12. Nature杂志总编辑:如何培养一个有价值的研究者
  13. 理解Python中的RingBuffer环形缓冲区
  14. U3D中物体渐隐和闪烁的方法
  15. Python函数曲线拟合
  16. android微信登录的app签名 和 项目正式签名替换默认签名
  17. Ubuntu 10.10 安装谷歌拼音输入法~
  18. 盘古开源解析:芯片订单超过产能,2022汽车出现缺芯难题
  19. hdu 5594 ZYB's Prime 最大流
  20. 陈皓:什么是工程师文化?

热门文章

  1. 音频服务器未能正常启动,win7系统音频服务无法启动具体解决方法指引
  2. android emmc重新分区,Android eMMC 分区详解
  3. 测试用例(功能用例)——资产维修、资产报废
  4. 看完这篇,让你不再惧怕内存优化
  5. [Linux服务器 错误] nohup: ignoring input and appending output t o ‘nohup.out‘
  6. 【CF731D】80-th Level Archeology
  7. 抄书——泛函分析讲义(上册)张恭庆——1.3列紧集
  8. node的响应头json文件
  9. MSP430驱动DDS模块AD9851
  10. 量子计算机模拟黑洞纠缠,纠缠的量子比特可以用来探测黑洞吗?