提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
bash的基础命令有很多,也挺重要,好好学习一下。
一、内置命令
1.type
[user@localhost ~]$ type cd ==>查看cd是否为内置
cd 是 shell 内嵌
[user@localhost ~]$ type ls
ls 是 `ls --color=auto' 的别名
[user@localhost ~]$ type -t ls
alias ==>该命令为别名设计的命令
[user@localhost ~]$ type -a ls ==>列出所有含ls的命令
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls
ls 是 /bin/ls
2.快速编辑
命令编辑时我们最常遇到三个问题:
一、命令太长
命令太长都在同一行可能看起来不舒服,那咱们将分几行写。一般编辑文档时换行点击【Enter】即可,但在Linux执行命令时,【Enter】就会执行命令。所以这里引入一个【 \ 】转义字符,将 \与【Enter】结合及实现换行。
[user@localhost ~]$ cp /var/spool/mail/root /etc/crontab \ ==>输入\后点击【Enter】即可换行
> /etc/fstab /root ==> 此行开头的 > 是主动出现的,>的出现也标准着你学会换行了,即可继续输入。
[user@localhost ~]$ cp /var/spool/mail/root /etc/crontab /etc/fstab /root
以上两个命令执行是完全一样的,总结来说就是换行用 : +【Enter】,执行命令用:【Enter】
二、命令错误
命令这么多,打错字很正常,那我们怎么去删除。逐字点击【Backspace】? 如果命令非常长,这样是不是太慢了·,所以我们可以用【Ctrl】+u / 【Ctrl】+k
[user@localhost ~]$ cp /var/spool/mail/root /etc/crontab ==>我们将光标停在/etc/crontab前【Ctrl】+k看一下
[user@localhost ~]$ cp /var/spool/mail/root ==>光标后面的全部删除,so quickly!!!
[user@localhost ~]$ cp /var/spool/mail/root /etc/crontab ==>我们将光标停在/etc/crontab前【Ctrl】+u看一下
[user@localhost ~]$ /etc/crontab ==>光标前的全部删除
三、移动光标
光标移到开始:【Ctrl】+a
光标移到最后:【Ctrl】+e
总结一下:你也可以不用这些快速按钮,自己慢慢的删除,慢慢的挪动光标也可以,不嫌麻烦就行。
二、shell变量
1.echo
变量就是以一组文字或符号等来代替一些设置或一串保留的数据。变量自然与一般使用的常量表示方式不同,变量使用时前面加上 【$】
[user@localhost ~]$ echo $variable ==>用echo读取未赋值的变量variable
[user@localhost ~]$ variable=VBird ==>给variable赋值VBird
[user@localhost ~]$ echo $variable
VBird
[user@localhost ~]$ variable=VBird1 ==>给variable赋值VBird1
[user@localhost ~]$ echo $variable
VBird1 ==>给变量赋什么值。读取出来什么值
echo读出变量,可用$可以直接加变量名,也可用 $ {变量}
[user@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/user/.local/bin:/home/user/bin
[user@localhost ~]$ echo ${PATH}
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/user/.local/bin:/home/user/bin
2.变量
1.变量赋值
变量不以数字开头
[user@localhost ~]$ 12name=VBird ==>变量由数字和字母组成,但不能以数字开头
bash: 12name=VBird: 未找到命令...
赋值号前后不能有空格
[user@localhost ~]$ name =VBird
bash: name: 未找到命令...
[user@localhost ~]$ name= VBird
bash: VBird: 未找到命令...
[user@localhost ~]$ name = VBird
bash: name: 未找到命令...
[user@localhost ~]$ name=VBird Tsai
bash: Tsai: 未找到命令...
[user@localhost ~]$ echo $name
==>未赋值成功
双引号中的 $变量,保存原本的特性
[user@localhost ~]$ myname=erdeng
[user@localhost ~]$ var="myname is $myname"
[user@localhost ~]$ echo $var
myname is erdeng
单引号中的 $变量,直接赋值
[user@localhost ~]$ myname=erdeng
[user@localhost ~]$ var='myname is $myname'
[user@localhost ~]$ echo $var
myname is $myname
我们想要将 erdeng’s name (尔等的名字) 赋值给var ,但是命令识别是从左到右,所以var赋值就被拆分中间有空格,所以失败。
[user@localhost ~]$ var='erdeng's name'
> '
bash: name
: 未找到命令...
但是我们就需要赋值成erdeng’s name ,我们可以使用转义字符 \
[user@localhost ~]$ var=erdeng\'s\ name ==> \ 将's的'转义和name前的空格转义
[user@localhost ~]$ echo $var
erdeng's name
还有一种方法:双引号套单引号
[user@localhost ~]$ var="erdeng's name"
[user@localhost ~]$ echo $var
erdeng's name
2.变量扩增
扩增就是往变量里面加东西,扩增采用 :的模式,累加一个 /home/dmtsai/bin这个目录到PATH
[user@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/user/.local/bin:/home/user/bin
[user@localhost ~]$ PATH=$PATH:/home/dmtsai/bin
[user@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/user/.local/bin:/home/user/bin:/home/dmtsai/bin
两种扩充方法
[user@localhost ~]$ name=erdeng
[user@localhost ~]$ name="$name"yes ==>双引号保持原本性质
[user@localhost ~]$ echo $name
erdengyes
[user@localhost ~]$ name=erdeng
[user@localhost ~]$ name=${name}yes
[user@localhost ~]$ echo $name
erdengyes
3.子进程
export 变量名 :将变量变成环境变量。子进程仅会继承父进程的环境变量,子进程不会继承父进程的自定义变量。
[user@localhost ~]$ echo $name
erdengyes
[user@localhost ~]$ bash ==>进入子进程
[user@localhost ~]$ echo $name ==>查看name
==>空的
[user@localhost ~]$ exit ==>退出子进程
exit
[user@localhost ~]$ export name ==>export将父进程的变量变成环境变量
[user@localhost ~]$ bash
[user@localhost ~]$ echo $name
erdengyes ==>变量变成环境变量
unset 变量名 :取消变量
[user@localhost ~]$ bash
[user@localhost ~]$ echo $name
erdengyes
[user@localhost ~]$ exit
exit
[user@localhost ~]$ unset name ==>取消变量
[user@localhost ~]$ bash
[user@localhost ~]$ echo $name
==>变量无赋值,取消成功
进入目前内核的模块目录,$(uname -r)为内核版本
[user@localhost ~]$ cd /lib/modules/$(uname -r)/kernel
[user@localhost kernel]$
3.环境变量
我们可以通过env和export来查看环境变量
[user@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=8225
XDG_SESSION_ID=1
HOSTNAME=localhost.localdomain <==主机名
IMSETTINGS_INTEGRATE_DESKTOP=yes
VTE_VERSION=5202
TERM=xterm-256color <==终端环境类型
SHELL=/bin/bash <==当前使用的shell的程序
XDG_MENU_PREFIX=gnome-
HISTSIZE=1000
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/f70e0dcf_3f33_4fab_be28_f8547c875856
IMSETTINGS_MODULE=IBus
USER=user
-----------------------------------------省略n字----------------------------------------------
1.提示字符设置
提示符是对应的变量是PS1,我们可以通过对PS1的赋值来改变提示符的格式
[user@localhost ~]$ cd /home
[user@localhost home]$ PS1='[\u@\h \w \A #\#]\$'
[user@localhost /home 20:52 #50]$PS1='[\u \h \w \A #\#]\$'
[user localhost /home 20:54 #51]$PS1='[\u@\H \w \A #\#]\$'
[user@localhost.localdomain /home 20:57 #52]$PS1='[\u@\H \w \A #\# \d]\$'
[user@localhost.localdomain /home 21:08 #53 日 9月 22]$
哦哦!原来这些提示的格式设置是可以自己控制的,将对应的符号设置在不同的格式,提示符也就不同了。
\u :当前用户名
\h :主机名(仅取小数点前的名字)
\H:完整主机名
\w:完整的工作目录
#:执行第几个命令
$:提示字符,root是# ,一般用户是 $
与时间有关
\d:显示时间【星期 月 日】
\t:24小时【HH:MM:SS】
\A:24小时【HH:MM】
\T:12小时【HH:MM:SS】
@:12小时,显示上下午
?作为一个特殊的变量,?关系上一个执行命令的换回值,上一个成功执行返回0,不成功执行返回非0
[user@localhost /home]$name=er deng ==>错误格式的赋值
bash: deng: 未找到命令...
[user@localhost /home]$echo $? ==>读变量?
127
[user@localhost /home]$echo $? ==>上一个echo正确读取,所以返回值为0
0
4.语系变量
1.locale
语系问题可能会导致语系乱码以及时间部分的乱码,linux支持的语系非常多,locale -a 查看所有语系。
[user@localhost ~]$locale -a
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
aa_ER.utf8
aa_ER.utf8@saaho
aa_ET
aa_ET.utf8
af_ZA
af_ZA.iso88591
-----------------------------此时省略n字--------------------------------
2.read
键盘读取
[user@localhost ~]$read atest
This is a test <==在此输入atest的变量值
[user@localhost ~]$echo $atest <==查看atest变量赋值
This is a test
[user@localhost ~]$read -p "myname :" -t 30 name <== -p后接提示符;-t后接等待时间秒数,过时不候
myname :erdeng ==>输入前面的提示myname:
[user@localhost ~]$echo $name
erdeng
3.declare
declare声明变量类型
整数类型
[user@localhost ~]$sum=100+50 ==>默认的变量属性为文字形式的属性,所以识别的100和50并不是数字,也就不能计算和
[user@localhost ~]$echo $sum
100+50
[user@localhost ~]$declare -i sum=100+50 ==>-i 将sum的类型定义成整数类型,可以进行整数的计算
[user@localhost ~]$echo $sum
150
[user@localhost ~]$declare -p sum ==> -p 可以看变量sum的属性
declare -i sum="150" ==> -i 整数类型
[user@localhost ~]$declare -x sum ==>-x ,与export作用一样,将自定义变量sum转化成环境变量
[user@localhost ~]$declare -p sum
declare -ix sum="150" ==>此时变量sum是整数类型也是环境变量
[user@localhost ~]$bash ==>接入子进程
[user@localhost ~]$ echo $sum
150 ==>150,OK!!!
[user@localhost ~]$ exit
exit ==>进入主程序
[user@localhost ~]$declare +x sum ==> -是添加,+就是取消,+x就是取消变量是全局变量
[user@localhost ~]$bash
[user@localhost ~]$ echo $sum
==>此时子进程的变量sum为空
[user@localhost ~]$ exit
exit
[user@localhost ~]$declare -r sum ==>变量sum变成只读类型
[user@localhost ~]$sum=123 ==>修改失败,制度
bash: sum: 只读变量
[user@localhost ~]$declare +r sum ==>只读权限无法修改,注销可肯能恢复
bash: declare: sum: 只读变量
[user@localhost ~]$su
密码:
[root@localhost user]# su
[root@localhost user]# su user ==>重新登录
[user@localhost ~]$ declare -p sum
declare -x sum="150" ==>-r类型没了
[user@localhost ~]$ sum=151 ==>修改变量成功
[user@localhost ~]$ echo $sum
151
[user@localhost ~]$ declare -p sum
declare -x sum="151"
数组类型
[user@localhost ~]$ var[1]="AAA"
[user@localhost ~]$ var[2]="BBB"
[user@localhost ~]$ var[3]="CCC"
[user@localhost ~]$ echo "${var[1]},${var[2]},${var[3]}"
AAA,BBB,CCC
[user@localhost ~]$ declare -p var
declare -a var='([1]="AAA" [2]="BBB" [3]="CCC")'
5.文件系统限制
1.ulimit
------------------------------------------一部分未保存丢失---------------------------------------------------
四.登录与欢迎
1./etc/issue
登录信息在/etc/issue里面
[root@localhost user]# cat /etc//issue
查看登录文件信息
\S
Kernel \r on an \m
[字符]这种变量形式在提示符设置的时候我们就遇到过,现在我们在学几个
\d本地端日期 ==> 前面已经学过
\I显示终端数量
\m显示硬件等级
\n显示主机网络名
\O显示domin name
\r操作系统版本(uname -r)
\t本地端日期
\S操作系统名
\v操作系统版本
2./etc/motd
虚拟机还在学习中,暂时还不会截图,拍的照片有点糊
前两行是登录信息,登录后成空行,此时欢迎文件/etc/motd文件是空的,所以没有欢迎的语句
在/etc/motd中编写
在次登录,欢迎信息出现
欢迎信息不仅仅可以做问候语,还可以做为root给用户的提示。
3. 环境配置文件
略
五.重定向数据
1.> >> 2> 2>> <
< 覆盖输入 ,<<追加输入
1> 覆盖将【正确数据】输入到指定的文件或设备
1>>追加将【正确数据】输入到指定的文件或设备
2> 覆盖将【错误数据】输入到指定的文件或设备
2>>追加将【错误数据】输入到指定的文件或设备
[user@localhost ~]$ ll / ==>最熟悉的ll在执行一下
总用量 20
lrwxrwxrwx. 1 root root 7 9月 21 02:29 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 21 02:52 boot
drwxr-xr-x. 20 root root 3360 9月 24 01:30 dev
drwxr-xr-x. 139 root root 8192 9月 24 01:35 etc
--------------------------此处省略n字----------------------------------
[user@localhost ~]$ ll />~/rootfile ==>屏幕无任何信息,ll原本输出的信息输入到~/.rootfile
[user@localhost ~]$ cat ~/rootfile ==>查看~/.rootfile的内容
总用量 20
lrwxrwxrwx. 1 root root 7 9月 21 02:29 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 21 02:52 boot
drwxr-xr-x. 20 root root 3360 9月 24 01:30 dev
drwxr-xr-x. 139 root root 8192 9月 24 01:35 etc
--------------------------此处省略n字----------------------------------
[user@localhost ~]$ find /home -name .bashrc >right 2> error ==
[user@localhost ~]$ cat right ==>查寻的正确结果放test1
/home/user/.bashrc
[user@localhost ~]$ cat error ==>查寻的正确结果放test2,无错误
[user@localhost ~]$ find /home -name .bashrc > right 2> error
[user@localhost ~]$ cat error ==>无错误
[user@localhost ~]$ cat right ==>找到
/home/user/.bashrc
[user@localhost ~]$ find /home -name .bashrc 2> error ==>将错误的放error,能查询到自动输出
/home/user/.bashrc ==>查询输出的结果
[user@localhost ~]$ cat error ==>无错
想要将正确错误的输出都写到一个文件怎么操作呢?
[user@localhost ~]$ find /home -name .bashrc > all 2> all ==>错误格式,两个数据同时写入,次序错乱
[user@localhost ~]$ find /home -name .bashrc >all 2>&1 ==>正确,命令从左到右读,先正确的写入all,再将错误的写入文件
[user@localhost ~]$ find /home -name .bashrc &>all ==>正确
[user@localhost ~]$ cat > in ==>cat原本是查看文件内容,现在加上 > ,也就很容易理解是将下面输入的内容输出到文件
Hello ==>输入
This is in ==>【Ctrl+d】结束
[user@localhost ~]$ cat in ==>查看文件内容
Hello
This is in
也就是创建一个文件,并直接向文件写入数据。同时有一个替代【Ctrl+d】来结束的方法
[user@localhost ~]$ cat > test <<"eof" ==>eof也可以用其他此替代,但是建议用eof
> This is test
> Bye
> eof
[user@localhost ~]$ cat test
This is test
Bye
将< 与 > 结合一起理解一下,>将信息输出到文件,< 将文件中的数据输入。
[user@localhost ~]$ cat > all < ~/.bashrc ==>前半条 cat > all 通过上一操作理解,< ~/.bashrc就是将其内容输入到新建的all文件
[user@localhost ~]$ ll all ~/.bashrc ==>all 与 ~/.bashrc像复制的一样
-rw-rw-r--. 1 user user 231 9月 24 03:32 all
-rw-r--r--. 1 user user 231 10月 31 2018 /home/user/.bashrc
无论是 < 还是 > 都是将大头的数据传到小头。还有一个就是我们不想要它的某一个输出怎么办?
[user@localhost ~]$ find /home -name .bashrc >/dev/null
[user@localhost ~]$ cat /dev/null ==>咦,按照之前的理解,/dev/null 里面是查找到的.bashrc结尾的文件
==>怎么是空的,/dev/null是一个垃圾桶黑洞设备与特殊写法,数据放进去就丢失
2. ; 、&&、||
; 前面的命令执行完接着执行后面的
&& 前面的成功执行才能执行后面的
|| 前面执行失败执行后面的,前面的成功后面的不执行
; ==> 就是从左到右执行,前面的结果对后面执行无影响不做展示
&&:前面命令执行$?=0才能执行后面
[user@localhost ~]$ ls /tmp/AAA && touch /tmp/AAA/bbb
ls: 无法访问/tmp/AAA: 没有那个文件或目录 ==>执行ls失败不再执行
[user@localhost ~]$ mkdir /tmp/AAA ==>创建/tmp/AAA后
[user@localhost ~]$ ls /tmp/AAA && touch /tmp/AAA/bbb ==>成功执行
||:前面命令执行$?不等于0才能执行后面
[user@localhost ~]$ rm -r /tmp/AAA
[user@localhost ~]$ ls /tmp/AAA|| mkdir /tmp/AAA
ls: 无法访问/tmp/AAA: 没有那个文件或目录 ==>命令从左到右执行,ls时不存在,然后创建
[user@localhost ~]$ ll /tmp/AAA ==>ok!再次查询有了,创建成功
总用量 0
[user@localhost ~]$ ll /tmp
总用量 131088
drwxrwxr-x. 2 user user 6 9月 24 04:46 AAA
六.pipe
管道将输出的数据经过几道处理得到我们想要的格式,| 前的输出数据作为 | 后的输入数据。
[user@localhost ~]$ ls -al /etc
总用量 1404
drwxr-xr-x. 139 root root 8192 9月 24 01:35 .
dr-xr-xr-x. 17 root root 224 9月 21 02:50 ..
drwxr-xr-x. 3 root root 101 9月 21 02:33 abrt
-rw-r--r--. 1 root root 16 9月 21 02:50 adjtime
-rw-r--r--. 1 root root 1518 6月 7 2013 aliases
-rw-r--r--. 1 root root 12288 9月 21 02:54 aliases.db
drwxr-xr-x. 3 root root 65 9月 21 02:38 alsa
drwxr-xr-x. 2 root root 4096 9月 21 02:39 alternatives
------------------------------此处省略n字-------------------------------
[user@localhost ~]$ ls -al /etc |less ==>查看的内容都是一样的,| less 可以前后翻
总用量 1404
drwxr-xr-x. 139 root root 8192 9月 24 01:35 .
dr-xr-xr-x. 17 root root 224 9月 21 02:50 ..
drwxr-xr-x. 3 root root 101 9月 21 02:33 abrt
-rw-r--r--. 1 root root 16 9月 21 02:50 adjtime
-rw-r--r--. 1 root root 1518 6月 7 2013 aliases
-rw-r--r--. 1 root root 12288 9月 21 02:54 aliases.db
drwxr-xr-x. 3 root root 65 9月 21 02:38 alsa
drwxr-xr-x. 2 root root 4096 9月 21 02:39 alternatives
------------------------------此处省略n字-------------------------------
1.cut
[user@localhost ~]$ echo ${PATH} ==>读取{PATH}
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/user/.local/bin:/home/user/bin
[user@localhost ~]$ echo ${PATH}|cut -d ':' -f 5 ==>-d后':'所以按 :分行,-f 后加数字n,选取第n行
/bin
[user@localhost ~]$ echo ${PATH}|cut -d ':' -f 4
/usr/sbin
[user@localhost ~]$ echo ${PATH}|cut -c 12-20 ==>-c 选取字节的第12-20个字符
bin:/usr/
cut -c n- 从第n个开始向后所有的字符
2.last
[user@localhost ~]$ last ==>输出[账号/终端/来源/日期]
user pts/0 :0 Tue Sep 24 02:00 still logged in
user pts/0 :0 Tue Sep 24 01:36 - 01:36 (00:00)
user tty2 Tue Sep 24 01:36 - 01:36 (00:00)
user tty2 Tue Sep 24 01:32 - 01:36 (00:03)
3.grep
[user@localhost ~]$ cat > /tmp/test ==>使用cat > 创建/tmp/test并写入
Hello!
This is /tmp/test
who are you? ==>【Ctrl+d】结束写入
[user@localhost ~]$ cat /tmp/test ==>查看/tmp/test
Hello!
This is /tmp/test
who are you?
[user@localhost ~]$ cat /tmp/test |grep 'is' ==> |grep 'is'==>含is的行
This is /tmp/test
[user@localhost ~]$ cat /tmp/test |grep 'e' ==>==>含e的行
Hello!
This is /tmp/test
who are you?
grep -v 不含查找字符
[user@localhost ~]$ cat /tmp/test |grep -v 'is' ==>不含is的行
Hello!
who are you?
[user@localhost ~]$ cat /tmp/test |grep -v 'e' ==>不含e的行
[user@localhost ~]$ cat /tmp/test |grep -vn 'is' ==>-n显示行号
1:Hello!
3:who are you?
[user@localhost ~]$ cat /tmp/test |grep -c 'is' ==>-c次数
2
4.sort
[user@localhost ~]$ cat /etc/passwd |sort ==>默认以文字形式的首栏首字母来排列,所以从a开始排
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:993:988::/var/lib/chrony:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
------------------------------此处省略n字---------------------------------
-t :分隔符,默认是【Tab】
-k:第几个区来分,就是说按那个区段的首字母来排序
-n:按纯数字排序
[user@localhost ~]$ sort -t ':' -k 3 /etc/passwd -n ==>以:分第三区按数字排列
root:x:0:0:root:/root:/bin/bash ==>0
bin:x:1:1:bin:/bin:/sbin/nologin ==>1
daemon:x:2:2:daemon:/sbin:/sbin/nologin ==>2
adm:x:3:4:adm:/var/adm:/sbin/nologin ==>3
----------------------------------此处省略n字------------------------------------------
5.uniq
uniq一般是排序后,对于重复的数据仅列出一个经行展示时使用
[user@localhost ~]$ last | cut -d ' ' -f1 |sort |uniq
reboot
user
wtmp
==>last列出[账号/终端/来源/日期]经过第一个管道,cut一行一行的处理,-d选项按' '分
==>隔,-f1 选取第一段分隔,所以是选取last结果的每一行的第一个分隔的内容。|sort也
==>就是排序,默认状态的排序是对字符的排序,uniq是对于重复的结果列出一个展示。
[user@localhost ~]$ last | cut -d ' ' -f1 |sort |uniq -c
1
10 reboot
30 user
1 wtmp
==>下面做了技术处理|uniq -c 是对重复的结果列出同时统计重复的数量
6.wc
wc是统计文件里的字(英文字母)、行、字符的数量
-l:行
-w:字
-m:字符
[user@localhost ~]$ wc -l -w -m /etc/passwd
43 87 2259 /etc/passwd
7.tee
我们学的 > >> 2> 2>> 都是单向输出,如是我们既想输出到屏幕又想输出到文件,这时候我们就需要用到tee
[user@localhost tmp]$ cat /tmp/test|tee /tmp/test1
Hello! ==>/tmp/test的数据输出到屏幕
This is /tmp/test
who are you?
[user@localhost tmp]$ cat /tmp/test1 ==>查看/tmp/test1的数据
Hello!
This is /tmp/test
who are you?
8.tr
tr是用来删除文件数据或替换
-d :删除
-s : 替换
[user@localhost tmp]$ cat /tmp/test ==>查看/tmp/test
Hello!
This is /tmp/test
who are you?
[user@localhost tmp]$ cat /tmp/test | tr -d 'is' ==>删除'is'
Hello!
Th /tmp/tet
who are you?
[user@localhost tmp]$ cat /tmp/test | tr -s 't' 'T' ==>替换t为T
Hello!
This is /Tmp/TesT
who are you?
9.col
-x 将tab键转化成对应的空格键 【tab】->空格,不转化是^I
10.join
连接两个文件,相同数据行相加
11.paste
同一行直接粘一起,中间用空格
12.expand
将【tab】转化为空格
13.split
将文件拆分
减号
- 可以代替管道前面输出的stout和管道后面的stdin
总结
命令很多,多做实验,后续会慢慢熟悉。