小Q:不知不觉,总以为我们很年轻,在年龄栏选择自己的出生日期时,
却发现,那个熟悉的年份已经跑得这么远。
今天开始了shell了,心情挺激动的,即将半个月的时间里,每天从早上到晚上
不停歇的坚持,现在终于可以摸到了实战的大招了,真好。基本上今天的内容
是shell的特性 变量 特殊符号 配置文件 一些简单的命令和扩展的文档。
shell的特性:
shell 它是一种程序设计语言,是一个命令解释器,就是解释我们输入的命
令为内核。
他又分为两种,图形界面的 shell ,命令行下的 shell。
命令行下又有两种:交互式模式就是shell等待你的输入,并且执行你提交
的命令;非交互式模式,不与你进行交互,而是读取存放在文件中的命
令,并且执行它们。
unix下的shell 有: / bash / sh / ksh / csh;我们遇到的就是这些吧。
类型:Bourne shell (包括 sh,ksh,and bash) C shell ( csh) Korn shell
( ksh) Bourne shell ( sh)
历史命令:history 存放在各自家目录下的 .bash_history下
查看命令条数:echo $HISTORYSIZE (默认存1000条)
执行上一条命令:!! 运行历史第100命令:!100
补全文件名:tab 一下 查看:tab 两下
清除历史命令:history -c /bash_history
shell变量:
查看系统变量:env 查看系统变量 + 自定义变量 :set
自定义变量:a = 1234 查看: echo $a
含有特殊字符的变量:如空格的话需要加单引号, b = ‘我是 sadc’
显示命令结果的变量:需要加反引号 , c = ‘ which vim ‘
显示两个变量结合的:需要加双引号 , d = “$a”34
或者 e = “$a”“$b” 查看 echo $e
当我们在 shell 中定义变量之后,然后进入一个子 shell 比如 bash ,会发
现变量不存在;
如果我们想让 shell 中的变量在任何子 shell 中都存在,我们需要为变量
声明 成一个全局变量 export a = 3456
在进入子 shell 中,就可以找到了。
而删除环境变量: unset a
附加文档:
关于shell全局变量,局部变量 : env set export 的关系的文档
http://blog.sina.com.cn/s/blog_6842ee7f0100tx3x.html
http://blog.csdn.net/hdutigerkin/article/details/6682871
http://www.cnblogs.com/dongzhiquan/archive/2012/01/10/2317641.html
环境变量配置文件:
如 PATH HOME PS1 bash 等环境变量
root用户: /etc/profile
根据文件中给的说明,若想新建变量最好新建个文件
到 /etc/profile.d/path.sh 下添加之后,重置生效,
重置变量 : source /etc/profile
查看方式 : echo $PATH
/etc/bashrc
同样,想自定义最好新建文件,后重置。
PS1 是调整最左侧起始符的,可查看格式: echo $PS1
比如加空格 或 -t 或-W 变为 -w , 自定义时加单引号
也可以在新建文件中改umask
多查看文档,理解程序和意思
普通用户 :其配置文件就在各自家目录下,文件名相同
附加文档:关于配置文档
http://www.apelearn.com/bbs/thread-7719-1-1.html
shell中特殊符号:
字符: * ? 通配多个 一个字符 # 注释
\ 脱义字符 | 管道符
$ 使用变量 !$ 执行上一条命令
& 后台运行(sleep 10) ; 多个命令分隔符
【】 结合式
重定向: > 覆盖源文件内容 >> 增加内容到源文件
< 反向重定向 2 > 错误重定向 2 >> 错误信息追加
休眠 : sleep 数字 ctrl + z 暂停进程 ctrl + c 取消进程
fg 调到前台运行 bg 调到后台暂停 可加 id 指定
举例 : touch 【1-4】.txt 会建立 1.txt 2.txt 3.txt 4.txt
举例 : ls #1.txt 只执行 ls ;ls \#1.txt 就能执行查找#1.txt了
附加命令:
ls 1.txt | xrags rm 查找 1.txt并删除 xrags 把管道前命令的输出作为输入
cut 命令:
cut 分段显示:
-d:指定分隔符 需要和某组字节 列表配合,比如 -f
-f:指定段 cut -d:-f3,4,5 /etc/passwd 打印文件下的345段
-c:截取字符 cut -c 3-7 /etc/passwd 截取每行3 到 7 的字符
sort 命令:
sort 排序显示:
-t : 以:为分隔符 -k2,5 查看2到5行
-n 按数字排序 -nr 反向排序 -u 去重排序
wc 命令:
wc :查看行数 单词 和字符 数
选项:
-c --bytes 输出字节数统计 -m --chars 输出字符数统计
-l --lines 输 出 行 数 统 计
uniq 命令:
去重复 :uniq 文件名
选项 : -c 直观的看去掉多少重复的 -d 只输出重复的
只不过这个选项只能去掉临行重复,所以要先排序 sort 文件 |uniq -c 文件
关于重定向:echo "1231231" > 1.txt + cat 1.txt
= echo "1231231" | tee 1,txt
tee 把正确输出信息定向到一个文件中,并且在当前屏幕显示
tr 和 split 命令:
替换:tr ‘a-z‘ ‘A-Z‘ = tr ‘[a-z]’ ‘[A-Z]’
tr "a-z" "A-Z" = tr a-z A-Z
例如:ls *.txt | tr ‘ abDgF‘ ‘ACdGf
分割文件 :spilt -b 10m 1.txt 以10m为单位分给文件
spilt -l 10 1.txt new_ 以十行为单位分割 1.txt
并分割后的文件new_开头
shell 连接符:
&& :左边命令执行成功,才回去执行右边命令;
|| :左边命令执行不成功,才回去执行右边命令;
; :不管左边成不成功,都会执行右边命令;
问题: