作为一个程序猿的确是应该上的了windows,下的了linux的。但是由于没有对linux产生一些刚性的需求,所以使用的次数还是略少,对一些基本的concept和command还是有一些生疏。借着最近在使用的功夫,记录一点下来,不定期更新。

目前环境:Kali Linux and ubuntu14.04

我装的软件在哪里?

linux的目录结构和windows有很大的不同。初学者大多都根据教程使用例如apt-get install或者通过多行命令自行对源码进行编译等方式安装软件。结果也能正常使用了,但是软件装在哪了?是否和windows一样存在一个C:\Program Files的目录?

FHS中常见的目录

  • / (root、根目录)与开机系统有关。
  • /usr (Unix software resource)与软件安装执行有关。
  • /var(variable)与系统运行有关。
  • /home 用户的主文件夹
  • /mnt 临时安装目录,系统管理员可以挂载文件系统。
  • /opt 第三方应用程序安装的目录
  • /etc 包含系统的所有配置文件。
  • /bin 包含了常见的系统命令。例如:ps、ls、ping、grep、cp。
  • /boot 引导加载程序文件。
  • /dev 包含设备文件。
  • /root root用户的主文件夹

我的软件在哪里,/opt or /usr or /usr/local?

首先,无论我们通过何种方式安装软件,一般都在两个地方。但是,第三方软件到底安装在哪个目录,网上还是有很多争议的。总结如下:

  • 应用型的软件(文本编辑器、浏览器、播放器等)应该安装在/opt下。例如,

    1. kali下安装sublime。下载.deb后,通过dpkg -i ./sublime-text_build-3083_i386.deb安装成功后,在/opt目录下;
    2. 安装pycharm。下载压缩包后,直接解压缩到/opt下,开箱即用。
  • /usr由linux发行版的包管理工具来管理。
  • 需要自己编译的软件,通常放在/usr/local目录。

PATH有啥用呢?(2017.7.14)

无论是windows还是linux系统都有环境变量这个概念。一般我们在安装软件时会需要配置它,一般是PATH变量和其他程序需要读取的变量。例如,曾今安装jdk需要配置CLASSPATH。

1.系统级环境变量

  • /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
  • /etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。
  • /etc/bashrc:而如果系统是 ubuntu 或者 debian 的话, 就不会有 /etc/bashrc 而会有 /etc/bash.bashrc 文件。

2.用户级环境变量

  • ~/.profile : 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
  • ~/.bashrc : 该文件包含专用于你的bash。shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

为了理清楚环境变量的执行,这里有必要提出另外的两个概念。前提这里讲到的shell,一般为bash shell。shell在linux中分为login shell和no-login shell

  1. login shell代表需要进行身份验证的shell。例如用root来操作时,需要的su,通过ssl远程连接到别的主机,以及通过tty1-tty6登录到客户机bash中等。这些都属于login shell。
  2. no-login shell也就是不需要登录。例如在ubuntu gonme中打开终端。

这两种shell设置环境变量的方式是不同的。

  • login shell会去自动执行 /etc/profile 和 ~/.profile 文件, 但不会执行任何的 bashrc 文件。所以一般再 /etc/profile 或者 ~/.profile 里我们会手动去 source bashrc 文件.下面是 /.profile的部分代码,可以发现/.profile会调用~/.bashrc。
  • no-login shell只会执行/etc/bash.bashrc和~/.bashrc
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

我们在别人写的博客中可以看到既有把环境变量配置在~/.profile里,也有配置在~/.bashrc中的。现在我们就可以理解了。

  1. 作为客户机使用时,例如ubuntu desktop。安装软件时,需要把环境变量配置在~/.bashrc中,因为我们本地运行的bash shell是no-login shell,不会执行~/.profile。
  2. 作为服务器使用时,一般会使用ssl登录,例如阿里云等等。可以讲环境变量配置在~/.profile中,因为作为login shell,此文件是执行的。
  3. 综上,配置在~/.bashrc里面是最好的,无论是那种shell均会执行

