linux命令学习笔记

注:所有命令适用于CentOs 6,部分适用于CentOs 7

文件、目录访问创建相关命令

  • ls

    ls -a -l -h -d(查看文件或目录属性) --a -i 查看文件或目录i节点

  • cd (change directory)
    e.g. cd .. (切换到上一级目录) cd / (切换到根目录) cd /root (切换到指定目录) ps: cd (后面不加任何选项): 跳转到用户的家目录

  • pwd (print working directory)

    (显示当前目录的绝对路径)

  • mkdir

    (创建目录) -p (递归创建)
    e.g. mkdir /tmp/japan mkdir -p /tmp/us/states (其中us目录之前并不存在) mkdir /tmp/china /tmp/russia ...(同时创建多个目录)

  • rmdir (remove empty directories)

    (删除空目录) e.g. rmdir /tmp/emptyFolder

  • cp

    语法:cp -rp [原文件或目录] [目标目录]) -r 复制目录 -p 保留文件属性
    e.g. cp -r /tmp/japan /root (复制并保存目录/文件名) cp -r /tmp/japan /root/Japan (复制并改名)

  • mv (move)

    (剪切文件或目录、改名) 语法:mv [原文件或目录] [目标目录]
    e.g. mv /tmp/japan /root/nvshen (剪切并改名) mv japan Japan (在同样目录下移动并改名)

  • rm (remove)

    (删除文件或目录) 语法:rm -rf [文件或目录] -r 删除目录 -f 强制执行
    e.g. rm /tmp/yum.log (删除文件) rm -rf /tmp/empty (强制删除目录) ps: rm -rf * 删除当前目录所有文件

  • touch (创建空文件) 语法:touch [文件名] (在当前目录创建)
    e.g. touch /root/film.list (在指定目录创建文件) 若要创建文件名带空格的文件,需用""括起来

  • cat

    (显示文件内容)[主要是内容较短的文件] -n 显示行号 -A 显示所有字符(包括隐藏字符)
    e.g. cat /etc/issue cat -n /etc/services

  • tac

    (显示文件内容-反向列式) e.g. tac /etc/issue

  • more

    (分页显示文件内容)
    e.g. more /etc/services 按"空格"或"f"可一页一页往下翻 按"回车"可一行一行往下翻 按"B"可往回翻页 按"Q"或"q"可退出

  • less

    (分页显示文件内容(可向上翻页))
    按"空格"或"f"可一页一页往下翻
    按"回车"可一行一行往下翻
    按"B"可往回翻页
    按"Q"或"q"可退出
    此外: 按pageup可向上翻页 按方向键"↑"可向上按行翻 输入"/"可按指定关键词搜索,搜索时按"n"继续搜索

  • head

    (显示文件前面几行) -n 指定行数
    e.g. head -n 20 /etc/services 若未指定行数,默认显示前10行

  • tail

    (显示文件后面几行) -n 指定行数 默认显示10行 -f 动态显示文件末尾内容

  • ln (link)

    (生成链接文件) (symbolic link: 软链接)
    语法:ln -s [原文件] [目标文件]
    -s 创建软链接文件,不加-s,创建硬链接文件。
    e.g. ln -s /etc/issue /tmp/issue.soft
    创建文件/etc/issue的软链接/tmp/issue.soft
    ln /etc/issue /tmp/issue.hard
    创建文件/etc/issue的硬链接/tmp/issue.soft

软链接特征:
类似Windows快捷方式

  1. lrwxrwxrwx l代表软链接文件 软链接文件权限均为rwxrwxrwx
  2. 文件占用空间小-只是符号链接
  3. 标识类似:/tmp/issue.soft -> /etc/issue 箭头指向源文件

硬链接特征:

  1. 相当于cp -p(保存文件信息的拷贝) + 同步更新
    echo "www.lampbrother.net" >> /etc/issue (往issue文件最后写入"www.lampbrother.net")

  2. 通过i节点识别,i节点与原文件相同

  3. 不能跨分区

  4. 不能针对目录使用

文件、目录权限相关命令

  • chmod(change the permissions mode of a file)

    (改变文件或目录权限)
    语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
    【ps】只有所有者和root可以改变文件或目录的权限
    [mode=421] [文件或目录] -R 递归修改,同时修改多个用户的权限只需用逗号分割
    权限的数字表示: r ---- 4 w ----2 x -----1

    e.g. rwxrw-r-- 7 6 4
    chmod g+w testfile 赋予文件testfile所属组写权限
    chmod -R 777 testdir 修改目录testdir及其目录下文件为所有用户具有全部权限

    文件类型:
    c 配置文件(config file)
    d 普通文档(documentation)
    g “鬼”文件(ghost file),就是该文件不应该被这个RPM包包含
    l 授权文件(license file)
    r 描述文件(read me)

  • chown(change file ownership)

    (改变文件或目录的所有者) 语法:chown [用户] [文件或目录] 【ps】只有root可以改变文件或目录的所有者 e.g. chown shenchao fengjie 改变文件fengjie的所有者为shenchao

  • chgrp(change file group ownership)

    (改变文件或目录的所属组) 语法:chgrp [用户组] [文件或目录] e.g. chgrp lampbrother fengjie 改变文件fengjie的所属组为lampbrother

  • umask(the user file-creation mask)

    (显示、设置文件的缺省权限)
    语法:umask [-S] -S 以rwx形式显示新建文件缺省权限
    e.g. umask -S 不加-S选项仅使用umask时可改变文件和目录的缺省(默认)ugo权限
    语法:umask [三位数值]
    e.g. 将缺省权限 改为 rwx r-x r-x (目录) rw- r-- r-- (文件) 可使用命令:umask 022

文件(内容)搜索相关命令

  • find

    (文件搜索)
    *语法:
    find [搜索范围] [匹配文件]
    find /etc -name init(按文件名查找) --->在目录/etc中查找文件init,换成-iname 选项不区分大小写。 init 查找包含init字符串的所有文件,init
    查找以init开头的文件,? 匹配单个字符,例:init???(查找包含init+3个字符的文件) 。
    e.g.

  1. find / -size +204800 (linux中用数据块表示数据大小 1个数据块=512字节=0.5KB) 在根目录下查找大于100MB的文件,+n 大于 -n 小于 n 等于。
  2. find /home -user shenchao
    在根目录下查找所有者为shenchao的文件。
    -group 根据所有组查找。
  3. find /etc -cmin -5 (+ 超过多长时间 - 少于 不写 等于多长时间)
    在/etc下查找5分钟内被修改过属性的文件和目录,-amin 访问时间(access),-cmin 文件属性(change), -mmin(文件内容 modify)
  4. find /etc -size +163840 -a -size -204800
    在/etc下查找大于80MB小于100MB的文件,-a 两个条件同时满足,-o 两个条件满足任意一个即可
  5. find /etc -name inittab -exec ls -l {} ;
    在/etc下查找inittab文件并显示其详细信息,-exec/-ok <命令{} ; 对搜索结果执行操作 (使用-ok有询问确认的环节) ,-type 根据文件类型查找(f 文件 d 目录 l 软链接文件),-inum 根据i节点查找
    e.g. find . -inum 31531 -exec rm {} ; 在当前目录查找i节点为31531的文件 并删除
  • locate

    (在文件资料库中查找文件) 语法:locate 文件名 -i 不区分大小写 e.g. locate inittab locate -i INITTAB updatedb 更新文件资料库 (不会涵盖/tmp目录下的文件)

  • which

    (搜索命令所在目录及别名信息)
    语法:which命令 e.g. which ls which rm 结果:alias rm='rm -i' /bin/rm 其中的 rm -i 即rm的别名,打出rm命令后,系统实际上使用的是其别名 rm -i(因此会有询问确认环节) ps: Shell内置命令不能使用which来查看帮助

  • whereis

    (搜索命令所在目录及帮助文档路径) 文件名中:1代表是命令的帮助,5代表是配置文件的帮助
    语法:whereis [命令名称] e.g. whereis ls

  • grep

    (在文件中搜索字串匹配的行并输出)
    语法:grep -iv [指定字串] [文件] -i 不区分大小写 -v 排出包含指定字串
    e.g. grep mysql /root/install.log grep -v ^# /etc/inittab (^表示排除所有以#开头的行) ps: #在linux中代表注释

