管道系列:|
、| xargs
、
重定向符号系列:>
、1>
、1>>
、2>
、2>>
、<
、<<
、&>
标准输入重定向(STDIN,文件描述符为0
):默认从键盘输入,也可从其他文件或命令输入。
标准输出重定向(STDOUT,文件描述符为1
):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2
):默认输出到屏幕。
符号 | 作用 |
---|---|
命令 < 或 0< 文件 |
将文件作为命令的标准输入(与固定命令搭配) |
命令 << 或 0<< 分界符 |
从标准输入中读入,直到遇见分界符才停止(与固定命令搭配) |
命令 < 文件1 > 文件2 |
将文件1作为命令的标准输入并将标准输出到文件2 |
1、替换awk.txt文件中abc替换为ABC
tr的替换是1对1的替换
tr 'abc' 'ABC' < awk.txt
tr 'a-z' 'A-Z' < awk.txt
2、
cat > t1.txt << EOF
liming
wangming
wolai
EOF
3、
cat >> t1.txt << EOF
liming
wangming
wolai
EOF
符号 | 作用 |
---|---|
命令 > 或 1>文件 |
将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 或 1>> 文件 |
将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2> 文件 |
将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 2>> 文件 |
将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>&1 或命令 &>> 文件 |
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
> wc -l anaconda-ks.cfg
46 anaconda-ks.cfg
> wc -l < anaconda-ks.cfg
46
> cat anaconda-ks.cfg | wc -l
46
> grep '/sbin/nologin' /etc/passwd | wc -l
33
> ls -l /etc/ | head -n 2
> ls -l /etc/ | tail -n 2
无询问的修改密码:
> echo root | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
–stdin:This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.
使用管道符,无交互的发送一封正文为“你好,我是邮件正文”,主体是“This is Subject”给root用户
*
匹配零个或多个字符,
?
匹配单个字符,
[0-9]
匹配0~9之间的单个数字的字符,
[abc]
匹配a、b、c三个字符中的任意一个字符
> ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 Aug 11 16:38 /dev/sda
brw-rw----. 1 root disk 8, 1 Aug 11 16:38 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 11 16:38 /dev/sda2
> ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 Aug 11 16:38 /dev/sda1
brw-rw----. 1 root disk 8, 2 Aug 11 16:38 /dev/sda2
定义变量,及单引号,双引号使用:
反斜杠 \
:使反斜杠后面的一个变量变为单纯的字符串。
单引号 ''
:转义其中所有的变量为单纯的字符串。
双引号 ""
:保留其中的变量属性,不进行转义处理。
反引号 ``:把其中的命令执行后返回结果。
> PRICE=5
> echo "Price is $PRICE"
Price is 5
> echo "Price is $$PRICE"
Price is 2086PRICE
> echo "Price is \$$PRICE"
Price is $5
$$作用是显示当前程序的进程ID号码
> alias hhh="grep -n network anaconda-ks.cfg"
> alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias hhh='grep -n network anaconda-ks.cfg'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
> which ls
alias ls='ls --color=auto'
/usr/bin/ls
> whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
变量名称 | 作用 | 变量名称 | 作用 |
---|---|---|---|
HOME | 用户的主目录(即家目录) | PATH | 定义解释器搜索用户执行命令的路径 |
SHELL | 用户在使用的Shell解释器名称 | LANG | 系统语言、语系名称 |
HISTSIZE | 输出的历史命令记录条数 | RANDOM | 生成一个随机数字 |
HISTFILESIZE | 保存的历史命令记录条数 | 邮件保存路径 | |
PS1 | Bash解释器的提示符 | EDITOR | 用户默认的文本编辑器 |
xargs 将执行结果字符串 转换为 命令参数
> seq 5
1
2
3
4
5
> seq 5 | xargs -n2
1 2
3 4
5
> seq 5 | xargs -n3
1 2 3
4 5
> seq 5 | xargs
1 2 3 4 5
这种情况会列出当前目录的文件
find /etc/ -type f -name "*.conf" | ls -l
这种情况:1、find查询到数据时会列出查询到数据的文件;2、如果没有find到数据时会列出当前目录的文件
find /etc/ -type f -name "*.conf" | xargs ls -l
1个输入,2个输出;(一个输出到屏幕,一个输出到文件)
覆盖写入
echo {1..10} | tee a.txt
追加写入
echo {1..10} | tee -a a.txt