设置方法

$ sudo subl ~/.bashrc用编辑器打开文件。在此文件末尾加入PATH的设置如下:

export PATH=”$PATH:your path1:your path2 ...

例如ubuntu下配置jdk:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:JAVAHOME/lib:{JRE_HOME}/lib
export PATH=$JAVA_HOME/bin:$PATH

孰能生巧的命令(2017.7.15)

文件操作

mkdir 新建目录 -p 建立多层目录 -m [umask] 添加权限
mkdir -p aa/bb/cc
mkdir -m 711 aa
rmdir 删除空目录 -p 删除多层目录
rmdir -p aa/bb/cc
cp、mv 、rm 复制、移动、删除
-i 交互式 -f 强制删除 -r递归操作

终端查看文件内容

cat 第一行开始显示内容

文件权限

drwxrwxr-x 9 chingyu chingyu 4096 Jul 11 20:23 yara-python

跟文件权限相关的是前几段。

drwxrwxr-x表示文件的权限,第一位表示文件属性,-表示文件,d表示文件夹。

第一个chingyu表示拥有者,第二个表示所在用户组。

文件的权限分文rwx,用umask表示,r:4,w:2:,x:1。常见的777权限,也就是rwxrwxrwx

chomd [umask] [file] 修改文件的权限。
chomd 777 yara-python 等同于
chomd u=rwx,g=rwx,o=rwx yara-python
chown [group] [file] 改变用户组 -R 递归调用

常用软件安装方式

软件的安装在linux下主要分为两种。一种是通过包管理器例如ubuntu的apt-get xxx,另一种是自己手动安装。通过包管理器安装的,基本开箱即用,无需配置,但是存在一个问题,有时候无法安装最近的程序。例如,我现在用的是ubuntu14.04,在安装nodejs的时候,就无法安装到v8这个版本。此时就需要使用手动安装。

手动安装软件一般分为两种。

1. 已经编译好的binary文件

这种一般会以tar.gz压缩包的形式给出。下载下来后,一般的软件,解压后,在bin目录会有可执行的文件或者是脚本,双击运行即可。如果是开发环境这类的软件,或多或少需要配置,例如mysql、nodejs等。数据库类的需要配置相关的服务和环境变量。其他的一般也需要配置环境变量,才能在terminal中使用。

2. 需要自己进行编译安装

下载到的压缩包一般是源码,或是自己去github下。然后通过make、make install等命令来安装。

下面列出常用的软件安装方法。

sublime text

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

但是sublime text本身不支持中文的输入。具体配置请看链接,或者直接使用vs code吧。

解决Ubuntu下Sublime Text 3无法输入中文

vs code

https://code.visualstudio.com/Download下载deb,直接安装。

pycharm

  1. http://www.jetbrains.com/pycharm/download/下载最新版本的压缩包。
  2. pycharm-2017.1.tar.gz放到安装的目录下,建议 /opt
  3. 解压。tar -xzf pycharm-2017.1.tar.gz
  4. 运行bin目录下的pycharm.sh

DrClient

部分学校需要用到dr.com来进行拨号上网。

  1. 从校园网上下载linux版本的DrClient客户端,切记在linux下进行解压。
  2. sudo sh privillege.sh
  3. 运行DrClientLinux即可。

参考文献

