操作文件和文件夹:

copy:

$ cp file1 file2
$ cp -r dir1 dir2

move:

$ mv file ..
$ mv file dir/

rename:

$ mv file1 file2
$ mv dir1 dir2 # dir2假设存在,则为移动操作

remove:

$ rm file
$ rm -r dir

创建文件:

$ touch a.txt
$ >a.txt

创建文件夹:

$ mkdir dir

查看文件:

#一般
$ cat file
#查看文件类型:
$ file a.txt
#创建和查看隐藏的文件/文件夹:
$ touch .a.txt 或者 mkdir .dir
$ ls -a
#分页查看文件:
$ less file
#ctrl ++:缩小 ctrl --:放大 j:向下滚屏 k:向上滚屏 /:字符查找 n:查找下一处 gg:文件头 G:文件尾 q:退出

*通配符

$ rm *.html #删除全部的html文件
$ echo a* # 看全部以a开头的文件

打包和压缩:

#zip文件
$ zip -r name.zip dir
$ unzip name.zip
#.tar.gz文件
$ tar zxvf name.tar.gz
$ tar zcvf name.tar.gz dir
#.tar.bz2文件
$ tar jxvf name.tar.bz2
$ tar jcvf name.tar.bz2 dir

重定向:

三个关键文件:

linux下全部的东西都是文件

文件描写叙述符: 0 标准输入文件 1 标准输出文件 3 标准错误输出文件

重定向的方式:

输出重定向符:> 每次重定向之前都会把文件清空 >> 追加内容到一个文件里

输出错误重定向符: 2>

输入重定向符:<

管道线:linux命令行的基石

管道线命令符:| 把符号前面的结果传给符号后面的命令作为其输入

用户和权限:

默认仅仅有在自己的主文件夹/home/usrname/下有写权限 其它的地方没有写权限(ctrl + a能够直接到命令的行首)

三种基本权限:

读:r 写:w 运行:x

多用户模式: owner group world

文件模式:

$ ls -l a.txt #对文件查看权限信息
$ ls -ld dir #对文件夹查看权限信息

对一个文件夹有写权限,意味着能够对里面的文件进行创建删除重命名等操作。可是对一个文件实用写权限并不拥有这些操作权限

对一个文件夹有运行权限。意味着能够cd进这个文件夹,文件夹在创建时 一般都有运行权限

chmod命令:

对三种用户模式下每一种文件权限都能够用1代表有改权限。0代表没有该权限

$ chmod 111110110 a.txt # owner有rwx group和world仅仅有rw权限

进程:

获取进程号:

PID就表示进程号

linux下粗略的能够觉得,用户每次运行一个新的程序。系统都会开启一个新的进程

ps命令:作用是报告系统上当前的进程状况

ps aux |less 查看全部的进程的进程号 $ ps aux |grep vim 查找vim的进程号

Alt + Tab能够在各个打开的程序直接切换

后台运行:

在后面加&符号。能够让程序在后台运行

假设已经打开程序了,补救的办法就是先用ctrl+z让程序暂停,回到命令行,然后输入bg命令。这样和加&一样。然后敲fg又回到前台,crtl + c关闭

kill:

$ kill pid号   # 程序在正常运行的时候实用,相当于加了 -2
$ kill -9 pid # 当程序跑飞了。强制终止

假设程序运行卡死了命令行界面。怎么办:

linux同一时候运行着7个工作台的,敲crtl + alt + F1到第一个工作台在这里输入命令杀死那个进程,然后敲crtl + alt + F7回到原来的工作台

查找:

locate:在系统全局范围内定位文件

locate不是在整个File system中定位文件。而是从一个database中定位文件,这也是locate运行非常快的原因。

另一个updatedb命令。负责将File system中的文件更新到database中。可是updatedb通常是每天运行一次。

导致locate 不可能找到新创建的那些文件。

补救办法:$ sudo updatedb 然后再 locate

find:在文件夹范围内定位文件

$ find dir #列出文件夹下的全部文件
$ find dir -type f # 仅仅看文件夹下的全部文件
$ find dir -type d # 仅仅看文件夹下的全部文件夹
$ find dir -type f -exec xxx '{}' ';' # xxx能够是各种系统命令,对找到的文件进行操作
$ find dir -type f -exec grep hello '{}' ';' -print # 在找到的全部文件里查找hello字符串。而且打印所在的文件的文件名称

