命令别名(alias)
(1)alias 显示当前shell进程所有可用的命令别名: (2)alias NAME='VALUE' 定义别名NAME,相当于执行命令value (3)unlias 撤销别名 注意: 在命令行中定义的别名,仅对当前shell进程有效:如果想永久有效,要定义再配置文件中 仅对当前用户:~/.bashrc 对所有用户有效:/etc/.bashrc 别名持久化: vim .bashrc alias NAME='VALUE' source .bashrc
glob(globbing)
bash中用于实现文件"通配" 通配符:*,?,[] (1)*: 任意长度的任意字符 a*b: aab,ab,a123b (2)?: 任意单个字符 a?b aab (3)[]: 匹配指定范围内的任意单个字符 [a-z]:不区分字符大小写 [0-9]: [A-Z]:代表大写字母 (4)^: 匹配指定范围之外的任意字符 [^0-9] 专用字符集合: [:alnum:]:任意数字或字母 [:alpha:]:任意大小写字母 [:digit:]:任意数字,相当于0-9 [:lower:]:任意小写字母 [:punct:]:表示标点符号 [:space:]:匹配空格字符 [:upper:]:任意大写字母 [:xdigit:] [:blank:] [:cntrl:] [:print:] [:graph:]
练习
1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字的文件或者目录; 2.显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或者目录 3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或者目录 4.复制/etc目录下,所有以m开头,以非数字结尾的文件或者目录至/tmp/fengzi目录中 5.复制/etc目录下,所有以.d结尾的文件或者目录到/tmp/fengzi目录中 6.复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或者目录到/tmp/fengzi目录下
答案


1.ls -ltr l*[0-9]*[[:lower:]] 2.ls -ltr [0-9]*[^0-9] 3.ls -ltr [^0-9][a-z]* 4.cp /etc/m*[^0-9] /tmp/fenzi 5.cp /etc/*.d /tmp/fengzi 6.cp /etc/{m,n,r,p}*.conf
bash的快捷键
ctrl+l:清屏,相当于clear命令 ctrl+a:跳转至命令开始处 ctrl+e:跳转至命令结尾 ctrl+c:取消命令的执行 ctrl+u:删除命令行首至光标所在处的所有内容 ctrl+k:删除光标所在处至命令行尾部的所有内容
bash的I/O重定向管道
程序:指令+数据 读入数据:input 输出数据:output 打开的文件都有一个fd:file descriptor(文件描述符) 标准输入:keyboard, 0 标准输出:monitor,1 标准错误输出:monitor,2 I/O重定向:改变标准位置 输出重定向:command > new_pos, command >> new_pos >:覆盖重定向,目标文件中的原有内容将会被清除; >>:追加重定向,新内容会追加到目标文件尾部; #set -C:禁止将内容覆盖已有文件的内容 强制覆盖:>| #set +C:关闭禁止内容覆盖已有文件的内容 2>:覆盖重定向错误输出数据流; 2>>:追加重定向错误输出数据流; 标准输出和错误输出鸽子定向不通的位置; command > /path/to/file.out 2 > /path/to/error.out 合并标准输出和错误输出为同一个数据流进行重定向: &>:覆盖重定向 &>>:追加重定向 command > /path/to/file.out 2>&1 输入重定向 tr命令:转换成删除字符 HERE Documentation: << #cat << EOF #cat > /path/to/somefile <<EOF 管道: COMMAND1 | COMMAND2 | COMMAND3 |... Note:最后一个命令会在当前shell进程的子shell进程中
文件处理工具
wc,cut,sort
wc命令: -l:行数 -w:单词数 -c:字节数 cut命令 -d:以...分割 -f:显示第几个字段 1 1,3 1-3 混合使用:1-3,7 --output-delimiter=STRING 例如: cut -d: -f1-4 --output-delimiter='|' /etc/passwd sout命令: -f:忽略字符大小写 -r:逆序 -t delimiter: 字段分隔符 -k:以指定字段标准排序
-n:按照数字排序
linux用户和组的相关配置文件
/etc/password:用户及其属性信息 name:password:UID:GID:GECOS:directory:shell 用户名:密码:UID:GID:GECOS:主目录:默认shell /etc/group:组及其属性信息 group_name:password:GID:user_list 组名:组密码:GID:以当前组为附加组的用户 /etc/shadow:用户密码及相关属性 用户名:加密了的密码/etc/gshadow:组密码及相关属性
用户创建
useradd [option] LOGIN -u UID:[UID_MIN,UID_MAX],定义再/etc/login.defs -g GID:指明用户基本组,可为组名,也可以GID -c COMMENT:用户的注释信息 -d /PATH/TO/HOME_DIR:以指定的路径为家目录 -s SHELL:致命用的默认shell程序,可用列表在/etc/shells文件中 -G GID:为用户指明附加组,可以有多个用逗号分隔开,组必须事先存在
-D:修改默认shell。例子:useradd -D -s /bin/tcsh
练习
1.创建用户fengzi,附加组为distro和linux,默认shell为/bin/csh,注释信息为"Gentoo distribution"
组创建:groupadd
groupadd [OPTION]....group_name -g:GID:指明GID号 -r:创建系统组 Centos6:ID<500 Centos7:ID<1000
查看用户相关的id信息:id
id [OPTION].....[USER] -u:UID -g:GID -G:GROUP -n:Name
切换用户或以其他用户身份执行命令:su
su [OPTIONS] [-] [user [args....]] su UserName:非登陆式切换,即不会读取目标用户的配置文件 su - UserName:登录式切换:会读取目标用户的配置文件,完全切换 Note:root su至其他用户无需密码,非root用户切换时需要密码
用户修改属性usermod
usermod [OPTION] login -u UID:新UID -g GID:新基本组 -G GROUP1...GROUP2..:新附加组,原来的附加组将会被覆盖,若保留原有,则要同时使用-a选项表示append -s SHELL:新的默认shell -c 'COMMMENT':新的注释信息 -d HOME:新的家目录:原有的家目录不会同时移动至新的家目录:若要移动,要同时使用-m选项
给用户添加密码
passwd [OPTIONS] UserName:修改指定用户的密码,仅root用户权限 passwd:修改自己的密码 常用选项: -l:锁定指定用户 -u:解锁指定用户 -n mindays:指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天开始警告
删除用户
userdel [options] login
-r:连点家目录一起删除
组属性修改
groupmod [options] group -n group_name:新名字 -g GID:新的GID
权限管理
文件的权限主要针对三类对象进行定义: owner:属主,u group: 属组,g other: 其他,o 每个文件针对每类访问者都定义了三种权限: r:readable w:writeable x:excutable 文件: r:可以用文件查看类工具查看内容 w:可以修改内容 x:可以把文件提取到内核启动为一个进程 目录: r:可以使用ls查看此目录中文件列表 w:可以在此目录中创建文件也可以删除 x:可以使用ls -l查看此目录中文件列表,可以cd进入此目录 chmod命令: 修改文件或者目录的权限 chown命令: 用法: owner owner:group :group Note:命令中的:可以用.替换 -R:递归