linux命令学习笔记
操作文件和文件夹:
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命令学习笔记的更多相关文章
- Linux命令学习笔记目录
Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...
- linux命令学习笔记(25):linux文件属性详解
Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组. 最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loc ...
- Linux命令学习笔记1
1.Linux命令学习 2.Mkdir /data -创建文件夹 在/下创建文件夹 data 3.Cd -目录切换 列如cd / 4.Touch /data/1 ...
- linux命令学习笔记(20):find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作, 这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...
- linux命令学习笔记( 2 ) : cd 命令
Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. . 命 ...
- linux命令学习笔记(6):rmdir 命令
今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录 被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.) ...
- linux命令学习笔记(49):at命令
在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...
- linux命令学习笔记(50):crontab命令
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- linux命令学习笔记(46):vmstat命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动 进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行 ...
随机推荐
- 如何区分监督学习(supervised learning)和非监督学习(unsupervised learning)
监督学习:简单来说就是给定一定的训练样本(这里一定要注意,样本是既有数据,也有数据对应的结果),利用这个样本进行训练得到一个模型(可以说是一个函数),然后利用这个模型,将所有的输入映射为相应的输出,之 ...
- bash及其特性(笔记)
bash及其特性:shell: 外壳GUI:Gnome, KDE, XfceCLI: sh, csh, ksh, bash, tcsh, zsh root, student程序:进程 进程:在每个进程 ...
- Redis 3.0集群 Window搭建方案
Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...
- 安装配置MongoDB数据库
一.关闭SElinux.配置防火墙 1.vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINU ...
- WINDOWS 下搭建 OC 集成开发环境
Objective-C是苹果软件的编程语言,想要上机学习.调试,有一个集成开发环境(IDE)方便很多.有三类方法搭建Objective-C的集成开发环境: 1) 使用苹果的平台,集成开发环境使用X ...
- CCCardinalSplineBy概念
cardianl 红衣主教 这个类是样条曲线动作, 其创建函数是CCCardinalSplineBy::create(float duration, cocos2d::CCPointArray *po ...
- Centos6.4在配置Tomcat7工作文件夹和虚拟路径
写在前面:网上博文非常多复制粘贴.我试过很不可能.所以我写了下面的测试版本. 1.tomcat设备 非常easy只需要下载tomcat7 tar包裹 运行命令:tar -zxvf tomcat-7.5 ...
- Android服务端本地窗口FramebufferNativeWindow
Android窗口系统 我们知道Android系统采用OpenGL来绘制3D图形,OpenGL ES提供了本地窗口(NativeWindow)的概念,无论是在Android平台中还是其他平台中,只要实 ...
- 线程:Java主线程等待子线程结束
使用Thread.join()方法: public class App { public static void main(String[] args) { testMain(); } public ...
- php中数字和字母生成随机字符串
function strrand($len) { $arr = array( "0", "1", "2", "3", & ...