grep:

$ grep hello #查找hello字符串
$ grep -n hello #而且显示出行号
$ grep -ni hello #显示出行号,并忽略大写和小写

ack grep:专门为程序猿在代码中查找的命令

将一个二进制文件移动到~/bin下,在整个系统中就能使用该命令了: $ rm xxx ~/bin

假设一个命令太长,能够到~/bin文件夹下 $ ln -s xxx y 就能够给xxx取一个别名y 以后用y就相当与用xxx

网络操作:

远程操作:

自己电脑上的程序要放到server上,能够花10$每一个月买一台VPSserver,在server上装上ubuntu server系统。

ssh:能够觉得是互联网上两台机器互联的一种协议,须要server端开22port,就如http协议须要开80port。除了开22port,还须要server端和client装对应的ssh软件。

ubuntu desktop版和ubuntu server版这两个都默认是装好的。

买server的时候,会给一个ip,能够给这个ip绑定一个域名。

在desktop上能够这样连接server:$ ssh server上的username@域名或者ip 输入password以后就能够在server上操作了。

ctrl+d能够退出server。

每次输入password比較烦。能够在本地上输入$ ssh-keygen 然后在.ssh下能够得到公钥(id_rsa.pub)和私钥(id_rsa)。仍然在.ssh下运行 $ ssh-copy-id server上的username@域名或者ip

以后就不要在输入password了。

tmux是一个非常好的远程操作防止断网和误操作中断通信,数据没有保存的软件。

传输数据:

rsync: 本地和远端同步数据用的。

假设ssh能用。rsync就能用。

上传使用:

$ rsync -r 本地文件夹 server上的username@域名或者ip:server上路径

就能够把本地的文件夹上传到server路径下。

注意本地文件夹后面不能有/

下载仅仅须要交换上面两个參数的位置就可以

怎样同步本地添加的文件:

$ rsync -av mydir/ server上的username@域名或者ip:server上路径/mydir/

这里v參数是为了显示运行过程 a參数是为了保留更加完整的文件信息

怎样同步本地既有添加又有删除的文件:

$  rsync -av --delete mydir/ server上的username@域名或者ip:server上路径/mydir/

为了防止误删除一些文件,能够先运行:

$  rsync -av --delete mydir/ server上的username@域名或者ip:server上路径/mydir/  --dry-run

先仅仅报告信息。再运行真正的同步操作。

软件安装:

手动安装:

下载编译好后的代码解压缩:

得到的文件夹放在一个不碍事的地方,最好放在一个隐藏文件夹下

echo $PATH #能够查看环境变量PATH。它的值是一系列由:隔开的文件夹。

仅仅须要把可运行文件放在PATH下的不论什么一个文件夹中,就能够成为一个系统可运行的命令了。

也能够不移动可运行程序本身。而是创建一个链接:$ ln -s 本来的可运行程序目标位置以及名字

自己下载源代码编译安装:

解压缩并切换到源代码文件夹

./configure
make
sudo make install

deb包:debian package

手动安装的问题:安装依赖 会给安装过程带来不便;安装的软件多的时候会忘记都在哪些位置安装了文件,卸载软件就成了一场噩梦

deb包 = 程序本身+配置文件+安装位置+依赖关系

HAPPYCASTS第十四期解说怎样将一个程序从源代码打成一个deb包

安装一个程序的deb包:$ sudo dpkg -i deb包

$ dpkg -l |grep chrome #能够查看全部安装过的chrome deb包
$ dpkg -L 包名 #看包安装了哪些文件
$ dpkg -S 文件名称 #看一个文件来自那个包

从apt-get仓库安装:

apt-get中底层包裹了dpkg

开源软件通常是以源代码包的形式放在github或者自由软件基金会上的,ubuntu公司会定期将这些源代码包打造成deb包,并在ubuntu自己server上搭建一个软件仓库apt repo,再把deb包上传到软件仓库中。

在ubuntu下安装软件非常方便。$ apt-get install 软件名 就能够安装好了

卸载软件:$ sudo apt-get remove 软件名

连配置文件一起删除:$ sudo apt-get purge 软件名

