- 论坛徽章:
- 0
|
1.shell是用户与系统核心沟通的桥梁
2.当前系统有多少可用的shell?/etc/shells3.每个用户登陆时候默认的shell:/etc/passwd
4.变量和环境变量不同的!
5.变量的获取:echo $变量名或者${变量名}
变量的设置:变量名=内容
取消变量:unset 变量名
将变量内容设置为VBird's name
name="VBird's name" 或者name=VBird\'\ name
export 变量名使变量成为环境变量
在PATH变量中累加:/sbin目录
PATH=$PATH:/sbin 或者
PATH="$PATH":/sbin
如果是在变量后面加上ranran
name="$name"ranran
name=${name}ranran
6.在变量的设置中单引号和双引号的用途有什么不同?
[wuxiaoxiao@localhost ~]$ name=wuxiaoxiao
[wuxiaoxiao@localhost ~]$ echo $name
wuxiaoxiao
[wuxiaoxiao@localhost ~]$ myname='$name its me'(单引号)
[wuxiaoxiao@localhost ~]$ echo $myname
$name its me
[wuxiaoxiao@localhost ~]$ myname="$name is its me"
[wuxiaoxiao@localhost ~]$ echo $myname
wuxiaoxiao is its me
7.在执行命令的过程中(`)(tab键上面的那个符号)的作用
ls -l `cd linux`
先执行``中的命令,在执行ls -l
8.环境变量
查看系统环境变量env
查看所有的变量set
9.变量键盘读取
read [-pt] 变量
-p:后面接提示符
-t:后面接等待的秒数
read -p "请输入用户名" -t 30 name
10.declare/typeset [-aixr] 变量
-a:将后面的变量定义为数组
-i:将后面的变量定义为整数数字
-x:与export一样将后面的变量定义为环境变量
-r:设置为只读,该变量不可以更改内容,也不能取消
11.数组属性
var[1]="xiaoxiao"
var[2]="ranran"
echo "${var[1]},${var[2]}"
12.附加的变量设置功能
例子;
[wuxiaoxiao@localhost ~]$ vbird="/home/wuxiaoxiao/linux/command.txt"
[wuxiaoxiao@localhost ~]$ echo $vbird
/home/wuxiaoxiao/linux/command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird##/*/}
command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird#/*/}
wuxiaoxiao/linux/command.txt
注解:在变量名后面有两个##,表示在##后面的字符串取最长的那一段,一个#表示取最短的.这是从前面删除
[wuxiaoxiao@localhost ~]$ echo ${vbird%%/*/}
/home/wuxiaoxiao/linux/command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird%%/*/}
/home/wuxiaoxiao/linux/command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird%%/*}
[wuxiaoxiao@localhost ~]$ echo ${vbird%/*}
/home/wuxiaoxiao/linux
注解:从后面开始删除
13.命令别名设置: alias lm='ls -l | more'
查看别名:alias
取消别名设置:unalias lm
14.history 3:表示列出最近的3个命令
!66:执行第66条命令
!!:执行上一条命令
!al:执行最近以al开头的命令
15.通配符
*:0或者多个字符
?:一定有一个字符
#:注释
\:转移字符
~:用户的家目录
&:将命令编程后台工作
!:逻辑上的非
():中间为字shell的开始和结束
[]:中间为字符的组合
{}:中间为名林区块的组合
例子:
cp test[1-5] ./linux :将test1,test2,test3,test4,test5若存在的话就复制到linux中
cp test[!1-5] ./linux :将test1,test2,test3,test4,test5以外的test?复制到linux中
cp *[A-Z]* ./linux :只要文件名里含有大些字母 就复制
ls -l /etc/*[35]* :列出含有3和5的文件名的文件
ls -l /etc/[!a-z]* :不要小写字母开头的文件
另外`的功能也可以这样:cd /lib/modules/${uname -r}/kernel
16.数据流重导向
标准输入:代码为0,使用或者>>
标准错误输出:代码为2,使用2>或者2>>
ls linux >1.txt(覆盖) ls linux >> 1.txt(附加)
find /home -name testing > list_right 2> list_error :正确的结果在list_right中,错误的在 list_error中
find /home -name testing > list_right 2> /dev/null :正确的结果在list_right中,错误的不见了
find /home -name testing > list_right 2> &1 :正确和错误的结果都在list_right中
17. cd linux/222 && mkdir linux/1111 :第一个命令正确时候才执行第二个命令
cd linux/222 || mkdir linux222 :第一个命令错误时候才执行第二个命令
用ls测试/home/linux是否存在? 若存在输出exits,否则输出not exits
ls /home/linux && echo "exits" || echo "not exits"
18. 管道命令
cut:处理消息是以行为单位的
cut -d '分割符' -f fields
-d:后面接的是分割符
-f:根据-d的分割符将一段消息分为数段,用-f取出第几段的意思
-c:以字符为单位取出固定的字符数据
例子:echo $PATH | cut -d ':' -f 5
如果想要列出第三段和第五段?cut -d ':' -f 3,5
export | cut -c 12- :取出第十二个字符以后的所有字符串
grep:分析一行信息,若其中有我们想要的信息,就将该行取出来
grep [-acinv] '搜索字符串' filename
-a:将二进制文件以文本文件的方式搜索数据
-c:计算找到搜索字符串的次数
-i:忽略大小写
-n:顺便输出行号
-v:反向选择,即显示出没有'搜索字符串'内容的那一行
例子:last | grep 'root'
例子:last | grep -v 'root'
last | grep 'root'| cut -d ' ' -f 1
sort;排序
uniq:将重复的数据仅显示一次
wc:查看文件里有多少字,行,字符
tee:双重导向
join:处理两个文件之间的数据
xargs:参数代换
#以上命令用到的时候在查看
tr:用来删除一段消息中的文字,或者进行文字消息的转换
tr [-ds] set1 ...
-d:删除消息中的set1字符串
-s:替换重复的字符
例子:last | tr '[a-z]' '[A-Z]' :将小写字母替换成大些字母
将/etc/passed中的冒号删除 cat /etc/passwd | tr -d ':'
将DOS文件中的换行夫删除 cat /home/test/dostxt | tr -d '\r' >dostxt-noM
col:将tab键转化为对等的空格键col -x
cat /etc/man.config | col -x |cat -A | more
split:拆分命令 如果文件过大,可以根据行数和大小来拆分,将大文件拆分成小文件
split [-bl] file PREFIX
-b:后面药拆分的文件的大小,可加单位,例如b,k,m
-l:按行进行拆分
例子:/etc/termcap有700多k,想要拆分成300k一个文件
split -b 300k /etc/termcap termcap 会以xxxaa,xxxab,xxxac等方式建立小文件
如何将拆分后的文件合成一个文件?cat termcap* >> termcapback
将ls -al / 输出的信息中,每10行记录为一个文件
ls -al / | split -l 10 - lsroot ;重点在- split中需要文件但是有没有文件, -会把前面的结果当成输入
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76927/showart_1328225.html |
|