帮助信息相关命令

  • man(manual)

    (获得帮助信息) 【相似命令:info】
    语法:man [命令或配置文件]
    空格->翻页 回车->按行翻 q->退出 (类似more命令浏览)。
    在:后输入命令选项(例如:-l),可查看匹配该字符串的文本,按n翻页,输入/-l可精确查找(类似less)。
    e.g. man ls 查看ls命令的帮助信息
    man services 查看配置文件services的帮助信息(直接man services, 不要写出services的绝对路径)
    ps: 若命令与配置文件重名,则输入 man 5 [命令]

  • whatis

    获取命令的简短描述信息 语法:whatis 命令

  • apropos

    获取配置文件的简短描述信息 语法:apropos 命令

--help 选项可列出命令的所有选项 e.g. touch --help (列出touch的所有选项)

  • help

    (获得Shell内置命令的帮助信息) 语法:** help 命令 e.g. help umask 查看umask命令的帮助信息 ps: Shell内置命令不能使用man来查看帮助

  • date

    (查看系统时间)

管理、查看用户相关命令

  • useradd

    (添加新用户) 语法:useradd 用户名 e.g. useradd yangmi

  • passwd

    (设置用户密码) 语法:passwd 用户名 e.g. passwd yangmi ps: 管理员root可以更改任何用户的密码

  • who(查看登录用户信息) 语法:who e.g. who 实例: [root@localhost ~]# who root tty1 2019-08-16 13:31

root pts/0 2019-08-16 13:32 (192.168.1.101)
登录用户名(一个用户可多次登录) 登录终端(tty表示本地终端,pts表示远程终端,用不同数字表示不同的登录终端) 登录时间 登录主机的ip地址(不写,表示是主机登录)
  • w

    (查看登录用户详细信息) 语法:w e.g. w

文件压缩相关命令

  • gzip

    (压缩文件) 只能压缩文件 语法:gzip [文件] 压缩后文件格式:gz ps: 压缩后不保留原文件

  • gunzip(GUN unzip)

    (解压缩.gz的压缩文件) 语法:gunzip [压缩文件] e.g. gunzip country.gz ps: gzip -d 也可以

  • tar

    (打包目录) 语法: tar 选项-zcf[目录] -c 打包 (把目录打包) -v 显示详细信息 -f 指定文件名 -z 打包同时压缩 tar命令解压缩语法 -x 解包 -v 显示详细信息 -f 指定解压文件 -z 解压缩

  • zip

    (压缩文件或目录)(压缩后保留原文件) 语法: zip 选项[-r] [压缩后文件名] [文件或目录] -r 压缩目录

  • unzip

    (解压.zip的压缩文件) 语法:unzip [压缩文件] e.g. unzip test.zip

  • bzip2

    (压缩文件)(压缩比惊人) 语法: bzip2 选项 [-k] [文件] -k 产生压缩文件后保留原文件 压缩后文件格式:.bz2 e.g. bzip2 -k country tar -cjf japan.tar.bz2 japan

  • bunzip2

    (解压缩) 语法: bunzip2 选项 [-k] [压缩文件] e.g. bunzip2 -k country.bz2 tar -xjf japan.tar.bz2

用户通信相关命令

  • write

    (给用户发信息,以Ctrl+D保存结束) 语法:write <用户名> e.g. write linzhiling

  • wall(write all)

    (发广播信息) 语法:wall [message] e.g. wall ShenChao is an honest man!

网络相关命令

  • ping

    (测试网络连通性) 语法:ping 选项 IP地址 -c 指定发送次数 e.g. ping 192.168.1.101 ping -c 3 192.168.1.101

  • ifconfig(interface configure)

    (查看和设置网卡信息) 语法:**ifconfig 网卡名称 IP地址 e.g. ifconfig eth0 192.168.1.102 ps: 执行权限为:root

  • mail

    (查看发送电子邮件) 语法:mail [用户名] e.g. mail root ps: "/var/spool/mail/root" 为邮箱地址目录

  • last

    (列出目前与过去登入系统的用户信息) e.g. last

  • lastlog

    (检查某特定用户上次登录的时间) 语法:lastlog e.g. lastlog lastlog -u 502/用户名 (502为用户的身份标识(user id)) ps: [id 用户名] 可查询用户的uid

  • traceroute

    (显示数据包到主机间 的路径) 语法: traceroute e.g. traceroute www.lampbrother.net

  • netstat

    (显示网络相关信息) 语法:netstat [选项] -t TCP协议 -u UDP协议 -l 监听 -r 路由 -n 显示IP地址和端口号 e.g. netstat -tlun 查看本机监听的端口 netstat -an 查看本机所有的网络连接 netstat -rn 查看本机路由表

  • setup

    (配置网络) 语法:setup e.g. setup ps: 执行权限为:root

