标签:linux基础 命令
单引号:强引用,变量引用不执行替换 双引号:弱引用,变量引用会替换 ``:命令替换。 $()=`` 文件类型: -:常规文件 d:目录文件 b:块设备文件,支持以block为单位进行随机访问 c:字符设备文件,支持以character为单位进行线性访问 major number:主设备号,用于标示设备类型,进而确定要加载的驱动程序 minor number:次设备号,用于标识同一类型中的不同的设备 8位二进制:0-255 l:symbolic link:符号链接文件 p:pipe:命名管道 s:socket:套接字文件 基本命令: 命令类型: 外部命令 shell内嵌命令 ls 的-d选项是如果是目录只显示目录 type COMMAND: 内部:builtin 外部:显示为命令文件路径: 注意,命令可以与原名相同,此时原名被隐藏,此时如果要运行原程序,可在命令前加 echo 命令 语 法:echo [-ne][字符串]或 echo [--help][--version] 补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。 参 数:-n 不要在最后自动换行 -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般 文字输出: \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \\ 插入\字符; [root@localhost ~]# echo -e "\033[43;31mred color\033[0m" red color which:显示命令的完整路径名 --skip-alias:忽略别名 eg:[root@livecd ~]# which ls alias ls=‘ls --color=auto‘ /bin/ls whatis : 手动创建whatis数据库 centos 6: makewhatis centos 7:makedb 手动搜索所有whatis库中和关键字相关的所有文件 [root@localhost ~]# apropos passwd chpasswd (8) - update passwords in batch mode fgetpwent_r [getpwent_r] (3) - get passwd file entry reentrantly getpwent_r (3) - get passwd file entry reentrantly gpasswd (1) - administer /etc/group and /etc/gshadow htpasswd (1) - Manage user files for basic authentication kpasswd (1) - change a user‘s Kerberos password lpasswd (1) - Change group or user password lppasswd (1) - add, change, or delete digest passwords pam_localuser (8) - require users to be listed in /etc/passwd pam_passwdqc (8) - Password quality-control PAM modul ......... whereis命令: whereis - whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s) 用法:whereis [options] name -b:仅搜素二进制程序路径 -m:仅搜素使用手册文件路径 who命令:show who is logged include options: -b:系统此次启动的时间 -r:运行级别 history:历史文件中的命令历史和内存中的命令历史不一样,且默认条目为1000,所以可能看到大于1000的命令 历史 命令历史相关环境变量 HISTSIZE:命令历史记录的条数; HISTFILE:指定历史文件,默认为~/.bash_history; HISTFILESIZE:命令历史文件记录历史的条数; HISTTIMEFORMAT=“%F %T“ 显示时间 HISTIGNORE=“str1:str2:… “ 忽略string1,string2历史 控制命令历史的记录方式: 环境变量:HISTCONTROL 可设置多个选项,中间以:分割 ignoredups:忽略重复的命令;连续且相同方为“重复” ignorespace:忽略所有以空白开头的命令 ignoreboth:ignoredups, ignorespace erasedups:删除重复命令 export 变量名="值“ 存放在/etc/profile 或~/.bash_profile options: -c:删除所有命令历史 -d n:删除指定的命令历史 history -d 304 :删除指定的命令历史 -w:把历史列表中的命令追加至历史文件中 -r:从文件读取命令历史至历史列表中 history在启动时会自动读取.bash_history中的命令历史吗?? !#:再一次执行命令历史中的第#号命令 !string:再一次执行历史列表中最近一个以最近一个string开头的命令 !^ :引用第一个参数 !& :引用最后一个参数 !:n :引用第n个参数 控制命令历史记录的方式: 环境变量:HISTCONTROL ignoredups:忽略重复的命令 ignorespace:忽略以空白字符开头的命令 ignoreboth:以上两个同时生效 [root@localhost ~]# getent passwd jay jay:x:500:500:root:/home/jay:/bin/bash [root@livecd tmp]# mkdir /tmp/{a,b}/{c,d} -pv mkdir: created directory `/tmp/a‘ mkdir: created directory `/tmp/a/c‘ mkdir: created directory `/tmp/a/d‘ mkdir: created directory `/tmp/b‘ mkdir: created directory `/tmp/b/c‘ mkdir: created directory `/tmp/b/d‘ [root@livecd tmp]# mkdir /tmp/m/{n/{a,b},w} -pv mkdir: created directory `/tmp/m‘ mkdir: created directory `/tmp/m/n‘ mkdir: created directory `/tmp/m/n/a‘ mkdir: created directory `/tmp/m/n/b‘ mkdir: created directory `/tmp/m/w‘ [root@livecd tmp]# mkdir /tmp/{a,b}_{c,d} -pv mkdir: created directory `/tmp/a_c‘ mkdir: created directory `/tmp/a_d‘ mkdir: created directory `/tmp/b_c‘ mkdir: created directory `/tmp/b_d‘ 文件: 两类数据 元数据: metadata 数据: data [root@localhost ~]# stat a File: `a‘ Size: 0 Blocks: 8 IO Block: 4096 regular empty file Device: 802h/2050d Inode: 2223942 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-07-09 13:50:46.000000000 -0700 访问即改变,cat等 Modify: 2016-07-09 13:50:21.000000000 -0700 更改内容,数据改变 Change: 2016-07-09 13:50:21.000000000 -0700 元数据改变,access改变或者数据内容的话,此 也是元数据改变 touch命令: 默认是三个时间戳都会改变为当前的时间 -c:指定的文件路径不存在时不创建文件 -a:仅仅修改atime -m:仅仅修改mtime -t STAMP: 年月日时分秒 eg:touch -m -t 201212011030, date -d DATENAME: eg: [root@localhost ~]# date -d "yesterday" Sun Jul 24 10:21:45 CST 2016 [root@localhost ~]# date -d "-1 days" Sun Jul 24 10:21:26 CST 2016 [root@localhost ~]# date -d "+2 days" Wed Jul 27 10:22:16 CST 2016 显示前天是星期几 [root@localhost ~]# date -d "-2 days" +%a Sat cp 命令: SYNOPSIS 单源复制 cp [OPTION]... [-T] SOURCE DEST 多源复制 cp [OPTION]... SOURCE... DIRECTORY 单源复制中,如果目标文件不存在,则事先创建文件,并复制源文件的内容到dest中 如果dest存在: 如果目标文件是非目录文件,会覆盖目标文件,这点要注意 如果目录文件是目录文件,则在目录中创建源文件 多源复制中: 如果目标文件不存在,错误 如果目标文件存在: 如果为非目录文件,错误 如果是目录文件,分别复制源文件到目标目录中 常用选项: -i:交互式复制,即覆盖之前提醒用户确认 -f:强制覆盖目标文件 -r: 递归复制 -d:复制符号链接文件本身 -a:保持原文件的属性 cp一个链接文件时,默认是复制了一个以链接文件名为文件名,内容为链接的文件的内容的文件。 而且元文件属性为新复制文件时的时间 把/root/的所有隐藏文件复制到/tmp/testdir中? 这样的结果是复制整个文件系统的内容到/tmp/testdir,因为.*包含了..,而root的上级目录是根目录 [root@localhost ~]# cp -a .* /tmp/testdir 正确的是: [root@localhost ~]# cp -a .[^.]* /tmp/testdir 练习题: 1.显示某个目录下的所有隐藏文件? [root@localhost ~]# ls -d .* . .Xauthority .bash_logout .bashrc .config .lesshst .viminfo .xauthffHqiY .. .bash_history .bash_profile .cache .cshrc .tcshrc .xauthN30RIK 2.只显示某个目录下的隐藏目录 [root@localhost tmp]# ls -d /root/.*/ /root/./ /root/../ /root/.cache/ /root/.config/ [root@localhost tmp]# ls -d /root/.* 这个会把隐藏文件和目录都显示出来 /root/. /root/.bash_logout /root/.cache /root/.lesshst /root/.xauthffHqiY /root/.xauthtYuvN2 /root/.. /root/.bash_profile /root/.config /root/.tcshrc /root/.xauthN30RIK /root/.bash_history /root/.bashrc /root/.cshrc /root/.viminfo /root/.Xauthorit Linux enable命令用于启动或关闭 shell 内建指令。 若要执行的文件名称与shell内建指令相同,可用enable -n来关闭shell内建指令。若不加-n参数,enable可重新启动关闭的指令。 语法 enable [-n][-all][内建指令] 参数说明: -n 关闭指定的shell内建指令。 -all 显示shell所有关闭与启动的指令 bash 通配符: *: ?: []: 所有以m,n,r开头的以.conf结尾的文件 eg:[mnr].conf [^]:非[]中的 [[:space:]] [[:upper:]] [[:lower:]] [[:alnum:]] [[:digit:]] [[:punct:]] IO重定向及管理 可用于输入的设备:文件 键盘设备、文件系统上的常规文件,网卡等 可用于输出的设备: 文件 显示器、文件系统上的常规文件、网卡等 程序的数据流有三种: 输入的数据流:<----标准输入(stdin),键盘 0 输出的数据流:----->标准输出(stdout),显示器 1 错误的输出流: -----> 错误输出(stderr),显示器 2 set 设置或者撤销shell的一些选项 set -C : 设置无法覆盖文件 如果确认想要覆盖,可以使用>| set +C : 关闭上述特性,可以自由覆盖, >:覆盖重定向 >>:输出追加重定向 <:输入重定向 2>: 错误输出覆盖重定向 2>>:错误输出追加重定向 合并正常输出流和错误流: (1)&>,$>> eg:cat /etc/issue &> /tmp/issue.out (2)command >/path/to/somefile 2>&1 command >>/path/to/somefile 2>&1,这里即使追加重定向也不用2>>&1 eg: cat /etc/issue >> /tmp/issue.out 2>&1 将多个命令的执行结果保存 eg:[root@localhost ~]# (pwd;ls) > /tmp/a 将输入的内容保存到某个文件 cat > /tmp/cat.out << EOF > how are you > how old are you >EOF [root@localhost ~]# cat /tmp/a /root anaconda-ks.cfg fish-1.23.1-1.el6.rf.x86_64.rpm initial-setup-ks.cfg 合并两个文件的内容: [root@localhost ~]# cat f1 f2 > f3 命令 > /dev/sda 上列命令会将某个‘命令‘的输出写到块设备/dev/sda中。该操作会将在块设备中的所有数据块替换为命令写入的原始数据,从而导致整个块设备的数据丢失。 tr命令: 不会修改原文件,必须有输入,不能直接接文件 -c或——complerment:取字符集的补集 -d或——delete:删除所有属于第一字符集的字符; -s或—squeeze-repeats:把连续重复的字符以单独一个字符表示 -t或--truncate-set1:先删除第一字符集较第二字符集多出的字符 用法1: tr SET1 SET2 < /path/to/file eg: [root@localhost ~]# tr ‘[a-z]‘ ‘[A-Z]‘ < /etc/issue RED HAT ENTERPRISE LINUX SERVER RELEASE 5.8 (TIKANGA) KERNEL \R ON AN \M 用法2:tr -d ‘adb‘ < /etc/issue [root@localhost ~]# tr -d ‘abc‘ < /etc/issue Red Ht Enterprise Linux Server relese 5.8 (Tikng) Kernel \r on n \m 用法3:操作补集 [root@localhost ~]# tr -dc ‘abc‘ < a abcaaabbbccc[root@localhost ~]# cat a abcefg 123 aaabbbccc [root@localhost ~]# tr -c ‘a\n‘ ‘Z‘ < a aZZZZZ ZZZ aaaZZZZZZ [root@localhost ~]# tr ‘abc‘ ‘xy‘ aaabbbccc xxxyyyyyy [root@localhost ~]# tr -t ‘abcd‘ ‘xy‘ < a xycefg 123 xxxyyyccc [root@localhost ~]# tr -s ‘ab‘ ‘xy‘ < a xycefg 123 xyccc [root@localhost ~]# tr ‘bc‘ ‘xyz‘ aaabbbccc aaaxxxyyy [root@localhost ~]# ls /root/ | tr "\n" "\v" a anaconda-ks.cfg b c d fish-1.23.1-1.el6.rf.x86_64.rpm initial-setup-ks.cfg lntest lovers.txt mail 1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中。 [root@localhost ~]# tr ‘a-z‘ ‘A-Z‘ < /etc/issue >/tmp/issue.out [root@localhost ~]# cat /tmp/issue.out \S KERNEL \R ON AN \M 3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下: Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks! 操作系统版本信息 [root@localhost ~]# mail -s "help" root <<EOF i am `id -nu` ; `cat /etc/centos-release` EOF [root@localhost ~]# cat a | mail -s "help5" root [root@localhost ~]# mail -s "help6" root < b [root@localhost ~]# cat b i am second 4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开。 一 [root@localhost ~]# ls /root/ | tr "\n" " " a anaconda-ks.cfg b c d fish-1.23.1-1.el6.rf.x86_64.rpm initial-setup-ks.cfg lntest lovers.txt mail 二 [root@localhost ~]# ls /root/ | xargs 5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和 6、删除Windows文本文件中的‘^M‘字符 7、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格 install命令: 复制文件并且设置目录 单源复制: install [option] ... SOURCE DEST 多源复制:不能复制目录 install [option] ... SOURCE... DEST 创建目录: install [option]... -d DIRECTORY... 常用选项: -m,--mode=MODE:设定目标文件权限 -o,--owner=OWNER:设定目标文件属主 -g,--group=GROUP:设定目标文件属组 eg: [root@localhost tmp]# install -m 600 -o jay -g jay /etc/issue /tmp/issue [root@localhost tmp]# ll /tmp/issue -rw-------. 1 jay jay 47 Jul 20 15:05 /tmp/issue [root@localhost tmp]# ll /etc/issue -rw-r--r--. 1 root root 47 May 19 03:47 /etc/issue screen命令: 命令详解 http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html 打开新的screen: # screen 或:#screen -S SCREENNAME 退出并关闭screen: # exit 剥离当前screen: Ctrl+a,d 或screen -d [SESSION] 显示所有已经打开的screen: screen -ls 恢复某screen screen -r [SESSION] screen -x [session] 加入到某个screen screen -x SCREENNAME C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态 ,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。 如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。 除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :, 然后输入quit命令退出Screen会话。 需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序 快捷键 C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态, 此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。 C-a w -> 显示所有窗口列表 C-a t -> Time,显示当前时间,和系统的 load C-a k -> kill window,强行关闭当前的 window C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样 C-b Backward,PageUp C-f Forward,PageDown H(大写) High,将光标移至左上角 L Low,将光标移至左下角 0 移到行首 $ 行末 w forward one word,以字为单位往前移 b backward one word,以字为单位往后移 Space 第一次按为标记区起点,第二次按为终点 Esc 结束 copy mode C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上 5.3 查看窗口和窗口名称 打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器, 这个列表会列在标题栏里。窗口列表的样子一般是这样: 0$ bash 1-$ bash 2*$ bash 这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。 Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口 可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认 mktemp:创建临时文件 mktmp [options] TEMP -d:创建临时目录 eg: mktmp /tmp/mytest.xxxxx 开发时经常会需查看非文本文件内容,最常见的16进制查看器就是hexdump hexdump: 格式:hexdump [option] FILENAME| less 选项: -b 将每个字节显示为8进制 -c 将每个字节显示为ASCII字符 -C 每个字节显示为16进制和相应的ASCII字符 -d 每两个字节显示为10进制 -o 每两个字节显示为8进制 -x 每两个字节显示为16进制 常用:hexdump -C binfile 显示结果分为三列(文件偏移量、字节的十六进制、ASCII字符) DOS/Windows的换行符 \r\n 即十六进制表示 0D 0A Linux/Unix的换行符 \n 即十六进制表示 0A [root@localhost ~]# hexdump -C ab.txt -s 3 -n 4 00000003 62 0d 0a 63 |b..c| 00000007 将doc文件装换为unix类型 去除换行符不一致的, dos2unix FILENAME pwd : -P:显示真正的物理路径,而不是软连接的目录 centos6及以后的atime更改策略: 1只有在以下三种情况之一才会更新atime: (1) 如果将分区mount的挂载的时候指定采用非relatime方式(默认采用relatime方式),如strictatime. 补充:在OS启动的时候,将各个分区挂载到不同的目录,在挂载(mount)的参数中采用strictatime,表明及时更新atime。在2.6.30之后mount添加了”relatime”和”strictatime”两个选项,详细的可以通过”man mount”查看。 (2) atime小于ctime或者小于mtime的时候 (3) 本次的access time和上次的atime超过24个小时 管道 接受标准输出 [root@localhost ~]# cat /etc/issue| tr ‘a-z‘ ‘A-Z‘ RED HAT ENTERPRISE LINUX SERVER RELEASE 5.8 (TIKANGA) KERNEL \R ON AN \M 既打印到屏幕又保存到文件一份 [root@localhost ~]# cat /etc/issue | tr -d ‘adb‘| tee /tmp/cat2.out Re Ht Enterprise Linux Server relese 5.8 (Tikng) Kernel \r on n \m |&:表示无论正确错误都输入 [root@localhost ~]# ls /errr |& tr ‘a-z‘ ‘A-Z‘ LS: CANNOT ACCESS /ERRR: NO SUCH FILE OR DIRECTORY [root@localhost ~]# ls /errr 2>&1 | tr ‘a-z‘ ‘A-Z‘ LS: CANNOT ACCESS /ERRR: NO SUCH FILE OR DIRECTORY 用户标识: 16进制:0-65535 管理员:0 普通用户:1-65535 系统用户:1-499(Centos6),1-999(Centos7) 登录用户:500-60000(CentOS6),1000-60000(CentOS7) 私有组和基本组的关系? 密码的使用策略: 1.使用随机密码 2.最短长度不要低于8位 3.应该使用大写字母,小写字母,数字和标点符号中的至少3类 4.定期更换 加密算法: 对称加密; 加密和解密使用同一个密码; 非对称加密:加密和解密使用的一对儿密钥: 密钥对儿: 公钥 私钥 单向加密:只能加密,不能解密,:提取数据特征码 定长输出 雪崩效应 非对称加密比对称加密慢3个数量级 加密是定长输出的,且微小的差异结果相差很多: [root@localhost ~]# echo "magedu" | sha224sum 4fcc85567843dce2a166f3bee52fe2395f0fc732e01239cb5d48634e - [root@localhost ~]# echo "magedu1" | sha224sum 8c516813770259a2c9e672b3cd85f19b6c60c1879410c718b7deac69 - #echo "haha" | sha512sum 也可以加密,sha512要比md5更安全 相同的字符串,结果是相同的,为了防止这种情况,在/etc/shadow中 加了salt,也就是随机字符串,使得即使相同的密码,结果看起来也不同。 groupadd [options] group_name 更改加密算法authconfig--passalgo=sha256 --update 目录与文件的权限意义: 权限对文件的意义: 文件是实际含有数据的地方,包含一般文本文件,数据库内容文件,二进制可执行文件 r:可读取此文件的实际内容,如可读取文本文件的文字内容等 w:可以编辑、新增、或者修改该文件的内容(但不含删除该文件),这里的修改等是对文件内容而言,是否可以删除文件要看该目录的权限 x:该文件具有可以被系统执行的权限,linux中文件是否可被执行,不是看其文件名,而是看权限 权限对目录的意义: 目录主要的内容是记录文件名列表,文件名与目录有强烈的关联 r:表示具有读取目录结构列表的权限 w:1.新建新的文件与目录 2.删除已经存在的文件与目录 3.将已存在的文件与目录的重命名 x:表示用户是否能够进入该目录病成为工作目录 如果想让一个目录让任何人都可以浏览,至少应该开放r,x权限,w不能随便给 参照指定文件的权限来给新文件赋予权限 chown [options] --reference=SFILE DFILE 对于/etc/passwd,/etc/group等文件直接利用vim命令可能造成文件的格式问题,建议使用vipw,vigr 对于/etc/passwd,/etc/group等文件进行检查可以使用命令pwck和grpck umask:默认权限 文件: 666-umask 目录: 777-umask 如果umask如果是003,那么新建的文件权限是什么? 666-003=663(rwxrwx-wx) 这个是不对的,因为一般文件是默认没有可执行权限的 可以使用字符做加减 用户仅可以修改自己为属主的文件的权限, 仅管理员可以修改文件的属主和属组 隐藏权限 chatter:设置文件的隐藏属性 +:增加某一个特殊参数,其他原本参数不动 -:删除某一个特殊参数,其他参数不动 =:设置为仅后面的参数 选项: a:设置a后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性 i:它可以让一个文件不能被删除,改名,设置连接也无法写入或添加数据,对系统安全有重要意义,只root可设置 lsattr:查看隐藏属性 特殊权限 SetUID: 针对文件 SUID权限仅对二进制程序有效 执行者对于该程序需要具有x的执行权限 本权限仅在执行过程中有效 执行者将具有该程序所有者的权限 eg:[root@livecd ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd SetGID: 针对文件 SGID对二进制程序有用 程序执行者对于该程序来说,需具备x的权限 执行者在执行过程中将会获得该程序用户组的支持 设置该选项后具有的功能: 用户若对于此目录具有r与x的权限时,该用户能够进入此目录 用户在此目录下的有效用户组将会变成该目录的用户组 若用户再次目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同 SBIT: 针对目录 当用户对于此目录具有w,x权限,即具有写入的权限 当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件 find命令: find [path] [option] [action] 参数: -[mtime|ctime|atime]: n : n为数字,意义为在n天之前的“一天之内” 被改动过的文件 +n:n天之前被更改过的文件 -n:n天之内被更改过的文件 -newer:比那个文件更新的 找出/etc下比/etc/passwd更新的所有文件 find /etc -newer /etc/passwd -uid n: 按照用户id查找 eg: find /tmp -uid 500 -gid n; -user name: -group name: -nouser: -nogroup -name filename eg: find name /pattern/ 支持glob风格的通配符, -regex pattern:基于基础正则表达式模式查找文件,匹配的是整个路径,而非其名 -iname filename:忽略文件名大小写 -size [+-]SIZE: eg:find /etc/ -size +1M #UNIT:(#-1,#] -#UNIT: [0,#-1] +#UNIT: (#,无穷大) -type TYPE: 依照文件类型查找 f: d: l: b: -perm mode: 权限完全相等的文件会显示 -perm -mode:三组权限大于等于要求的文件都会显示 -perm /mode: 只要有某一位权限吻合就显示 -exec command 组合测试: 与:-a,默认组合逻辑 或:-o, 非:-not ,! 练习: 1.找出/tmp/目录下属主为非root,且文件名不包含fstab字符串的文件; 处理动作: -print:输出至标准输出,默认的动作 -ls:类似于对查找到的文件执行“ls -l”,输出文件的详细信息 -delete:删除查找到的文件 -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中 -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户确认 -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令 注意:find 传递查找到的文件路径至后面的而命令时,是先查找出所有符合条件的文件路径,并 一次性传递给后面的命令,但有些命令不能接受过长的参数,此时命令执行会失败。 xargs: eg: cut -d: -f1 /etc/passwd | xargs mv {} {}.er linux用户和组管理 groupadd : 添加组 -g GID:指定GID,默认是上一组的GID -r :创建系统组 eg:增加一个组ID为3305的系统组 [root@localhost ~]# groupadd -r -g 3305 myssql [root@localhost ~]# tail -1 /etc/group myssql:x:3305: groupmod命令: 修改组的属性 groupadd [options] GROUP -g GID: 修改GID; -n new_name:删除组名 eg: 同时修改组合GID [root@localhost ~]# groupmod -g 3308 -n mygroup myssql [root@localhost ~]# !tai tail -1 /etc/group mygroup:x:3308: groupdel: 删除组 useradd命令: 创建用户 useradd [options] 登录名 -u UID: 指定UID -g GROUP:指定基本组ID -G GROUP1,GROUP2....:指明用户所属的附加组 -c,--comment COMMENT:指明注释信息 -d,--home HOME_DIR:以指定的路径作为家目录, -s,:指定用户的默认shell -r:创建系统用户,默认没有家目录 -M:不创建家目录 -N 不创建私用组做主组,使用users组做主组 useradd -D: 显示创建用户的默认配置 useradd -D arg:修改默认选项的值 默认修改的结果其实在/etc/default/useradd 创建用户时的诸多默认设定配置文件为/etc/login.defs 添加系统用户: useradd -r -s /sbin/nologin na usermod命令: 修改用户属性 usermod 选项 登录名 -u,--uid UID:修改用户的ID为此处指定的新UID,如果同时有-o选项,则可以重复使用其他用户的标识号,例如让两个用户拥有相同的UID eg: usermod -o -u 0 jay -g GID:修改用户所属的基本组 -G GROUP1,GROUP2....:指定用户所属的附加组 -a -G GID : 添加一个附加组 -c OMMENT:指明注释信息 -d -m HOME_DIR:修改用户的家目录,并将原来的文件也转移到新位置 -d HOME_DIR:只重新指定新的家目录,原有的文件不动 -l NEW_LOGIN:修改用户名 -s SHELL: 修改用户的shell -L :锁住用户,用户不能登录,其实是在密码串前加一个“!” -U:解锁用户 tips:修改用户名后只是修改了用户的名称,其他的家目录和密码等都没有改变,所以/home/下并没有新用户名命名的目录 i love you ,do you know userdel: 删除用户 -r:移除用户的家目录,默认不删除用户家目录 passwd -l,-u:锁定和解锁用户 -d:清除用户的密码 --stdin: 利用标准输入赋予密码 eg: echo "haha" | passwd --stdin jay newgrp:可以切换基本组。 exit:可以撤销为原来的组 gpasswd: gpasswd [options] group -a USERNAME:添加用户 -d USERNAMW:删除用户 不加选项就是赋予组密码,可以用来被其他用户临时作为基本组 chage命令: chage [options] 用户名 -l:列出用户的以及密码的有效期限 -m:修改密码的最小天数 -M:修改密码的最大天数 -I:密码过期后,锁定帐号的天数 -d:指定密码最后修改的日期 -E:有效期,0表示立即过期,-1表示永不过期 -W:密码过期前,开始警告天数 $ sudo chage -d0 <user-name> 最初,“-d <N>”选项应该被设成密码的“有效期”(自密码上一次更改时间1970年1月1日以来的天数)。所以,“-d0”表明该密码是在1970年1月1日更改的, 这实际上让当前密码到期失效,从而让密码在下一次登录时被更改。 让当前密码到期失效的另一个办法是通过passwd命令。 $ sudo passwd -e <user-name> 此命令具有与“chage -d0”同样的功效,让用户的当前密码立即到期失效。 [root@localhost ~]# passwd -e lu Expiring password for user lu. passwd: Success You have new mail in /var/spool/mail/root [root@localhost ~]# tail -1 /etc/shadow lu:$6$ykaDA5pL$F4/xBagMqc81vmYh5g3di3hdpmQmGuhqtFBegVHLOci4Fd.fhai.XLcFwANBQU1kw3ASyy0Q.25XyFx7KJ/JL/:0:0:99999:7::: id [options] [user] -n: -u: -g: -G: su -c:不切换过去,直接执行一些命令 文件比较工具: diff: diff [-bBi] from-file to-file options: -b:忽略一行当中仅有多个空白的区别 -B:忽略空白行的区别 -i:忽略大小写的差别 eg: [root@]localhost test] # cat issue.old issue.new \S Kernel \r on an \m Kernel \r on an \m hello world [root@]localhost test] # diff issue.old issue.new 1d0 < \S 2a2 > hello world patch: patch -p# < patch.file patch -R -p# < patch.file -p #:表示取消几层目录的意思 -R :代表还原,将新文件还原为原来的旧版本 [root@]localhost ~] # diff -Naur issu^C [root@]localhost ~] # cd /tmp/test/ [root@]localhost test] # diff -Naur issue.old issue.new > issue.patch [root@]localhost test] # cat issue.patch --- issue.old 2016-07-31 11:08:47.537563762 +0800 +++ issue.new 2016-07-31 11:09:35.176561366 +0800 @@ -1,3 +1,3 @@ -\S Kernel \r on an \m +hello world [root@]localhost test] # patch -p0 < issue.patch patching file issue.old [root@]localhost test] # cat issue.old Kernel \r on an \m hello world [root@]localhost test] # patch -R -p0 < issue.patch patching file issue.old [root@]localhost test] # cat issue.old \S Kernel \r on an \m 独立分区: /boot: 100M即可 /: 10-15G /swap: 至少512M,一般等于自己的物理内存即可,太大也无用 /home: 最大剩余空间的一半,多留点 进程以其发起者的身份运行; 进程对文件的访问权限,取决于发起此进程的用户的权限 为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不登录系统 红帽知识库和官方在线文档 http://kbase.redhat.com http://www.redhat.com/docs http://access.redhat.com http://tldp.org http://www.slideshare.net http://www.google.com Openstackfiletype:pdf rhcasite:redhat.com/docs
本文出自 “mylinux” 博客,请务必保留此出处http://luxiangyu.blog.51cto.com/9976123/1833146
标签:linux基础 命令
原文地址:http://luxiangyu.blog.51cto.com/9976123/1833146