1.目录创建与切换
mkdir---->make directory
[root@XMJ ~]# mkdir /xmj #创建目录
[root@XMJ ~]# ll -ld /xmj/
drwxr-xr-x 2 root root 4096 May 30 09:51 /xmj/
*-p表示递归创建
[root@XMJ xmj]# mkdir a/b/c
mkdir: cannot create directory `a/b/c': No such file or directory
[root@XMJ xmj]# mkdir -p a/b/c #-p表示递归创建,非常重要的参数
[root@XMJ xmj]# ll
total 4
drwxr-xr-x 3 root root 4096 May 30 09:56 a
[root@XMJ xmj]# ls a/b
c
[root@XMJ xmj]# tree (-L n) #查看目录结构(向下查看几层)
.
`-- a
`-- b
`-- c
3 directories, 0 files
[root@XMJ ~]# touch /xmj/test.txt #创建文件
[root@XMJ ~]# ls /xmj/
a test.txt
*当新建文件名已有时,不会提示错误,但是会修改时间戳
[root@localhost data]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 11 09:05 oldboy.txt
[root@localhost data]# touch oldboy.txt
[root@localhost data]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 11 09:07 oldboy.txt
[root@localhost data]#
*同时创建多个文件
[root@localhost data]# touch 1.txt 2.txt 3.txt
[root@localhost data]# ls
1.txt 2.txt 3.txt oldboy.txt
[root@localhost data]# touch {a,b,c}.txt
[root@localhost data]# ls
1.txt 2.txt 3.txt a.txt b.txt c.txt oldboy.txt
*#批量建立1000个文件
注意:此处用的是反引号``
[root@XMJ xmj]# for f in `seq 1000`;do touch $f.txt;done
[root@XMJ xmj]# ls
1000.txt 200.txt 301.txt 402.txt 503.txt 604.txt 705.txt 806.txt 907.txt
.....
[root@XMJ xmj]# touch a.txt #多种创建文件的方式
[root@XMJ xmj]# ls
a.txt
[root@XMJ xmj]# echo >b.txt
[root@XMJ xmj]# ls
a.txt b.txt
[root@XMJ xmj]# >c.txt
[root@XMJ xmj]# ls
a.txt b.txt c.txt
[root@XMJ xmj]#
[root@XMJ /]# cd #不跟任何参数,意味着切换到自己的家目录
[root@XMJ ~]# cd /xmj/ #也可跟相对路径和绝对路径,切换到相应的位置
[root@XMJ xmj]# pwd #显示当前位置
/xmj
[root@XMJ xmj]#
.:当前目录
..:上级目录
-:上次所在的目录
2.给文件增加内容
(1)vim编辑器
i:进入插入模式
esc:退出插入模式
保存|退出:q | q! | wq | wq!
(2)echo
*一般只能往结尾追加|>覆盖|>>追加
[root@XMJ xmj]# echo "The weather is so good today!" > a.txt
-bash: !": event not found
[root@XMJ xmj]# echo "The weather is so good today" > a.txt
[root@XMJ xmj]# cat a.txt
The weather is so good today
[root@XMJ xmj]# echo "I am so happy today" >> a.txt
[root@XMJ xmj]# cat a.txt
The weather is so good today
I am so happy today
[root@XMJ xmj]# echo "Biu biu biu" > a.txt
[root@XMJ xmj]# cat a.txt
Biu biu biu
[root@XMJ xmj]#
(3)cat
[root@XMJ xmj]# >a.txt #清空文件内容
[root@XMJ xmj]# cat a.txt
[root@XMJ xmj]# cat > a.txt
I am so happy today!
The weather is so good today! #Enter之后ctrl+c|d退出编辑即可保存成功
[root@XMJ xmj]# cat a.txt
I am so happy today!
The weather is so good today!
^C
[root@XMJ xmj]#
(4)生产环境中必须会的
*非常重要:表示吧两个 FOF 之间的内容追加到 a.txt 中
可同时追加多行
>|表示覆盖
>>|表示追加
[root@XMJ xmj]# cat >> a.txt << FOF #FOF只是标签成对存在,可以随意替换|
> I am studying!
> I am so tired!
> I like studying!
> EOF
>
> FOF
[root@XMJ xmj]# cat a.txt
I am so happy today!
The weather is so good today!
I am studying!
I am so tired!
I like studying!
EOF
(>>表示追加,>表示覆盖)
[root@XMJ xmj]#
*合并两文件内容
[root@localhost linux]# cat > b.log
b.log
^C
[root@localhost linux]# cat a.log
a.log
[root@localhost linux]# cat b.log
b.log
[root@localhost linux]# cat a.log b.log > c.log
[root@localhost linux]# cat c.log
a.log
b.log
[root@localhost linux]#
3.文件复制 cp
*cp -ap(拷贝目录时需要添加的参数) 源文件 目标位置/(改名)| -p保持属性|-a.-r拷贝目录
4.文件移动 mv
*mv 源文件 目标位置
-i:如果文件存在,询问是否需要覆盖
-f:强制执行,不会询问
5.删除 rm
-f:强制删除.不加询问
-r:删除目录
*注意:rm -fr 特别危险,因此在生产环境中要谨慎使用
6.查看文件内容 cat
[root@XMJ xmj]# head -2 a.txt #-n表示前n行(不加参数默认前10行)
test
liyao
[root@XMJ xmj]#
*head 取文件开头的多少行
*tail 取文件结尾的多少行
*head|tail -n filename #指定查看filenme前|后n行
[root@XMJ xmj]# cat a.txt #查看文件内容
[root@XMJ xmj]# cat >> a.txt << XMJ
> test
> liyao
> oldboy
> XMJ
[root@XMJ xmj]# cat a.txt
test
liyao
oldboy
*对文件内容进行过滤|-v表示排除后面的内容
[root@XMJ xmj]# cat a.txt | grep -v oldboy #-v表示,排除后面的内容
test
liyao
*注意:当文件很大时,如果先使用cat进行查看然后再过滤,这样效率会非常慢的
[root@XMJ xmj]#
*可直接对文件进行处理
[root@XMJ xmj]# grep -v oldboy a.txt
test
liyao
[root@XMJ xmj]# grep oldboy a.txt
oldboy
[root@XMJ xmj]#
*grep|sed|awk linux命令三剑客,在使用时都可以直接接文件
7.grep | sed | awk Linux中非常厉害的三个命令
*需要熟练,了解各自的擅长
[root@XMJ xmj]# sed -e '/oldboy/d' a.txt #-e编辑d删除
test
liyao
*在输出过程删除oldboy字符串,不会改变文件内容
[root@XMJ xmj]# sed -n /oldboy/p a.txt #-n表示取消默认输出|相当于直接用grep过滤
oldboy
[root@XMJ xmj]#
*注意了解正则表达式
sed -n '2p' test.txt #打印第二行
sed -n '$p' test.txt #打印最后一行
sed -n '1,3p' test.txt #打印1-3行
sed -n '/vdds/'p test.txt #打印匹配vdds的行
sed -n '4,/The/'p test.txt #在第四行匹配The,若匹配,则打印
[root@XMJ xmj]# sed -n /[^oldboy]/p a.txt #^表示非 |将不是oldboy的内容打印出来
test
liyao
[root@XMJ xmj]# awk /[^oldboy]/ a.txt
test
liyao
[root@XMJ xmj]#
*grep|awk|sed都有过滤字符串的功能,grep最擅长
8.文件拷贝
[root@XMJ xmj]# tree #(-L num 表示要看的层数)
.
|-- mnt
| `-- test.txt
`-- tmp
`-- test.txt
2 directories, 2 files
[root@XMJ xmj]# cp mnt/test.txt tmp/ #alias别名中cp=‘cp -i’
cp: overwrite `tmp/test.txt'?
[root@XMJ xmj]# cp -f mnt/test.txt tmp/
cp: overwrite `tmp/test.txt'?
[root@XMJ xmj]# \cp -f mnt/test.txt tmp/ #不要提示1
[root@XMJ xmj]# /bin/cp -f mnt/test.txt tmp/ #不要提示2
注:全路径和反斜线,目的都是为了把系统的别名屏蔽掉
*mv用法同上
[root@XMJ xmj]# mv mnt/test.txt tmp/
mv: overwrite `tmp/test.txt'?
[root@XMJ xmj]# /bin/mv -f mnt/test.txt tmp/
[root@XMJ xmj]# \mv -f mnt/test.txt tmp/
mv: cannot stat `mnt/test.txt': No such file or directory
[root@XMJ xmj]#
9.alias 别名
[root@XMJ xmj]# alias
alias cp='cp -i'
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@XMJ xmj]# unalias 别名 #取消此命令的别名
[root@XMJ xmj]# cat ~/.bashrc #别名存放位置(家目录下)
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
[root@XMJ xmj]#
添加别名:
[root@XMJ xmj]# alias rm='echo "rm cmd is not allow to use."'#添加别名
[root@XMJ xmj]# rm
rm cmd is not allow to use.
[root@XMJ xmj]# ls
mnt tmp
[root@XMJ xmj]# rm -fr tmp/
rm cmd is not allow to use. -fr tmp/
[root@XMJ xmj]# unalias rm #取消别名
[root@XMJ xmj]# rm -fr tmp/
[root@XMJ xmj]# ls
mnt
[root@XMJ xmj]#
*在工作中,不希望别人使用的命令可以给它添加别名,以保证工作环境的安全性
10.查看文件所特定行数的内容
*seq 生成一个序列的数字
[root@XMJ xmj]# seq 100
1
2
.
.
.
100
[root@XMJ xmj]# seq 100 > ett.txt
[root@XMJ xmj]# cat ett.txt
1
2
.
.
.
100
[root@XMJ xmj]# tail -80 ett.txt | head #显示20-30行
21
22
23
24
25
26
27
28
29
30
[root@XMJ xmj]#
[root@XMJ xmj]# head -30 ett.txt |tail
21
22
23
24
25
26
27
28
29
30
[root@XMJ xmj]#
*sed
[root@XMJ xmj]# sed -n '20,30p' ett.txt #-n默认输出,p打印出来
20
21
22
23
24
25
26
27
28
29
30
[root@localhost linux]# seq -s " " 20 30 #-s指定分隔符以空格隔开|横着打
20 21 22 23 24 25 26 27 28 29 30
[root@XMJ xmj]#
*awk
[root@XMJ xmj]# awk '{if (NR>19 && NR<31) print $1}' ett.txt #打印20-30行
20
21
22
23
24
25
26
27
28
29
30
[root@XMJ xmj]#
*echo中的-n参数表示不换行
[root@localhost linux]# echo -n oldboy
oldboy[root@localhost linux]# echo oldboy
oldboy
[root@localhost linux]# echo -n oldboy;echo oldboy
oldboyoldboy
[root@localhost linux]#
11.重定向
*注意区分重定向(>)与追加(>>)|箭头朝哪边,数据流就流向哪边
*输出
>
>>追加
[root@XMJ xmj]# seq 5 >a.txt
[root@XMJ xmj]# cat a.txt
1
2
3
4
5
[root@XMJ xmj]# echo {a..z} > a.txt #输出重定向
[root@XMJ xmj]# cat a.txt
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@XMJ xmj]# echo {a..z} >> a.txt #在结尾追加
[root@XMJ xmj]# cat a.txt
a b c d e f g h i j k l m n o p q r s t u v w x y z
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@XMJ xmj]#
*输入
<
<<
[root@XMJ xmj]# pwd ;cat a.txt #时用 ; 可以一次执行多条命令
/xmj
a b c d e f g h i j k l m n o p q r s t u v w x y z
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@XMJ xmj]# #两次Tab可以查看出有多少条命令
Display all 1182 possibilities? (y or n)
[root@XMJ xmj]# echo $PATH #从$PATH路径里面找,如果没有,则报出找不到
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@XMJ xmj]# vim /etc/profile 想要添加路径,则往此文件里面添加
[root@XMJ xmj]#
*;——命令分割符
[root@localhost data]# ls ; pwd
ett.txt test test.txt
/data
[root@localhost data]#
12.常用快捷键
Tab 补全|可以直接tab*2查看linux中有多少条命令
*按tab键所查找的命令都是从$PATH的路径当中查找的|如果没有,则提示错误
[root@localhost data]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost data]#
Ctrl+C 终止当前任务
Ctrl+D 退出当前用户|窗口(相当于exit)
Ctrl+a 光标移动到开头
Ctrl+e -------结尾
ctrl+u 删除光标所在处之前的
ctrl+k -------------后--
13.find 命令
*特别重要
*find 路径 类型 name 名称 -exec 动作 {} \;
[root@XMJ xmj]# find /etc/ -type f -name 'services'
/etc/services
[root@XMJ xmj]#
f:文件
d:目录
[root@XMJ xmj]# find /etc -name "services" -exec rm -f {} \;
[root@XMJ xmj]# find /etc -name "services" -mtim +7 -exec rm -f {} \; #删除7天前的
[root@XMJ xmj]# find /etc -name "services" -mtim +7|xargs rm -f
14.过滤出当前目录下的目录和文件
* ^表示以...开头|在[]里面表示非
* /$表示以...结尾
*find 可以查子目录,ls 只能查一级目录
*正则表达式 . 表示任意单个字符
(1)ls -l
* -ldpF
l:长格式显示
d:显示目录
p:目录结尾加/
F:给所有文件的结尾都加内容
*区别文件和目录:颜色|文件开头-文件,d目录
[root@XMJ xmj]# ls -l
total 12
-rw-r--r-- 1 root root 0 May 30 15:19 file1
-rw-r--r-- 1 root root 0 May 30 15:19 file2
-rw-r--r-- 1 root root 0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]# ls -l | grep ^d #过滤目录以d开头的
* ^ 在[]里面表示非,在[]外面表示以..开头
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]# ls -l | grep ^- #过滤文件以-开头的
-rw-r--r-- 1 root root 0 May 30 15:19 file1
-rw-r--r-- 1 root root 0 May 30 15:19 file2
-rw-r--r-- 1 root root 0 May 30 15:19 file3
[root@XMJ xmj]#
(2)ls -lF
*目录后面都添加上了 /
链接文件则在后面加上了*
*正则表达式中以...结尾用$表示
[root@XMJ xmj]# ls -F
file1 file2 file3 linux4/ linux5/ linux6/
[root@XMJ xmj]# ls -lF
total 12
-rw-r--r-- 1 root root 0 May 30 15:19 file1
-rw-r--r-- 1 root root 0 May 30 15:19 file2
-rw-r--r-- 1 root root 0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
[root@XMJ xmj]# ls -lF | grep / #包含/的
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
[root@XMJ xmj]# ls -lF | grep /$ #必须以/结尾
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
[root@XMJ xmj]#
(3)ls -lp
*只在目录后面加/
[root@XMJ xmj]# ls -lp
total 12
-rw-r--r-- 1 root root 0 May 30 15:19 file1
-rw-r--r-- 1 root root 0 May 30 15:19 file2
-rw-r--r-- 1 root root 0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
(4)sed
[root@XMJ xmj]# ls -l | sed -n '/^d/p' #-n表示取消默认输出p表示打印
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]#
*find 可以查子目录,ls 只能查一级目录
[root@localhost data]# find /data/ (-maxdepth n:查寻的最大深度)-type d
/data/
/data/linux
[root@localhost ~]# ls /data/
ett.txt linux test test.txt
[root@localhost ~]#
[root@localhost ~]# find /data/ -maxdepth 3 -type d
/data/
/data/linux
/data/a
/data/a/b
/data/a/b/c
[root@localhost ~]#
(5)ls -lrt #查看最近更新的文件
-r:倒叙排列
-t:按时间
[root@XMJ xmj]# ls -lrt
total 12
-rw-r--r-- 1 root root 0 May 30 15:19 file3
-rw-r--r-- 1 root root 0 May 30 15:19 file2
-rw-r--r-- 1 root root 0 May 30 15:19 file1
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
[root@XMJ xmj]# echo 'ni' > file1
[root@XMJ xmj]# ls -lrt
total 16
-rw-r--r-- 1 root root 0 May 30 15:19 file3
-rw-r--r-- 1 root root 0 May 30 15:19 file2
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
-rw-r--r-- 1 root root 3 May 30 16:14 file1
[root@XMJ xmj]#
*把最近的时间显示在当前的最底下
(6)tree打印目录架构
d:显示目录
L:显示深度(级别)
14.env 显示环境变量
*env:显示修改过的环境变量
- run a program in a modified environment(运行一个程序,在一个修改的环境变量)
[root@XMJ xmj]# env | grep -i xmj #-i不区分大小写
HOSTNAME=XMJ
PWD=/root/xmj
[root@XMJ xmj]#
15.color参数,可以使结果显示出相对应的颜色
[root@XMJ ~]# grep 1521 /etc/services
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@XMJ ~]# grep 1521 /etc/services --color
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@XMJ ~]#
16../configer编译时加上了版本号,如果不需要该版本号该怎么办
*做链接
*升级版本时,可以把好之前的旧版本做个链接,便于查询保留
[root@XMJ xmj]# mkdir /application/apache2.2.17 -p
[root@XMJ xmj]# ln -s /application/apache2.2.17/ /application/apache
[root@XMJ xmj]# ll /application/
total 4
lrwxrwxrwx 1 root root 26 May 30 18:26 apache -> /application/apache2.2.17/
drwxr-xr-x 2 root root 4096 May 30 18:26 apache2.2.17
[root@XMJ xmj]# touch /application/apache2.2.17/linux
[root@XMJ xmj]# ls /application/apache
linux
[root@XMJ xmj]# ll /application/apache/
total 0
-rw-r--r-- 1 root root 0 May 30 18:31 linux
[root@XMJ xmj]#
17.已知 apache 服务的访问日志按天记录在服务器本地目录 /app/logs 下,由于磁盘空间紧张,现在要求只能保留最近7天访问的日志!请问如何解决?
(1)删除7天前的,删除前要做备份(备份到服务器上去)
(2)从apache服务配置上着手
*安装cronolog日志轮询软件,并在apache中如下形式按周轮询访问日志(生产环境中较为常见)
*按周轮询,自动覆盖
[root@XMJ xmj]# clustomlog "| /usr/local/sbin/cronlogn /app/logs/access_www_%w.log" combined
[root@XMJ xmj]#
*这样配置之后最多只能有7份日志文件(按周循环覆盖:推荐)
(3)使用 find 方法删除
*find 用于删除系统的林时文件和垃圾文件
将任务放在定时任务中
*atime:被访问(access)过的时间
*ctime:被change过的时间
*mtime:被修改(modification)过的----很重要
+4:表示4天以前
4:表示第四天
-4:表示最近4天
----|----|-----
+4 4 -4
18.跟踪一个文件结尾的变化
*用tail看日志,因为日志是可变的,tail可以监测到变化的结尾,而cat不能
[root@XMJ xmj]# tail -f(F) /var/log/messages #系统日志文件
f:一旦文件被删,创建同名文件,找不到
F:一旦文件被删,创建同名文件,继续监控
May 30 14:14:47 XMJ kernel: [ 5.390924] IPv6: Loaded, but administratively disabled, reboot required to enable
May 30 14:14:47 XMJ kernel: [ 5.415852] ip6_tables: (C) 2000-2006 Netfilter Core Team
May 30 14:14:47 XMJ kdump: No crashkernel parameter specified for running kernel
May 30 14:14:47 XMJ acpid: starting up
May 30 14:14:47 XMJ acpid: 1 rule loaded
May 30 14:14:47 XMJ acpid: waiting for events: event logging is off
May 30 14:15:00 XMJ kernel: [ 22.347027] type=1305 audit(1496124900.422:11775): auid=4294967295 ses=4294967295 op="remove rule" key=(null) list=4 res=1
May 30 14:15:00 XMJ kernel: [ 22.347032] type=1305 audit(1496124900.422:11776): audit_enabled=0 old=1 auid=4294967295 ses=4294967295 res=1
May 30 14:15:00 XMJ kernel: [ 22.528639] readahead-collector: sorting
May 30 14:15:00 XMJ kernel: [ 22.557147] readahead-collector: finished
*重新打开一个shell
[root@XMJ ~]# echo "1111">>/var/log/messages
可观察到 1111 追加到了文件后面
.....
May 30 14:15:00 XMJ kernel: [ 22.557147] readahead-collector: finished
1111
.....
19.打印配置文件nginx.conf内容及行数
[root@server2 conf]# cat -n nginx.conf #最常见
vim编辑:set nu(添加行号) | set nonu 取消行号
[root@server2 conf]# nl nginx.conf
20.装完系统后,希望网络文件共享服务NFS,仅在3级别上开机自启,该如何做?
Linux的运行等级设定如下(0--6七个):
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:文本模式:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
^^^^设置系统启动级别
*chkconfig #设置开机启动时的状态,与当前状态无关
[root@XMJ ~]# chkconfig --list sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@XMJ ~]# chkconfig --level 245 sshd off
[root@XMJ ~]# chkconfig --list sshd
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
[root@XMJ ~]#
*或者将其写到 /etc/rc.d/rc.local
**了解开机启动流程
21.字符集
22.打包
*规范:先切换到要打包目录的上层目录,然后进行打包
*gzip格式
打包: zcvf | zcf
解包: xvf | xf | zxvf
*进到要打包的上级目录去打包
[root@XMJ xmj]# ls
file1 file2 file3 linux4 linux5 linux6
[root@XMJ xmj]# tar zcvf file1.tar.gz file1
*z(压缩)|c(创建)|v(显示输出)|f(文件) |p(把持属性)
file1
[root@XMJ xmj]# ll
total 24
-rw-r--r-- 1 root root 3 May 30 16:14 file1
-rw-r--r-- 1 root root 118 May 30 20:36 file1.tar.gz
-rw-r--r-- 1 root root 3 May 30 16:16 file2
-rw-r--r-- 1 root root 0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]#
*如果希望留着目录结构
[root@XMJ ~]# tar zcvf ifcfg-eth0.tar.gz /etc/sysconfig/network-scripts/ifcfg-eth0
tar: Removing leading `/' from member names
/etc/sysconfig/network-scripts/ifcfg-eth0
[root@XMJ ~]# tar zxvf ifcfg-eth0.tar.gz #解压
etc/sysconfig/network-scripts/ifcfg-eth0
[root@XMJ ~]# tree etc/
etc/
`-- sysconfig
`-- network-scripts
`-- ifcfg-eth0
2 directories, 1 file
[root@XMJ ~]#
*--exclude=filename filename不打包 #排除打包
[root@XMJ ~]# tar xf XXX.tar.gz #解压,不显示过程
*解压
-C:指定解压路径
x:解包
[root@XMJ xmj]# ls
file1 file1.tar.gz file2 file3 linux1 linux4 linux5 linux6
[root@XMJ xmj]# tar xf file1.tar.gz linux4
tar: linux4: Not found in archive
tar: Exiting with failure status due to previous errors
[root@XMJ xmj]# tar xf file1.tar.gz -C linux4
[root@XMJ xmj]# ls
file1 file1.tar.gz file2 file3 linux1 linux4 linux5 linux6
[root@XMJ xmj]# ls linux4/
file1
[root@XMJ xmj]# tar xvf file1.tar.gz -C linux5
v:显示过程
file1
[root@XMJ xmj]# tar xf file1.tar.gz -C linux5
[root@XMJ xmj]#
*bzip格式
打包: jcvf | jcf
解包: jxf | jxvf
[root@XMJ xmj]# tar jcvf file2.tar.bz file2
file2
[root@XMJ xmj]# ls
file1 file1.tar.gz file2 file2.tar.bz file3 linux1 linux4 linux5 linux6
[root@XMJ xmj]# tar jxf file2.tar.bz -C linux5
[root@XMJ xmj]#
*unzip | gzip 解包命令(数据库时会使用) |解压rar
23.cut 取文件内容的一部分,功能简单,易用
[root@XMJ xmj]# cat file1
The weather is so good today
[root@XMJ xmj]# cut -d " " -f2,4 file1
*-d:指定分隔符
-f:指定要输出的列数
-c:指定字符
weather so
[root@XMJ xmj]# cut -c 3-5,7-9 file1
e wath
[root@XMJ xmj]# cut -c 3-5,7- file1
e wather is so good today
[root@XMJ xmj]#
24.awk多分隔符的方法
*文件操作复杂时,建议使用awk(awk可以同时指定多个分隔符)
[root@XMJ xmj]# cat file1
The weather is,so good today
[root@XMJ xmj]# awk -F '[ ,]' '{print $3}' file1
is
[root@XMJ xmj]# awk -F '[ ,]' '{print $5}' file1
good
[root@XMJ xmj]# awk -F '[ ,]' '{print $3" "$5}' file1 #注意" "的使用
is good
[root@XMJ xmj]# awk -F '[ ,]' '{print $3" "$NF}' file1 #$NF表示结尾
is today
*$NF 直接出最后一列
[root@XMJ xmj]#
25.查看 /etc/services 有多少行
wc -l(查看行数)| -c() | -w()
*wc在生产环境中最重要的应用,把查到的进程或者其它的内容编程一个数量
[root@XMJ ~]# wc -l /etc/services
10774 /etc/services
[root@XMJ ~]# cat -n /etc/services | tail -1
10774 iqobject 48619/udp # iqobject
[root@XMJ ~]# sed -n '$=' /etc/services
10774
[root@XMJ ~]# awk '{print NR}' /etc/services | tail -1
10774
[root@XMJ ~]# grep -n $ /etc/services | tail -1
10774:iqobject 48619/udp # iqobject
[root@XMJ ~]#
*wc的生产环境应用:把查到的内容等变成数量
[root@XMJ ~]# ps -ef | grep ssh
*ps 查看进程信息
常用参数: ef | aux(w)
-x:显示运行在后台的进程
-u:显示进程的拥有者
-f:显示进程的详细信息
%cpu:显示cpu信息
pid:进程的pid
.....
root 982 1 0 14:14 ? 00:00:00 /usr/sbin/sshd
root 6068 32626 0 21:43 pts/1 00:00:00 grep ssh
root 28038 982 0 19:07 ? 00:00:00 sshd: root@pts/0
root 32622 982 0 20:16 ? 00:00:00 sshd: root@pts/1
[root@XMJ ~]# ps -ef | grep ssh | wc -l #大于1表示服务还或者
4
[root@XMJ ~]#
26:过滤出/etc/services 文件包含3306和1521两行数字的内容
[root@XMJ ~]# grep -E "3306|1521" /etc/services
*若需要过滤多个参数,则用|分隔开就好
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@XMJ ~]# grep -E "3306|1521" /etc/services --colour #显示出颜色
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@XMJ ~]#
27.环境变量
*增加环境变量的方法:
1.将命令文件放入已有的环境变量之下
2.将命令路径写入/root/.bash_profile
[root@localhost ~]# vim /etc/xmj
echo "You are so beautiful"
[root@localhost ~]# xmj
bash: xmj: command not found...
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# ll /etc/xmj
-rw-r--r--. 1 root root 28 Jul 13 06:40 /etc/xmj
[root@localhost ~]# chmod 700 /etc/xmj
[root@localhost ~]# mv /etc/xmj /usr/sbin/
[root@localhost ~]# xmj
You are so beautiful
[root@localhost ~]#
28.查看最近更新的文件
*在查看日志时非常有用
[root@localhost ~]# mkdir /etc/xiaowan
[root@localhost ~]# touch /etc/abcd.txt
[root@localhost ~]# ls -lrt /etc/ #r倒叙排|t按时间
.....
drwxr-xr-x. 2 root root 6 Jul 13 06:47 xiaowan
-rw-r--r--. 1 root root 0 Jul 13 06:48 abcd.txt
[root@localhost ~]#
[口头表达部分]
1.描述linux从开机到登陆界面的启动过程
开机其通BIOS自检,加载硬盘
MBR引导
grub引导菜单
加载内核kernel
启动init进程
读取inittab文件,执行rc.sysinit,rc等脚本
启动mingetty,进入系统登陆界面
2.描述linux下软连接和硬连接的区别
3.描述linux shell中单引号、双引号以及不加引号的区别
4.描述linux运行级别0-6的各自含义
5.描述linux下文件删除的原理
[Other]
29.取出/etiantian文件的权限644
[root@localhost ~]# stat -c %a /data/
755
[root@localhost ~]#
[root@XMJ ~]# touch /etiantian
[root@XMJ ~]# ls -l /etiantian
-rw-r--r-- 1 root root 0 Jul 16 16:36 /etiantian
[root@XMJ ~]# stat /etiantian
File: `/etiantian'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 15 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-07-16 16:36:13.000000000 +0800
Modify: 2017-07-16 16:36:13.000000000 +0800
Change: 2017-07-16 16:36:13.000000000 +0800
[root@XMJ ~]# stat /etiantian | sed -n 4p
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@XMJ ~]# stat /etiantian | sed -n 4p
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2
0644/-rw-r--r--) Uid:
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2 | cut "/" -f1
cut: /: Is a directory
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2 | cut -d "/" -f1
0644
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2 | cut -d "/" -f1|cut -c 2-4
644
[root@XMJ ~]# stat /etiantian | head -4|tail -1 | cut -d "(" -f2 | cut -d "/" -f1|cut -c 2-4
644
[root@XMJ ~]#
30.mkdir创建一个目录,查看其硬链接数
31.ifconfig查看IP,过滤出IP地址
[root@localhost ~]# ifconfig |sed -n 2p
inet 172.25.66.100 netmask 255.255.255.0 broadcast 172.25.66.255
[root@localhost ~]#
32.重要文件功能
/etc/sysctl.conf 内核参数
/etc/hosts 本地域名解析
33.vim快捷键
shift+g 结尾
gg 开头
:set nu添加行号
$ 本行结尾
^/0 本行开头
u 撤销
dnd 删除n行(注意光标定位)
/关键字 搜索(n:向下匹配)
yny 复制n行
34.过滤掉文件中的空格
[root@XMJ xmj]# vim blank
[root@XMJ xmj]# cat blank
sjkhffkd
jkdljf
jkdsf
jklsdjf
[root@XMJ xmj]# grep -v "^$" blank #最简单 ^$:表示以空格开头
sjkhffkd
jkdljf
jkdsf
jklsdjf
[root@XMJ xmj]#
35.关机
shutdown -h now 立刻关机
shutdown -h +1 1分钟以后关机
init 0
poweroff 立即停止系统并且关闭电源
36.重启
reboot
shutdown -r now
shutdown -r +1 #1分钟后重启
init6
37.注销
logout
exit
ctrl+d
——-END——-