Linux入门学习笔记

1. 指令、选项或参数之间不论空几个格, shell 都视为一个空格。

2. 指令太长时,可以使用“ \ ”(反斜杠)符号使指令连续到下一行。

3. Linux 环境下,字母区分大小写

4. shell 就是用户接口, Linux 下默认的用户接口就是 bash shell 。

5. 如果想让当前程序终止,可以键入ctrl+c,这就是中断当前程序的按键。( q :有很多程序在运行时,如果想跳出来,按下 q 即可!)

6. 如: drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh

非root这个账号的其它使用者均不可进入.ssh这个目录,为什么呢?因为 x 与目录的关系相当的重要,如果您在该目录底下不能执行任何指令的话,那么自然也就无法进入了。(如果无法执行指令,则无法进入目录)

7. 在 Windows 下一个文件是否具有执行能力是由后缀名来判断的, 例如∶ .exe, .bat, .com 等等,但在Linux下,文件是否能执行,则是由是否具有x这个属性来决定的,跟后缀名没有绝对的关系。

8. 如果文件名之前多一个“ . ”,则表明这个文件为“隐藏文档”。 ls -al 可以看到这种文件的文件名及其相关属性。

9.Linux的正统文件格式是ext2。常用的带有日志管理功能的文件格式有ext3reiserfs

10. Linux 下有关目录下存放的内容:

/boot :存放Linux核心与启动相关文件的地方;

/dev :存放与设备有关的文件;

/etc :系统在启动过程中要读取的文件均在该目录下;

/etc/rc.d/init.d :所有服务默认的启动脚本文件都放在这里;

/bin , /sbin , /usr/bin , /usr/sbin :系统默认的执行文件的放置目录。其中 /bin , /usr/bin 是系统用户使用的目录,而 /sbin , /usr/sbin 则是系统管理员使用的目录;

/var/log :存放所有服务登录文件错误信息文件

11.绝对路径:路径的写法一定是从根目录“/”写起,例如: /usr/share/doc 目录。

相对路径:路径的写法不是由“ / ”写起,例如从 /usr/share/doc 转到 /usr/share/man 下时,可以写成 cd ../man 。

( Windows 下直接输盘符如: E: 即可进入 E 盘,查看磁盘下的目录用 dir )

12..代表当前层目录

..代表上层目录

~代表自己的根目录

~user代表到 user 这个人的根目录

13. 当我们执行一个指令时,系统会依照环境变量 PATH 的设定到 PATH 定义的每个路径下搜寻文件,先搜寻到的指令文件先被执行。

14. 当需要备份很大的文件但这个文件的更新率很低时,可以使用指令“ cp –u 源文件 目标文件”进行备份。因为只有当源文件被改变后,才会进行复制操作。否则不做任何动作。(将源文件复制成目标文件)

15. 若用户建立的是“文件”,则默认没有可执行( x )项,即只有 rw 这两项,最大为 666 ( rw- rw- rw- );若用户建立的是“目录”,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,即 777 ( drwxrwxrwx )。

16. umask 用于指定当前用户在建立文件或目录时的属性默认值。其指定的是“该默认值需要取消的权限”。(如:先用 umask 设定权限,再创建目录时权限就会被应用到创建的目录上。)

17.SUID

当一个设置了 SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件 , 他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。

18.SGID

当一个设置了 SGID 位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源。

若一个目录设置了 SGID, 则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上 -p (preserve ,保留文件属性)的参数,才能保留原来所属的群组设置。

19.sticky-bit

对一个文件设置了 sticky-bit 之后,尽管其他用户有写权限,也由属主执行删除、移动等操作。

对一个目录设置了 sticky-bit 之后 , 存放在该目录的文件仅准许其属主执行删除、 移动等操作。

20. 命令摘录:

# exit:退出系统,相当于退出当前登录用户

# Ctrl+Alt+[F1]~[F6]:文字界面tty1~tty6终端

# Ctrl+Alt+[F7] :图形界面

# startx :启动图形界面

# bc :计算器

# man+指令名称:请求系统给出指令的操作说明

# shutdown –h now:立刻关机,now相当于时间为0

# chgrp群组名称文件或目录改变文件或目录的群组,要求改变的目标群组名称必须在 /etc/group 中存在)

