Linux 常用指令与常识

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Linux 常用指令与常识脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

  一、基本命令  

  1.1 命令的格式

  command [-options] parameter1 parameter2 ...

  1)command 命令的名称,如变换工作目录的命令为cd

  2)[]表示可选,-h 或者可选项的全名 --help

  3)命令、选项和参数以空格区分,不论几个空格视为一个

  4)回车代表一行命令开始执行

  5)命令太长时,可以使用 来转义回车键,使命令连续到下一行

  6)在linux系统中,英文大小写含义不同

  1.2 重要的热键

  1)[Tab]

  ca[Tab][Tab] 显示开头为ca的所有指令

  ls -al ~/.bash[tab][tab] 显示以bash为开头的文件名

  date --[Tab][Tab] date命令可以使用的参数有哪些 

  2)[Ctrl] - c

  撤销正在执行的命令

  3)[Ctrl] -d 

  键盘输入结束(End of File, EOF),例如,离开命令行模式

  4)[Shift] + [Page Up] / [Page Down]

  命令行界面中,实现翻页

  1.3 Linux 在线求助 man page 

  1)man command 命令的用法

  man page大致分为以下部分

  

Linux 常用指令与常识

  man page 中常用的按键

  

Linux 常用指令与常识

  二、目录操作命令  

  2.1 FHS(FileSystem HierArchy Standard)下的目录

  

Linux 常用指令与常识

 

   

Linux 常用指令与常识

  

Linux 常用指令与常识

 

   2.2 目录切换

  cd [相对路径或绝对路径]: 切换目录

  cd ~ : 回到家路径

  cd .. : 回到上层路径

  2.3 目录创建与删除

  mkdir [-mp] : 目录名称

  -m : 设置文件权限(711:rwx--x--x;r 4, w 2, x 1)

  -p : 递归创建没有的目录  

  rmdir [-p] : 目录名称

  -p : 连同上层空目录一起删除

  三、文件操作命令

  3.1 Linux文件属性

  ls -al 列出所有文件详细的权限与属性。ls -d 仅列出目录本身

  

Linux 常用指令与常识

 

  权限:d是目录,-是文件,r 可读,w 可写,x 可执行。

  第一组为文件拥有者可具备的权限;第二组为加入此用户组的账号具有的权限;第三组为非本人及本用户组的其他账号具有的权限。  

  3.2 文件特殊权限 SUID SGID SBIT

  - rwsr-xr-x,此时称为Set UID, SUID:

  • SUID 权限进对二进制程序有效
  • 执行者对于该程序需要具有x的可执行权限
  • 本权限仅在执行该程序过程中有效
  • 执行者具有该程序拥有者的权限

  -rwx--s--x, s在用户组时,称为set GID。SGID有如下功能:

  • SGID对二进制程序有用
  • 程序执行者对于该程序来说,需具备x的权限
  • 执行者在执行的过程中将会获得该程序用户组的支持

  drwxrwxrwt,只针对目录有效:

  • 当用户对此目录具有w、x权限,即具有写入权限
  • 当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除该文件

  3.3 文件系统特性

  文件权限与文件属性放到inode中,实际数据放在数据区块中。

  超级区块:记录文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量,以及文件系统的格式与相关信息等

  inode:记录文件的属性及文件数据所在的区块号码,一个文件一个inode

  数据区块:记录文件内容

      

Linux 常用指令与常识

                              inode/block 数据存取示意图

  目录树读取

  假设读取 /etc/passwd 这个文件时:  

  1. / 的 inode:通过挂载点的信息找到 inode 号码为 128 的根目录 inode,且 inode 规范的权限让我们可以读取该 block 的内容( 有 r 与 x)  2. / 的 block: 经过上个步骤取得 block 的号码,并找到该内容有 etc/ 目录的 inode 号码( 33595521)  3. etc/ 的 inode: 读取 33595521 号 inode 得知 dmtsai 具有 r 与 x 的权限,因此可以读取etc/ 的 block 内容  4. etc/ 的 block: 经过上个步骤取得 block 号码,并找到该内容有 passwd 文件的 inode 号码 ( 36628004)  5. passwd 的 inode: 读取 36628004 号 inode 得知 dmtsai 具有 r 的权限, 因此可以读取passwd 的 block 内容  6. passwd 的 block: 最后将该 block 内容的数据读出来

  3.4 复制、删除与移动:cp、 rm、 mv

  cp [-aDFilPRsu] 文件 目标文件

  -a : 相当于 -dr --preserve=all

  -i : 若目标文件已存在,覆盖时先进行询问

  -p : 连同文件的属性(权限、用户、时间)一起复制过去

  -r : 递归复制,用于目录的复制操作

  --preserve=all : 除了-p权限相关参数外,还包括SELinux属性,links、xattr等也复制

  rm [-fir] 文件或目录

  -f : 忽略不存在的文件,不出现警告信息

  -i : 删除前询问使用者是否操作

  -r : 递归删除   

  mv [-fiu] 源文件 目标文件

  -f : 如果目标文件存在,直接覆盖

  -i : 目标文件存在,询问是否覆盖

  -u : 目标文件存在,且source比较新,才会更新  

  3.5 文件内容查看

  less 文件名  

  空白键 :向下翻动一页  [pagedown]:向下翻动一页  [pageup] :向上翻动一页  /字串 :向下搜寻“字串”的功能  ?字串 :向上搜寻“字串”的功能  n :重复前一个搜寻 ( 与 / 或 ? 有关 )  N :反向的重复前一个搜寻 ( 与 / 或 ? 有关 )  g :前进到这个数据的第一行去  G :前进到这个数据的最后一行去   q :离开 less 这个程序

  head [ -n number ] 文件 取出前面几行数据

  tail -n 20 /etc/man_db.conf 显示最后20行

  tail -n +100 /etc/man_db.conf 列出100行之后的数据  

  3.6 文件的查找

  whereis [-bmsu] 文件或目录名 

  -l : 列出whereis会去查询的几个主要目录

  -b : 只找binary格式文件

  -m : 只在说明文件manual路径下的文件

  -s : 只找source源文件

  find [PATH] [option] [action] (搜索全部路径,耗时且占用磁盘资源)

  1. 与时间相关的选项,-atime(读取时间)、-ctime(状态时间)与-mtime(修改时间),以-mtime为例

  -mtime n; -mtime +n; -mtime -n n代表数字,符号表示如下图所示。

  -newer file : file为一个存在的文件,列出比file还要新的文件

  

Linux 常用指令与常识

 

  2. 与使用者或用户组名称有关的参数

  -uid n : 使用者账号

  -gid n : 用户组ID

  -user name : name为使用者账号名称

  -group name : name为用户组名称

  - nouser : 查找文件的拥有者不在/etc/passwd中

  - nogroup : 查找文件的拥有用户组不存在于/etc/group的文件。自行安装软件时,很可能该软件的属性当中并没有文件拥有者。

  3. 与文件权限及名称有关的参数

  -name filename

  -size [+-] SIZE : +50k 比50k大

  -tyPE TYPE : 正规文件(f),设备文件(b, c),目录(d),链接文件(l),socket(s)及FIFO(p)等属性

  -perm mode : 刚好等于mode, 4755(-rwsr-xr-x)

  -perm -mode : 必须囊括mode, 如 -perm -0744 查找文件时,4755的文件也会被找出来

  4. 额外可进行的操作

  find / -perm 7000 -exec ls -l {} ; 

  {} 表示 find 找到的内容

  -exec 到 ; 表示 find额外需要的操作

  3.7 cat 用于连接文件并打印到标准输出设备上

  cat filename

  四、压缩文件操作

  4.1 压缩命令 gzip 

  gzip [-cdtv#] 文件名 对目录内的所有文件进行压缩

  -c : 将压缩的数据输出到屏幕上

  -d : 解压缩参数

  -t : 用来检验压缩文件的一致性,看看文件有无错误

  -v : 显示压缩比信息

  -# : #表示数字,代表压缩等级,-1最快,压缩比最差,-9最慢,压缩比最好,默认为-6

  4.2 tar 打包命令

  将多个目录或文件打包成一个大文件。

  tar [-z|-j|-J] [cv] [-f 待建立的的新文件名] filename... 打包与压缩

  tar [-z|-j|-J] [tv] [-f 既有的tar文件名] 查看文件名

  tar [-z|-j|-J] [xv] [-f 既有的tar文件名]  [-C 目录] 解压缩   

  -c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)  -t :查看打包文件的内容含有哪些文件名  -x :解包或解压缩,可以搭配 -C (大写) 在特定目录解压   -z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz   -j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2   -J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz   -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来  -f filename:  -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

  -p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

  -P :保留绝对路径,亦即允许备份数据中含有根目录

  --exclude=FILE:在压缩的过程中,不要将 FILE 打包

  例子: 

  压 缩:tar -j<u>c</u>v -f filename.tar.bz2 要被压缩的文件或目录名称   查 询:tar -j<u>t</u>v -f filename.tar.bz2   解压缩:tar -j<u>x</u>v -f filename.tar.bz2 -C 欲解压缩的目录

  tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 -- newer-mtime = “2021/08/16” /etc/* 备份/etc目录下,2021/08/16之后修改过的文件

  五、其他命令

  5.1 vim程序编辑器

  vim可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。

  vim 文件名 进入命令模式,i, o, a, r 任一个字符进入插入模式,按[ESC]回到命令模式;:, /, ? 任一个字符进入底行模式,按[ESC]回到命令模式。

  命令行模式下的常用命令:

  移动光标      【1】控制光标移动:↑,↓,←,→

      【2】gg:移动到文件第一行

      【3】n<Enter>:n为数字,光标向下移动n行

      【4】0或功能键:移动到这一行最前面字符处

      【5】$或功能键[End]:移动到这一行最后面的字符

      【6】G:移动到文件最后一行 

  替换与查找

      【7】查找:/字符

      【8】n:向下重复前一个查找  

      【9】N:向上重复前一个查找

      【10】:n1,n2s/word1/word2/g:n1与n2行之间寻找word1字符串,替换为word2.

      【11】:1,$s/word1/word2/g:第一行与最后一行之间寻找word1字符串,替换为word2.

      【12】:1,$s/word1/word2/gc:第一行与最后一行之间寻找word1字符串,替换为word2,替换前让用户确认

  复制与粘贴

      【13】x与X:x相当于del,X相当于Backspace

      【14】dd:删除光标所在那一行

      【15】ndd:删除光标所在向下n行

      【16】yy:复制光标所在行  

      【17】nyy:复制光标向下n行

      【18】u:恢复前一个操作

      【19】Ctrl + r:重做上一个操作

      【20】. :重复前一个操作

  插入模式下的常用命令:

  插入模式下,才可以进行文字输入。      【1】ESC 退出编辑模式到命令行模式

  底行模式下的常用命令:      【1】:w:将编辑的数据写入硬盘文件      【2】:q:退出vim       【3】:wq:保存后退出

  vim 额外功能

  1)可视区块(Visual block)  

  v         字符选择,会将光标经过的地方反白选择  V        行选择,会将光标经过的列反白选择  [Ctrl]+v    可以用长方形的方式选择数据  y        将反白的地方复制起来  d             将反白的地方删除掉  p             将刚刚复制的区块, 在光标所在处贴上

  2)多文件编辑  

  :n            编辑下一个文件  :N      编辑上一个文件  :files        列出目前这个 vim 的打开的所有文件

  可以使用 vim hosts /etc/hosts同时打开两个文件,使用:n, :N在文件之间切换,进行多文件编辑

  3)多窗口功能

  vim 文件名 打开一个文件,:sp {filename} 打开一个新窗口

  ctrl + w + ↓         将光标移动到下方窗口  ctrl + w + ↑         将光标移动到上方窗口  ctrl + w + q         关闭下方窗口

  4)vim关键词补全  

  [ctrl]+x -> [ctrl]+n 通过目前正在编辑的这个“文件的内容文字”作为关键字,予以补齐  [ctrl]+x -> [ctrl]+f  以当前目录内的“文件名”作为关键字, 予以补齐  [ctrl]+x -> [ctrl]+o 以扩展名作为语法补充,以 vim 内置的关键字,予以补齐

  5.2 管道命令

  5.2.1 选取命令

  cut -d '分隔字符' -f (取出第几段) fields  

  cut -c 字符区间

  例子: echo ${PATH}  /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin

            1     2   3      4      5            6

  echo ${PATH}  |  cut -d ':' -f 5    结果:/home/dmtsai/.local/bin

  echo ${PATH}  |  cut -d ':' -f 3, 5    结果:/usr/local/sbin /home/dmtsai/.local/bin

  export 内容: 

  declare -x HISTCONTROL="ignoredups"  declare -x HISTSIZE="1000"  declare -x HOME="/home/dmtsai"  declare -x HOSTNAME="study.centos.vbird"

  export | cut -c 12-  

  HISTCONTROL="ignoredups"  HISTSIZE="1000"  HOME="/home/dmtsai"  HOSTNAME="study.centos.vbird"

  grep [-acinv] [-A] [-B] [--color=auto] '查找字符' filename  

  -a :将 binary 文件以 text 文件的方式搜寻数据  -c :计算找到 '搜寻字串' 的次数  -i : 忽略大小写的不同, 所以大小写视为相同  -n :顺便输出行号  -v :反向选择, 亦即显示出没有 '搜寻字串' 内容的那一行  --color=auto : 可以将找到的关键字部分加上颜色的显示

  -A : 除了列出该行外,后续的n列也列出来

  -B : 除了列出该行外,前面的n列也列出来

  例子:

  last内容:  

  root pts/1 192.168.201.101 Sat Feb 7 12:35 still LOGged in  root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 ( 06:33)  root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 ( 01:16)

   last | grep -v 'root' | cut -d ' ' -F1 取出含有root的行且是第一栏

  5.2.2 排序命令

  sort [-fbMnrtuk] [file or stdin]  

  -f :忽略大小写的差异,例如 A 与 a 视为编码相同  -b :忽略最前面的空白字符部分  -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法  -n :使用“纯数字”进行排序( 默认是以文字体态来排序的)   -r :反向排序  -u :就是 uniq ,相同的数据中,仅出现一行代表  -t :分隔符号,默认是用 [tab] 键来分隔  -k :以那个区间 ( field) 来进行排序的意思

  例子:cat  /etc/passwd | sort -t ':' -k 3 以第三栏排序

  5.2.3 字符转换命令

  tr [ds] SET1  ...

  -d : 删除字符SET1 

  -s : 替换掉重复的字符

  last | tr '[a-z]' '[A-Z]' 所有的小写变成大写

  join [-til2] file1 file2

  -t : join 默认以空白字符分隔数据,并且比对“第一个字段”的数据,如果两个文件相同,则将两笔数据联成一行,且第一个字段放在第一个  -i : 忽略大小写的差异;  -1 :第一个文件要用哪个字段来分析  -2 :第二个文件要用哪个字段来分析

   例子:  

  head -n 3 /etc/passwd /etc/shadow  ==> /etc/passwd <==  root:x:0:0:root:/root:/bin/bash  bin:x:1:1:bin:/bin:/sbin/nologin  daemon:x:2:2:daemon:/sbin:/sbin/nologin  ==> /etc/shadow <==  root:$6$wtbCCce/PXMeE5wm$KE2IfSJr...:16559:0:99999:7:::  bin:*:16372:0:99999:7:::  daemon:*:16372:0:99999:7:::  # 由输出的数据可以发现这两个文件的最左边字段都是相同帐号!且以 : 分隔  

  join -t  ':'  /etc/passwd  /etc/shadow | head -n 3  root:x:0:0:root:/root:/bin/bash:$6$wtbCCce/PxMeE5wm$KE2IfSJr...:16559:0:99999:7:::  bin:x:1:1:bin:/bin:/sbin/nologin:*:16372:0:99999:7:::  daemon:x:2:2:daemon:/sbin:/sbin/nologin:*:16372:0:99999:7:::

  5.3 sed工具

  sed [-nefr] [操作]  

  选项与参数:  -n : 在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后, 则只有经过 sed 特殊处理的那一行( 或者动作)才会被列出来  -e : 直接在命令行界面上进行 sed 的动作编辑  -f : 直接将 sed 的动作写在一个文件内, -f filename   -r : sed 的动作支持的是延伸型正则表达式的语法。 ( 默认是基础正则表达式语法)  -i : 直接修改读取的文件内容,而不是由屏幕输出。  动作说明: [n1[,n2]]function  n1, n2 : 一般代表“选择进行动作的行数”,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为] ”function 有下面这些:  a : 新增,sed '2a drink tea' 在第二行后加上drink tea  c : 取代,sed '2, 5c No 2-5 number'  d : 删除 sed '2,5d' 删除2-5行  i : 插入,i 的后面可以接字串, 而这些字串会在上一行出现  p : 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行 sed -n '5, 7p' 打印出5-7行  s : 取代,通常这个 s 的动作可以搭配正则表达式 例如 sed  's/要被替换的字符/新的字符/g'  sed 's/#.*$//g' 删除注释之后的内容

  5.4 awk 数据处理工具

   awk '条件类型1{操作1} 条件类型2{操作2} ...' filename

  last -n 5 | awk '{print $1 "t" $3}' 打印出第一栏和第三栏数据  

  变量名称 代表意义  NF      每一行( $0)拥有的字段总数  NR          目前awk所处理的是“第几行”数据  FS          目前的分隔字符, 默认是空白键

  last -n 5 | awk '{print $1 "t lines: " NR "t columns: " NF}'

  cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "t " $3}'

  5.5 用户身份切换

  su [-lm] [-c命令] [username]  

  - : 代表使用 login-shell 的变量文件读取方式来登陆系统;若使用者名称没有加上去,则代表切换为 root 的身份。  -l : 与 - 类似,但后面需要加欲切换的使用者帐号!也是 login-shell 的方式。  -m : 使用目前的环境设置,而不读取新使用者的配置文件  -c : 后面可以加上指令

脚本宝典总结

以上是脚本宝典为你收集整理的Linux 常用指令与常识全部内容,希望文章能够帮你解决Linux 常用指令与常识所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。