1.
!!命令 # 表示上一条输出
history |grep 23 #表示历史记录中的第23条
!vim #上一条vim记录
alias music='cat test' #表示别名
unalias music #表示取消别名
* #匹配一个或零个或多个字符
? #匹配一个字符
| #管道符号,将前面的运行结果丢给后面的命令
Ctrl + Z ,fg , bg , jobs #利用bg 命令使他到后台运行,fg则调到前台,jobs 用于查看
:; #分号。平时我们都是在一行中敲一个命令,然后回车就运行了,那么想在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个 ”;” 了。
2.pu aux |grep file 和kill -9 Pid 的使用:
[xiongchao@oc3006745124 src]$ ps aux |grep test pts/ S+ : : grep test pts/ T : : vim test [xiongchao@oc3006745124 src]$ jobs []+ Stopped vim test [xiongchao@oc3006745124 src]$ kill [xiongchao@oc3006745124 src]$ jobs []+ Stopped vim test [xiongchao@oc3006745124 src]$ kill - [xiongchao@oc3006745124 src]$ jobs []+ Killed vim test [xiongchao@oc3006745124 src]$ jobs [xiongchao@oc3006745124 src]$ fg bash: fg: current: no such job
3.因为有了PATH这个变量,所以我们运行某个命令时不再去输入全局路径,直接敲命令名即可
系统有部分预设变量,PATH,HOME,LOGNAME
输入env可以全部列出系统预设的全部变量
[xiongchao@oc3006745124 src]$ envORBIT_SOCKETDIR=/tmp/orbit-xiongchao HOSTNAME=oc3006745124.ibm.com IMSETTINGS_INTEGRATE_DESKTOP=yes SHELL=/bin/bash TERM=xterm XDG_SESSION_COOKIE=25045470b2680c33cc0f62e200000028- HISTSIZE= GTK_RC_FILES=/etc/gtk/gtkrc:/home/xiongchao/.gtkrc-1.2-gnome2 WINDOWID= ## 仅列出部分
env命令显示的变量只是环境变量,系统预设的变量其实还有很多,你可以使用set命令把系统预设的全部变量都显示出来。
[xiongchao@oc3006745124 src]$ set BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([]=]=]=]=]=]="x86_64-redhat-linux-gnu") BASH_VERSION='4.1.2(1)-release' COLORS=/etc/DIR_COLORS COLORTERM=gnome-terminal COLUMNS= CVS_RSH=ssh #仅列出部分
set命令不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来。
[xiongchao@oc3006745124 src]$ myname=carlton [xiongchao@oc3006745124 src]$ echo $myname carlton [xiongchao@oc3006745124 src]$ set |grep myname myname=carlton [xiongchao@oc3006745124 src]$ bash [xiongchao@oc3006745124 src]$ echo $myname [xiongchao@oc3006745124 src]$ exit exit [xiongchao@oc3006745124 src]$ echo $myname carlton ##使用 bash 命令即可再打开一个shell,此时先前设置的 “myname” 变量已经不存在了
那么问题来了,如果你想设置的变量一直生效怎么办?失效呢?
法一:需要在 “/etc/profile” 文件最末行加入 export myname=carlton 然后运行 source /etc/profile 就可以生效了。此时再运行bash命令或者直接 su - 普通账户可以看到效果。
法二:只想让当前用户使用该变量
需要在用户主目录下的 .bashrc 文件最后一行加入 export myname=Aming 然后运行 source .bashrc 就可以生效了。这时候再登录 xiongchao 账户,myname变量则不会生效了。上面用的source命令的作用是,将目前设定的配置刷新,即不用注销再登录也能生效。
失效:unset 变量名
4.单引号和双引号的区别:
[xiongchao@oc3006745124 ~]$ start=' # [xiongchao@oc3006745124 ~]$ echo $start [xiongchao@oc3006745124 ~]$ lip= [xiongchao@oc3006745124 ~]$ echo $lip #$不执行,对其冻结 $LOGNAME1233 [xiongchao@oc3006745124 ~]$ start=`pwd` #直接出结果 [xiongchao@oc3006745124 ~]$ echo $start /home/xiongchao [xiongchao@oc3006745124 ~]$ ss= #直接出结果 [xiongchao@oc3006745124 ~]$ echo $ss xiongchao123
5.系统和个人的环境变量配置说明
/etc/profile :这个文件预设了几个重要的变量 ,PATH,USER,LOGNAME,等
/etc/bashrc : 这文件主要预设umask以及PS1
[xiongchao@oc3006745124 ~]$ echo $PS1
[\u@\h \W]\$ #这就是PS1,几个字母依次分别代表用户,主机名,当前目录,以及#或$
.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用改文件输入专用于自己使用的shell信息,当用户登录时,改文件仅仅执行一次。
.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
.bash_history :记录命令历史用的。
.bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。
6.cut的用法
cat /etc/passwd |cut -d |head -n7 #d 指定分割符 f 指定段 head -n2 /etc/passwd |cut -c2 #cut 后面可以是c1, c1,, [xiongchao@oc3006745124 ~]$ head -n5 /etc/passwd |sort -t: -k1 -n adm:x:::adm:/var/adm:/sbin/nologin bin:x:::bin:/bin:/sbin/nologin daemon:x:::daemon:/sbin:/sbin/nologin lp:x:::lp:/var/spool/lpd:/sbin/nologin root:x:::root:/root:/bin/bash
-t 后面跟分隔符,-k后面跟数字,表示对第几个区域的字符串排序,-n 则表示使用纯数字排序,如果不加上任何选项,则按照ASCII码值进行比较
7.uniq的用法
去重复的行
-c :统计重复的行数,并把行数写在前面
uniq music.txt # 可以找到music.txt文件中的重复行,但是要先对该文件使用sort,才能成功
8.sort
sort -nr
-n的话就是按照数字大小来排序,-r的话就是逆向排序
如果不加上的话,则会变成第一个数字的排序
9.tee 的用法
后面跟文件名,类似于重定向“>” 就是可以执行之后显示出来
[xiongchao@oc3006745124 ~]$ echo "handsame profile" |tee 1.txt
handsame profile
10.tr的用法
-d :删除某个字符,-d 后面跟要删除的字符 #针对单个字符来说
-s :把重复的字符去掉 #针对单个字符来说
大小写的替换:tr '[a-z]''[A-Z]'
11.split的用法
[root@oc3006745124 split_dir]# cp /etc/passwd ./
[root@oc3006745124 split_dir]# split -b500 passwd
[root@oc3006745124 split_dir]# ls
passwd xaa xab xac xad
12.
~ : 用户的家目录,如果是root则是 /root ,普通用户则是 /home/username
& : 如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况。
>, >>, 2>, 2>> 前面讲过重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和 2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>
[ ] 中括号,中间为字符组合,代表中间字符中的任意一个,ls -d test[1-3]
使用 ”;” 时,不管command1是否执行成功都会执行command2;
使用 “&&” 时,只有command1执行成功后,command2才会执行,否则command2不执行;
使用 “||” 时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。