Linux(一) 基础

  • 查看Linux系统中虚拟内存的当前状态
cat /proc/meminfo

   # Mem:一行说明Linux服务器的物理内存为256MB,剩下4MB的空间没有使用

  • 查看系统当前的共享内容分页
ipcs -m

 

    # 每个共享内存段都对应一个创建该内存段的所有者.每个内存段还对应一个标准的Linux权限设置,可以设置内存段对于其他用户的可能性.使用键值允许其他用户获得访问该共享内存段的权限

  • 二进制内容转换为文本
infocmp [文件名]

 

    # 第一行显示提取值的终端文件所在的位置 

  • shell提示符

  bash shell的默认提示符是美元符号($).该符号表示shell等待输入文本.但是也可以改变shell所用的提示符格式.不同的Linux发行版使用不同的提示符格式.

  

   可以配置提示符使之提供环境的基本信息.上图提示符中显示了3条信息:

    1.启动shell的用户名;

    2.当前虚拟控制台编号;

    3.当前目录(波浪号是主目录的间歇表示法)

  控制命令行提示符的环境变量有两个:

    1. PS1 控制默认命令行提示符的格式;

    2. PS2 控制第二层命令行提示符的格式

  对于在shell中的初次数据输入,shell使用默认的 PS1 提示符.如果输入一个需要附加信息的命令,shell将显示 PS2 环境变量指定的第二层提示符

  要显示提示符的当前设置,可以使用echo命令

  

  提示符元素表:

  

   

  给 PS1 变量赋值一个新的字符串

# PS1="[	][u]$"

  

  新的 PS1 定义只在shell会话期间有效.启动一个新的shell时,将重新加载默认的shell提示符定义.

  • bash手册
man shell名

   该命令可以展示所输入sheel名的整个手册页面

  • Linux目录名称

  

   

  • 查看列表 (ls)

  过滤列表输出: 使用过滤器确定应该在输出中显示那些文件或者目录

ls -l 要搜索的文件/目录
ls -l 123? # 模糊过滤, ?表示一个字符
ls -l 123* # 模糊过滤, *表示零个或多个字符

  

  • 复制文件 (cp)

  如果 目标文件 已经存在,则 cp 命令将提示您是否覆盖该文件

  如果需要连接文件,可以创建 软连接(ls -s) 和 硬链接(ls -l)

cp 源文件 目标对象

  

  • 删除文件 (rm)

  删除后无法还原

rm 文件

  

  • 目录

  创建目录 (mkdir 目录)

  删除目录 (rmdir 目录), 使用 -r 参数递归移除目录中的文件,然后再移除目录本身

  

  • 查看文件内容

  查看文件统计数据 (stat 文件)

  查看文件类型 (fille 文件)

  查看整个文件 (cat 文件 [-n]:所有行编号 [-b]:带文本的行编号 [-T]:不出现跳格字符,使用^I字符组合替换文本中的任何跳歌符)

 

  • 监控程序

  进程查看 (ps) : 默认情况下,ps命令值显示属于当前用户并正在当前终端中运行的进程. 

  实时进程查看 (top)

  停止进程 (kill) 

  已挂载磁盘的使用情况 (df)

        

      # df 命令显示每个包含数据的已挂载文件系统.该命令显示:

      1.设备位置,

      2.能保存的数据块数量(没块1024字节),

      3.已使用的数据块数量(每块1024字节),

      4.可用的数据块数量(每块1024字节),

      5.已使用空间的百分比,

      6.设备挂载点

     # -h 参数,用于以可读形式显示磁盘空间

   显示特定目录的磁盘使用情况,默认为当前目录 (du)

  • 数据排序 (sort)

     [-n] 根据数值大小进行排序(默认按照标准的字符排序)

     [-M] 根据月份排序(会识别由3个字符组成的月份缩写,并对他们进行恰当排序)

  

  

  • 数据搜索 (grep)
