shell常用备注

Table of Contents

touch

创建一个文件

touch temp

ls

ls -l
total 32
-rw-r--r--  1 josephzeng  staff     0  4 23 17:46 temp

第一个横杠:指定文件类型,表示该文件是普通文件
    d 目录
    l 符号链接
    s 套接字文件
    b 块设备文件
    c 字符设备文件
    p 命名管道文件
    - 普通文件 
rw-:前三位,文件属主可读写
    r 读全新啊
    w 写权限
    x 执行权限
r--:中间三位,组用户可读
r--:最后三位,其他用户只可读

total:总字节数,单位:K
josephzeng:文件属主
staff:文件属组
0:文件长度
4 23 17:46:文件更新数据
temp:文件名

chmod

改变权限
chmod [who] operator [permission] filename

who:
u:文件属主权限
g:属组用户权限
o:其他用户权限
a:所有用户权限

operator:
+:增加权限
-:取消权限
=:设定权限

permission:
r:读权限
w:写权限
x:执行权限
s:文件属主和组set-ID
t:粘性位*
l:给文件加锁
u,g,o:针对文件属主,组及其他用户的操作
chmod a-x temp #收回所有用户执行权限
chmod og-w temp #回收属组及其他组的鞋权限
chmod g+w temp #赋予属组的用户写权限
chmod u+x temp #赋予文件属主的执行权限
chmod go+x temp #赋予属组用户和其他用户执行权限
chmod[mode] file
mode是一个八进制 如:
0 4 0 0 文件属主可读
0 2 0 0 文件属主可写
0 1 0 0 文件属主可执行

0 0 4 0 属组用户可读
0 0 2 0 属组用户可写
0 0 1 0 属组用户可执行

0 0 0 4 其他用户可读
0 0 0 2 其他用户可写
0 0 0 1 其他用户可执行
chmod 666 rw- rw- rw- 赋予所有用户读和写的权限
chmod 644 rw- r-- r- - 赋予所有文件属主读和写的权限,所有其他用户读权限
chmod 744 rwx r-- r- - 赋予文件属主读、写和执行的权限,所有其他用户读的权限
chmod 664 rw- rw- r- - 赋予文件属主和属组用户读和写的权限,其他用户读权限
chmod 700 rwx --- --- 赋予文件属主读、写和执行的权限
chmod 444 r-- r-- r- - 赋予所有用户读权限


#备注
chmod -R 744 /temp/* #连同子目录下的文件一起设置

chown and chgrp

chown -R -h owner file

chown josephzeng temp
chgrp josephzeng temp

umask

确定了你创建文件的缺省模式,跟chmod命令正好相反
umask who operator permissions
具体操作 参考chmod

ln

ln [-s] source_path target_path
ln a.conf b.conf #硬链接
ln -s a.conf b.conf #软链接

useradd

添加新的用户账号
useradd 选项 用户名
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

userdel

删除用户账号
userdel 选项[-r 把主目录一起删除] 用户名

usermod

修改账号
usermod 选项 用户名
选项跟 useradd 一样

passwd

修改密码
passwd 选项 用户名
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。

groupadd

新增用户组
groupadd 选项 用户组
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

groupdel

删除组
groupdel 用户组

groupmod

修改用户组
groupmod 选项 用户组
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

newgrp

用户可以在用户组之间切换
例如:
newgrp root

/etc/passwd

cat /etc/passwd
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
......

格式:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

newusers

批量添加用户
newusers < user.txt
user.txt格式,如:
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash

添加密码
chpasswd < passwd.txt
passwd.txt格式,如:
user001:密码
user002:密码

find

find pathname -options [-print -exec -ok]

pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录
-print:find命令将匹配的文件输出到标准输出
-exec:find命令对匹配的文件执行该参数所给出的shell命令
-ok:跟-exec的作用相同,只不过需要确认

-options:
-name:按文件名查找
-perm:按文件权限查找
-prune:使用这一选项可以使f i n d命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被f i n d命令忽略
-user:按照文件属主来查找文件
-group:按照文件所属的组来查找文件
-mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
-nogroup:查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在

-type 查找某一类型的文件,如:
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l - 符号链接文件
f - 普通文件

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
find . -type f -exec ls -l {} \;
find logs -type f -mtime +5 -exec rm {} \;
find . -name "*.conf" -mtime +5 -ok rm {} \;

#查看当前用户主目录的所有文件
find $HOME -print
find ~ -print

find . -type f -perm 644 -exec ls -l {} \;
find / -type f -size 0 -exec ls -l {} \;

find /var/logs - type f -mtime +7 -ok rm {} \;
xargs使用
适合执行命令过长的命令(exec命令有长度限制)
find . -type f -print | xargs file

find / -name "core" -print | xargs echo "" > /tmp/core.log
find . -perm -7 -print | xargs chmod o-w

find . -type f -print | xargs grep "abc"

find . -name "*.txt" -print

find . -size +10000c -print

find / -name "abc.conf" -depth -print

nohup

nohup命令提交作业可不会因为推出账号时进程结束
nohup command > log.file 2>&1

tee

读取标准输入的数据,并将其内容输出成文件

ls -l | tee myfile

|

管道,可以把一个命令输出传递给另一个命令作为输入

命令1 | 命令2

() and {}

多个命令合在一起执行
1. ()
(命令1;命令2;...)

2. {}
{命令1;命令2;...}
(cmd1,cmd2,...cmdN)
{cmd1,cmd2,...cmdN}

|| and &&

#执行失败 发邮件
command || (echo "command erro" | mail josephzeng ; exit)

正则表达式

^ 对行首
$ 对行尾
^ [ t h e ] 对以t h e开头行
[ S s ] i g n a [ l L ] 对匹配单词s i g n a l、s i g n a L、S i g n a l、S i g n a L
[Ss]igna[lL]\. 对同上,但加一句点
[ m a y M A Y ] 对包含m a y大写或小写字母的行
^ U S E R $ 对只包含U S E R的行
[tty]$ 对以t t y结尾的行
\ . 对带句点的行
^ d . . x . . x . . x 对对用户、用户组及其他用户组成员有可执行权限的目录
^ [ ^ l ] 对排除关联目录的目录列表
[ . * 0 ] 对0之前或之后加任意字符
[ 0 0 0 * ] 对0 0 0或更多个
[ iI] 对大写或小写I
[ i I ] [ n N ] 对大写或小写i或n
[ ^ $ ] 对空行
[ ^ . * $ ] 对匹配行中任意字符串
^ . . . . . . $ 对包括6个字符的行
[a- zA-Z] 对任意单字符
[ a - z ] [ a - z ] * 对至少一个小写字母
[ ^ 0 - 9 \ $ ] 对非数字或美元标识
[ ^ 0 - 0 A - Z a - z ] 对非数字或字母
[ 1 2 3 ] 对1到3中一个数字
[ D d ] e v i c e 对单词d e v i c e或D e v i c e
D e . . c e 对前两个字母为D e,后跟两个任意字符,最后为c e
\ ^ q 对以^ q开始行
^ . $ 对仅有一个字符的行
^\.[0-9][0-9] 对以一个句点和两个数字开始的行
' " D e v i c e " ' 对单词d e v i c e
D e [ V v ] i c e \ . 对单词D e v i c e或d e v i c e
[ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 4 \ } 对日期格式d d - m m - y y y y
[ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } 对I P地址格式nnn. nnn.nnn.nnn
[ ^ . * $ ] 对匹配任意行

Author: josephzeng

Last Updated 2016-04-23. Created by Emacs 24.5.1 (Org mode 8.2.10)

Validate