Linux基础命令和修改Linux终端输出颜色

一、增

1、创建文件夹

复制代码
1. 创建一个文件夹
mkdir test

2. 递归创建
在当前位置创建a/b/c
mkdir -p a/b/c

3. 递归创建a/b和c/d
mkdir  -p  a/b  c/d

4. 递归创建test/a,b,c三个文件夹
/test/a
/test/b
/test/c

mkdir -p test/{a,b,c}
复制代码

 

2、创建普通文件

touch test.py

 

3、touch还可以修改文件的时间

touch -t '年月日时分秒' 文件   其中年和秒是可选的
touch -t '201901072220' test.py  2019年1月7日22点20分

 

二、查

1、 查看某个文件夹下的内容

复制代码
1. ls命令的参数
-l   以树桩显示文件夹内容,详细信息
-a   显示隐藏内容
-la  显示目录内容的详细信息,且显示隐藏文件 

2. 示例
ls        --> 查看当前路径下的内容
ls /tmp   --> 查看指定路径下的内容

ls -l     --> 查看当前路径下的内容的详细信息
ls -a     --> 查看当前路径下的内容,包括隐藏文件
ls -la      --> 查看当前路径下的内容的详细信息,包括隐藏文件

ls -l 简写 ll
复制代码

 

2、查看当前所在的路径

pwd

 

3、查看内容较少的文件的内容

复制代码
1. 普通查看
cat test.py

2. 查看文件,显示行号
cat -n test.py

3. 在每一行的结尾加上$符
cat -E test.py

4. 查看文件,显示行号并在每一行的结尾加上$符
cat -n -E test.py

5. 追加内容
[root@localhost tmp]# cat >> test.py << EOF
> 嘿嘿嘿
> EOF

6. tac
tac就是cat倒过来写,
输出的内容也是倒过来输出的
复制代码

 

4、查看内容较多的文件

复制代码
1. more
more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。
more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容。

more /etc/passwd
空格space:翻页
回车键:向下读取内容
q键:退出more

缺点:more模式下,不能向前面翻页

2. less
less /etc/passwd
[pagedown]: 向下翻动一页
[pageup]:   向上翻动一页

q键:退出less


同时查看多个文件
less /etc/passwd test.py

默认查看第一个文件
    输入 n 后,切换到 test.py
    输入 p 后,切换到/etc/passwd
复制代码

 

5、通配符

查看/etc下的所有内容
ls /etc*

 

6、查看系统版本

# 查看系统的版本信息
cat /etc/os-release  # 查看系统的版本信息(通用)
cat /etc/redhat-release  # 查看红帽系列的系统(不是红帽系列的系统查看不到信息)

 

三、改

1、改变当前的目录/位置

复制代码
cd(change directory) 更改目录 
.  当前目录
.. 上一级目录
~  家目录
-  上一次所在的目录
cd
~ cd - cd /home
复制代码

 

2、移动

mv(move) 移动目录/文件
mv  你想移动的对象  移动到哪
mv /tmp/test.py /home

 

3、改名

mv还有一个重命名的作用
mv 旧的文件名  新的文件名
mv test.py test2222.py

 

4、重定向输出符

输出 > 输入
echo "Hello Linux" > test.py
ls > test.py

 

四、删

删除命令慎用!看好!
删除命令慎用!看好!
删除命令慎用!看好!

复制代码
1. 参数  
-r  递归删除目录和内容
-i  需要删除确认(rm命令默认就有-i参数)
-f  强制删除,不需要确认

2. 删除文件
rm  文件名
rm test.py

3. 删除目录
rm -r 目录 需要删除确认
rm -rf 目录 不需要删除确认

4. 删除所有东西
rm -rf /路径*  !!!!慎用

5.删除空文件夹
rmdir 空文件夹
复制代码

 

五、其他

0、命令提示符

复制代码
1. 例如:[root@localhost tmp]# 
root:用户名
@:占位符 
localhost:主机名
tmp:当前所在的路径

2. 查看主机名
hostname

3. 修改主机名
hostnamectl set-hostname ZBJ  退出会话重新登录后生效

