管道符
将一个命令的标准输出重定向为另一个命令的标准输入(也可以理解为有一个AND的作用)
查看file1文件的前5行的内容,并编号
[root@localhost Desktop]# cat -n file1 | head -5
1 hello:csvs:fsdfv
2 111:vsd
3
4 linux linux
5 ecnjsdkv:vsv:devc
计算1+2 将输出的1+2交给bc去执行,bc是一个简易计算器
[root@localhost Desktop]# echo 1+2 | bc
3
计算从1加到100
首先输出1-100
[root@localhost Desktop]# echo {1..100}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
接着可以将空格转换为+
再用bc计算
[root@localhost Desktop]# echo {1..100} | tr ' ' '+' | bc
5050
重定向
标准输出重定向
>file 以覆盖的形式将正确输出结果输入到file文件中
>>file 以追加的形式将正确输出结果输入到file文件中
[root@localhost Desktop]# ls
2.txt A AAA file1 file2 names.txt
[root@localhost Desktop]# ls >1
[root@localhost Desktop]# cat 1
1
2.txt
A
AAA
file1
file2
names.txt
[root@localhost Desktop]# echo vvvvvvv >>1
[root@localhost Desktop]# cat 1
1
2.txt
A
AAA
file1
file2
names.txt
vvvvvvv
错误输出重定向
>file 覆盖
>>file 追加
[root@localhost Desktop]# LS 2>1
[root@localhost Desktop]# cat 1
bash: LS: command not found...
Similar command is: 'ls'
正确输出和错误输出同时保存
执行完命令不会再屏幕上输出任何信息
>file 2>&1 覆盖
>>file 2>&1 追加
正确输出和错误输出分开保存
>file_1 2>file_2 覆盖
>>file_1 2>>file_2 追加
不想将输出结果显示到屏幕上,也不想保存到文件中
command >/dev/null
输入重定向
创建两个文件,并写上内容
[root@localhost Desktop]# echo 111111111111 > file1
[root@localhost Desktop]# echo 222222222222 > file2
将names.txt的内容传递给cat
[root@localhost Desktop]# echo -e "file1\nfile2" > names.txt
[root@localhost Desktop]# cat names.txt
file1
file2
使用xargs将文本内容转化为命令参数,可以输出文件中的内容
[root@localhost Desktop]# xargs cat < names.txt
111111111111
222222222222
wc
用来统计内容
-l:统计行数
-w:统计字数(单词数),单词以空格或换行符分隔
-c:统计字节数
-m:统计字符数
-L:显示最长一行的长度(字符数)
[root@localhost Desktop]# cat 1
vnrv
bvdfb
bfdb
bdfr
bvfg
统计文件行数 6行 1为文件名
[root@localhost Desktop]# wc -l 1
6 1
字节数
[root@localhost Desktop]# wc -c 1
27 1
单词数
[root@localhost Desktop]# wc -w 1
5 1
统计有多少个用户
[root@localhost Desktop]# wc -l /etc/passwd
43 /etc/passwd
统计/bin 一共有多少个命令
[root@localhost Desktop]# ls /bin/ | wc -l
1748
别名
which:
查找命令的路径,用于确定某个命令的可执行文件在系统中的具体位置
检测命令是否存在
识别别名:若某个命令是别名,which会显示别名的信息
alias:查看别名列表
unalias:可以移除别名
创建别名
将ll定义为执行s -l --color=auto命令,显示彩色的长列表格式
alias ll='ls -l --color=auto'
查看所有已定义的别名 alias
[root@localhost Desktop]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
查看特定别名
[root@localhost Desktop]# alias ll
alias ll='ls -l --color=auto'
取消别名 unalias
[root@localhost Desktop]# unalias ll
[root@localhost Desktop]# alias ll
bash: alias: ll: not found
删除别名 unalias -a
禁用临时别名 \命令名
永久生效的别名,要将命令写入用户的~/.bashrc
打开~/.bashrc
nano ~/.bashrc
将命令写入文件,保存后,运行下面命令生效
bash
复制代码
souce ~/.bashrc
使用type命令来检测命令是内部命令还是外部命令
内部命令直接由shell处理,外部命令通常为可执行文件,存储在系统文件路径中(/bin等)
[root@localhost Desktop]# type cat
cat is hashed (/usr/bin/cat) 外部
[root@localhost Desktop]# type echo
echo is a shell builtin 内部
[root@localhost Desktop]# type touch
touch is /usr/bin/touch 外部
压缩归档tar
归档只是将文件或目录打包成一个文件,并不进行压缩。常用tar归档位.tar文件
-c:创建归档文件
-x:解压归档文件
-z:使用gzip压缩或解压
-j:使用bzip2压缩或解压
-v:显示详细操作过程
-f:指定归档文件的名称
-k:解压时保留源文件
压缩是将文件进行编码以减少其占用的内存空间。常用gzip-->.gz文件、bzip-->.bz2文件、xz-->.xz文件
[root@localhost Desktop]# dd if=/dev/zero of=/tmp/test bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.253933 s, 413 MB/s
验证文件大小
[root@localhost Desktop]# du -sh /tmp/test
100M /tmp/test
压缩速度快,压缩率低
[root@localhost Desktop]# cd /tmp/
[root@localhost tmp]# gzip test
用ls列出会看到红色的test.gz
解压
参数解压 gzip -d test.gz
命令解压 gunzip test.gz
速度慢,压缩率高
bzip test
解压
bzip2 -d test.bz2
bunzip2 test.bz2