挂载外部存储设备相关命令

  • mount

    (挂载命令) 语法:mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点 e.g. mount -t iso9660 /dev/sr0 /mnt/cdrom (其中 -t iso9660可省略) ps: /dev/sr0 为系统默认的设备文件名

  • umount

    (卸载命令) 语法: umount 设备文件名/挂载点 e.g. umount /dev/sr0 或 /mnt/cdrom

系统启动关闭相关命令

  • shutdown 语法:shutdown [选项] 时间 -c: 取消前一个关机命令 -h: 关机 -r: 重启

其他关机命令:

  • halt

  • poweroff (相当于直接断电)

  • init 0

其他重启命令:

  • reboot

  • init 6

系统运行级别:

  • 0 关机

  • 1 单用户 (启动最核心的程序,用于修复,只能root可以登录)

  • 2 不完全多用户,不含NFS服务

  • 3 完全多用户

  • 4 未分配

  • 5 图形界面(X代表图形界面)

  • 6 重启

cat /etc/inittab 查看系统的配置文件 id:3:initdefault 修改该行中的数字可以改变系统的默认运行级别(不能改为0) runlevel 查询系统运行级别 (其中的N代表上次启动的运行级别)

  • logout (退出登录命令)

VIM相关

  • VIM工作模式
    vim工作模式.JPG

vim(命令): (输入":"进入编辑模式, 在命令模式下按Enter可退出编辑模式)

  1. 插入命令

    • a 在光标所在字符后插入

    • A 在光标所在行尾插入

    • i 在光标所在字符前插入

    • I 在光标所在行行首插入

    • o 在光标下插入新行

    • O 在光标上插入新行

  2. 定位命令

    • : set nu 设置行号

    • : set nonu 取消行号

    • gg 到第一行

    • G 到最后一行

    • nG 到第n行 在编辑模式输入行号可到达指定行

    • : n 到第n行

    • $ 移至行尾

    • 0 移至行首(不进入插入模式)

  3. 删除命令

    • x 删除光标所在处字符

    • nx 删除光标所在处后n个字符

    • dd 删除光标所在行,ndd字删除n行

    • dG 删除光标所在行到文件末尾内容

    • D 删除光标所在处到行尾内容

    • :n1,n2d 删除指定范围的行

  4. 复制和剪切命令

    • yy 复制当前行

    • nyy 复制当前行以下n行

    • dd 剪切当前行

    • ndd 剪切当前行以下n行

    • p、P 粘贴在当前光标所在行下或行上

  5. 替换和取消命令

    • r 取代光标所在处字符

    • R 从光标所在处开始替换字符,按Esc结束

    • u 取消上一步操作

  6. 搜索和搜索替换命令

    • /string 搜索指定字符串

      搜索时忽略大小写 :set ic

      n 搜索指定字符串的下一个出现位置

    • :%s/old/new/g 全文替换指定字符串(g可以换成c,表示询问确认)

    • :n1,n2s/old/new/g 在一定范围内替换指定字符串

  7. 保存和退出命令

    • :w 保存修改

    • :w new_filename 另存为指定文件

    • :wq 保存修改并退出

    • :ZZ 快捷键,保存修改并退出

    • :q! 不保存修改退出

    • :wq! 强制保存修改并退出(文件所有者及root可使用)

