单引号:强引用,变量引用不执行替换双引号:弱引用,变量引用会替换``:命令替换。 $()=`` 文件类型:	-:常规文件	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} -pvmkdir: 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} -pvmkdir: 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} -pvmkdir: 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 fileDevice: 802h/2050d	Inode: 2223942     Links: 1Access: (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/.XauthoritLinux 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' aaabbbcccxxxyyyyyy[root@localhost ~]# tr -t 'abcd' 'xy' < axycefg123xxxyyyccc[root@localhost ~]# tr -s 'ab' 'xy' < axycefg123xyccc [root@localhost ~]# tr 'bc' 'xyz' aaabbbcccaaaxxxyyy[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                                                                                      mail1、将/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 \M3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!操作系统版本信息   [root@localhost ~]# mail -s "help" root <
 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.outRe 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 
最初,“-d 
”选项应该被设成密码的“有效期”(自密码上一次更改时间1970年1月1日以来的天数)。所以,“-d0”表明该密码是在1970年1月1日更改的, 这实际上让当前密码到期失效,从而让密码在下一次登录时被更改。 让当前密码到期失效的另一个办法是通过passwd命令。     $ sudo passwd -e 
  此命令具有与“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.comhttp://www.redhat.com/docshttp://access.redhat.comhttp://tldp.orghttp://www.slideshare.nethttp://www.google.comOpenstackfiletype:pdfrhcasite:redhat.com/docs