linux 学习

Posted 阿布alone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 学习相关的知识,希望对你有一定的参考价值。

一.   在虚拟机中安装ubuntu

  可参考如下博客:   https://blog.csdn.net/u014337397/article/details/80751753

二.  关于linux的发展史

1.设计之初就是为了多用户使用的,所以每个用户对应进去看到文件都是不一样的,私有的,跟Windows有很大的差别,待会儿看到目录树就会清楚
2.版本问题:内核只有一个,各种发行版本都是以内核版本为基础再分装各种功能的,就是发行版=内核+新的功能
3.目录树下几个重要文件夹(/下面所有文件夹都不能动)
  a)   根目录(/)

      根目录是整个系统最重要的一个目录,因为所有的目录都是由根目录衍生出来的。只有root用户才具有在该目录下写权限。

   b)   /bin目录 – 用户二进制文件

      包含二进制的可执行文件,你需要的常见的Linux命令都位于此目录下。

   

   c)   /sbin目录 – 系统二进制文件

      这个目录下的命令通常由系统管理员使用, 对系统进行维护。

   

   d)   /etc– 配置文件

      包含所有程序所需要的配置文件,也包含用于启动/停止单个程序的起动和关闭shell脚本。

  

   e)   /dev-设备文件

      包含设备文件,包括终端设备、USB或连接到系统的任何设备,如网卡等。

   

  f)   /proc-进程信息文件

     这是一个虚拟的文件系统,包含有关正在运行的进程信息。

 

  g)   /var-变量文件

    包含目录下内容可变的文件,例如,系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp)。

 

  h)   /tem-临时文件

     包含系统和用户创建的临时文件,当系统重启时,文件消失。

 

    i)   /usr-用户程序

        包含二进制文件、库文件、文档和二级程序的源代码。

        /usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。
        /usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。
        /usr/lib中包含了/usr/bin和/usr/sbin用到的库。
       /usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中

 

     j)  /home -HOME目录

        包含所有用户的个人档案,Linux是多用户的系统,所以用该目录保存各用户的信息。

 

     k)  /boot -引导加载程序

        包含引导加载程序相关的文件。

 

     l)  /lib -系统库

        包含支持位于/lib和/sbin下的二进制文件的库文件。

 

     m)  /opt -可选的附加应用程序

 

     n)  /mnt -挂载目录

 

  关于目录树:

 

  先看基本常用的命令   apt  的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。

1.  sudo apt update  #更新可用软件列表

2. sudo apt upgrade #更新已安装的软件

3. sudo apt install 软件名 #安装软件

4. sudo apt remove 软件名 #删除软件

5. sudo apt autoremove 软件名 #用来自动清理不再使用的依赖和库文件

6. sudo apt show 软件包名 #示软件包具体信息。例如:版本号,安装大小,依赖关系,bug报告等等。

7. apt list --upgradeable:显示可升级的软件包。

#sudo为获得管理员权限

   接下里操作一下在linux安装常用工具

    apt安装软件命令其实不需要记忆,当你在终端中输入软件名事,如果软件未安装,他会提示你安装的

1.   sudo apt install ipython    #安装python

2. sudo apt install ipython3

3. sudo apt install python-pip

4. sudo apt install python3-pip #安装python工具包

   安装远程登录 ssh服务器

1.   sudo apt install openssh-server  #安装ssh服务器,安装之后才可以在其他系统中通过ssh工具远程登录

  接下来练习一下删除命令

例:
1. sudo apt remove libreoffice-commen #删除ubuntu系统内置的一个软件libreoffice

2. sudo apt remove unity-webapp-commen   #删除亚马逊

  拓展:

1.  apt和apt-get都是ubuntu下常用的安装软件命令
2. apt
-get是早期的使用方法,从ubuntu16开始,官方建议使用apt
3. 这两个命令的使用方式非常相似

  另一种安装方式:Debian

  deb是Debian Linux的安装格式,在ubuntu中也可以使用,要安装dep包,需要dpkg这个中端命令

  格式:  这种安装方法首先要进入安装包所在位置才能执行

sudo dkpg -i <package.dep>

   实战:看一下谷歌浏览器和搜狗输入法的安装

1.  下载deb包
  对于谷歌Chrome32位版本,使用如下链接:
  wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb

  对于64位版本可以使用如下链接下载:
  wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  必须下载正确的版本否则会出现问题


2.  安装deb包
  sudo dpkg -i google-chrome-stable_current_amd64.deb

 

3. 要是依赖出现问题(修复依赖关系)
   sudo apt-get -f install  #基本上所有软件都需要加上这步,依赖树来关联

4.  运行chrome

   chrome

  

 #下载搜狗输入法的安装包

            下载地址为:http://pinyin.sogou.com/linux/ ,如下图,要选择与自己系统位数一致的安装包,我的系统是64位,所以我下载64位的安装包

