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

网络操作:

远程操作:

自己电脑上的程序要放到服务器上,可以花10$每个月买一台VPS服务器,在服务器上装上ubuntu server系统。

ssh:可以认为是互联网上两台机器互联的一种协议,需要服务器端开22端口,就如http协议需要开80端口。除了开22端口,还需要服务器端和客户端装相应的ssh软件。

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

买服务器的时候,会给一个ip,可以给这个ip绑定一个域名。

在desktop上可以这样连接服务器:$ ssh 服务器上的用户名@域名或者ip 输入密码以后就可以在服务器上操作了。

ctrl+d可以退出服务器。

每次输入密码比较烦,可以在本地上输入$ ssh-keygen 然后在.ssh下可以得到公钥(id_rsa.pub)和私钥(id_rsa)。仍然在.ssh下运行 $ ssh-copy-id 服务器上的用户名@域名或者ip。以后就不要在输入密码了。

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

数据传输:

rsync: 本地和远端同步数据用的。如果ssh能用,rsync就能用。

上传使用:

$ rsync -r 本地目录 服务器上的用户名@域名或者ip:服务器上路径

就可以把本地的目录上传到服务器路径下。注意本地目录后面不能有/

下载只需要交换上面两个参数的位置即可

如何同步本地增加的文件:

$ rsync -av mydir/ 服务器上的用户名@域名或者ip:服务器上路径/mydir/

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

如何同步本地既有增加又有删除的文件:

$  rsync -av --delete mydir/ 服务器上的用户名@域名或者ip:服务器上路径/mydir/

为了防止误删除一些文件,可以先执行:

$  rsync -av --delete mydir/ 服务器上的用户名@域名或者ip:服务器上路径/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自己服务器上搭建一个软件仓库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 远程用户名@ip或者域名  ‘要执行的脚本或者命令‘

确认执行:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-01 17:08:29

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

Linux命令学习笔记目录

Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 2.linux命令学习笔记(2):cd命令 3.linux命令学习笔记(3):pwd命令 4.linux命令学习笔记(4):mkdir命令 5.linux命令学习笔记(5):rm 命令 6.linux命令学习笔记(6):rmdir 命令 7.linux命令学习笔记(7):mv命令 8.linux命

linux命令学习笔记-持续更新版

shell 获取前一条命令是否执行成功 if [ $? -eq 0 ];then   echo "success" fi linux命令学习笔记-持续更新版

Linux命令学习笔记1

1.Linux命令学习 2.Mkdir /data       -创建文件夹 在/下创建文件夹 data 3.Cd               -目录切换 列如cd / 4.Touch /data/1.txt  -创建当前目录下文件 5.vi /data/1.txt     -编辑器编辑当前文件 i -进入编辑模式  esc键退出编辑模式  :wq -保存 6.vim /data/1.txt    -高级编辑器 7.cat /data/1.txt     -查看文件 -特殊用法: cat >>

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

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作, 这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的, 考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {} 花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中 只允许-ex

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

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1. 命令格式: cd [目录名] 2. 命令功能: 切换当前目录至dirName 3. 常用范例 3.1 例一:进入系统根目录 命令: cd / 输出: [[email protected] ~]# cd / 说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了 命令: c

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

前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令. 一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似, 当安装完成操作

Linux 命令学习笔记

1. touch filename  新建一个文件 2. readlink -f  filepath 追踪符号链接的真实文件路径 3. id -u 获得当前用户的id,如果id是0,则表明是root用户,否则为一般用户 4. echo $? 输出前一个命令的结束状态,如果为0,则执行成功,否则执行失败 6. sudo -i  切换到root用户 7. root用户下,exit 切换到普通用户, 或者 su - userName 8. 复制文件 cp -a source  destination

linux命令学习笔记(32):gzip命令

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间. gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用来压 缩大的.较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格 式.据统计,gzip命令对文本文件有60%-70%的压缩率. 1.命令格式: gzip[参数][文件或者目录] 2.命令功能: gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后

linux命令学习笔记(34):du 命令

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看, 还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes 以KB(1024b