4

Linux新手村必备!这些常用操作命令你掌握了吗?

 7 months ago
source link: https://studygolang.com/articles/36499
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux新手村必备!这些常用操作命令你掌握了吗?

YunDuanCode · 5天之前 · 98 次点击 · 预计阅读时间 12 分钟 · 大约8小时之前 开始浏览    

在计算机的世界里,Linux操作系统以其强大的功能和灵活性受到了广大程序员和IT爱好者的喜爱。然而,对于初学者来说,Linux的操作命令可能会显得有些复杂和难以理解。

今天,我们就来一起探索一些Linux常用操作命令,让你的计算机操作更加流畅。

一、目录操作

首先带大家了解一下Linux 系统目录:

├── bin -> usr/bin # 用于存放二进制命令
├── boot # 内核及引导系统程序所在的目录
├── dev # 所有设备文件的目录(如磁盘、光驱等)
├── etc # 配置文件默认路径、服务启动命令存放目录
├── home # 用户家目录,root用户为/root
├── lib -> usr/lib # 32位库文件存放目录
├── lib64 -> usr/lib64 # 64位库文件存放目录
├── media # 媒体文件存放目录
├── mnt # 临时挂载设备目录
├── opt # 自定义软件安装存放目录
├── proc # 进程及内核信息存放目录
├── root # Root用户家目录
├── run # 系统运行时产生临时文件,存放目录
├── sbin -> usr/sbin # 系统管理命令存放目录
├── srv # 服务启动之后需要访问的数据目录
├── sys # 系统使用目录
├── tmp # 临时文件目录
├── usr # 系统命令和帮助文件目录
└── var # 存放内容易变的文件的目录

下面我们来看目录操作命令有哪些

pwd    查看当前工作目录
clear    清除屏幕
cd ~   当前用户目录
cd /   根目录
cd -   上一次访问的目录
cd ..   上一级目录

查看目录内信息

ll    查看当前目录下内容(LL的小写)

创建目录

mkdir aaa 在当前目录下创建aaa目录,相对路径;
mkdir ./bbb 在当前目录下创建bbb目录,相对路径;
mkdir /ccc 在根目录下创建ccc目录,绝对路径;

递归创建目录(会创建里面没有的目录文件夹)

mkdir -p temp/nginx

搜索命令

find / -name ‘b’ 查询根目录下(包括子目录),名以b的目录和文件;
find / -name ‘b*’ 查询根目录下(包括子目录),名以b开头的目录和文件;
find . -name ‘b’ 查询当前目录下(包括子目录),名以b的目录和文件;

重命名

mv 原先目录 文件的名称   mv tomcat001 tomcat

剪切命令(有目录剪切到制定目录下,没有的话剪切为指定目录)

mv /aaa /bbb      将根目录下的aaa目录,移动到bbb目录下(假如没有bbb目录,则重命名为bbb);
mv bbbb usr/bbb  将当前目录下的bbbb目录,移动到usr目录下,并且修改名称为bbb;
mv bbb usr/aaa   将当前目录下的bbbb目录,移动到usr目录下,并且修改名称为aaa;

复制目录

cp -r /aaa /bbb:将/目录下的aaa目录复制到/bbb目录下,在/bbb目录下的名称为aaa
cp -r /aaa /bbb/aaa:将/目录下的aa目录复制到/bbb目录下,且修改名为aaa;

强制式删除指定目录

rm -rf /bbb:强制删除/目录下的bbb目录。如果bbb目录中还有子目录,也会被强制删除,不会提示;

删除目录

  • rm -r /bbb:普通删除。会询问你是否删除每一个文件
  • rmdir test01:目录的删除

查看树状目录结构

tree test01/

批量操作

需要采用{}进行参数的传入了。

mkdir {dirA,dirB}  # 批量创建测试目录
touch dirA/{A1,A2,A3}     # dirA创建三个文件dirA/A1,dirA/A2,dirA/A3

二、文件操作

删除

rm -r a.java  删除当前目录下的a.java文件(每次会询问是否删除y:同意)

强制删除