wget "http://cdn2.ime.sogou.com/dl/index/1524572264/sogoupinyin_2.2.0.0108_amd64.deb?st=tQdHKEaxh6PcyFVf4QfT1A&e=1539855246&fn=sogoupinyin_2.2.0.0108_amd64.deb"
 

  #要去西永设置的语言支持将输入法的系统设置为fcitx
  1. sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb  
  2. sudo apt -f install
  3. 重启

 

 

  这边插入一个小方法:(关于在电脑中复制的文本没办法在ubuntu虚拟机中粘贴的问题)

1.  sudo apt-get autoremove open-vm-tools
2.  sudo apt-get install open-vm-tools
3.  sudo apt-get install open-vm-tools-desktop
4.  重启

##这边呀注意的是ubuntu默认输入法切换为Ctrl+ space

 

 

三.   linux终端命令格式

1. 终端命令的基本格式

 

commond [options] [parameter]

 

  commond:命令名,相应功能的英文单词或者手缩写

  options:可选项,可对命令进行控制,也可省略

  parameter:传给命令的参数.可以是一个,也可以是多个

 

2.   查看命令帮助信息

  先了解以下两种方法:

  1.  --help

commond --help

  说明:

    显示command帮助信息

  2.  man

man command

  说明:

    查阅command的使用手册

    man是manual的缩写,是linux提供的一个手册,包含绝大多数命令,函数的使用

 3.  常用linux命令

  这里要注意的是linux区分大小写:

  命令记不全的可以用tab键补全

  上面的删除文件命令rm其实也是删除文件夹命令,只不过要加选项
  删除文件夹 rm -r 文件夹名

 

四.   有关文件和目录操作命令

  • 查看目录内容 

  ls

  •  切换目录

  cd

  •  创建和删除

  touch

  mkdir

  rm

  •  拷贝和移动

  cp

  rm

  •  查看文件内容

  cat

  more

  grep

  •  其他

  echo

  重定向 >  和 >>

  管道 I

1.   终端命令使用技巧

1. 自动补全: 在敲出文件/目录/命令名字前几个字母之后  按下tab键
  •  如果没有歧义,会自动补全    
  • 如果有歧义(就是有多个命令的前几个字母一样的) tab键再按一下,就会打印出命令前几个字母是你输得所有命令
2. 按上/下键 可以在曾经输入的命令中切换
  如果想要退出选择,可以快捷键ctrl+c

2.   ls命令说明

ls是list的缩写,其功能是列出目录的内容,是最常用的命令之一,类似dos下的dir

  linux下文件和目录的特点

  • linux下文件或者目录名称最长256个字符
  • 以.开头文件为隐藏文件,需要 -a参数才能显示
  • .代表当前目录
  • ..代表上一层目录

  ls常用选项

 

     通配符的使用

 

通配符 含义
* 代表可以匹配任意个字符
? 代表匹配一个字符
[] 代表匹配字符组中任意一个
[abc] 代表匹配abc中任意一个
[a-f] 代表匹配a-f范围任意字符中的一个

3.  cd 切换目录 cd是change directory的简写,其功能为切换当前工作目录,也是最常用命令之一

  注意:linux下所有目录和文件名都是对大小写敏感的

 

命令 含义
cd 切换到当前用户主目录(/home/用户目录)
cd~ 切换到当前用户主目录(/home/用户目录)
cd . 保持当前工作目录不变
cd .. 切换到当前目录的上一层目录
cd - 可以在最近工作的两个目录切换(上下键)

 

  绝对路径和相对路径

#在输入路径时候,最前面不是 / 或者 ~,表示相对当前目录所在的目录位置
#在输入路径的时候,最前面是 / 或者 ~,表示相对当前根目录 /家目录开始的目录位置

 

 4.    创建和删除操作

  touch

  • 创建文件或者修改文件时间
  • 如果文件已经存在,可以修改文件末次次该时间
  • 同时创建福讴歌文件 touch file1.txt  file2.txt file3.txt

  mkdir

  

  • 创建新目录
  • 创建多个目录 mkdir -p {d1,d2,d4}
  • 递归创建多级目录 mkdir -p a/b/c/d

 

选项 含义
-p 可以递归创建目录

  rm

  删除文件或者目录

  注意rm命令的删除是一次性,永久性的,跟windows的回收站不一样

选项 含义
-f 强制删除,忽略不存在的文件,无需提示
-r 递归删除目录下的内容,删除文件夹必须加ci参数

 5.  拷贝和移动文件

序号 命令 对应英文 作用
01 tree[目录名] tree 以树状图列出文件目录结构
02 cp 源文件 目标文件 copy 肤质文件或者目录
03 mv 源文件 目标文件   move 移动文件或者目录/文件或者目录重命名

 

  tree

可以以树状图结构列出文件目录  #tree这个命令默认是没有的,需要自己安装 sudo apt install tree
选项

含义

-d 只显示目录

  cp

cp命令是将给出的文件或者目录拷贝到另一个文件或者目录中,相当于dos下的copy命令
选项 含义
-f  已存在的目标文件会直接覆盖,不会提示
-i 覆盖前提示
-r

