Evan Blog

The journey is the reward

环境变量

修改当前用户

vim ~/.bashrc

例:设置java环境变量

#set oracle jdk environment
export JAVA8=/usr/lib/jvm/jdk1.8.0_191
export JAVA7=/usr/lib/jvm/jdk1.7.0_80
export JAVA_HOME=${JAVA7}
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export PATH=/usr/appengine/appengine-java-sdk-1.9.66//bin:$PATH
export PATH=/usr/apache-ant-1.9.13//bin:$PATH
export PS1="\[\e[32m\]\w\[\e[m\]\[\e[32m\] >\[\e[m\] "

使环境变量马上生效:

source ~/.bashrc

用于所有用户:

sudo vim /etc/profile
source /etc/profile

测试当前环境变量:

echo $PATH 或 env

解压

类型 解包命令 打包/压缩命令
tar tar xvf tar cvf
gz gunzip gzip -d
tar.gz tar zxvf tar zcvf
zip unzip zip
rar rar x rar a

linux下unzip的乱码问题 unar方法 这个工具会自动检测文件的编码,也可以通过-e来指定

sudo apt install unar
unar your-zip

文件管理

文件查看

命令 解释
ls -l 列出文件列表
ls -a 浏览隐藏文件
ls -lh 以易读方式显示大小
ls -F 列出文件和目录
ls -R 递归出子目录
ls -ltr 以修改时间排序
ls -ls 以文件大小排序
复制:
cp  [options] <source file or directory> <target file or directory>

options选项

options 解释
-a 保留链接和文件属性,递归拷贝目录,相当于下面的d、p、r三个选项组合
-d 拷贝时保留链接
-f 删除已经存在目标文件而不提示
-i 覆盖目标文件前将给出确认提示,属交互式拷贝
-p 复制源文件内容后,还将把其修改时间和访问权限也复制到新文件中
-r 若源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件
-l 不作拷贝,只是链接文件
-s 复制成符号连结文件 (symbolic link),亦即『快捷方式』档案
-u 若 destination 比 source 旧才更新 destination

剪切:

mv 剪切

删除:

rm 删除
rmdir
# 强制删除
rm -rf

文件搜索

语法

find path -option [ -print ] [ -exec -ok command ] {} ; 参数说明 : find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去n天内被修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id 是 n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2

实例 将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

# find . -name "*.c"

将目前目录其其下子目录中所有一般文件列出

# find . -type f

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

# find . -ctime -20

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

# find . -type f -perm 644 -exec ls -l {} \;

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

权限管理

chmod -(代表类型) xxx(所有者) xxx(用户组) xxx(其它用户) 其他参数说明:

  • c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本
命令 解释
chmod 600 只有所有者读写权限
chmod 644 所有者读写权限,组用户只有权限
chmod 700 只有所有者读写执行权限
chmod 666 每个人读写权限
chmod 777 每个人读写执行权限

进程管理

查看进程号:

lsof -i:9999

关闭进程:

kill -2 785[进程号]

安装和卸载

deb文件 通过deb包安装软件:

sudo dpkg -i package_file.deb

卸载:

sudo dpkg -r package_name

注意,卸载时候是package_file.deb对应的package name 查找: 若不知道package name,可以通过

dpkg -l

若要查找对应的package,可以加通配符,如查找包含fox的package

dpkg -l  *fox*即可

磁盘管理

  • df:列出文件系统的整体磁盘使用量
  • du:检查磁盘空间使用量
  • fdisk:用于磁盘分区

df 检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息 语法:

df [-ahikHTm] [目录或文件名]
参数 选项
-a 列出所有的文件系统,包括系统特有的 /proc 等文件系统
-k 以 KBytes 的容量显示各文件系统
-m 以 MBytes 的容量显示各文件系统
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
-H 以 M=1000K 取代 M=1024K 的进位方式
-T 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
-i 不用硬盘容量,而以 inode 的数量来显示

网络管理

ubuntu设置静态ip以后忘记设置dns,ping的时候报错:Name or service not known 添加dns即可

vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

会话管理

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

语法

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

选项

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

常用screen参数

screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session