rm -rf a.java 强制删除当前目录下的a.java文件
rm -rf ./a* 强制删除当前目录下以a开头的所有文件;
rm -rf ./* 强制删除当前目录下所有文件(慎用);

创建文件

touch testFile

递归删除.pyc格式的文件

find . -name '*.pyc' -exec rm -rf {} \;

打印当前文件夹下指定大小的文件

find . -name "*" -size 145800c -print

递归删除指定大小的文件(145800)

find . -name "*" -size 145800c -exec rm -rf {} \;

递归删除指定大小的文件,并打印出来

find . -name "*" -size 145800c -print -exec rm -rf {} \;
  • “.” 表示从当前目录开始递归查找
  • “ -name ‘*.exe’ "根据名称来查找,要查找所有以.exe结尾的文件夹或者文件
  • " -type f "查找的类型为文件
  • “-print” 输出查找的文件目录名
  • -size 145800c 指定文件的大小
  • -exec rm -rf {} ; 递归删除(前面查询出来的结果)

split拆分文件

split命令:可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。

  • b:值为每一输出档案的大小,单位为 byte。
  • -C:每一输出档中,单行的最大 byte 数。
  • -d:使用数字作为后缀。
  • -l:值为每一输出档的行数大小。
  • -a:指定后缀长度(默认为2)。 使用split命令将上面创建的date.file文件分割成大小为10KB的小文件:
    [root@localhost split]# split -b 10k date.file
    [root@localhost split]# ls
    date.file  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj
    
    文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:
    [root@localhost split]# split -b 10k date.file -d -a 3
    [root@localhost split]# ls
    date.file  x000  x001  x002  x003  x004  x005  x006  x007  x008  x009
    
    为分割后的文件指定文件名的前缀:
    [root@localhost split]# split -b 10k date.file -d -a 3 split_file
    [root@localhost split]# ls
    date.file  split_file000  split_file001  split_file002  split_file003  split_file004  split_file005  split_file006  split_file007  split_file008  split_file009
    
    使用-l选项根据文件的行数来分割文件,例如把文件分割成每个包含10行的小文件:
    split -l 10 date.file
    

三、文件内容操作

修改文件内容

  • vim a.java:进入一般模式
  • i(按键):进入插入模式(编辑模式)
  • ESC(按键):退出
  • :wq:保存退出(shift+:调起输入框)
  • :q!:不保存退出(shift+:调起输入框)(内容有更改)(强制退出,不保留更改内容)
  • :q:不保存退出(shift+:调起输入框)(没有内容更改)

文件内容的查看

  • cat a.java 查看a.java文件的最后一页内容;
  • more a.java从 第一页开始查看a.java文件内容,按回车键一行一行进行查看,按空格键一页一页进行查看,q退出; l- ess a.java 从第一页开始查看a.java文件内容,按回车键一行一行的看,按空格键一页一页的看,支持使用PageDown和PageUp翻页,q退出。

总结下more和less的区别

  • less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示。
  • less不必读整个文件,加载速度会比more更快。
  • less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。

实时查看文件后几行(实时查看日志)

tail -f a.java   查看a.java文件的后10行内容;

前后几行查看

  • head a.java:查看a.java文件的前10行内容;
  • tail -f a.java:查看a.java文件的后10行内容;
  • head -n 7 a.java:查看a.java文件的前7行内容;
  • tail -n 7 a.java:查看a.java文件的后7行内容;

文件内部搜索指定的内容

  • grep under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行;
  • grep -n under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行及行号;
  • grep -v under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示没搜索到的行;
  • grep -i under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行;
  • grep -ni under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行及行号;

终止当前操作

Ctrl+c和Ctrl+z都是中断命令,但是作用却不一样。

Ctrl+Z就扮演了类似的角色,将任务中断,但是任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。

Ctrl+C也扮演类似的角色,强制终端程序的执行。

你还在苦恼找不到真正免费的编程学习平台吗?可以试试【云端源想】!课程视频、知识库、微实战、云实验室、一对一咨询……你想要的全部学习资源这里都有,重点是现在还是免费的!点这里即可免费学习!

重定向功能

可以使用 > 或 < 将命令的输出的命令重定向到test.txt文件中(没有则创建一个)

echo 'Hello World' > /root/test.txt

1、grep(检索文件内容)

grep [options] pattern file
  • 全称:Global Regular Expression Print。
  • 作用:查找文件里符合条件的字符串。
    // 从test开头文件中,查找含有start的行
    grep "start" test*
    // 查看包含https的行,并展示前1行(-A),后1行(-B)
    grep -A 1 -B 1 "https" wget-log
    

2、awk(数据统计)

awk [options] 'cmd' file
  • 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分。
  • 将切片直接保存在内建的变量中,$1,$2…($0表示行的全部)。
  • 支持对单个切片的判断,支持循环判断,默认分隔符为空格。
  • -F 指定分隔符(默认为空格)

1)将email.out进行切分,打印出第1/3列内容

awk '{print $1,$3}' email.out

2)将email.out进行切分,当第1列为tcp,第2列为1的列,全部打印

awk '$1=="tcp" && $2==1{print $0}' email.out

3)在上面的基础上将表头进行打印(NR表头)

awk '($1=="tcp" && $2==1)|| NR==1 {print $0}' email.out

4) 以,为分隔符,切分数据,并打印第二列的内容

awk -F "," '{print $2}' test.txt

5)将日志中第1/3列进行打印,并对第1列的数据进行分类统计

awk '{print $1,$3}' email.out | awk '{count[$1]++} END {for(i in count) print i "\t" count[i]}'

6)根据逗号,切分数据,并将第一列存在文件test01.txt中

awk -F "," '{print $1 >> "test01.txt"}

3、sed(替换文件内容)

sed [option] ‘sed commond’ filename
  • 全名Stream Editor,流编辑器
  • 适合用于对文本行内容进行处理
  • sed commond为正则表达式
  • sed commond中为三个/,分别为源内容,替换后的内容

sed替换标记

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

1)替换解析

sed -i 's/^Str/String/' replace.java

image.png

2)将末尾的.替换为;(转义.)

sed -i 's/\.$/\;/'

3)全文将Jack替换为me(g是全部替换,不加只替换首个)

sed -i 's/Jack/me/g/ replace.java

4)删除replace.java中的空格(d是删除)

sed -i '/^ *$/d' replace.java

5)删除包含Interger的行(d是删除)

sed -i '/Interger/d' replace.java

6)多命令一起执行

grep 'input' 123.txt | sed 's/\"//g; s/,/\n/g'

7)替换后将数据保存在文中

grep  123.txt | sed -n 's/\"//gw test01.txt'

4、管道操作符|

可将指令连接起来,前一个指令的输出作为后一个指令的输入

find ~ |grep "test"
find ~                //查找当前用户所有文件
grep "test"            //从文件中

使用管道注意的要点

  • 只处理前一个命令正确输出,不处理错误输出。
  • 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
  • sed,awk,grep,cut,head,top,less,more,c,join,sort,split等 1)从email.log文件中查询包含error的行

    grep 'error' email.log
    

    2)获取到error的行,并取[]含有数字的

    grep 'error' email.log | grep -o '\[0-9\]'
    

    3)并过滤掉含有当前进程

    ps -ef|grep tomcat |grep -v
    

    4)替换后将数据保存在文中

    grep  123.txt | sed -n 's/\"//gw test01.txt'
    

    5)将文件123.txt,按,切分,去除",按:切分后,将第一列存到文件test01.txt中

    grep 'input' 123.txt | awk -F ',' '{print $2}' | sed 's/\"//g; s/,/\n/g' | awk -F ":"
    

    5、cut(数据裁剪)

  • 从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

  • 也可采用管道输入。 image.png

文件截取

[root@VM-0-9-centos shell]# cut -d ":" -f 1 cut.txt

管道截取

[root@VM-0-9-centos shell]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# 按:分割。截取第3列
[root@VM-0-9-centos shell]# echo $PATH | cut -d ":" -f 3
/usr/sbin

# 按:分割。截取第3列之后数据
[root@VM-0-9-centos shell]# echo $PATH | cut -d ":" -f 3-
/usr/sbin:/usr/bin:/root/bin
[root@VM-0-9-centos shell]#

四、系统日志位置

  • cat /etc/redhat-release:查看操作系统版本
  • /var/log/message:系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
  • /var/log/message:系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
  • /var/log/secure:与安全相关的日志信息
  • /var/log/maillog:与邮件相关的日志信息
  • /var/log/cron:与定时任务相关的日志信息
  • /var/log/spooler:与UUCP和news设备相关的日志信息
  • /var/log/boot.log:守护进程启动和停止相关的日志消息

查看某文件下的用户操作日志 到达操作的目录下,执行下面的程序:

cat .bash_history

五、创建与删除软连接

1、创建软连接

ln -s /usr/local/app /data

注意:创建软连接时,data目录后不加 / (加上后是查找其下一级目录);

image.png

2、删除软连接

rm -rf /data

注意:取消软连接最后没有/,rm -rf 软连接。加上/是删除文件夹; image.png

六、压缩和解压缩

tar image.png

压缩(-c)

tar -cvf start.tar a.java b.java  //将当前目录下a.java、b.java打包
tar -cvf start.tar ./*     //将当前目录下的所欲文件打包压缩成haha.tar文件

tar -zcvf start.tar.gz a.java b.java //将当前目录下a.java、b.java打包
tar -zcvf start.tar.gz ./*    //将当前目录下的所欲文件打包压缩成start.tar.gz文件

解压缩(-x)

tar -xvf start.tar      //解压start.tar压缩包,到当前文件夹下;
tar -xvf start.tar -C usr/local   //(C为大写,中间无空格)
//解压start.tar压缩包,到/usr/local目录下;
tar -zxvf start.tar.gz     //解压start.tar.gz压缩包,到当前文件夹下;
tar -zxvf start.tar.gz -C usr/local  //(C为大写,中间无空格)
//解压start.tar.gz压缩包,到/usr/local目录下;

解压缩tar.xz文件

tar xf node-v12.18.1-linux-x64.tar.xz

unzip/zip

压缩(zip)

zip lib.zip tomcat.jar       //将单个文件压缩(lib.zip)
zip -r lib.zip lib/        //将目录进行压缩(lib.zip)
zip -r lib.zip tomcat-embed.jar xml-aps.jar  //将多个文件压缩为zip文件(lib.zip)

解压缩(unzip)

unzip file1.zip          //解压一个zip格式压缩包
unzip -d /usr/app/com.lydms.english.zip   //将`english.zip`包,解压到指定目录下`/usr/app/`

七、Linux下文件的详细信息

R:Read  w:write  x: execute执行
-rw-r--r-- 1 root root  34942 Jan 19  2018 bootstrap.jar
  • 前三位代表当前用户对文件权限:可以读/可以写/不能执行
  • 中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行
  • 后三位其他用户对当前文件权限:可以读/不能写/不能执行图片 image.png

更改文件的权限

chmod u+x web.xml (---x------)  为文件拥有者(user)添加执行权限;
chmod g+x web.xml (------x---)  为文件拥有者所在组(group)添加执行权限;
chmod 111 web.xml  (---x--x--x) 为所有用户分类,添加可执行权限;
chmod 222 web.xml (--w--w--w-)  为所有用户分类,添加可写入权限;
chmod 444 web.xml (-r--r--r--)  为所有用户分类,添加可读取权限;

八、Linux终端命令格式

command [-options] [parameter]
  • command :命令名,相应功能的英文单词或单词的缩写
  • [-options] :选项,可用来对命令进行控制,也可以省略
  • parameter :传给命令的参数,可以是0个、1个或者多个

查阅命令帮助信息 -help: 显示 command 命令的帮助信息; -man: 查阅 command 命令的使用手册,man 是 manual 的缩写,是 Linux 提供的一个手册,包含了绝大部分的命令、函数的详细使用。

使用 man 时的操作键 image.png

以上就是一些Linux常用操作命令的介绍,希望对你有所帮助。

虽然这些只是Linux命令的冰山一角,但它们足以让你自如地运用Linux操作系统,记住,每一个命令都有其独特的用途和魅力。掌握了这些命令,你就能更加自如地在Linux世界中遨游。愿你在探索的道路上,发现更多的惊喜和乐趣!-


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK