[关闭]
@Tmacy 2015-11-13T08:03:43.000000Z 字数 3269 阅读 1225

Bash命令笔记总结

查看内存信息 cat /proc/meminfo

查看共享内存 ipcs -m

查看进程 ps ax

第一列是进程ID(PID)
第二列是进程在哪个终端设备上运行,若与终端无关,则显示?。
tty1-tty6是本机上登入者程序,若为pts/0等,表示位网络连接主机程序
第三列是进程当前状态(s表示休眠,sw表示休眠并等待,R表示运行)
第四列是进程占用CPU时间
最后一列是进程名。方括号中的进程表示该进程不活动。因而已经从内存换出到磁盘交换空间中。

修改默认shell

默认shell的设置在/etc/passwd中的最后一行

其他项目的含义:
* 用户名
* 用户密码(如果用户密码存在其他文件,则位占位符x)
* 用户的系统用户ID号
* 用户系统组ID号
* 用户全名
* 用户默认主目录
* 用户默认shell

Shell 提示符

标题

* 当前目录

* 控制命令行提示符的环境变量有两个。
* PS1:控制默认命令提示符的格式
* PS2:控制第二层命令提示符的格式

可以使用echo $PS1echo $PS2显示其内容。可以自定义显示方式。

符号 说明
\a 铃声
\d 代表日期,格式为weekday month date,例如:"Mon Aug 1"
\e ASCII 转义字符
\H 完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h 仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\l shell终端设备名的基本名称
\n ASCII的换行字符
\r ASCII的回车字符
\s shell的名称
\t 显示时间为24小时格式,如:HH:MM:SS
\T 显示时间为12小时格式
\@ 格式为am/pm的12小时制的当前时间
\A 显示时间为24小时格式:HH:MM
\u 当前用户的账号名称
\v BASH的版本信息
\w 完整的工作目录名称。家目录会以 ~代替
\W 利用basename取得工作目录名称,所以只会列出最后一个目录
# 下达的第几个命令
$ 提示字符,如果是root时,提示符为:#,普通用户则为:$
\| 字符"\"
[ 字符"["
] 字符"]"
! 命令行动态统计历史命令次数

文件和目录列表

ls

touch

tail命令

ps 命令

Shell环境变量配置

/etc/shadow 文件

删除用户 userdel

修改用户

command description
usermod 编辑用户账户字段,以及指定主要和次要用户组成员
passwd 修改已有用户的密码
chpasswd 读取登录名和密码文件,并更新密码
chage 修改密码的逾期时间
chfn 修改用户账户的注释信息
chsh 修改用户账户的默认shell

*chown *

chown options owner[.group] file

shell脚本

反引号(`)

exp : testing=date

shell运行反引号中的命令,把结果赋值给变量testing

命令wc

wc用来对数据文本计数.
输出三个数字,代表的含义为
* 文本行数
* 文本单词数
* 文本的字节数

正则表达式

在Linux世界中,正则表达式的引擎是POSIX基本正则表达式(BRE)引擎

正则表达式关心大小写

特殊字符

正则表达式中的特殊字符:

.*[]^${}+?|()

这些都是有特定含义的字符,不要在文本模式中单独使用这些字符
如果要使用这些字符,可以使用转义符号(\)

如果想在文本中输入(\),请也对它进行转义:\\

定位符

1.从头开始: ^

输出以指定模式开头的文本.
使用这个字符,要把它放在正则表达式指定的模式之前:

echo "the book store" | sed -n '/^book/p' // 无输出
echo "Book store" | sed -n '/^Book/p' //打印Book store

只要该模式出现在新行的开始,^定位符就会捕获它
如果^出现在模式的其他位置,它就会充当普通字符。

2.查到结尾 :$

$符号定义了文本的结尾,表示输出以这个模式结尾的文本

echo "This is a good book" | sed -n '/book$/p' //输出文本
echo "This is a good books" | sed -n '/book$/p' //无输出

3.联合定位

两种情况可以使用同时开始和结尾定位符

  1. 查找某一特定文本模式的数据行
    echo "This is a test for using | sed -n '/^This is a test$/p
    //输出 This is a test
  2. 删除文本中的空行

    1. $ cat data
    2. This is one test line.
    3. This is another test line.
    4. $sed '/^$/d' data
    5. This is one test line.
    6. This is another test line.
    7. $

字符类

可以定义一类字符来匹配文本模式中的某一个位置,如果该字符类中的字符之一在数据中,它就会模式匹配。

使用放括号[],将要包含在该类中的字符扩起来。

example :

  1. $sed -n '/[ch]at/[' data
  2. The cat is sleeping.
  3. That is a very nice hat.

定义的字符类匹配两种字符,一个是cat,另一个是hat。

如果不能确定大小写,可以使用下面这个例子:
echo "Yes" | sed -n '/[Yy]es/p'
单个表达式中可以有多个字符类
echo "yes" | sed -n '/[Yy][Ee][Ss]/p'
字符类也可以包含数字:
sed -n '/[0123]/p' data // 字符类会匹配包含数字0.1.2.3的所有行
sed -n '/[0-9]/p' data // 字符类匹配数字从0~9的所有行

否定字符类

查找不再该字符类中的字符
只需要在开头加入^字符

sed -n '/[^ch]at/p'

星号

在某个字符后加一个*表示该字符必须在匹配模式的文本中不出现或者出现多次

$echo "ik" | sed -n '/ie*k/p
表示在i和k之间的字母e,可以出现多次,也可以不出现。
一般常见与对语言拼音常见错误拼写或变化的单词。可能多余的一个字母后面加上一个
*号,可以允许接受拼错的单词。
再者,将点与星操作符相结合,可以提供匹配许多任意字符的模式。常用于数据流中两个
可能彼此相邻出现也可能彼此不相邻出现的文本字符串之间。
echo "This is a regular pattern expression" | sed -n '/regular.*expression'
使用这个模式,可以很方便的搜索出现在数据中一行文本上任意位置的多个单词。

还可以用星号用于字符类,允许指定在文本中多次出现的一组或某一范围的字符:
$ echo "bt" | sed -n '/b[ae]*t/p'

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注