grep [options] pattern [file]
[-v] 反转搜索(输出不匹配模式的数据行)
[-n] 获取与模式匹配的数据所在的行号
[-c] 统计包含匹配模式的行的数量
[-e] 指定多个匹配模式,例如: grep -e 搜索1 -e 搜索2 file1

  # grep命令将在输入或您指定的文件中搜索包含与指定模式(pattern)匹配的字符的数据航

  grep命令的输出是包含匹配模式的数据行

  

  • 压缩工具1 (bzip2)

  bzip2: 用户压缩文件,默认情况下,会尝试压缩原始文件,并使用.bz2的扩展名替换原文件

  bzcat: 用户显示已压缩文本文件的内容

  bunzip2: 用途解压.bz2文件

  压缩文本文件之后,您将无法使用标准的cat,more或less命令来查看数据

  

  • 查看.bz2压缩文件 (bzcat)
bzcat test.bz2

  bzcat命令用户显示压缩文件内部的文本,而无需解压实际的文件

  • 解压.bz2文件 (bunzip2)

  解压后的文件将返回初始文件大小

bunzip2 myprog.bz2

  

  • 压缩工具2 (gzip) - 是Linux中最流行的文件压缩工具

  gzip: 用于压缩文件

  gzcat: 用于显示压缩后的文本文件的内容

  gunzip: 用于解压文件

  

  • 压缩工具3 (zip)

  zip: 用户创建包含列出文件和目录的加密压缩文件

  zipcloak: 用于创建包含列出文件和目录的加密压缩文件

  zipnote: 用于提取zip文件中注释

  zipsplit: 用于将zip文件分割成指定大小的多个小文件(用于将大zip文件复制到软盘中)

  nuzip: 用于提取压缩zip文件中的文件和目录

zip -r testzip test  # 创建一个名称为testzip.zip的zip文件,并递归test目录,将发现的个文件和麻木了添加到该zip文件中

  # zip工具的强大之处在于能够将文件的整个目录压缩为一个文件,这是归档完整目录结构的理想方法

  • 归档工具 (tar)    

  [-C] dir : 切换到指定目录

  [-f] file : 输出结果到文件

  [-j] : 将输出重定向到bzip2命令进行压缩

  [-p] : 保存所有文件权限

  [-v] : 在处理过程中列出文件

  [-z] : 将输出冲定向到gzip命令进行压缩

tar function [options] object1 object2 ...
tar -cvf test.tar test/ test2/ # 创建一个名称为test.tar的归档文件,其中包含test1目录和test2目录的内容
tar -tf test.tar # 列出(但不解压)tar文件test.tar的内容
tar -xvf test.tar # 解压 test.tar文件的内容.如果tar文件在创建时拥有目录结构,则整个目录结果将在当前目录中被重建

  # .tgz 结构的文件名.是经过gzip压缩的tar文件,可以使用 tar -zxvf filename.tgz对他们进行解压

  • 查看全局环境变量 (printenv)

  bash shell已设置了许多全局环境变量. 其中大多数由系统在登录过程中设置.

  要显示某个环境变量的值,请使用echo命令.当引用某个环境变量时,需在环境变量名称前添加一个美元符号

echo $HOME

  

  • 设置本地环境变量

  设置本地变量之后,可以在shell进程的任何地方使用它.但是,如果产生了另外一个shell,则不能再子shell中使用它

  启动 bash shell 之后,您将能够创建在shell进程中可见的本地变量.方法: 使用等号将变量指定为具体指

test=testing
echo $test # testing

  如果指定包含空格的字符串值,则需要使用单引号来指示字符的起始位置.如果没有单引号,bash shell 将假定下一个字符是另一个要处理的命令.

