linux每个命令没详细的记录,只是大概记下,方便自己有时间看看,敲下命令
1、bash优点:
命令记忆功能(默认记忆1000条,通过history命名查看,默认记录用户目录下.bash_history目录中)
档案对比补全功能:指定补全,文件名补全(如果匹配内容唯一,按一下tab键自动补全命令或文件名,如果匹配内容不唯一,则按两下会显示所有匹配内容)
命名别名(alias)设定功能(通过alias设置命名别名,如果命令前加\,则不使用命令别名,unalias取消命名别名)
作业控制(jobs)、前后台控制
Shell scripts的强大功能
通配符*?等
2、type命令:
格式:type [options] name
不加参数:显示命名是外部命令还是bash内置命令,或命名别名
-t:file表示外部命令,alias表示为命令别名,builtin表示bash内置命令
-a:除了显示命令类型,还显示命令所在的路径
3、变量
echo $变量名
echo $PATH (在linux中,大写的变量一般为系统预定义的变量)
系统通过预定义环境变量来定义shell的环境,env显示系统中主要的预定义变量内容,set可以将环境变量和用户自定义的变量内容显示出来
root用户命令前提示符是#,普通用户命令提示符是$
通过set命令查看,有个ps1,该内容对应为:图中[email protected]的内容 。通过PS1=‘[\[email protected]\h \t]:\w\$‘设置ps1,其中ps必须大写,等号两边不能有空格,效果如图
4、查看当前系统支持的字符集命令:locale,通过LANG=zh_CN:UTF-8修改当前系统支持的字符集
5、source或.后面跟环境变量文件,就可以将环境变量中更改的内容得到真正更改
6、bash shell系统设定值在/etc/profile和/etc/bashrc文件中,个人设定值在用户家目录内的.bash_profile和.bashrc文件中,用户家目录内.bash_logout文件中存放设定注销shell时系统将要做的事情。
7、stty -a查看终端信息,其中包含一些快捷键使用,如输入命名后想全部去掉输入另外一个命令可以使用ctrl+u删除整行命令,此快捷使用对应stty -a中的kill,ctrl+w删除前面的一个单词
8、重导向redirect:就是将目前的所得数据输出到其他地方去
三种输出输入的状况,分别是:
标准输入stdin:代码为你0,使用<或<<
标准输出stdou:代码为1,使用的方式为1>或>>,其中1可以省略
错误输出dtderr:代码为2,使用的方式为2>或2>>
find /path -name filename 1> rightfile 2> errfile 查找path下filename文件,找到了则将filename文件的名称写入rightfile文件中,如果没找到,则将错误信息写入errfile文件中
同时写入同一个档案
find /path -name filename 1>fileresult.txt 2>&1等价于find /path -name filename > fileresult.txt 2> fileresult.txt ,如果用重定向有的结果是我们已经知道的,不需要保存时,可以将结果输出到/dev/null中将结果丢掉
9、命令执行判断依据: ;、&&和||
command1;command2:用分号表示不管command1执行结果如何,command2都会被执行
command1&&command2:表示command1执行成功才执行command2
command1||command2:表示command1执行错误才执行command2
10、管道命令
管道命令("|")只能处理通过前一个命令传来的正确信息,也就是标准输出(stdout)的信息,对于标准错误信息,没有处理能力。
11、cut命令,将一段内容,选取其中一部分的命令
last | cut -b 3-6 :截取每行3到6位字节
last | cut -c 3 :截取每行第三位字符(对于字节-b和-c效果一样,但是对于中文,则-b会出现乱码)
cat /etc/passwd | head -n 5 | cut -d : -f 1,3-5,7 :-d与-f一起使用,意思是:以“:”作为分隔符进行分割后,显示第一、第三道第五和第七个元素,类似java的split后,显示第一、第三、第四、第五和第七个元素
12、grep命令,grep分析一行信息,若其中有需要的信息,就将这一行信息显示出来
命令格式:grep [-acinv] ‘搜索字符串‘ filename
-a:将二进制文件以文本文件的方式搜索数据
-c:计算找到‘搜索字符串’的次数
-i:忽略大小写
-n:顺序输出行号
-v:反向选择,即显示没有“搜索字符串”的那一行
使用[]搜索字符,^在字符集合符号[]之内代表反向选择,在[]之外则代表定位在行首
行首与行尾字符^$,前者表示以某字符为行首,$表示以某字符为行尾
任意一个字符.(绝对有一个字符,不是0个或多个,而是恰好一个字符,使用过程中需要使用\进行转义)与重复字符*(前面的字符是0个或多个)
限定连续重复字符范围{}
[range]:搜索包含range的行
[^range]:搜索不包含range的行
\{n\}:重复前一个相同字符n个
\{n,m\}}:重复前一个字符n-m个
\{n, \}:重复前一个字符n个以上
grep命令中*代表0到无限多个字符,但是在正则表达式中,是重复前一个字符0到无限多个的意思,不能弄混了
13、sort命令,用于排序
命令格式:sort [-fbMnrtuk] [filename or stdin]
last | cut -b 1-2 | sort -u : 去掉结果中重复的内容
cat test2.txt | cut -c 1-2 | sort -u -o test2.txt :如果排序后想将结果输出到同一个文件中,则需要使用-o,此处使用重定向是不行的。
sort -t : -k 3 test2.txt : 以":"作为分隔符,分割后,按第三个元素进行排序
14、uniq命令,用于报告或删除文件中重复的行
命令格式:uniq [-ic]
cat /etc/passwd | cut -c 1-2 | uniq -i : 忽略大小写,去掉重复行
cat /etc/passwd | cut -c 1-2 | uniq -c : 显示重复行出现的次数
cat /etc/passwd | cut -c 1-2 | uniq -u : 只显示出现一次的行
15、wc命令,统计文件里面有多少单词,多少行,多少字符。
命令格式:wc [-lwm]
cat /etc/passwd | cut -c 1-3 | uniq -i | wc -c :统计有多少个字节
cat /etc/passwd | cut -c 1-3 | uniq -i | wc -m :统计有多少个字符(对于中文文件)
cat /etc/passwd | cut -c 1-3 | uniq -i | wc -l :统计有多少行
16、tr命令,可以用来删除一段信息当中的文字,或者进行文字信息的替换,如:echo $PATH | tr -d ‘:‘
echo $PATH | tr -s ‘:‘ ‘|‘ tr -d ‘[a-z]‘ ‘[A-Z]‘ < test1.txt
cat test2.txt | tr -d ‘a‘ : 删除所有字符a
cat test2.txt | tr -s ‘a‘ : 如果有重复连续的出现字符a,则保留第一个a,即将连续重复的字符a压缩为一个a如aa,则只保留一个a,如果是aba,则还是aba
cat test2.txt | tr -s ‘a‘ ‘b‘:将a替换成b,最后将连续重复的b压缩为一个b。
17、col命令,
格式:col [-x]:将tab键转换成对等的空格键
18、expand [-t] file
将tab键换成8个空格键,-t后接数字n,将tab键换成对应个数的空格键
19、join命令,“将两个文件中指定栏位相同的行连接起来”,即按照两个文件中共同拥有的某一列,将对应的行拼接成一行
格式:join [options] file1 file2
join test4.txt test5.txt -t , -1 1 -2 2 : 将test4和test5用“,”分割后,通过test4的第一列和test5的第二列进行关联
20、paste命令,paste指令会把每个文件以列对列的方式,一列列地加以合并。
paste test2.txt test3.txt : 将test2和test3两个文件一行行进行合并,第一个文件(test2)的第一行在前面
21、split命令,将文件进行分割
split -l 100 test.txt out : 把test.txt每100行输出一个文件outaa,outab,outcd以此类推。。。实现了文本文件的分割。
split -b 100k test.txt out : 把test.txt每100KB输出一个文件outaa,outab,outcd以此类推。
22、xargs命令,xargs是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功
file test* | xargs vi : 查找当前目录下以test开头的所有文件,并进行编辑,此处用xargs命令一次打开多个文件