# chown[-R]账号名称[: 群组名称 ]文件或目录改变文件拥有者,要求拥有者名称在 /etc/passwd 文件中存在,加参数 -R 可以直接将目录下的所有子目录或文件同时更改文件拥有者)

# cp 源文件 目标文件(复制文件)

# chmod [-R] rwx 文件或目录(更改文件权限, rwx 为三组属性每组内 rwx 相加结果,如 770 代表 rwxrwx--- )

# pwd (显示当前所在目录,printworkingdirectory )

# mkdir [ 目录名称 ] (创建目录)

# rmdir [ 目录名称 ] (删除目录)

# rm [-fir] [ 文件名 ] (删除文件或目录,参数说明: -i 为提供用户确认,此为默认值; -r 为循环删除,直到没有东西为止; -f 为 force ,强制删除。如 rm –rf test 为连续删除该目录下的所有文件与目录)

# mv [-u] [ 源文件 ] [ 目标文件 ] (可用来移动文件或更改文件名;参数说明: -u 为 update 简写,当源文件比目标文件还新时才会动作!可用来测试新旧文件,看是否需要搬移)

# cat 由第一行开始显示文件内容,读取文本文件

# tac 从最后一行开始显示,可以看出 tac 是 cat 的倒写

# nl 显示时同时输出行号

# more 一页一页地显示文件内容

# less 与 more 类似,但是比 more 更好的是,可以往前翻页

# head 只看头几行

# tail 只看末尾几行

# od 以二进制的方式读取文件内容

# touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。

# chattr 设定文件隐藏属性

# lsattr 显示文件隐藏属性

# which 查看可执行文件的位置(通过 PATH 环境变量到该路径内可执行文件)

# whereis 查看文件的位置

# locate 配合数据库查看文件位置

# find 实际搜寻硬盘查询文件名称

# grep ^[w-z] /etc/* ( 在 /etc 里,只要句首是 w-z 的就将它列出来 )

21. 硬链接和符号链接(软链接)

Block是记录文件内容数据的区域,它是磁盘可以记录的最小单位,由数个扇区组成;

inode则是记录该文件的属性及其放置在哪个 Block 之内的信息。每个文件都会占用一个 inode 。

当系统要读取某个文件时,它会先读 inode table ,然后根据 inode 的信息到数据区域将数据取出备用。

硬链接:在原有的 inode 引用上加一;限制:( 1 )不能跨文件系统,因为不同的文件系统有不同的 inode table ;( 2 )不能链接目录

符号链接:建立了一个 inode ,用来指向源文件的 inode ,类似快捷方式。当源文件被删除,符号链接的文件就打不开了。

区别:( 1 )硬链接的源文件和链接文件共用一个 inode ,而软链接源文件和链接文件拥有不同的 inode ;( 2 )在文件属性上,软链接明确写出了是链接文件,而硬链接没有写出;( 3 )文件大小不同,硬链接文件显示的大小与源文件相同,软链接显示的大小与源文件不同(较小)。

命令:ln [-s] [源文件] [目标文件]

参数说明: -s : 提供符号链接,如果直接使用 ln 而不加任何参数,就属于硬链接。

22. vi 是 Unix/Linux 默认的字处理软件,分为 3 种模式:

一般模式:以 vi 处理文件时,已进入该文件就是一般模式,可处理删除、复制、粘贴等动作,无法编辑;

编辑模式:在一般模式下按下 i,I,o,O,a,A,r,R 等字母之后才会进入编辑模式,按下 Esc 键回到一般模式;

命令行模式:在一般模式中,输入“ : ”、“ / ”就可以将光标移动到最末一行。可查找数据、读取、存盘、大量字符替换、退出 vi 、显示行号等。

23. 常用 vi 指令

一般模式

编辑模式

命令行模式

24.BASH Shell= Bourne (人名) Again Shell ( Linux 使用的 shell ,也是 GNU 操作系统中标准的 shell )主要优点如下:

( 1 )命令编辑能力:能记忆使用过的命令,但若黑客入侵,只需翻查执行过的指令(如 MySQL 的密码),就可能破解 Linux 主机;

( 2 )补全功能:指令补全和文件名称补全;

( 3 )命令别名(alias)设定功能:输入 alias 可查看当前的命令别名,可用形如

“ alias lm=’ls -al’ ”设定别名;(注: lm 、 = 、 ’ls -al’ 间不能有空格);

( 4 )作业控制、前景背景控制

( 5 )Shell scripts的强大功能:将频繁输入的连续指令写成一个文件,也可借由 shell 提供的环境变量及相关指令编写一个小型的程序语言。

25. root 的根目录在 /root 下,一般用户的根目录则在 /etc/passwd 文件中设定。

26. 变量就是以一组文字或符号取代一些设定或一串数据。

27. 显示变量要用到 echo 指令, Linux 系统预设变量名称前会加一个 $ 符号,如以 echo $PATH 可显示 PATH 变量的具体内容。

28. Linux 默认情况下,使用大写字母设定的变量一般都是系统的预设变量。使用指令 env 可以查看当前系统中的主要环境变量。 set 指令可以将当前系统中所有的变量数据都读出来。登入 Linux 后会取得一个 PID ,而该次的设定将只对这个 PID 及其子程序有关。另外,这次登入所做的变量设定,如果没有影响配置文件,那么此次设定的变量在下次登入时将被取消(因为程序 PID 不见了)。所以,如果想每次登入时自动设定好变量,必须将设定写入登入时加载的配置文件。

29. 设定变量时需要注意一下规则:

( 1 )等号两边不能直接接空格符;

( 2 )若该变量为扩增变量内容时,则需以双引号及 $ 变量名称(如“ $PATH ” :/home )继续累加内容;

( 3 )若该变量需要在其他子程序执行,则以 export 使变量可以动作,如 export PATH 。

30. 在设定变量时,单引号与双引号有什么不同?

答:最大不同在于双引号仍然可以保留变量的内容,但单引号内仅能是一般字符,即用单引号括起来后,变量失去了原有的意义,只是普通的字符组合而已。