4. 修改命令提示符
# 在linux中,变量只设置一次的话,只对当前会话生效,退出会话后失效
# 将这个表量写入到这个文件中 /etc/profile 可永久生效, 例如PATH PS1
通过修改PS1变量来控制命令提示符的显示 \u 用户名 \h 主机名 \W 最后一位工作目录 \w 绝对路径工作目录 \t 显示24h制的时间 默认的PS1是:[\u@\h \W]\$
--> [用户名@主机名 最后一位工作目录]$ 我们可以修改 PS1="[\u@\h \w \t]\\$" --> [用户名@主机名 绝对路径工作目录 时间]$
\\$:root用户显示 # 普通用户显示 $
5. 默认终端 linux系统默认有 f1-f7 7个终端,使用 ctrl + alt + f1~f7进行切换 默认 f1终端是 图形化终端
复制代码

 

1、创建普通用户

useradd 用户名 
passwd  用户名

 

2、文本编辑

复制代码
vi命令,就是linux下一个文本编辑器,如同windows的记事本
vim 这个命令就是加强版的记事本,notepad++

写入文件内容
1.vi test.py    进入vi命令模式,输入i命令,进入编辑模式

2.在编辑模式下写入
    如果要让python支持中文
    #coding:utf8
    print("爱是一道光,很开心!!" )

3.按下esc回到命令模式,退出编辑模式

4.输入:wq! 写入保存代码
    :     进入底线命令模式
    :w   将文件内容写入
    
    :q   不保存退出
    :q!  不保存强制退出
    
    :x   保存退出
    :wq! 强制保存退出

5.python test.py 执行代码脚本

6. 显示/隐藏行号
1. 显示行号
:set number
或者
:set nu


2. 取消行号显示
:set nu!
复制代码

 

3、Xshell快捷键(键盘上的键)

tab  命令补全键
ctrl + d  退出会话 
ctrl + shift + r  快速登录上一次的会话
ctrl + l  清理终端显示(相当于clear)

 

4、便捷命令

clear 清屏
退出当前会话 logout

 

5、PATH

复制代码
1. 类比windows中的环境变量
当你在系统中配置了python的环境变量,
当你在cmd中直接输入python这个相对路径的命令时,
系统就会去从path中一个一个去找,找到你配置的python的环境变量,然后执行这个目录下python.exe,
因此你才能直接在cmd输入python进入python解释器,如果没有配置环境变量,在cmd中也是可以执行的,
只是麻烦一些,需要输入python解释器的路径\python,例如 C:\Python\Python36\python

注意
    path是有优先级的,且windows中环境变量以分号 ; 区分不同的环境变量。
    更重要的是,环境变量只能配置到目录,不能是文件。

2. Linux中的环境变量
linux的变量定义,不能含有空格,环境变量以冒号 : 区分不同的环境变量。
linux的环境变量是一个大写PATH的变量,查看当前环境变量:echo $PATH
复制代码

 

6、时区修改

命令:tzselect
根据提示修改即可

 

7、stat命令

复制代码
显示文件或文件系统的状态。
用法: stat  [参数]  文件

参数列表:
-L --dereference     跟随链接
-f --file-system     显示文件系统状态而非文件状态
-c --format=格式     使用指定输出格式代替默认值,每用一次指定格式换一新行
   --printf=格式     类似 --format,但是会解释反斜杠转义符,不使用换行作输出结尾。
                     如果你仍希望使用换行,可以在格式中加入"\n"
-t --terse           使用简洁格式输出
   --help            显示此帮助信息并退出
   --version         显示版本信息并退出

格式化输出参数:
  %a    八进制权限
  %A   用可读性较好的方式输出权限


