Linux(2):基础命令
linux 的规则:
1. linux 命令行组成结构:如下
[root@neo ~]#
[用户名@主机名 当前工作路径]#
~ 用户的家目录
2. linux系统命令操作语法的格式(命令的样子):
命令 空格 -[参数选项(条件)] [文件或路径(你要处理的内容)]
如: rm -f /tmp/test/txt
提示:
1. 一般情况下命令中的 [] 表示 可选,既命令的参数及文件是可选的;
2. 参数选项 ===> 一个命令的不同的功能(不同的条件)
3. linux目录结构:
windows目录: C:\windows\ # \ 反斜线
linux目录:/etc/hosts # / 根目录 (一切从根开始);并且 路径的分割符号 / 斜线
3.1 创建目录:
# 创建一个目录 /data
创建目录 ===> make directory ===> mk dir ===> mkdir ls /data # 查看 /data 目录下的内容
ls -l /data # 查看 /data 目录下的详细信息
ll /data # 查看 /data 目录下的详细信息
3.2 # 创建文件:
# 在 /data 目录下创建一个文件 test.txt
touch /data/test.txt # touch 命令 创建文件;touch 其实是用于更新文件的时间戳(如果文件不存在则创建,存在则更新文件时间)
3.3 # 为 test.txt 增加内容 "i am studying linux":
# 方法一:vi # 相当于 "记事本" ;vim # 相当于 "notepad++" (多用vim)
vi /data/test.txt # 编辑文件内容
cat /data/test.txt # 查看文件内容
# 方法二: echo 命令
echo 内容 # echo 命令会将它后面的内容 显示到屏幕上
echo 内容 >>/路径/文件 # > 就相当于一个漏斗(重定向符号),>> 作用是追加(追加重定向符号;把内容放在文件的最后一行),把 echo 后的内容放到一个地方,如:echo hello world >>/data/helloworld.txt
# 方法三:向一个文件中放入多行内容
cat >>/路径/文件<<EOF # >>表示追加; << 就固定写法,后面是结束标识符;EOF:end of file
内容1
内容2
...
EOF # EOF 要和第一行的 EOF完全一致;不能有空格
# 如:
cat >>/data/test.txt<<EOF
hello
world
EOF
漏斗家族:漏斗 即 重定向符号
> 和 >>
> 或 1> :标准输出(正确的内容)重定向:会清除文件原有内容,把 > (或 1>)前面的内容输入到后边的文件中
>> 或 1>> : 追加输出重定向:把前面的东西输入到后边的文件中,还会清除文件原有内容,只是追加到文件的最后一行
# 1 表示 标准输出:执行正确的内容才会通过漏斗; 1> 相当于 > , 1>> 相当于 >>
# 除了能写 1 外,还可以写 2; 2> 表示 标准错误重定向 ,2>> 表示 错误追加重定向,(只有错误的信息能通过)如下:
eco hello 2>>/data/helloworld.txt # 错误信息放入 /data/helloworld.txt 中 eco hello >>/data/helloworld.txt 2>>/data/helloworld.txt # 正确信息 和 错误信息 都放入 /data/helloworld.txt 中
# 上面的命令可简写为:
eco hello >>/data/helloworld.txt 2>&1 # 2>&1 的作用: 把错误的信息放入到对的信息中,结果就是对的、错的信息都在一起
< 和 <<
< :输入重定向 (很少使用)
# 示例:
[root@neo ~]# echo 1 2 3 4 5 >/data/num.txt # 创建环境
[root@neo ~]# cat /data/num.txt
1 2 3 4 5
[root@neo ~]# xargs -n2 </data/num.txt # xargs 用于分列, -n 表示分为几列
1 2
3 4
5 << :追加输入重定向
# 示例:
cat >>/data/test.txt<<EOF
hello
world
EOF
linux下的复制粘贴:
复制文件:把 /data/helloworld.txt 复制到 /tmp 目录下
# cp # 复制的命令
cp /data/helloworld.txt /tmp/ # 复制文件 # 注意:操作前要备份,操作后检查
# 备份:
cp /data/helloworld.txt /data/helloworld.txt.bak # 备份文件
复制文件夹: 把 /data 目录复制到 /tmp 下
# linux 下好多命令无法直接处理目录(文件夹)
cp -r /data/ /tmp/ # cp -r 表示复制这个目录(文件夹)及这个目录下的所有文件和文件夹; -r 表示递归
cp -a /data/ /opt/ # cp -a 也表示复制文件夹 # cp 命令的参数:
-r --- 递归复制;复制目录及目录里面的内容
-p --- 复制的时候保持属性不变 -a --- 相当于 -pdr , 表示复制所有
linux下的移动:
mv # 移动的命令;移动文件或文件夹
# 把 /data 目录移动到 /root 目录下:
mv /data/ /root/
linux下的删除:
删除文件:
# 进入 /root 目录下的 data目录,删除 helloworld.txt 文件
# 注意:删除前要先备份
rm helloworld.txt # 这种方式的删除会有询问是否删除
rm -f helloworld.txt # -f 直接删除
删除目录:
rm -r /tmp/data/ # rm -r 删除目录,这种方式的删除会有询问
rm -rf /tmp/data/ # rm -rf 直接删除目录 ; 注意:这种删除方式要慎用 # rm 参数:
-r --- 递归删除
-f --- 强制删除
删除的安全方式:
find 命令:
find 路径 -type f -name "文件名" # 查找文件; -type f 表示 文件类型, -name "文件名" 表示要查找的文件名(文件名必须完全匹配才能找到;也可用正则匹配),如下:
find /root/ -type f -name "helloworld.txt" find 命令参数:
-type # 找什么类型的
f --- file 文件
d --- directory 目录
管道 ---》|
管道的概念: 把前面命令的结果 通过“管道”传递给后面的命令
find ...|xargs # find | xargs 是固定搭配,如下:
[root@neo ~]# find /root/data/ -type f -name "*.txt"|xargs ls -l
-rw-r--r--. 1 root root 12 Mar 8 15:09 /root/data/helloworld.txt
-rw-r--r--. 1 root root 10 Mar 8 14:52 /root/data/num.txt
-rw-r--r--. 1 root root 33 Mar 8 00:28 /root/data/test.txt
# find /root/data/ -type f -name "*.txt"|xargs ls -l # 命令解释:find 找到的结果 通过管道 传递给 xargs 后面的命令,即把 find结果放到 ls -l 后面 # 通过find 能够更精确地找到要删除的文件,降低误删
grep & head/tail & awk & sed 命令:
# 要求:已知文件 test.txt内容如下:
test
neo
zheng
# 要求输出 test.txt 文件内容时,不包含 zhe 字符串 # 创建测试文件:
mkdir /data
cat >/data/test.txt<<EOF
test
neo
zheng
EOF
方法一:
# grep "内容" 文件名 :过滤 --- 在文件中找到你想要的内容(找到一行内容)
[root@neo ~]# grep "zhe" /data/test.txt
zheng # grep -v : 用于排除 (排除内容所在的那一行)
[root@neo ~]# grep -v "zhe" /data/test.txt
test
neo
方法二:
# head 命令: 取一个文件的前几行可用 head 命令
head 文件 # 默认取出文件的前10行,如下:
[root@neo ~]# head /data/test.txt
test
neo
zheng # 取出前2行命令:head -n2 test.txt 或者 head -2 test.txt
[root@neo ~]# head -n2 /data/test.txt
test
neo
[root@neo ~]# head -2 /data/test.txt
test
neo # tail 命令:取出文件的最后多少行(用法和heah一样)
tail 文件名 # 默认显示文件的最后10行
[root@neo ~]# tail /data/test.txt
test
neo
zheng # 取出文件的最后2行:
[root@neo ~]# tail -2 /data/test.txt
neo
zheng
方法三:
# awk 命令:awk '/内容/' 文件 # 单引号斜线中 是过滤的内容,如下:
[root@neo ~]# awk '/zhe/' /data/test.txt
zheng # awk 排除: awk '!/内容/' 文件 # awk 中 ! 表示取反
[root@neo ~]# awk '!/zhe/' /data/test.txt
test
neo
方法四:
# sed 命令:sed '/内容/d' 文件 # 去掉文件中的内容,如下:
[root@neo ~]# sed '/zhe/d' /data/test.txt
test
neo
mkdir -p 命令:
要求:使用一条命令完成创建目录 /neozheng/test,即创建 /neozheng目录及 /neozheng/test
# mkdir 命令默认一次只能创建一层目录
# mkdir -p 命令可以一次创建多层目录
[root@neo ~]# mkdir /neozheng/test
mkdir: cannot create directory `/neozheng/test': No such file or directory
[root@neo ~]# mkdir -p /neozheng/test
[root@neo ~]# ls /neozheng/
test
linux 别名:
要求: 已知 /tmp 下已经存在 helloworld.txt 文件,要求执行命令把 /mnt/helloworld.txt 拷贝到 /tmp 下覆盖掉 /tmp/helloworld.txt,而让系统不提示是否覆盖(root权限下)
1. 创建环境
touch /tmp/helloworld.txt /mnt/helloworld.txt # touch 可一次创建多个文件 [root@neo ~]# cp /mnt/helloworld.txt /tmp/
cp: overwrite `/tmp/helloworld.txt'? ^C
[root@neo ~]#
方法一:撬棍(反斜线 \)
# 在 cp 前加上 \ :\cp [root@neo ~]# \cp /mnt/helloworld.txt /tmp/
[root@neo ~]#
方法二:使用命令的绝对路径(全路径)
# 找一个命令的位置(如:cp 命令): which cp
[root@neo ~]# which cp
alias cp='cp -i'
/bin/cp
[root@neo ~]# /bin/cp /mnt/helloworld.txt /tmp/
[root@neo ~]# # 为什么我们执行 cp 命令的时候就相当于 cp -i # -i 是提示的作用
# 为什么我们执行 rm 命令的时候就相当于 rm -i
### 是因为 linux 的别名
# linux 别名的作用:
1. 防止运行危险命令
2. 简化命令
如何设置一个别名 ?
1. 查看系统中的别名:alias 命令
[root@neo ~]# 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@neo ~]# alias cp mv rm
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
2. 模仿
# 执行rm命令的时候提示 do not use rm
# 利用: alias rm='echo do not use rm' # 1. = 左右两边不能有空格;2. = 右边是 单引号;3. 单引号中必须是一个命令 # 注:这是一种临时性的别名更改,如重新连接后就会变成以前的别名(不再是你设置的别名)
[root@neo ~]# rm /tmp/helloworld.txt
do not use rm /tmp/helloworld.txt
[root@neo ~]# rm -f /tmp/helloworld.txt
do not use rm -f /tmp/helloworld.txt
[root@neo ~]# rm -rf /tmp/helloworld.txt
do not use rm -rf /tmp/helloworld.txt
[root@neo ~]# # 这种情况下,如果真的想删,还是可以用上面的两种方式(撬棍和命令的绝对路径),因为这两种方法是临时取消别名的方法;如下:
[root@neo ~]# \rm /tmp/helloworld.txt
[root@neo ~]# ls -l /tmp/
total 0
[root@neo ~]# cp /mnt/helloworld.txt /tmp/
[root@neo ~]# ls -l /tmp/
total 0
-rw-r--r--. 1 root root 0 Mar 10 00:02 helloworld.txt
[root@neo ~]# /bin/rm /tmp/helloworld.txt
[root@neo ~]# ls -l /tmp/
total 0
3. 永久生效的别名:写入到 /etc/profile 文件
# 3.1 把 alias rm='echo do not use rm' 这条命令保存到 /etc/profile 文件中
# 3.2 让 /etc/profile 文件生效: source /etc/profile
[root@neo ~]# tail -1 /etc/profile
alias rm='echo do not use rm'
[root@neo ~]# source /etc/profile
[root@neo ~]# alias rm
alias rm='echo do not use rm'
[root@neo ~]# rm -f /mnt/helloworld.txt
do not use rm -f /mnt/helloworld.txt # 补充: vim 快捷键
# 移到光标到文件的最后一行(命令行状态): G
# 把光标移动到文件的第一行(命令行状态): gg
# 在光标所在位置的下一行插入一个空行,并进入编辑状态: o (小写的o)
4. 填坑:上面的第3种方法有个坑: rm cp 和 mv 这三个命令修改别名时,需要修改 /root/.bashrc 这个文件,把对应的命令别名前加上注释 # ;要不然重启连接 xshell 后别名又恢复成了原先的
[root@neo ~]# vim /root/.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@neo ~]# rm /mnt/helloworld.txt
do not use rm /mnt/helloworld.txt # 这样重新连接后也是 cm mv 和 cp 这三个命令的别名也仍然是你自己修改的别名;这样当你真的想删除文件时,在 rm 前加上 撬棍 --- \rm
要求: 只查看 ett.txt 文件(共100行)内第20到第30行的内容
1. 准备环境
# seq 数字 # 生成 数字 ,如下:
[root@neo /]# seq 10.1
1
2
3
4
5
6
7
8
9
10
[root@neo /]# seq 100 >/neozheng/ett.txt # 创建环境
[root@neo /]# tail /neozheng/ett.txt
91
92
93
94
95
96
97
98
99
100
方法一:sed 命令
# sed 命令是默认输出:sed命令会把文件的内容 默认都显示出来
sed '20p' /neozheng/ett.txt # '20p' --- 20 表示第20行,p 表示在终端显示;这条命令会把第20行在屏幕显示出来,由于 sed 命令会默认把文件内容都显示出来,所以第20行会显示2遍,如下:
1
...
20
20
...
100 # sed -n 表示取消默认显示,如下:
[root@neo ~]# sed -n '20p' /neozheng/ett.txt
20 # 显示第20行到第30行: sed -n '20,30p' 文件
[root@neo ~]# sed -n '20,30p' /neozheng/ett.txt
20
21
22
23
24
25
26
27
28
29
30
方法二: head + tail
# 先利用 head 命令取出前10行,通过“管道”再利用 tail 取出后11行,如下:
[root@neo ~]# head -30 /neozheng/ett.txt | tail -11
20
21
22
23
24
25
26
27
28
29
30
方法三: awk 命令
# awk 'NR==20' : 在 awk 命令中, NR表示 行号,== 表示 等于,20表示行号,如下:
[root@neo ~]# awk 'NR==20' /neozheng/ett.txt
20 # 第20行到第30行
[root@neo ~]# awk 'NR==20,NR==30' /neozheng/ett.txt
20
21
22
23
24
25
26
27
28
29
30 # grep 命令补充: grep -A数字 '内容' 文件 # 在文件中找到该内容所有行的内容,并再显示出 该内容所在行的下面多少行的内容(-A 后面的数字)
[root@neo ~]# grep -A3 '20' /neozheng/ett.txt
20
21
22
23
要求:把 /neozheng 目录及其子目录下所有以扩展名 .sh 结尾的文件中, 文件包含 neozheng 的字符串全部替换为 NEOZHENG
1. 创建测试环境:
mkdir -p /neozheng/test
cd /neozheng
echo "neozheng">test/del.sh
echo "neozheng">test.sh
echo "neozheng">t.sh
touch neo.txt
touch alex.txt
方法一:find ... |xargs sed -i 命令
# find 命令: find 后面什么都不加的时候 表示 显示当前目录下所有的信息,如下:
[root@neo neozheng]# find
.
./ett.txt
./test.sh
./t.sh
./neo.txt
./alex.txt
./test
./test/del.sh
2. 找出你要的文件
[root@neo neozheng]# find /neozheng/ -type f -name "*.sh"
/neozheng/test.sh
/neozheng/t.sh
/neozheng/test/del.sh
[root@neo neozheng]#
3. 把一个文件的内容从 neozheng 替换为 NEOZHENG
# sed 命令的替换: sed 's#找的内容#替换为什么#g' /路径/文件 # 要用 单引号
[root@neo neozheng]# cat /neozheng/t.sh
neozheng
[root@neo neozheng]# sed 's#neozheng#NEOZHENG#g' /neozheng/t.sh
NEOZHENG
[root@neo neozheng]# cat /neozheng/t.sh
neozheng
[root@neo neozheng]#
# 由上可知, sed 命令只是让修改的内容在屏幕显示,并没有真正修改文件的内容 # linux 下大部分命令都没有办法直接改文件的内容(除了vi 和 vim )
# sed 命令修改文件的内容: sed -i 命令
[root@neo ~]# sed -i 's#neozheng#NEOZHENG#g' /neozheng/t.sh
[root@neo ~]# cat /neozheng/t.sh
NEOZHENG
[root@neo ~]#
4. 把 find 命令找到的所有文件交给sed命令处理 (重点*)
[root@neo ~]# find /neozheng/ -type f -name "*.sh"
/neozheng/test.sh
/neozheng/t.sh
/neozheng/test/del.sh
[root@neo ~]# find /neozheng/ -type f -name "*.sh"|xargs sed 's#neozheng#NEOZHENG#g'
NEOZHENG
NEOZHENG
NEOZHENG
[root@neo ~]# find /neozheng/ -type f -name "*.sh"|xargs sed 's#neozheng#NEOZHENG#g' -i
[root@neo ~]# find /neozheng/ -type f -name "*.sh"|xargs cat
NEOZHENG
NEOZHENG
NEOZHENG
[root@neo ~]# # 补充命令: man
# linux 中查询帮助: man 命令
运维常用工具:
word优化:
"文件" ---> "选项" ---> "校对" --->
1. "在Word中更正拼写和语法时" 这个选项下面的都 取消掉
2. 点击 "自动更正选项(A)..." --->
2.1 "自动更新"---取消 "键入时自动替换";并取消 "更正前两个字母连续大写","句首字母大写","表格单元格的首字母大写","英文日期第一个字母大写"和"更正意外使用大写锁定键产生的大小写错误"
2.2 "键入时自动套用格式" --- 取消 "直引号替换为弯引号" 和 "连字符替换为长划线"
2.3 "自动套用格式" --- 取消 "直引号替换为弯引号" 和 "连字符替换为长划线" "文件" ---> "选项" ---> "保存" --->
设置 "保存自动恢复信息时间间隔" 和 "自动恢复文件位置" notepad++ 设置:
"设置" ---> "首先项" ---> 选上"多选显示" --->
1. "常用" ---> 选上"多选显示"
2. "文件关联" ---> Notepad --> .txt 和 .log
3. "备份" ---> "备份" 选择 "简单备份",并选上 "使用自定义备份目录" picpick 设置:
"程序选项" --->
1. "常规" ---> 修改 "语言"
2. "截取" ---> 选上 "总是复制截图到剪贴板"
3. "文件名" 选 "日期"
4. "自动保存" ---> 选上 "自动保存图像" 亿图 设置:
1. 安装 破解版
2. "选项" ---> "常规" --->
2.1 修改 "自动保存间隔" 和 "撤消次数"
2.2 取消 "在程序启动时自动检验更新" 3. "选项" ---> "Quick Access T..." ---> "视图" ---> "显示库窗口" --- Add
Linux(2):基础命令的更多相关文章
- Linux系统基础命令
这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ...
- Linux(三)——Unix&Linux 的基础命令
Linux(三)--Unix&Linux 的基础命令 快捷键 Ctl-A 光标移动到行首 Ctl-C 终止命令 Ctl-D 注销登录 Ctl-E 光标移动到行尾 Ctl-U 删除光标到行首的所 ...
- Linux常用基础命令整理:关机命令、查看目录下文件命令等
Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...
- Linux 的基础命令的操作
Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...
- Linux的基础命令大全
linux的基础命令大全 1.shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器) ls -al /bin/sh ls -al /bin/bash 查看这些shell的 ...
- linux 02 基础命令
linux 02 基础命令 1.alias 别名 pyvip@Vip:~/demo$ alias lh="ls -lh" #将ls -lh的功能赋给lh(lh原来并没有意义)这个赋 ...
- linux 01 基础命令
linux 01 基础命令 对于Linux要记住一个概念,一切皆文件,哪怕是目录,也是一个文件 1.修改用户密码 sudo passwd pyvip@Vip:~$ #pyvip表示用户名, Vip表示 ...
- Linux常用基础命令(二)
Linux常用基础命令 一.-ls--列表显示目录内容 二.-alias--设置别名 三.-du--统计目录及文件空间占用情况 四.-mkdir--创建新目录 五.-touch--创建空文件 六.-l ...
- Linux的基础命令, django的安装与使用
一. Linux一些基础指令 cat命令, 用于查看纯文本文件(常用于内容较少的) cat 校花的故事.txt # 查看文件 cat -n 校花的故事.txt # 查看文件并显示行号 -n 显示行号 ...
- 【第四课】Linux的基础命令使用
目录 一.passwd重置密码 二.单用户模式 三.救援模式 四.设置SElinux 五.Linux的常用基础命令详解 5.1.mkdir命令 5.2.ls命令 5.3.cd命令 5.4.chmod命 ...
随机推荐
- ASP.NET MVC5的一个轻量级的框架学习的第一天
第二步第三部 这是第一天的小试成功,怪自己太笨了,一个错排查好久,还好有源码看着了解,后续还得多努力,
- CF385C Bear and Prime Numbers
思路: 需要对埃氏筛法的时间复杂度有正确的认识(O(nlog(log(n)))),我都以为肯定超时了,结果能过. 实现: #include <bits/stdc++.h> using na ...
- 【学习笔记】深入理解js原型和闭包(12)——简介【作用域】
提到作用域,有一句话大家(有js开发经验者)可能比较熟悉:“javascript没有块级作用域”.所谓“块”,就是大括号“{}”中间的语句.例如if语句: 再比如for语句: 所以,我们在编写代码的时 ...
- 一份最贴近真实面试的Java基础面试题
这是一份Java基础知识的面试题.在网上的关于Java的面试题数不胜数,但认真看过感觉大多数都没有实用性,有很多是面试官根本就不会问到的,那些已经脱离了实际开发的技术问题.而这份资料来源自一份个人觉得 ...
- 在git远程仓创建项目之后,提交本地项目的使用方法
命令介绍 git 用户配置 git config --global user.name "张三" git config --global user.email "zhag ...
- Java子类与父类方法的隐藏和覆盖
class Base{ int x = 1; static int y = 2; String name(){ return "mother" ...
- HYSBZ 1503 郁闷的出纳员 (Splay树)
题意: 作为一名出纳员,我的任务之一便是统计每位员工的工资.但是我们的老板反复无常,经常调整员工的工资.如果他心情好,就可能把每位员工的工资加上一个相同的量.反之,如果心情不好,就可能把他们的工资扣除 ...
- 洛谷 P1955 程序自动分析
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- Java后端学习路线_备战
SpringCloud项目实战 Dubbo项目实战 项目实战应涵括哪些技术: 缓存.消息队列 WEB应用服务器(Weblogic.Jetty.JBoss.WebSphere) NoSQL(MongoD ...
- 已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决
已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决 情况一:当该控件未注册或者已经卸载时,你尝试卸 ...