linux命令详解
命令语法介绍
命令 【参数】 【文件或路径】
rm -f /etc/hosts
注:命令和参数至少一个空格(可以多个连着写) 路径不带空格
1,中括号[]表示可选,即命令的参数和与路径是可选的,
2,参数选项表示使用一个命令的不同的功能。
用命令练习下
先说下 windows/linux盘符合目录的结构
windows 是分盘符 有C,D,E 盘, linux 只有一个盘符 / 它为所有的目录的顶点
创建一个目录命令
mkdir /data(根下) mkdir data(桌面)
查看可以是 ls 更精准的是 ls -ld data
-l(long)长格式 d (查看目录)
drwxr-xr-x. 2 root root 4096 10月 13 04:07 data
有时候需要进入目录创建文件或者目录可以用 ;(两个命令一起使用) 如:
cd data;mkdir qing.txt
切换目录:
cd change directory 改变目录的路径 如:
cd ~ cd data
cd /etc/sysconfig/network-scripts/ifcfg-eth0
相对路径和绝对路径
从 / 开始的路径是绝对路径
不从 / 开始是相对路径
显示当前路径 pwd print work directory
打印工作路径 (显示当前路径)
touch命令 (摸,触摸)
没有创建,有就修改文件的时间属性。如:
touch zhang.txt
cd data;touch zhang.txt
cd data;mkdir zhang
创建完文件了我们怎样写内容呢?
vi 编辑器
常规操作;
执行 vi zhang.txt进入文件,
点击 a 或者 i 进入编辑模式,写入想要写的内容如:这是美好的一天。
写完以后按sec按:wq 保存退出,write quit
不想保存是 :q 强制退出 :q!
这里会有人说vim 编辑器了 vi和vim的区别:
vi 是简单的记事本,
vim 是复杂的编辑器,在以后写shell或者python用的比较多,有高亮,缩进等功能。
在平常情况下没什么区别。
我们只是想加一个内容感觉用这个vi有点复杂所以我们可以用 echo 命令(打印的意思,吃啥打啥)
echo 命令(有点危险)如想在zhang.txt里面写东西,(里面本来是有定西会覆盖原有的文章)
如果没有就创建,有就覆盖
一个 > 意识是输出重定向,会清楚原有的数据
echo '覆盖新的内容'>zhang.txt
两个 >> 意识是追加重定向 追加内容 只在末尾追加
echo '追加'>> zhang.txt
注了解:追加多行可以在编辑器上写好,在粘贴上去。如:
echo 'zhang
yao
qing'>>zhang.txt
另一种多行追加方式:
cat >>/data/zhang.txt<<EOF
追加的内容,
多行。。。
多行。。。
EOP
注:>> 写到那个文件,
<< EOF EOF 是成对出现的,如果和要追加的内容有一样的单词还有问题。
cat >>text.txt<<EOF
zhang
yao
qing zhang.txt
EOF
> 表示数据的流向,
0>标准输入(stdin)
1>标准正常输出(stdout)
2>标准错误输出(stdrr)
有了echo以后输入多个字符时,可以分组如:
echo 1 2 3 4 5 6 7 8 >zhang.txt 输入1 2 3 4 .......
xargs -n 2 <zhang.txt
结果 1 2
3 4
.....
xargs 从标准输入中获取内容创建和分组, 有一个参数 -n 是分组
cp 复制 copy
没有参数时 只拷贝文件
-r 是递归拷贝
-a 是带提示拷贝
-p 连同档案的属性复制过去,而非使用默认属性
如:cp zhang.txt /tmp 拷贝单个文件
cp -r data /tmp 默认是不能拷贝目录的,但是加上 -r ( r 是递归 )
rm (remove 删除目录和文件 )
- r 递归 用于删除
-f 强制(force)
-i 询问用户是否确认删除,用 y n
如: rm zhang.txt 删除文件
rm -f zhang.txt 不带提示的删除文件
rm -rf data 递归删除目录
注:删除命令要慎用,非常的危险,删除前一定要备份。 也可以放到/tmp目录里面
mv 移动文件或者目录
如 :mv zhang.txt /tmp 移动文件
mv data tmp 移动目录
(重要命令) find 查找 -type 文件类型(f(file)) ,d (directory), c(charactor),b(block),s(socket),l(link), -name '文件名 ' ,-mtime 时间,按时间查找,时间数字
+7 以前 , 7 第七天 -7 最近7天 。
如: 查找特定的文件。
find /data -type f -name '*.txt' 在data目录下查找名字是以.txt结尾的文件。
想结合 mv 使用如:
mv `find /data -type f -name '*.txt' /tmp 插到的文件移动到 /tmp 遵循mv 的规则,前面用反引号。
返回上级命令 cd .. 或者 cd ../ (两个点)
(重要命令) grep 过滤内容 -v 排除的内容,
例如:grep -v text zhang.txt 在zhang.txt里面排除text文本,显示其他的。
head 头,
默认是显示前10行。-n
head -2 text.txt 只去前2行。
tail 尾, 尾巴
输出文件的后n行,默认10行,-n 习惯-5
如: tail -3 text.txt 输出倒数3行
连续创建目录 mkdir -p /aa/bb/cc/dd 递归创建。
-p 是递归创建
创建完了可以用 tree 命令查看树状图,
yum install tree -y 这个需要先安装tree
如: tree /aa
结果是树状图。
问题:现在有个需求是,/tmp/test.txt 拷贝到 /mnt 不让它提示。
两种方法:
\cp /tmp/test.txt /mnt/
/bin/cp /tmp/test.txt /mnt
unalias cp (不要用,练习用,临时起效,重启恢复原来) unalias 取消别名
注:为什么要这样呢。(别名的作用)
alias 查看和设置别名
unalias 取消别名
如 : alias rm='echo not commed does use'
通过 alias 命令查看,危险的命令默认都是会提示,让人确认的。
1,系统为一些危险的命令加一些保护的命令,防止人为误操作。
2,把很复杂的命令或者字符串变成一个简单的命令,或者字符串。
问题:只查看test.txt文件(100行)内第20到第30行的内容
sep = sequence 序列
sed stream editor 流编辑器 linux 三剑客老二,实现对文件的正删改查。
-n 代表行 p 代表打印
awk 老大 三剑客 过滤,输出内容
awk 'NR'>19&&NR>31 text.txt NR 是行号。
grep 老三 三剑客 过滤内容
grep 20 -A 10 text.txt 除了20行之后的多少行
grep 20 -B10 text.txt 除了20行之前的多少行
grep 20 -C 10 text.txt 除了20行前后多少行