#实例1
[root@master tmp]# stat a.txt
  File: 'a.txt'
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 17348002    Links: 1
(权限)Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
(最近访问)Access: 2018-07-10 15:30:00.000000000 +0800
(最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
(最近改动)Change: 2018-11-07 15:38:36.400989868 +0800
Birth: -

"""
用stat命令可以看到某个文件/文件夹的名称、大小、权限等,
这里还需要注意三个时间:
Access:ATime ——文件的最近访问时间,只要读取(仅仅是访问,没有改动),ATime就会更新
Modify: MTime ——文件的内容最近修改的时间,当文件被修改的时,MTime就会更新
Change: CTime——文件属性最近修改的时间,当文件的属性被修改,包括权限,大小,属性等等,CTime也就会更新
"""

# 实例2,显示文件权限
[root@master tmp]# stat -c %a 1.txt
644
[root@master tmp]# stat -c %A 1.txt
-rw-r--r--
复制代码

 

8、echo

复制代码
echo命令用于在终端输出字符串或变量提取后的值,格式是 echo 字符串|$变量
把内容显示到终端上    
echo "你好,绿光"

把变量显示到终端上
echo $PATH

把内容写入文件
echo "你好,绿光" > /tmp/test.py
复制代码

 

9、特殊符号

复制代码
# 输入/输出 重定向符号
1.>     重定向符号,清空原文件所有内容,再写入新的内容
2.>>    追加重定向,把新的内容追加到文件的结尾
3.<     输入重定向,清空原文件所有内容,再写入输入的新内容
4.<<    输入重定向,把输入的新内容追加到文件的结尾

echo "绿光" > /tmp/test.py  # 会清空test.py原本的内容,再写入新的内容
echo "是你" >> /tmp/test.py # 会在原本的内容后面追加新的内容

cat >> /tmp/test.py << EOF

ip addr > /tmp/test.py  #把命令执行结果信息,放入到文件中
复制代码

 

 

10、cp拷贝

复制代码
1. 拷贝test.py到/etc目录下
cp test.py /etc/

2. 复制test.py顺便改名为test2.py
cp test.py /etc/test2.py

3. 参数
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变    可以用stat
cp -a 相当于-pdr

递归复制test1文件夹,改名为test2
cp -r test test2

cp是个好命令,操作文件前,先备份
cp test.py test.py.bak
复制代码

 

 

11、某些特殊的查

复制代码
1. 查找命令文件的绝对路径
which 命令
which ls 

2. 查看当前使用的用户
whoami

3. 查看命令的帮助手册
命令 --help   查看简略的手册
man  命令     进入less模式查看命令手册

ls --help
man ls

4. 查看linux进程信息
命令:ps  # 相当于windows的任务管理器

参数:
    -e 显示所有进程
    -f 全格式

示例:    
ps -e   显示所有进程,且显示进程所使用的环境变量。
ps -f   用ASCII字符显示树状结构,表达程序间的相互关系


ps -ef  是用标准的格式显示进程!!!
UID         PID   PPID   C    STIME    TTY          TIME       CMD
root         2      0    0    15:41     ?         00:00:00  [kthreadd]
root       87794  87790  0    17:18    pts/0      00:00:00    -bash

其中各列的内容意思如下:
UID    //用户ID、但输出的是用户名 
PID    //进程的ID 
PPID   //父进程ID 
C      //进程占用CPU的百分比 
STIME  //进程启动到现在的时间 
TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
CMD    //命令的名称和参数

ps -aux  是用BSD的格式来显示,跟ps -ef相类似!!!


5. 查看端口
命令:netstat

参数:
    -a (all)显示所有选项,netstat默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
    -l 仅列出有在 Listen (监听) 的服務状态

    -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计 (重要)
    -c 每隔一个固定时间,执行该netstat命令。 

示例:
列出所有端口:     netstat -a
列出所有tcp端口:  netstat -at
列出所有udp端口:  netstat -au

常用:
    netstat -tunlp
复制代码

 

12、alias给命令设置别名

复制代码
1. 查看系统默认有哪些别名
alias

可以看到一些命令的默认别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
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'

查看某个命令的别名
alias rm

2. 别名作用
我们在linux中使用cp时候相当于执行了cp -i
-i:覆盖已有文件或目录之前先询问用户

别名是为了让你在使用比较危险的操作,给你一些提示,防止你犯错

3. 如何设置别名
alias rm="echo '别删库呀,跑路都跑不了!'"
下次出现rm命令时,就只会在终端显示'别删库呀,跑路都跑不了!',而不会执行删除操作了。
但是退出登录后,再次登录,rm命令的别名就会恢复为系统默认的别名。

4. 让设置的别名永久生效
写入到/etc/profile(针对登录用户的合同,设置环境变量)
第一步:vim /etc/profile #编辑文件
第二步:按大写的G键,快速定位到最后一行
第三步:按小写的o键,在当前行的下一行,创建一个新行,进入编辑模式
第四步:把这句代码 source /etc/profile 写在新行,保存退出 #读取文件(合同生效)

5. 取消别名
unalias rm
复制代码

 

13、find查找命令(在某个目录下找某文件)

复制代码
1. find语法
find 在哪里找(目录) [找什么类型的文件] 要找的文件名是什么

2. 参数
-name 按照文件名查找文件
-type 查找某一类型的文件,诸如:
    f - 普通文件
    d - 目录
    l - 符号链接文件(快捷方式)

    b - 块设备文件
    c - 字符设备文件
    p - 管道文件
    
    s - socket文件

3. 例子
# 找到/etc下网卡的配置文件(名字是以 ifcfg开头)
find /etc/ -name ifcfg*

# 找到/etc下所有名字以host开头的文件(引号加不加都行)
find /etc/ -name 'host*'

# 找到/opt上一个名为settings.py
find /opt/ -name 'settings.py'

# 找出/tmp所有以 .txt结尾的文件
find /tmp/ -type f -name "*.txt"
复制代码

 

14、grep(在某个段内容中找某个内容)

复制代码
global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来,
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

1. 语法
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择
-r : 递归搜索
--color=auto : 给关键词部分添加颜色

2. grep常用操作
grep  "你想搜索的内容"   在哪里搜索(文件)

3. 示例
grep 'root' passwd        在passwd文件中找到有"root"内容的所有行
grep -n 'root' passwd     在passwd文件中找到有"root"内容的所有行,并显示行号
grep -i 'ROOT' passwd     在passwd文件中找到有"ROOT"内容的所有行,忽略大小写
grep -v 'root' passwd     在passwd文件中找到没有"root"内容的行
grep -n -i 'Root' passwd  在passwd文件中找到有"Root"内容的行,且忽略大小写


4.在某个目录下递归搜索某段字符串
"""
cd 进入你要搜索的目录下,输入命令:grep -rn "你要搜索的字符串"
这个命令会列出文件夹及子文件夹下所有文件里面包含搜索字符的文件及相关行。
"""
例如:
cd /tmp
grep -rn zbj  # 此时就会输出/tmp目录及其子目录所有包含zbj的文件

# 结果
a.txt:1:zbj = 帅锅  # 文件名:行号:内容
b.txt:5:zbj真的帅
复制代码

 

15、管道符

复制代码
1. 用法
Linux提供的管道符“|”将两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
命令1 | 命令2 |命令3  --> 把命令1的结果传到命令2中,由命令2对其进行二次处理,再把结果给命令3进行第三次处理...

2. 例子
找到/tmp目录下所有txt文件
ls /tmp/|grep '.txt'  
# ls /tmp/的结果相当于生成了一个含有/tmp/目录所有文件名的文件,把结果传给grep命令,grep在结果找'.txt'结尾的

检查nginx的端口是否存活
netstat -tunlp |grep nginx
复制代码

 

16、查看

history     查看操作历史记录
tree 路径   树状图的形式查看目录结构(需要下载 yum install tree -y)

 

17、head、tail命令

复制代码
1. 命令
head [-n] 某个文件:显示文件前几行,n默认是10
tail [-n] 某个文件:显示文件后几行,n默认是10

2. 示例
查看前两行
head -2 test.py

查看后两行
tail -2 test.py

显示文件10-20行之间的内容!!!
思路:先拿到前20行,然后通过管道符,丢给第二个命令 tail去处理
head -20 test.py | tail -11

3. tail的-f参数
持续刷新显示文件的内容
tail -f test.py  // 会一直夯在那里,只有test.py被修改了,立刻把修改的内容也显示出来
复制代码

 

18、sed

复制代码
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

1. 命令格式
sed [options] 'command' file(s)
sed [选项] [动作] 文件

2. 参数(选项)
  -n, --quiet, --silent
    仅显示script处理后的结果

  -e 脚本, --expression=脚本
    以选项中的指定的script(脚本命令)来处理输入的文本文件(不会修改文本文件的内容)
                 
  -f 脚本文件, --file=脚本文件
    以选项中指定的script文件(脚本文件)来处理输入的文本文件(不会修改文本文件的内容)

  -i
    直接修改读取的文本文件内容,而不是输出到终端(会修改文本文件的内容)

  -r, --regexp-extended
    在脚本中使用扩展正则表达式(不会修改文本文件的内容)
                 
  --help
    显示帮助
    
  --version
    显示版本信息

如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准输入读取数据。
即:如果没有指定选项,默认等于 -e 选项

3.动作
3-1.常用动作
s 替换指定字符。(substitute)
i 在当前行上面插入文本。(insert)
a 在当前行下面插入文本。(append)
c 把选定的行改为新的文本。(change)
d 删除,删除选择的行。(delete)
D 删除模板块的第一行。
p 打印模板块的行。(print)
P(大写) 打印模板块的第一行。

3-2.其他动作
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。  
W file 写并追加模板块的第一行到file末尾。  
! 表示后面的命令对所有没有被选定的行发生作用。  
= 打印当前行号码。  
# 把注释扩展到下一个换行符以前。 


4.示例1
# 首先查看a.txt的内容
cat a.txt
111
222
333
111

# 在每一行上面添加"qqq"
sed 'iqqq' a.txt  # 即等于:sed -e 'iqqq' a.txt
qqq
111
qqq
222
qqq
333
qqq
111

# 此时a.txt的内容是没有改变的,因为这里只是输出到了终端
# 如果想a.txt的内容也改变,使用选项-i,修改a.txt文件
# 注意选项 -i 代表修改指定的a.txt文件,动作"i"是修改a.txt的方式
sed -i 'iqqq' a.txt
cat a.txt
qqq
111
qqq
222
qqq
333
qqq
111

# 先恢复a.txt的内容(便于演示)
# 在第一行上面添加"ccc"
cat a.txt
111
222
333
111

sed '1iqqq' a.txt
qqq
111
222
333
111

# 在最后一行上面添加qqq
sed '$iqqq' a.txt
111
222
333
qqq
111

# 在行为"111"的上面添加xxx
sed '/111/ixxx' a.txt
xxx
111
222
333
xxx
111

# 其他的,例如:a,c等操作都是大同小异
# 在第二行下面添加qqq
sed -e '2aqqq' a.txt
111
222
qqq
333
111

# 把第2行修改成qqq
sed -e '2c\qqq' a.txt (其实 \ 写不写好像都一样)
111
qqq
333
111

# 把第2到3行的内容修改为 qqq
sed -e '2,3cqqq' a.txt
111
qqq
111

#删除文件第二行
sed -e '2d' a.txt

#删除文件第二行到第四行
sed -e '2,4d' a.txt

#删除空白行
sed -e '/^$/d' a.txt

#删除文件第二行,到末尾所有行
sed '2,$d' a.txt


5.示例2
# 选项 -n 只显示修改的内容
sed -n '1iqqq' a.txt
qqq

# 打印第2行
sed -n '2p' a.txt
222

# 打印2到3行
sed -n '2,3p' a.txt
222
333

# 创建一个文件,写入命令
cat sed_file
$iqqq

# 选项 -f 指定一个文件来执行
sed -f sed_file a.txt
111
222
333
qqq
111

# 选项 -r 可以使用正则
# 把每一行的数字替换成xxx
sed -r 's/[0-9]+/xxx/g' a.txt
xxx
xxx
xxx
xxx


5.动作 s 示例
# sed替换标记
g 表示行内全面替换。  
p 表示打印行。  
w 表示把行写入一个文件。  
x 表示互换模板块中的文本和缓冲区中的文本。  
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记

# sed元字符集
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\< 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\> 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行


# 替换test.py中所有的小明变为如花
cat test.py
小明aa小明
小明bb小明
小明cc小明


# 匹配每一行第一个小明替换为如花,此时结果输出到屏幕,不会写入到文件
sed 's/小明/如花/' test.py
如花aa小明
如花bb小明
如花cc小明

# 使用选项-i,匹配每一行第一个小明替换为如花,并写入文件
sed -i 's/小明/如花/' test.py
cat test.py
如花aa小明
如花bb小明
如花cc小明

# 使用替换标记g,可以替换所有的匹配
sed -e 's/小明/如花/g' test.py
如花aa如花
如花bb如花
如花cc如花

# 把所有的英文替换为数字 1 
sed -r 's/[a-z]+/1/g' test.py
小明1小明
小明1小明
小明1小明
复制代码

 

19、scp命令

复制代码
Linux scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令

1. 注意
第一点:linux的防火墙
# 1. 查看
systemctl status firewalld # 查看防火墙状态
systemctl is-enabled firewalld.service  # 检查防火墙服务是否启动
注意:防火墙服务是否启动不代表当前防火墙的状态,防火墙服务启动代表,下一次重启Linux服务器,会自动开启防火墙 iptables -L 查看防火墙规则 iptables -F 清空防火墙 # 2. 临时关闭 # 下次开机会自动重启防火墙服务 systemctl stop/start/restart firewalld # 关闭/开启/重启firewalld服务 iptables -F 清空防火墙 # 3. 永久关闭 # 把服务停了,然后再关闭开机自动开启防火墙的服务,可实现永久关闭。 systemctl stop/start/restart firewalld # 关闭/开启/重启firewalld服务 iptables -F 清空防火墙 systemctl disable/enable firewalld # 永久关闭/开启防火墙 第二点:selinux 关闭系统自带的,美国航空局的selinux
# 1.临时关闭 getenforce 获取selinux状态 如果是 Enforcing就是开启状态 setenforce 0 临时关闭selinux
# 2.永久关闭
# 编辑系统配置信息
vim /etc/sysconfig/selinux
把SELINUX=enforcing改为SELINUX=disabled
重启服务器:reboot

2. 语法 scp 【可选参数】 本地源文件 远程文件标记 scp 【可选参数】 远程文件标记 本地源文件 3. 参数 -r :递归复制整个目录 -v:详细方式输出 -q:不显示传输进度条 -C:允许压缩 4.示例 # 传输本地文件到远程地址 scp 本地文件 远程用户名@远程ip:远程文件夹路径/ scp 本地文件 远程用户名@远程ip:远程文件夹路径/远程文件名 scp /tmp/test.py ming@192.168.3.38:/home/ scp /tmp/test.py ming@192.168.3.38:/home/my_test.py # 传输本地目录到远程地址 scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/ scp -r /tmp/hello ming@192.168.3.38:/home/ #复制远程文件到本地 scp ming@192.168.3.38:/home/aa.txt /tmp/ scp -r ming@192.168.3.38:/home/world /home/
复制代码

 

20、du命令

复制代码
Linux du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。

1. 语法
du [参数] [文件或目录]

2. 参数
-s 显示总计
-h 以k,M,G为单位显示,可读性强

3. 示例
显示目录或文件所占空间
#不写参数,代表显示当前目录所有文件大小
du /etc/

#显示/etc/的总大小
du -sh /etc/
复制代码

 

21、top命令

top 命令用于动态地监视进程活动与系统负载等信息

运行top命令之后,如果想退出该命令,键入q即可或按ctrl c

 

22、查看内存状态

free -m

 

23、a给文件枷锁

给文件加锁后,文件只能进行读操作,无法修改和删除文件
chattr +a test.py   设置锁
chattr -a test.py   解锁
lsattr    test.py   查看锁

 

24、linux时间同步

NTP协议:网络时间协议(Network Time Protocol)

通俗来说,NTP协议就是用来同步网络中各个计算机的时间的协议

NTP配置步骤:

1、确认ntp的安装

1,确认是否已安装ntp:rpm –qa | grep ntp

若只有ntpdate而未见ntp,则需删除原有ntpdate。如:

ntpdate-4.2.6p5-22.el7_0.x86_64
fontpackages-filesystem-1.44-8.el7.noarch
python-ntplib-0.3.2-1.el7.noarch

2,删除已安装ntp:yum –y remove ntpdate-4.2.6p5-22.el7.x86_64

3,重新安装ntp:yum –y install ntp

 

复制代码
1. 查看时间信息
date:可以查看系统时间,查看的是软件时钟
hwclock:硬件主板的时钟信息

在Linux下系统时间和硬件时间不会自动同步,在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。
硬件时间的运行,是靠Bios电池来运行,而系统时间是用CPU tick来维持的。
在系统开机时候,会从Bios中获取硬件时间,设置为系统时间
  

2. 如果时间不正确,或者不精确,可以与时间服务器同步 
使用命令 ntpdate 与阿里云的时间服务器同步,更新系统时间
ntpdate -u ntp.aliyun.com

//以系统时间为基准,修改硬件时间
hwclock -w

//以硬件时间为基准,修改系统时间
hwclock -s
复制代码

 

25、wget命令

复制代码
wget命令用于在终端下载网络文件
1. 语法
wget [参数] 下载地址

2. 参数和示例
-O    可以指定下载到哪个路径下,并重命名下载的文件(不写这个参数,默认下载到当前目录下)
      wget -O /tmp/my_girl.gif http://www.baidu.com/girl.gif

-o 把下载信息存入日志文件 wget
-o download.log URL -c 重新启动下载中断的文件 wget -c URL -b 后台下载(使用 tail -f wget-log 命令来察看下载进度) -r 下载整个网站、目录 -p 下载所有为了html页面显示正常的文件 wget -r -p http://www.baidu.com/girl.gif 递归下载所有资源 -i 下载多个文件 保存一份下载链接文件 vim filelist.txt url1 url2 url3 url4 接着使用这个文件和参数-i下载 wget -i filelist.txt
复制代码

 

26、虚拟机Linux系统和windows系统进行文件传输

复制代码
1. 要传输到windows,得安装一个上传下载工具,工具包的名字是 lrzsz 
yum install lrzsz -y 

2. 安装完之后就有两个命令
rz(receive):接收windows传来的文件
sz(send):发送Linux的文件到windows

3. 示例
rz 直接回车:接收一个文件到linux 
sz 文件名  : 发送这个文件到windows
复制代码

 

27、开关机命令

重启机器的命令 reboot
关机命令 poweroff 

 

28、拓展

复制代码
127.0.0.1和0.0.0.0的区别
假设我的电脑ip是192.168.3.16,那么
127.0.0.1        代表本机回环地址
0.0.0.0            代表着127.0.0.1加上192.168.3.16

那么,如果我在本机起了一个服务,
如果我设置的服务ip地址为127.0.0.1,就代表这个服务只有我自己本机才能访问,
如果我设置的服务ip地址为0.0.0.0,就代表这个服务我自己本机可以访问,你使用192.168.3.16也可以访问到。


因此,为什么Xshell可以远程连接到linux服务器
1.因为服务器运行着sshd服务
2.且sshd服务运行在0.0.0.0:22端口 
3.我们就可以使用   ssh root@192.168.3.16:22去访问sshd服务,这个服务就是让我们连接到服务器
复制代码

 

29、Linux命令查询手册网址

http://linux.51yip.com/
http://man.linuxde.net/

 

六、修改Linux终端输出颜色

Linux终端常用的一些颜色码。字体颜色码有:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37;背景色有:黑色底=40,红色底=41,绿色底=42,黄色底=43,蓝色底=44,紫色底=45,天蓝底=46,白色底=47。

转义序列设置终端显示属性时,常见格式为:

\033[显示方式;前景色;背景色m "输出字符串" \033[0m

或

\e[显示方式;前景色;背景色m "输出字符串" \e[0m

# 其中 ,'\033[0m'用于恢复默认的终端输出属性,否则会影响后续的输出。

 

注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。


     对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。

 

前景色
背景色  
颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

 

显示方式
意义
 0
终端默认设置
 1
高亮显示
 4
使用下划线
 5
闪烁
 7
反白显示
 8
不可见

 

 例如:

1.要将输出的字体设置为红色,字体红色的颜色码为31,设置方式如下

echo -e "\e[1;31m This is red text! \e[0m"

 

 2要将输出的字体设置为黄色,字体黄色的颜色码是33,设置方式如下:

echo -e "\e[1;33m This is red text! \e[0m"

 

 3.要将输出的文本背景色设置为红色底,背景色青蓝底的颜色码是46,设置的方式如下:

echo -e "\e[1;46m This is red text! \e[0m"

 

 

 4.Linux中一个好看的命令提示符PS1

PS1="\[\e[01;31m\]\u@\h \[\e[01;36m\]\w \[\e[01;32m\]o \[\e[00m\]"

注意:上面使用 \[ ] 进行了转义,不然会出现无法换行的情况

即这么理解:
PS1="\[ \e[01;31m\  ] \u@\h \[ \e[01;36m\ ] \w \[ \e[01;32m\ ] o \[ \e[00m\ ]"
posted @   我用python写Bug  阅读(3044)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示