test='testing a long string'
echo $test  # testing a long string

  # 环境变量名称 等号 和 值之间没有空格,如果在其中添加了任何空格,bash shell会将值解释为一个单独的命令

  • 设置全局环境变量

  全局环境变量在任何由设置全局环境变量的进程创建的子进程中都可见.

  创建全局环境变量的方法是创建一个本地环境变量,然后再将它导出到全局环境中

echo $test  # testing a long string
export test
bash
echo $test # testing a long string

  # 在导出本地环境变量时,不使用美元符号来引用变量的名称

  • 移除环境变量(unset)

  在子进程中使用unset移除全局环境变量,则该操作只对子进程有效

unset test

  # 在unset命令中引用环境变量时,不使用美元符号来引用变量的名称  

  • 默认的shell环境变量

  bassh shell默认将使用一些特定的环境变量来定义系统环境.可以依靠这些在Linux系统中设置的变量

  • 设置PATH环境变量

  在现有PATH环境变量中添加新搜索目录: 引用原始PATH值并在字符串中添加任何新目录

  

  

  • 定位系统环境变量 

  通过登录Linux系统启动 bash shell 时,bash默认将检查一些文件以执行命令.这些文件被称为启动文件.bash处理的启动文件依赖于启动 bash shell 的方法.可采用三种方法来启动 bash shell:

  1. 在登录是作为默认登录shell

  2. 作为非登录shell的交互式shell

  3. 作为非交互式shell运行脚本

  

  • 登录shell

  当登录到Linux系统中时,bash shell将作为登录shell启动. 登录shell将查找4个不同的启动文件来处理其中的命令.bash shell处理文件的顺序如下:

  1. /etc/profile 

  2. $HOME/.bash_profile

  3. $HOME/.bash_login

  4. $HOME/.profile

  bash shell在系统上的主默认启动文件,系统上的每一个用户在登录时都将执行此启动文件.另外3个启动文件叶鼎与各个用户,并且可以根据各用户的需求自定义他们

    1) /etc/profile 文件: 是bash shell的主默认启动文件. 登录Linux系统时,bash将执行/etc/profile启动文件中的命令.不同Linux发行版在此文件中放置的命令也不尽相同

    2) $HOME启动文件: 其余3个启动文件具备相同的功能--提供特定于用户的启动文件,用于定义特定于用户的 环境变量

  

  • 交互式shell

  如果启动了一个bash shell而没有登录系统(比如说,只在CLI提示符中键入bash), 则您启动的就是一个交互式shell.交互式shell与登录shell的行为不用,但它仍然提供了一个CLI提示符供您输入命令

  如果bash作为交互式shell启动,则他不会处理 /etc/profile 文件.相反,它将检查用户 HOME目录中的.bashrc文件

  .bashrc 文件执行两个任务.首先,它检查/etc目录中的公共bashrc文件.其次,它为用户输入个人别名和私有脚本函数提供了地方

  公共 /etc/bashrc 文件可有系统上启动了交互式shell回话的任何人运行

  默认文件将设置一些环境变量.但是值得注意的是,它没有使用 export   命令将他们设置为全局性质.每次启动新交互式shell时都会运行就是shell启动文件, 因此,任何子shell都将自动执行交互式shell启动文件

  还需要注意的是 /etc/bashrc 文件也执行了位于 /etc/profile.d 目录中的特定定于应用程序的启动文件

  • 非交互式shell

  这是系统开始执行shell脚本的shell,它的不同之处在于不用担心CLI提示符.但是您仍然希望在每次启动系统中的脚本时运行特定的启动命令

  为适应这种情况, bash shell 提供了BASH_ENV 环境变量.当shell开始一个非交互式shell进程时,它将检查该环境变量表示的执行启动文件的名称.如果该变量有值,则shell将执行该文件中的命令

  

  • 变量数组

  环境变量的一个非常好的特性就是能够当作数组使用.数组是能保存多个值的变量,数组中的值既可以分别引用,也可以作为整体引用

  要为某个环境变量设置多个值,只需将他们列出在圆括号中,各值以空格分离. 在将数组作为普通环境变量显示时,只显示数字的第一个值,要引用某个单独的数组元素,您必须使用一个数值索引值,它表示该元素在数组中 的位置