Vim 使用技巧

  • 导入命令执行结果 :r !命令 (:!命令 可在不退出Vim的情况下执行Linux系统命令)

  • 定义快捷键 :map 快捷键 想要触发的命令 e.g. :map ^P I#<ESC> ("^P" 得同时按住ctrl+v+p) (该命令意思是将ctrl+p定义为快捷键,按下后在行首插入#然后退出插入模式) :map ^B 0x

  • 连续行注释 :n1,n2s/^/#/g :n1,n2s/^/#//g :n1,n2s/^////g

  • 替换 :ab mymail samlee@lampbrother.net (每次输入mymail后,按空格键就会把mymail替换成samlee@lampbrother.net

ps: 若要使用命令的本意,而非别名,可在命令前加转义符\

软件安装相关命令

  1. rpm安装

    rpm -ivh 选项: -i (install) 安装 -v (verbose) 显示详细信息 -h (hash) 显示进度 --nodeps 不检测依赖性

  2. rpm包升级 rpm -Uvh 包全名 选项: -U (update) 升级

  3. 卸载 rpm -e 包名 选项: -e (erase) 卸载 --nodeps 不检查依赖性

  4. 查询RPM包

    1. 查询是否安装

      • rpm -q 包名 (查询包是否安装) 选项: -q 查询(query

      • rpm -qa (查询所有已经安装的RPM包) 选项: -a 所有(all)

    2. 查询软件包详细信息 rpm -qi 包名 选项: -i 查询软件信息(information) -p 查询未安装包信息 (package)

    3. 查询包中文件安装位置 rpm -ql 包名 选项: -l 列表 (list) -p 查询未安装包信息(package)

    4. 查询系统文件属于哪个RPM包 rpm -qf 系统文件名 选项: -f 查询系统文件属于哪个软件包

    5. 查询软件包的依赖性 rpm -qR 包名 选项: -R 查询软件包的依赖性(requires) -p 查询未安装包信息(package)

  5. RPM包校验 rpm -V 已安装的包名 选项: -V 校验指定RPM包中的文件(verify)

    验证内容中的8个信息的具体内容如下:

  • S 文件大小是否改变
  • M 文件的类型或文件的权限(rwx)是否被改变
  • 5 文件MD5校验和是否改变(可以看成文件内容是否改变)
  • D 设备的中,从代码是否改变
  • L 文件路径是否改变
  • U 文件的属主()所有者是否改变
  • G 文件的所属组是否改变
  • T 文件的修改时间是否改变
  1. RPM包中文件提取

    1. rpm2cpio 包全名 | \ cpio -idv .文件绝对路径 #先将指定包转换成cpio格式,再从转换后的包中提取文件绝对路径代表的文件,并还原到当前目录 (""代表命令没有输完,"."代表当前目录)

    2. rpm2cpio 将rpm包转换为cpio格式

    3. cpio

      一个标准工具,用于创建软件档案文件和从档案文件中提取文件

      语法:cpio 选项 <(从)[文件|设备] -i: copy-in模式,还原 -d: 还原时自动新建目录 -v: 显示还原过程

  2. RPM包安装位置
    系统默认位置 RPM包默认安装路径
    /etc/ 配置文件的安装目录
    /usr/bin/ 可执行的命令的安装目录
    /usr/lib/ 程序所使用的函数库保存位置
    /usr/share/doc/ 基本的软件使用手册保存位置
    /usr/share/man/ 帮助文件保存位置

  3. 源码包安装位置 安装在指定位置当中,一般是 /usr/local/软件名/

  4. RPM包安装的服务的管理方法(启动、停止等) 可使用service命令管理 e.g. 启动RPM包安装的apache,可使用如下命令: /etc/rc.d/init.d/httpd start service httpd start

【IP地址配置】

  1. setup

  2. vi /etc/sysconfig/network-scripts/ifcfg-eth0 把ONBOOT="no"改为 ONBOOT="yes" 启动网卡

yum相关命令

常用命令:

  1. 查询 yum list #查询所有可用软件包列表 yum search 关键字 #搜索服务器上所有和关键字相关的包

  2. 安装 yum -y install 包名 选项: install 安装 -y 自动回答yes

  3. 更新 yum -y update 包名 选项: update 升级 -y 自动回答yes

  4. 卸载 yum -y remove 包名 选项: remove 卸载 -y 自动回答yes

  5. YUM软件组管理命令 yum grouplist #列出所有可用的软件组列表 yum groupinstall 软件组名 #安装指定软件组,组名可以由grouplist查询出来 yum groupremove 软件组名 #卸载指定软件组

用户配置文件查看与修改

文件位置:
/etc/passwd

第1字段:用户名称
第2字段:密码标志
第3字段:UID (用户ID) 0: 超级用户 1-499: 系统用户(伪用户) 500-65535: 普通用户
第4字段:GID (用户初始组ID)
第5字段:用户说明
第6字段:家目录 普通用户:/home/用户名/ 超级用户:/root/
第7字段:登录之后的Shell
(Shell就是Linux的命令解释器在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin)


Windows Powershell TIPS:

通配符:*

获取计算机信息:Get-ComputerInfo
获取所有环境变量:Get-ChildItem env: 或 Set-Location env: -> Get-ChildItem
获取CPU信息:Get-WmiObject Win32_processor | Select-Object *

shell编程常用命令

  • 修改系统语言: LANG=en_US.utf8 export LC_ALL=en_US.utf8

  • 显示日期 date [OPTION]... [+FORMAT]

  • 显示日历:cal

  • 计算器:bc

  • df

    (文件系统查看命令)
    语法: df [选项] [挂载点]
    选项:
    -a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
    -h 使用习惯单位显示容量
    -T 显示文件系统类型
    -m 以MB为单位显示容量
    -k 以KB 为单位显示容量(默认)
    ps:df命令是从文件系统考虑的,涵盖文件占用的空间以及命令或程序占用的空间。

  • du

    (统计目录或文件大小)
    *语法:

  • du [选项] [目录或文件名]
    选项:
    -a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
    -h 使用习惯单位显示磁盘占用量
    -s 统计总占用量。
    ps: du命令是面向文件的,只会计算文件或目录占用的空间

  • dumpe2fs

    (显示磁盘状态命令) 语法: dumpe2fs 分区设备文件名

  • echo [-e] e 表示识别转义字符

    echo -e "\e[1;31m abcd\e[0m"
    输出颜色: #30m=黑色,31m=红色,32m=绿色,33m=黄色 #34m=蓝色,35m=洋红,36m=青色,37m=白色

  • history

    (历史命令)
    语法:history [选项] [历史命令保存文件]
    -c 清空历史命令
    -w 把缓存中的历史命令写入历史命令保存文件
    ps: 历史命令默认保存文件为~/.bash_history

    历史命令默认保存1000条,可以在变量配置文件/etc/profile中进行修改

  • !n

    重复执行第n条历史命令

  • !! 执行上一条命令

  • !字符串 执行最后一条以该字符串开头的命令

  • alias 别名='原命令' (设定命令别名)

  • unalias(删除别名)

  • alias 别名 (查询命令是谁的别名)

vim /root/.bashrc(让别名永久生效)

分区相关命令

  • fdisk

    设备符(分区) 例:fdisk /dev/sdb

  • partprobe:

    重新读取分区表信息

  • mkfs -t ext4 /dev/sdb1

    (格式化分区)

  • 建立挂载点并挂载 mkdir /disk1 mount /dev/sdb1 /disk1

自动挂载与fstab文件修复 编辑 /etc/fstab 文件

ps: 文件编辑完成后不应立即重启,而应执行mount -a 命令,使系统依据配置文件/etc/fstab的内容,自动挂载

  • /etc/fstab 文件修复 mount -o remount,rw /

bash常用快捷键

  • ctrl+U 删除或剪切光标之前的命令

  • ctrl+K 删除或剪切光标之后的内容

  • ctrl+Y 粘贴ctrl——U或ctrl+K剪切的内容

  • ctrl+R 在历史命令中搜索

  • ctrl+D 退出当前终端

标准输入输出

  • 键盘 /dev/stdin(设备文件名) 0(文件描述符) 标准输入

  • 显示器 /dev/stdout 1 标准输出

  • 显示器 /dev/stderr 2 标准错误输出

标准输出重定向

  • 命令 > 文件 把命令的正确输出覆盖到指定的文件或设备

  • 命令 >> 文件 把命令的正确输出追加到指定的文件或设备

标准错误输出重定向

  • 错误命令 2> 文件 把命令的正确输出覆盖到指定的文件或设备

  • 错误命令 2>> 文件 把命令的正确输出追加到指定的文件或设备

正确输出和错误输出同时保存:

  • 命令 > 文件 2>&1 把命令的正确输出和错误输出同时覆盖到指定的文件

  • 命令 >> 文件 2>&1 把命令的正确输出和错误输出同时追加到指定的文件

  • 命令 &> 文件 把命令的正确输出和错误输出同时覆盖到指定的文件

  • 命令 &>> 文件 把命令的正确输出和错误输出同时追加到指定的文件

  • 命令 >> 文件1 2>> 文件2 把命令的正确输出追加到文件1,把错误输出追加到文件2

计算文件字数

  • wc [选项] [文件名] -c 统计字节数 -w 统计单词数 -l 统计行数 例:wc < anaconda-ks.cfg wc -l < anaconda-ks.cfg

; 命令分隔符 前后的命令顺序执行

管道符 | 命令1 | 命令2 命令1的正确输出作为命令2的操作对象,通常和grep命令一起使用。

grep

语法: grep [选项] "搜索内容" 文件名 (在文件当中搜索符合条件的行) 选项: -i 忽略大小写 -n 输出行号 -v 反向查找 --color=auto 搜索出的关键字用颜色显示 例: netstat -an | grep "ESTABLISHED"

shell编程基础知识

  • $() 和 `` 用来引用系统命令

  • $ 用来调用变量值

  • 变量叠加:aa="aa"456 或 aa={aa}789

  • 查看变量:set

  • 删除变量:unset name

  • 申明环境变量: export 变量名=变量值

  • env 查询变量

  • unset 变量名 删除变量

  • PS1 定义系统提示符的变量

  • 位置参数变量 $n
    表示第n个参数,例如$1。
    10以上的数字需用{}括住,例如${10}。
    此外,$*表示命令行中所有参数,将所有参数视作整体。$@ 也表示命令行中所有参数,但将每个参数单独对待。$#代表命令行中所有参数的个数。

  • 预定义变量
    $? 最后一次执行命令的返回状态
    $$ 当前进程的线程号(PID)
    $! 后台运行的最后一个进程的进程号

  • 接收键盘输入
    read [选项] [变量名] -p "提示信息"
    等待read输入,同时输出提示信息。
    -t 秒数 指定等待时间
    -n 字符数 指定允许的字符数
    -s 隐藏输入的数据
    -e 识别转义符

  • declare
    用于声明类型属性。

declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。

语法:
declare [+/-][rxi][变量名称=设置值] 或 declare -f

参数说明:

  • +/-  "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
  • -f  仅显示函数。
  • r  将变量设置为只读。
  • x  指定的变量会成为环境变量,可供shell以外的程序来使用。
  • i  [设置值]可以是数值,字符串或运算式。

实例:

声明整数型变量

# declare -i ab //声明整数型变量
# ab=56 //改变变量内容
# echo $ab //显示变量内容
56

改变变量属性

# declare -i ef //声明整数型变量
# ef=1  //变量赋值(整数值)
# echo $ef //显示变量内容
1
# ef="wer" //变量赋值(文本值)
# echo $ef 
0
# declare +i ef //取消变量属性
# ef="wer"
# echo $ef
wer

设置变量只读

# declare -r ab //设置变量为只读
# ab=88 //改变变量内容
-bash: ab: 只读变量
# echo $ab //显示变量内容
56 

声明数组变量

# declare -a cd='([0]="a" [1]="b" [2]="c")' //声明数组变量
# echo ${cd[1]}
b //显示变量内容

# echo ${cd[@]} //显示整个数组变量内容
a b c

显示函数

# declare -f
command_not_found_handle () 
{ 
  if [ -x /usr/lib/command-not-found ]; then
    /usr/bin/python /usr/lib/command-not-found -- $1;
    return $?;
  else
    if [ -x /usr/share/command-not-found ]; then
      /usr/bin/python /usr/share/command-not-found -- $1;
      return $?;
    else
      return 127;
    fi;
  fi
}
  • 数值运算:

    • "$((运算式))"或"$[运算式]"
      例:aa=11 bb=22 ff=$(( $aa+$bb )) gg=$[ $aa+$bb ]

    • dd=$(expr $aa + $bb)

  • source 配置文件 或 . 配置文件
    (重新加载配置文件)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350