特殊符号:
. 点 cd . 表示当前目录
' '' 单引号,所见即所得 原封不动输出
" ""双引号,里面的特殊符号会被解析运行
`` ====$( ) 先运行() 里的命令,把结果留下
> 重定向符号 先清空文件内容, 再追加文件最后一行
>> 标准输出追加重定向, 把内容追加到文件最后结尾.
2> 错误重定向, 只有错误的信息才会通过漏斗进入文件中(先清空,再追加)
2>> 错误追加重定向(只追加)
~ 当前用户家目录
root /root
old /home/old
! 使用查找并运行历史命令
!awk 找到最近的一条包含awk的历史命令
history |grep awk (相当于) # history 显示历史命令
# 注释
root用户的命令提示符
$ awk $ 表示取某一列内容
普通用户命令提示符
* 所有 任何东西
撬棍, 反斜线,转义字符
&& 前一个命令执行成功再执行后面一个命令 ifdown eth0 && ifup eth0 (重启)
|| 前一个命令执行失败再执行后面的命令 (shell编程会用到)
eco && echo ok
eco || echo ok 用的较少
通配符:
找出以.log 结尾的文件 find /var/log -type f -name "*.log"
* 所有, 任意 "*.log" "*.txt"
找出文件名包含oldboy的文件
find /oldboy/ -type f -name "*oldboy" 找出以oldboy结尾的文件(这条命令意思)
find /oldboy/ -type f -name "*oldboy*" 这条是文件名包含oldboy的文件
{ } 生成序列
echo {1..6} > /oldboy/test.txt
[root@luffy001 oldboy]# echo {1..6}
1 2 3 4 5 6
cp oldboy.txt{,.bak} 会同时生成一个.txt文件的备份 .txt.bak 的文件
-rw-r--r--. 1 root root 27 Nov 13 14:51 oldboy.txt
-rw-r--r-- 1 root root 27 Nov 13 15:04 oldboy.txt.bak 逗号隔开,之前的就是.txt文件, 之后的就是.txt.bak 文件
正则表达式:
引子: 一个文本文件 如何判断哪一行的内容是身份证号码: 18位, 包含数字字母 ( 判断) id.txt
@1 正则表达式是按照行进行处理的
@2禁止使用中文字符.
# 给grep和egrep 配置别名
alias grep="grep --color=auto"
alias egrep="egrep --color=auto"
写入到/etc/profile 中 source /etc/profile 使其生效即可.
cat >>/etc/profile<<EOF
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
EOF
source /etc/profile
grep 和awk 过滤空行的命令;
grep '^$' test.txt (grep命令过滤空行)
grep -v '^$' test (grep -v 参数取反) grep -vn '^$' test.txt -nv 取反并显示行号
awk '/^$/' test.txt (awk 过滤空行)
awk '!/^$/' test.txt (awk 中用! 取反) 取出除了空行之外的行的内容.
sed命令排除空行
sed '/^$/d' test.txt 排除空行, /^$ 表示空行的内容.
使用grep egrep 过滤出文件的前两行内容, test.txt (head -n2)
egrep 'oldboy'
Linux下文件系统的软链接,硬链接
创建软链接, ln -s 别名 文件名 ln -s oldboy /old/oldboy.txt
创建硬链接, ln 原文件 新命名文件
在test目录下再创建一个目录 mkdir -p /lodboy/test/001 硬链接数变成了3个
找出当前目录下所有文件,将文件中'a' 替换成'b'
find /company -type f -name '*.txt"|xargs sed -i 's#a#b#g' (找出这个目录下所有txt文件,并将其中的a字符替换成b字符)
方法二:
sed -i 's#a#b#g' $(find /company -type f -name '*.txt") 意思就是将后面执行的结果给前面命令处理
sed -i 's#a#b#g' `find /company -type f -name '*.txt"` 反引号效果一样的
方法三:
find /company -type f -name '*.txt" -exec ls -l {} ;
例题: 请问一个命令加什么参数可以实现下面的命令的内容在同一行输出.
echo "wooyun";echo "wooyun"
答: echo "wooyun" `echo "wooyun"` 或者 echo "wooyun" $(echo "oldboy") 均能实现以上效果 , 如果输出为单独两行 就用&& 连接两条命令.
请给出如下格式的date命令
例::11-02-26
再给出实现按周输出,比如
`` $( ) 先运行里面的命令,再将结果展示出来.
date命令
date +%F 显示的是年月日 date +%Y-%m-%d
[root@luffy001 oldboy]# date +%F
2018-11-14
[root@luffy001 oldboy]# date +%Y-%m-%d
2018-11-14
date +%w 显示的是周几.
显示年-月-日-周几
date +%F-%w
date +%T 时分秒 的时间 ===> date+%H:%M:%S
[root@luffy001 oldboy]# date +%T
15:57:20
显示3天前的日期
date -d "-3day" +%F
date -s 设置时间
date -s "+1hour" 往后设置时间
ntp服务器,给网上的ntp服务器对时间
ntpdate pool.ntp.org
pool.ntp.org
ntp1.aliyun.com
基础正则 和高级正则