这个页面主要记录一些Linux操作系统的知识
参考下图:
补充:对于文件来说,“x”表示是否可执行,但是对于文件夹来说,“x”代表是否可以进入。如果发现了“cd”到某个目录失败提示无权限,那就是这个原因。
表示除了owner和group之外,其他人员也拥有写的权限,是不合理的,保持其他人仅可读是多用户共享文件的合理设置。
设置770的原因是,既要保证自己和用户组能够读、写、进入,又不能让其他用户读、写、进入(否则bash下文件夹背景为绿色,很烦)。
设置665的原因是,从安全角度讲,一般的文件都不应该能够执行,在bash环境下,可执行文件绿色,就很烦。
问题:如果直接在终端运行某个gui程序,终端会阻塞直到gui关闭,例如运行gitk。 那么如何运行程序,并且不阻塞终端呢? 解法:
du表示disk usage,-h参数表示使用人类可读的单位,即KB,MB,GB为单位,如果不设置这个参数,得到的数字很奇怪,也不是以byte为单位的。-d表示递归的深度,如果只看当前目录,选择1,后面./就是目录位置。
这样的方式只会显示文件夹的大小,如果要显示文件的大小,用下面这个命令。
如何拷贝符号链接文件本身?
如果使用cp工具来拷贝符号链接(symbolic link),那么最终拷贝的是符号链接指向的文件,有的时候我们只想拷贝符号链接文件本身。
例如使用cmake&make工具链来构建的库文件,一般会得到符号链接a.so和真正的库文件a.so.1.0.0,在打包的时候,我们仍然想要保持符号链接+文件本身的使用方式。
如何实现呢?
很简单:cp -P
基于网络socket通信的时候,一个端口只能被一个应用程序监听,(实际上,端口的内在定义就是应用程序的标识)。
所以,在监听一个端口之前,如果这个端口已经被监听,那么再次监听会失败。
我们通常会想查看当前端口被那个应用程序监听,如何实现呢?
一种方式如下所示:
众所周知,ls工具会输出文件列表,但是有的时候我们想要的是文件的全路径,如何实现呢?
怎么查找名称带有“[”和“]”的文件?
find工具认为中括号有特定含义,即寻找从哪个字母到哪个字母开始的文件,如果确实要使用中括号,就应该使用转义字符。
使用find + rm 命令可以轻松删除特定文件,而且先find一遍,可以看看是否会误删其他文件,确认没问题之后再使用rm,即安全也高效。
压缩文件夹与解压文件
打包并压缩一个文件夹:
{.sh}
解压一个tar.gz压缩包到当前目录:
如果压缩的时候是一个文件夹压缩的,那么解压出来的也是一个文件夹。
UDP包:
http包
Linux操作系统下三种配置环境变量的方法
现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
(1)用文本编辑器打开/etc/profile
(2)在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH
(3)重新登录
a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录
b. linux下用冒号“:”来分隔路径
c. $PATH / $CLASSPATH / $JAVA_HOME
是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export
是把这三个变量导出为全局变量。
f. 大小写必须严格区分。
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。
(1)用文本编辑器打开用户目录下的.bashrc文件
(2)在.bashrc文件末尾加入:
set JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME set PATH=$JAVA_HOME/bin:$PATH export PATH set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH
(3)重新登录
不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。
只需在shell终端执行下列命令:
export JAVA_HOME=/usr/share/jdk1.5.0_05 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
参数“-f”表示“follow”,即当文件有更新的时候,追加打印更新的内容,这样一来,看log文件就和命令运行程序一样了。
这是一个工具的集合,很多比较简陋的嵌入式linux环境无法提供太多的工具,busybox就作为一个工具箱,提供丰富的工具支持,例如上述的tail命令。
script中的source命令是无效的! 所以,如果想要在script中source ~/.bashrc,也是无效的。 有点奇怪,有些说法是calling bash不受callee bash的影响。 所以想要source ~/.bashrc可以这样
直接原因是第一行结尾字符有问题,一般的源头是bash的脚本文件在Windows被重新编辑过,Windows和Linux下的换行是不同的字符表达的,回到Linux时就可能出错。
很多web应用需要用户提供账户和密码,如果一开始没有在web端设置好,或者说没有办法在web端设置,例如gerrit上http形式的仓库URL,交互程序一般会阻塞并弹出输入账户和密码的提示。 这样的交互有2点不好。 1.有些账户密码很长,还不能够自行设置,没错,说的就是gerrit的anomynous http地址,每次都要从gerrit上复制密码,降低效率。 2.自动化脚本,无法执行交互。 那有没有办法解决这个问题呢?其实是可以的,使用Linux自带的feature:.netrc文件,文件在<tt>~目录下 下面就是.netrc文件的内容示例。
无法通过delete将NTFS磁盘中的文件移动到回收站 Gnome中无法通过delete将NTFS磁盘中的文件移动到回收站,只能完全删除? 解决方法: 在/etc/fstab文件中加入uid=1000,例如:
注意,uid=1000是和default在通过逗号放在一起的,中间不能有空格,因为它们组成了一个参数,uid就是第一个用户的ID,一般是1000,如果不是第一个用户,则通过echo $UID来获取uid,修改完后重新启动即可。
apt-get是Debian系列操作系统的软件安装工具,这个工具可以连接网络已有的软件库,下载并安装所有的开源软件包,下面记录常用的命令和选项。
Monitor,只要在super键后输入monitor就可以查找得到了。
登录root账户后,使用passwd root命令来更改密码
ssh root@ -p 27217 104. 224.1 56.7 7
通过PPA源安装,仅支持Ubuntu 14.04或更高版本。
从官网上下载.run文件之后,使用chmod u+x xxx.run命令来将文件变成可执行文件,然后再使用./xxx.run来运行安装程序。
首先需要配置make文件所需要的平台相关变量,例如有什么其他依赖的库?这些库的路径是什么? 例如安装GSL库第一步:“./configure“,configure里包含着安装的目录在哪里,一般命名为install_prefix,Linux下默认安装在/usr/local目录里。
然后执行make命令,make自动寻找当前目录下的MakeFile文件,调用编译器对源代码进行编译。
最后使用make install来将编译好的二进制库文件复制到安装目录,并且添加环境变量。
卸载库:以GSL为例,只要在源码目录运行sudo make uninstall即可。
Windows平台下,“宋体”、“微软雅黑”、“Courier New(编程字体)”用的比较多,看的也习惯了。那如何在 Ubuntu下也安装这些字体呢?
操作步骤如下:
微软雅黑:msyhbd.ttf Courier New:courbd.ttf、courbi.ttf、couri.ttf 和 cour.ttf WPS Office 所需字体:wingding.ttf、webdings.ttf、symbol.ttf、WINGDNG3.TTF、WINGDNG2.TTF、MTExtra.ttf
Gnome 3.10下的中文输入法: Linux下的输入法不同于Windows,Linux的输入法分为:输入法框架+输入法两个部分,首先我们需要安装好输入法框架,然后在基于不同的框架安装不同的输入法。 Linux的输入法框架主要有两种:ibus和fcitx,ibus即俗称的小企鹅输入法,是Ubuntu自带的输入法框架,但是网络上普遍认为ibus并不是很好用,很多情况都使用fcitx取代ibus,搜狗输入法就是一个典型的例子,它只支持fcitx框架。 之前在Ubuntu13.10里装过fcitx-sougoupinyin输入法,还挺好用的,现在转换到了Ubuntu Gnome 14.04,用的是Gnome 3.10,需要重新安装输入法。一开始我仍然想安装fcitx,但是发现gnome 3.10 无法识别fcitx的输入法(ibus的输入法就能正常的识别)。 尝试了一下决定还是使用ibus吧(后来发现ibus也没那么不好用),下面是ibus拼音输入法的安装流程:
apt-get是Debian系列操作系统的软件安装工具,这个工具可以连接网络已有的软件库,下载并安装所有的开源软件包,下面记录常用的命令和选项。
安装
使用:
在linux上,一般输入法会默认全角,打出来的英文字符很大,而且不是普通的英文字符,无法被匹配到,这时候需要切换为半角,不太懂全角的意义是什么。
全角半角切换方法:shift+space
切换中英标点符号方法:ctrl+.
前言:为了安全,一般桌面版的linux操作系统是默认不安装ssh服务的,如果要基于ssh连接到某台桌面linux电脑,需要手动设置。
方法:
前言:kill命令没有根据进程的名字来杀死进程的方法,需要自行写几句脚本根据进程名称找出PID,然后在杀死,具体方法如下所示。
其中:
(1) top -n 1 -b
表示显示所有进程,并且不进入交互界面,直接printf所有进程。
(2) grep -o
表示把所有匹配出来的结果列出来,列出时每一个match的内容会占一行。
(3) head -1
表示取第一行的内容。