若给出的源文件是一个目录,则copy

将递归复制该目录下所有子目录和文件,目标文件必须为一个目录名

 

 

  mv命令

 

mv命令可以移动文件或者目录,也可以给文件或者目录重命名(移动到同一个文件夹就是,名字变化了,就是重命名)  #最好加选项-i

 

选项 含义
-i 覆盖前提示

  

  6.  查看文件内容

序号 命令 对应英文 作用
1 cat concatenate 查看文件内容,创建文件,文件合并,追加文件内容的功能
2 more more 分屏显示文件内容,按百分比显示文件内容
3 grep 搜索文本文件名 grep 搜索文本文件内容
4 echo 选项 输出内容 echo 输出内容到控制台上面
5 head -n num head 显示文件开头部分内容
6 tail -n/f 文件 tail       输出文件尾部内容

 

  使用cat命令的选项

  • 查看文件内容,创建文件,文件合并,追加文件内容的功能
  • 一次性的全部展现出文本内容
选项 含义
 -b  对非空输出航编号
 -n 对输出的所有行编号 

  linux中还有一个nl和cat  -b效果等价

  

  more选项

  • more命令可以分屏显示文件内容(百分比)
    
    
  • 适用于查看文件较大的文件

 

选项 作用
空格 向下一页
Enter 一次滚动手册一行
b 回滚一屏幕
f 向前滚一屏
q 退出
/word 搜索word字符串

  grep

  • linux系统中grep是一种强大的搜索工具
  •  grep允许对文本文件进行模式查找,所谓的模式查找就是正则匹配
    •   

      grep nologin /etc/passwd # 过滤出/etc/passwd下面所有含有noloing的信息
      grep root /etc/passwd # 过滤出/etc/passwd下面root信息

  选项和作用

选项  作用
-n 显示匹配行及行号
-v 显示不含匹配行的所有行(相当于求反)
-i 忽略大小写

  常用的两种模式(注意:这里要查找的对象是行)

参数 含义
^a 以a开头
$b 以b结尾

 

 

  echo指令

echo输出内容到控制台
• 基本语法 echo [选项] [输出内容]
• 应用实例 案例: 使用echo $PATH 指令输出环境变量

  head指令

head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
• 基本语法
head 文件 (功能描述:查看文件头10行内容) head
-n 5 文件 (功能描述:查看文件头5行内容, 5可以是任意行数)

  tail指令

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容
• 基本语法
1) tail 文件 (功能描述:查看文件后10行内容)
2) tail -n 5 文件 (功能描述:查看文件头5行内容, 5可以是任意行数
3) tail -f 文件 (功能描述:实时追踪该文档的所有更新)

   head和tail组合可以定位到我们要的文本内容

想要显示/etc/passwd下面的第10行到第20行, 可以使用管道符进行二次过滤
head -20 /etc/passwd | tail -1

 

 

  7.  其他

  

1.echo 会在终端中显示参数指定的文字,通常会和重定向联合使用

2. 重定向 > 和 >>
  •   linux允许命令执行结果重定向到一个文件当中
  •    将本应该显示在终端的内容 输出/追加 到指定的文件当中
  其中 > 表示输出,会覆盖文件原有的内容
  >> 表示追加,会将内容追加到已有文件的末尾
3. 管道 |
  •   linux允许将一个命令的输出可以通过管道作为另一个命令的输入
  •    可以理解为现实生活中的管子,管子一头思塞进去,另一头取出来,这里 | 分为左右两端,左端写(输入),右端读(输出)

  常见的管道命令有:

  •   more : 分屏显示内容
  •    grep : 在命令执行结果的基础上查询指定的文本内容

 

 4. history   

  可以列出我们所有执行过的命令(会有相应的编号在命令之前)

  使用技巧:要重复执行就直接 !编号 就直接执行了

   关于重定向的扩展:

#1.把输入内容重定向追加到另一个文件
[root@qishi ~]# cat >> 1.txt << EOF
> 这是键盘输入要追加
> 然后经过cat查出来
> 追加到1.txt
> eof是结束符
> EOF
[root@qishi ~]# cat 1.txt
这是键盘输入要追加
然后经过cat查出来
追加到1.txt
eof是结束符



#2.把输入内容重定向写入到另一个文件
[root@qishi ~]# cat > 1.txt<<EOF
> 这是输入写入
> 而不是追加
> eof
> 还是结束符
> EOF


#3.从文件中读入内容写入另一个文件
[root@qishi ~]# cat  > 2.txt  < 1.txt
[root@qishi ~]# cat 2.txt 
这是输入写入
而不是追加
eof
还是结束符


#4.从文件中读入内容追加另一个文件
[root@qishi ~]# cat  >> 2.txt  < 1.txt
[root@qishi ~]# cat 2.txt 
这是输入写入
而不是追加
eof
还是结束符
这是输入写入
而不是追加
eof
还是结束符

  

 

 

  

 

以上是关于linux 学习的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段

python 机器学习有用的代码片段

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?