mytest-(one two three four five)
echo ${mytest[2]} # three : 索引值从0开始
echo ${mytest[2]} # one two three four five : 显示整个数组变量
mytest[2]=seven # 更改单个索引位置的值
unset mytest[2] # 移除 : 移除后不改变下标索引,只是把移除位置的值变成了空值
unset mytest # 移除整个数组

  

  • 使用命令别名 (alias)

  虽然shell命令别名本质上不是环境变量,但它的行为却与之基本 无异.命令别名允许您为公共命令(以及它们的参数)创建别名,以尽可能减少录入工作.

alias -p  # 查看公共命令别名
alias li='ls -li' # 创建别名 : 创建别名后,可以随时在shell中使用它

  

  • 使用命令别名 (alias)

  虽然shell命令别名本质上不是环境变量,但它的行为却与之基本 无异.命令别名允许您为公共命令(以及它们的参数)创建别名,以尽可能减少录入工作.

alias -p  # 查看公共命令别名
alias li='ls -li' # 创建别名 : 创建别名后,可以随时在shell中使用它

  

  • 使用命令别名 (alias)

  虽然shell命令别名本质上不是环境变量,但它的行为却与之基本 无异.命令别名允许您为公共命令(以及它们的参数)创建别名,以尽可能减少录入工作.

alias -p  # 查看公共命令别名
alias li='ls -li' # 创建别名 : 创建别名后,可以随时在shell中使用它

  

  • /etc/passwd 文件

  Linux系统使用一个特殊文件将登录名与相应UID值匹配.这就是 /etc/passwd 文件

  /etc/passwd 文件中的字段包含以下信息:

    1. 登录用户名

    2. 用户的密码

    3. 用户账号的数值 UID

    4. 用户账号的数值用户组ID (GID)

    5. 用户账户的文本描述(称为注释字段)

    6. 用户HOME目录的位置

    7. 用户的默认shell

    

  大多数Linux系统都将用户密码保存在一个单独的文件中(称为影子文件,位于/etc/shadow),只有一些特殊程序才能允许访问该文件

  • /etc/shadow文件

  为Linux系统管理密码的方式提供了更多的控制,只有根用户才能访问 /etc/shadow 文件,这比 /etc/passwd 文件更加安全

  对于系统上的每个用户账户, /etc/shadow 文件都包含一个相应的记录,每个记录都有9个字段

  

   1. 与 /etc/passwd 文件中的登录名相对应的登录名

  2. 经过加密的密码

  3. 密码上次修改时距1970年1月1日的天数

  4. 距能够修改密码是的最少天数

  5. 距必须修改密码时的天数

  6. 距密码逾期并警告用户修改密码的天数

  7. 从密码逾期开始到账户被禁用的天数

  8. 用户账户已被警用的天数 (存储为自1970年1月1日开始的天数)

  9. 保留供未来使用的字段

  

  • 添加新用户 (useradd)

  虽然shell命令别名本质上不是环境变量,但它的行为却与之基本 无异.命令别名允许您为公共命令(以及它们的参数)创建别名,以尽可能减少录入工作.

/usr/sbin/useradd -D  # 查看Linux发行版所使用的系统默认值

  更改默认值参数

  

  

  • 删除用户 (userdel)

  默认情况下, 值删除 /etc/passwd 文件中的用户信息. 它不会删除账户在系统中拥有的任何文件

  [-r] 删除用户的HOME目录和用户的邮件目录(在系统中删除的用户账户可能仍然拥有其他文件)