不知道精确的包名的时候。能够用: $ apt-cache search 貌似的软件名|less

apt-get 也会自己主动帮安装上依赖文件

脚本编程技巧:

指定解析器:

一般用bash作为解析器,所以在第一行要加上: #!/usr/bin/env bash 指明用bash解析以下的语句

可是不仅bash能够解析,python ruby等等都能够解析脚本 #!/usr/bin/env python 指明用python解析

语句即命令:

在命令行中的命令,放在脚本中就称为一个语句

命令在脚本中能够直接罗列。也能够包裹到一个函数中,通过呼叫函数名来运行命令:

say_hello(){ echo "hello" } 然后调用say_hello调用echo “hello”命令

命令对空格敏感,所以脚本语句对空格异常敏感

位置參数:

脚本运行的时候也能够输入參数。在脚本中接受參数用$符号 $#表示參数的个数 $0 脚本文件名称\ $1–\$n 用户提供的參数

脚本不在当前的shell运行:

脚本不是在当前的shell里运行的,而是新开了一个shell并在里面运行脚本的。

非要在当前shell中运行脚本,用source xx.sh

循环控制:

cd $1
for file in `ls`
do
****命令
done

脚本中导引好能够取出命令的输出 pwd

远程运行:

脚本中写:

$ ssh -t 远程username@ip或者域名  '要运行的脚本或者命令'

确认运行:

echo -n "Want to continue?

(Y/n)"
read AAA
if ["${AAA:-y}" = "y"];then
#调用函数
else
echo Nothing done, bye.
fi

linux命令学习笔记的更多相关文章

  1. Linux命令学习笔记目录

    Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...

  2. linux命令学习笔记(25):linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组. 最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loc ...

  3. Linux命令学习笔记1

    1.Linux命令学习 2.Mkdir /data       -创建文件夹 在/下创建文件夹 data 3.Cd               -目录切换 列如cd / 4.Touch /data/1 ...

  4. linux命令学习笔记(20):find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作, 这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...

  5. linux命令学习笔记( 2 ) : cd 命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. . 命 ...

  6. linux命令学习笔记(6):rmdir 命令

    今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录 被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.) ...

  7. linux命令学习笔记(49):at命令

    在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...

  8. linux命令学习笔记(50):crontab命令

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  9. linux命令学习笔记(46):vmstat命令

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动 进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行 ...

随机推荐

  1. Minimum Size Subarray Sum 解答

    Question Given an array of n positive integers and a positive integer s, find the minimal length of ...

  2. Bring Your Charts to Life with HTML5 Canvas and JavaScript

    Bring Your Charts to Life with HTML5 Canvas and JavaScript Bring Your Charts to Life with HTML5 Canv ...

  3. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  4. Unity 调用android插件

    1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...

  5. Riak VClock

    Riak VClock 关于向量时钟的概念.在这里就多讲了,大家能够參照一下Dynamo的论文了解一下,向量时钟在分布式主要用于解决一致性性问题.能够和CRDTs一起看. 以下的源码是參照riak中的 ...

  6. html css js 框架

    html css js 框架 Bootstrap http://www.bootcss.com/ http://www.cnblogs.com/aehyok/p/3404867.html        ...

  7. Follow-up letter to information seeking meeting, e-mail version

      Subject: (logical to recipient!) Thank you for meeting Tuesday, Nov. 23 November 26, 20XY Mr. Jame ...

  8. django学习笔记一

    django作为一个python的开源项目发布,其web框架采用了mtv设计模式 在目前一些较为成熟的大型网站中有不少网站的应用基于django开发,django作为一个重量型的web框架提供了以下的 ...

  9. DEVC++生成DLL的方法

    通过网上一个MD5加密算法源码生成DLL 一.建立DLL项目并编译 DEVC++创建C项目,选择DLL, 一共4个文件及源码如下: dll.h dllmain.c md5.c md5.h 函数参数: ...

  10. 从汇编看c++中指向成员变量的指针(一)

    在c++中,指向类成员变量的指针存储的并不是该成员变量所在内存的地址,而仅仅是该成员变量在该类对象中相对于对象首地址的偏移量.因此,它必须绑定到某一个对象或者对象指针上面,这里的对象和对象指针,就相当 ...