linux里的那么点东西(持续更新)的更多相关文章

  1. 开发常用Git/Linux/idea命令快捷键总结(持续更新)

    在开发过程中,会使用越来越多的命令,或快捷键,来帮助我们提高工作效率.本文记录了我在平时积累的常用命令,分享给大家. git命令 基本命令 set LESSCHARSET=utf-8 --idea T ...

  2. Linux相关——记录gdb基本操作(持续更新)

    -----------2018.9.26更新标记----------- gdb的确是个很强大的东西啊,这里记录一下gdb的基本操作吧 后续可能会补充,但暂时感觉够用了就不写多了. 首先是ubuntu终 ...

  3. linux下的一些操作(持续更新)

    文件操作 创建文件夹: mkdir 文件夹名称 查看当前目录的文件夹及文件:ls 参看当前文件夹下的所有文件及信息: ls -l 删除空文件夹:rmdir 文件夹名称 删除非空文件夹:rm rf 文件 ...

  4. Linux系统安装使用实录--传送门(持续更新)

    1.安装Linux系统 经过两种系统对比,发现ubuntu的资源依赖更方便更全,  centos安装时可以配置开发环境,默认有安装的jdk,这一点比Ubuntu方便一点. win10+centos  ...

  5. 观【史上最牛linux视频教程】整理笔记,持续更新……

    //文件处理命令 命令格式:命令 [-参数] [参数] 例:ls -la /etc -a等于--all //目录处理命令:ls 英文原意:list 所在路径:/bin/ls 语法:ls 选项[-ald ...

  6. linux运维安全工具集合[持续更新中..]

    lynis 安全漏洞检测工具    https://cisofy.com/download/lynis/    https://cisofy.com/files/lynis-2.2.0.tar.gz ...

  7. linux系统最常用命令(持续更新)

    1.重启服务器 ubuntu系统重启apache:/etc/init.d/apache2 restart linux重启nginx: service nginx restart 重新加载:servic ...

  8. Linux软件开发常用的软件包(持续更新中)

    下面是Linux开发常用的软件包: 软件包的名称 作用描述 安装方式 build-essential   sudo apt-get install build-essential policycore ...

  9. Linux下遇到的操作 (持续更新……)

    1.作业让写一个输入输出重定向,管道联接.这里要讲的不是这个而是 我当时想写个程序来演示这些功能:但我发现我的虚拟机中没有装GNU不能用g++命令,然后就惊奇的发现Linux命令行可以直接联网下载安装 ...

随机推荐

  1. index_merge引发的死锁排查

    概述 前几天排查了一个死锁问题,最开始百思不得其解,因为发生死锁的两个事务是单语句事务,语句类型相同(where属性列相同,仅值不同),而且语句都走了相同的索引,但最终确实发生了死锁.通过定位排查发现 ...

  2. 每天一个Linux命令(01)--ls命令

    ls命令是Linux下最常用的命令.ls命令就是list的缩写,缺省下ls用来打印当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单.通过ls命令不仅可以查看Linux文件 ...

  3. PDO预处理语句规避SQL注入攻击

    所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存 ...

  4. webpack从0开始---(一)

    换了新环境,同时也有了新目标,从webpack开始. webpack:具体是什么,大家还是自行去看吧,这里就不多做介绍了! 传送门---webpack.github.io 网上的安装方法很多,这里我就 ...

  5. 项目架构开发:数据访问层之Query

    接上文 项目架构开发:数据访问层之Repository 上一章我们讲了IRepository接口,这张我们来讲IQuery 根据字面意思就可以知道,这次主要讲数据查询,上一章我们只针对单表做了查询的操 ...

  6. 更改Debian Linux里面的EDT时区为CST时区

    Debian按默认安装,设置的是EDT时区.这样跟我们的系统就都对不上,因此得 改回CST. 只需要两步即可: 使用vi编辑/etc/timezone,把timezone文件的内容更改为:Asia/S ...

  7. KoaHub.js:使用ES6/7特性开发Node.js框架(2)

    介绍   KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async ...

  8. 1657: [Usaco2006 Mar]Mooo 奶牛的歌声

    1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 526  Solved: 365[Submi ...

  9. 2953: [Poi2002]商务旅行

    2953: [Poi2002]商务旅行 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 8  Solved: 8[Submit][Status] Desc ...

  10. springmvc框架原理

    1.  用户发送请求至前端控制器DispatcherServlet 2.  DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.  处理器映射器根据请求url ...