/user/sbin/userdel -r test

  

  • 修改用户

  

   usermod: 

    [-l] 用于修改用户账号的登录

    [-L] 用于锁定账户

    [-p] 用于修改账户的密码

    [-U] 用于解除账户锁定,是用户能够登陆

  passwd 和 chpasswd : 可用于快速修改用户的密码

    [-e] 强制用户在下次登陆时修改密码

    # 如果需要对系统上的大量用户执行批量密码修改,name可以使用 chpasswd 命令. chapasswd 命令从标准输入读取的登录名和密码对列表(由冒号分割), 并自动对密码进行加密,然后为用户账户设置它们

  chsh, chfn 和 chage : 专用于特定的功能

    chsh 命令允许快读修改用户的默认登录shell. 必须使用shell的完全路径名,而不能仅是shell名称 

    

    chfn 命令提供了一个标注方法,用于将信息存储到 /etc/passwd 文件的注释字段中. 使用不带参数chfn命令,name它将询问适合输入到注释字段中的值

    

    chage 命令管理用户账户的密码变化过程

    

     # chage 命令的一个有用的特性是允许您为账户设置逾期日期.使用该特性,您可以创建一个临时的用户账户,它会自动在设定日期失效,而不需要您亲自去删除他们.逾期账户类似于被锁定的账户,账户仍然存在,但是用户无法使用它登录.

  • 创建新用户组 (groupadd)
/usr/sbin/groupadd ahsred
/usr/sbin/usermod -G shared test  # 将test用户添加到shared用户组

  

  • 修改用户组 (groupmod)

   [-n] 修改组名

   [-g] 修改GID

  • 使用文件权限符号

  

  1.  -表示文件

  2. d表示目录

  3. l表示连接

  4. c表示字符设备

  5. b表示块设备

  6. n表示网络设备

  7. rwx 表示 读写执行

  

  

  • 修改权限 (chmod)
chmod 760  # -rwxrw----

  

  • 修改所有者

  chown命令可以方便地修改文件的所有者, chgrp命令允许您修改文件的默认租

chown 所有者 文件  # 为文件的新所有者指定登录名或数值UID
chown 所有者.组 文件 # 修改文件的用户和用户组
chown .组 we年 # 修改文件的默认用户组
# 只有根用户可以修改文件的所有者,任何用户都可修改文件的默认用户组,但是用户必须是与修改操作相关的用户组中的成员
chgrp 用户组 文件名/目录 # 修改文件或者目录的默认用户组

  

  • vim 编辑器

  正常模式

h  # 左移
j  # 下移
k  # 上移
l  # 右移
PageDown / Ctrl+f  # 下移一个屏幕
PageUp / Ctrl+b   # 上移一个屏幕
G            # 移动到缓冲的最后一行
num G         # 移动到缓冲中的第num行
gg           # 移动到缓冲中的第一行

  命令模式

q       # 退出
q!      # 退户并放弃对缓冲数据的任何修改
w filename # 将文件另存为指定的文件名
wq      # 保存退出

  编辑命令

x         # 删除当前光标位置的字符
dd # 删除当前光标位置的行
dw # 删除光标位置的单词
d$ # 删除当前光标位置到行末的所有内容
J # 删除当前光标位置所在行末的断开线
a # 将数据附加到当前光标位置后面
A # 将数据附加到当前贯标位置所在行后面
r char  # 将当前光标位置的单个字符替换为char
R char # 将当前光标位置的数据覆盖为text,知道您按Esc键为止

dd # 删除一行
p # 粘贴
y # 复制

v # 可视模式 : 会在您移动光标是突出显示文本

  搜索和替换

/搜索内容   # 搜索
n # 查找下一处
:s/准备替换的内容/替换后的内容 # 替换
:s/旧/新/g # 替换一行
:#,#s/旧/新/g # 替换两行之间的所有
:%s/旧/新/g # 替换整个文件中所有的
:%s/旧/新/gc # 替换整个文件中所有的每次都会弹出提醒
  • emacs 编辑器
原文地址:https://www.cnblogs.com/lab-zj/p/12880621.html