目录
管道符
管道符(”|“)的作用是将一个命令的标准输出(stdout)重定向为另一个命令的标准输入(stdin)。这样可以将命令的结果一步步传递给后续的命令,避免冗余的中间步骤
命令A | 命令B | 命令C
- 命令 A 执行并将结果输出
- 命令 B 接收命令 A 的输出作为输入,执行并输出结果
- 命令 C 接收命令 B 的输出作为输入,执行并输出最终结果
//查看passwd文件前5行的信息,并编号
cat -n /etc/passwd | head -5
//逐页显示/etc/passwd文件的内容,并为每一行加上行号
cat -n /etc/passwd | more
//查看系统进程
ps -ef | tail
//将/etc/issue的文件内容,进行转化为大写,保存到/tmp/issue.out
cat /etc/issue //第一步:查看/etc/issue
tr [a-z] [A-Z] //第二步:小写转大写
> /tmp/issue.out //第三步:保存输出到/tmp/issue
完整的命令:cat /etc/issue | tr [a-z] [A-Z] > /tmp/issue.out
//计算1+2
echo 1+2 //让屏幕输出1+2
echo 1+2 | bc //让屏幕输出的内容,交给bc执行
echo {1..100} //屏幕上输出1到100
//求1到100的和
echo {1..100} //第一步:屏幕输出1到100
tr ' ' '+' //第二步:将空格转换为+号
//第三步:交给bc计算
完整的命令:echo {1..100} | tr ' ' '+' | bc
重定向
重定向允许用户将命令的输出或输入从默认位置(如屏幕或键盘)重定向到文件、另一个命令或其他设备。通过重定向符号,用户可以更灵活地控制命令的输入和输出。
重定向主要包括两种类型:输出重定向 和 输入重定向
- 输入重定向:默认数据流向某个程序,改变数据流向——将数据内容导入到其他命令
- 输出重定向:默认数据流向屏幕,改变数据流向,导入其他命令或文件
输出重定向
标准输出重定向
command >file //以覆盖的形式,将command的正确输出结果输出到file文件中
command >>file //以追加的形式,将command的正确输出结果输出到file文件中
错误输出重定向
command 2>file //以覆盖的形式,将command的错误输出结果输出到file文件中
command 2>>file //以追加的形式,将command的错误输出结果输出到file文件中
正确输出和错误信息同时保存
command >file 2>&1 //以覆盖的形式,将command的正确和错误输出结果都输出到file文件中
command >>file 2>&1 //以追加的形式,将command的正确和错误输出结果都输出到file文件中
正确信息和错误信息分开保存
command >file1 2>file2
//以覆盖的形式,将command的正确输出结果输出到file1文件中,错误信息输出到file2文件中
command >>file1 2>>file2
//以追加的形式,将command的正确输出结果输出到file1文件中,错误信息输出到file2文件中
command >file 2>file
//不推荐,正确信息和错误信息都保存到同一个file文件中,导致文件被打开两次,产生资源竞争
不想将输出结果显示到屏幕上,又不想保存到文件中
command >/dev/null
输入重定向
command < file //使用文件的内容,作为命令的输入
command << end //从键盘读取数据,当遇到分界符end,停止
command <file1 >file2 //将file1的内容作为输入到命令,将命令的返回结果重定向到文件2中
案例
1. 创建一些测试文件 file1.txt ,file2.txt ,file3.txt 并给它们各自写入一些内容
echo "This is file 1" > file1.txt
echo "This is file 2" > file2.txt
echo "This is file 3" > file3.txt
2. 创建 filenames.txt 文件,包含想要读取的文件名
echo -e "file1.txt\nfile2.txt\nfile3.txt" > filenames.txt
3. 使用输入重定向将 filenames.txt 的内容传递给 cat 命令
cat < filenames.txt
xargs cat < filenames.txt
解释,第一条命令实际上是将 filenames.txt 的内容作为标准输入传递给 cat,而不是将其内容作为文件名传递给 cat。如果要作为文件名传递给 cat,则需要使用第二条命令
xargs 命令
xargs 可以将文本内容转换为命令参数
xargs cat < filenames.txt
输出:
This is file 1
This is file 2
This is file 3
wc 命令
wc 命令是用来统计的
wc -l file //统计file文件行数
wc -c file //统计file文件字节数
wc -w file /统计file文件字数(单词数)
wc -l <<end //统计用户在终端上输入的行数,直到输入end为止结束
wc -l <file //将统计的行数输出到file文件中
wc -L file //统计file文件列数(最长的一行的长度/字符数)
wc -l /etc/passwd //统计有多少个用户
ls /bin/ | wc -l //统计/bin一共有多少命令
别名
which 命令
which 命令的作用是查找并显示可执行命令的路径。它会从环境变量 PATH 中指定的目录里查找用户输入的命令,并返回该命令的可执行文件的完整路径。如果该命令是一个别名,which 也会显示别名信息
which 命令的用途
- 查找命令的路径
- 检测命令是否存在
- 识别别名
which ls
输出:
alias ls='ls --color=auto'
/usr/bi/ls
说明ls命令的可执行文件位于/usr/bin/ls目录中
type 命令
type 命令用来检测命令是内部命令还是外部命令
- 内部命令:由 shell 自带的命令,如 echo、cd 等,它们直接由 shell 处理
- 外部命令:通常是可执行文件,存储在系统文件路径中,如 ls、touch、cat 等
通过 PATH 查找外部命令
如果输入的命令不是内部命令或别名,CentOS 7 会依次在环境变量 PATH 指定的目录中查找外部命令的执行文件
echo $PATH //查看当前系统中的搜索路径列表
alias 命令
alias 用于别名
alias 命令仅局限于本次登录时的操作,如果向永久生效,需要进入用户的家目录下,bash 初始化文件中定义
alias ll='ls -l --color=auto' //创建别名,显示彩色的长列表格式
//通过运行不带参数的alias命令,可以查看当前会话中定义的所有别名
alias
alias -p
alias 别名 //查看某个具体别名的定义
例如:alias ll
unalias 别名 //删除某个别名
例如:unalias ll
unalias -a //删除所有别名
\命令名 //临时禁用别名,临时使用原始命令,而不用定义的别名
例如:\ls
要使别名永久生效,需要将其写入用户的 ~/.bashrc 文件中
nano ~/.bashrc //永久生效的别名
tar 命令
压缩归档
tar -c //创建新的归档文件
tar -x //提取归档文件中的内容
tar -z //对归档文件使用 gzip 压缩
tar -v //显示过程信息
tar -f //指定归档文件的名称
tar -j //对归档文件使用 bzip2 压缩
tar -k //保留原文件,不覆盖
案例
1. 将所有文件都进行归档,形成all.tar的新文件
tar -cf all.tar *
2. 将 jpg 文件进行归档
touch {1..100}.jpg
tar -cf xxx.tar *.jpg
3. 归档完之后,进行 gzip 压缩
第一种:先归档,再压缩
tar -cf x.tar *
gzip x.tar
第二种:命令参数
tar -zcvf 2.tar.gz 2.txt
4. 解压归档
tar -jxf test.tar.bz2
tar -zxf test.tar.gz
5. 万能解压
tar -xf 压缩后的文件名