31. 在一串指令中,在 ` 之内的指令将被首先执行,而其执行结果将作为外部的输入信息。

32. 如果要执行上一个指令,除了使用上下键外,还可以直接以 !! 来表示;要执行第 n 条指令,可以使用 !n 表示。

33. 如果需要将当前的配置文件内容读入一次,需要重新注销再登录;若想不注销而直接读入变量配置文件,使用“ source 变量配置文件”即可。

34. 用“ echo $? ”输出的结果代表前一个执行的指令内容有没有错误,如果有错误就返回 1 ,没有错误就返回 0 。

35. 要执行上一层目录中的命令,可以输入“ ../command ”,其中的 command 指的是存在的可执行文件

36. 在执行文件时,系统默认是不主动搜寻当前目录下的执行文件,而是按照 PATH 的设定搜寻。要执行当前目录下的执行文件,使用“ ./command”即可。

37. 命令重定向就是将目前所得数据转到其他地方。

# ls –al > list.txt 注:将显示结果输出到 list.txt 文件中,若该文件已存在则予以取代

# ls –al >> list.txt 注:将显示结果累加到 list.txt 文件中,该文件为累加的,旧数据保留

# ls –al 1> list.txt 2> list.err 注:将显示数据正确输出到 list.txt ,错误的数据输出到 list.err

# ls –al 1> list.txt 2> &1 注:将显示数据不论正确或错误均输出到 list.txt 中,注意,错误与正确信息输出到同一个文件中,则必须这样写,不能写成其他格式!

# ls –al 1> list.txt 2> /dev/null 注:将显示的数据,正确的输出到 list.txt ,错误的数据予以丢弃!

38. 什么时候需要使用命令输出重定向?

答:( 1 )当屏幕输出的信息很重要,而且需要将它保存时;

( 2 )背景执行中的程序,不希望它干扰屏幕正常的输出结果时;

( 3 )一些系统的例行性命令(如写在 /etc/crontab[crontab 命令 用于设置周期性被执行的指令 ] 中的文件)的执行结果,希望它可以保存下来时;

( 4 )一些执行命令,已知道可能的错误信息,想将其丢弃时;

( 5 )错误信息与正确信息需要分别输出时。

39. 如果数据必需经过几道手续之后才能得到想要的格式,需要使用 pipe 命令,其使用“ | ”界定符号,另外, pipe 命令仅能处理经由前一个指令传来的正确信息,也就是标准输出信息,对于标准错误信息并没有直接处理能力。

40. 环境变量文件的加载顺序是什么?

答:先由 /etc/passwd 取得 bash ,再到 /etc/profile 读取主要的环境变量,同时将 /etc/inputrc 及 /etc/profile.d 内容读入。之后,再到个人的根目录读取 ~/.bash_profile 及 ~/.bashrc 等文件。

41. 连续输入命令时,“ ; && || ”有何不同?

答:分号可以让两个 command 连续运作,不考虑 command1 的输出状态; && 则前一个指令必需没有错误信息,亦即返回值需为 0 ,则command2 才会被执行; || 则与 && 相反。

42. 常见文件压缩名后缀:

*.Z compress 程序压缩的文件;

*.bz2 bzip2 程序压缩的文件;

*.gz gzip 程序压缩的文件;

*.tar tar 程序打包的数据,没有压缩过;

*.tar.gz tar 程序打包的文件,并且经过 gzip 的压缩。

bzip2, gzip 与 compress 在没有加入特殊参数时,原先的文件会被取代掉,但是使用 tar 则原来的与后来的文件都会存在。

43. 脚本的后缀名最好为 .sh ;但并非加上 .sh 就是可执行文件,还需要查看其属性中是否有 x 属性。

44. 调试脚本的命令: # sh [-nvx] scripts

-n :不执行脚本,查询脚本内的语法,若有错误则列出

-v :在执行脚本之前,先将脚本的内容显示在屏幕上

-x :将用到的脚本内容显示在屏幕上,与 -v 稍微不同

45. shell 脚本代码示例

# !/bin/bash

# This script is written to show the basic grammar that shell uses.

# Date:2016/01/09

# Author:lyn

declare -i year=2016

echo "enter the month:(int)"

read month

if [ "$month" = "1" ] && [ "$year" != "" ]; then

echo "It's January,$year"

elif [ "$month" = "1" ]; then

echo "It's February"

else

echo "Lucky to know you"

fi

case $1 in

bird)

echo "bird is flying"

;;

fish)

echo "fish is swimming"

;;

*)

echo "you are thinking"

esac

account=$(cut -d ":" -f1 /etc/passwd|sort)

echo "The following are accounts existing in your linux server:"

for i in $account

do

echo $i

done

保存文件为 lyn.sh ,并在 Linux 执行输出结果(部分)如下:

本文来源于牛客网

作者:lyn_刷题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程心路

Linux目录及文件相关知识整理

Linux 文件管理是学习 Linux 的基础,看了鸟叔的 Linux 书籍,把 Linux 目录及文件相关的知识整理如下。

1504
来自专栏码洞

徒手教你使用zookeeper编写服务发现

zookeeper的内部是一个key/value存储引擎,key是以树状的形式构成了一个多级的层次结构,每一个节点既可以存储数据,又可以作为一个目录存放下一级子...

1241
来自专栏张首富-小白的成长历程

Nginx

直接去官网(www.nginx.org)查找源码包,直接复制链接地址下载,我们一般选择stable(稳定版),不选择最新版本

61022
来自专栏用户2442861的专栏

vi/vim编辑器必知必会

Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一...

1370
来自专栏Linyb极客之路

写代码怎能不会这些 Linux 命令?

当你将Dos系统中的文件复制到Unix/Linux后,这个文件每行都会以\r\n结尾,sed可以轻易将其转换为Unix格式的文件,使用\n结尾的文件

1332
来自专栏Samego开发资源

Linux之expect交互语言命令

1805
来自专栏PHP实战技术

浏览器访问一个网站所经历的步骤

搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)

2309
来自专栏Golang语言社区

Linux命令行:find的26个用法示例

作者 | Wray 来自 | http://www.codebelief.com/ Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根...

36513
来自专栏编程

Linux命令行:find的26个用法示例

作者 | Wray ? Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大...

1908
来自专栏PHP实战技术

浏览器访问一个网站所经历的步骤

  搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)

2518

扫码关注云+社区

领取腾讯云代金券