您的位置:首页 > 运维架构 > Shell

【Linux Shell编程】Part1(基础) Linux命令行

2017-03-19 20:58 495 查看
这里记录个人学习linux shell编程的相关学习笔记,操作系统为ubuntu16.04LTS,参考书籍linux命令行与shell脚本大全



一、基本bash shell命令

1、man 命令

man 命令用来访问linux系统上的手册页面,在想要查找的工具名称前面加man,就可以找到那个工具相对应的所有手册条目。如查看ls下对应的手册条目:man ls



例如:man sudo

按q退出书册查看界面**

想不起命令的时候,可以参考man查找的对应内容。

2、文件和目录列表

访问基本用ls,

ls -F可以轻松区分文件和目录。

另一个常用的是ls -l,可以访问文件权限、属性、类型、大小等其他信息

过滤输出列表,如果只想查看某个相关文件,可以输入关键词,ls -l 关键词

有以下两种形式,关键词+?表示以关键词命名+一个字符的相关所有文件;

关键词+*表示匹配含有关键词在内的文件名。

创建文件:touch 文件名

复制文件:cp 源对象 目标对象(复制的是文件,不能是目录,即文件夹)

复制整个目录:cp -R dir1 dir2

链接文件:硬连接 cp -l file1 file2软链接(符号链接):cp -s file1 file2。链接是一种虚拟副本,和复制的多份单独的物理文件不同,用于维护系统上的文件,,链接是目录中只想文件真实位置的占位符,因此占空间很小。

重命名文件:mv filename filenam1 。linux系统中,重命名文件称为移动-moving,用来将文件或者目录移动到另外一个位置。重命名后,原来指向该文件的软连接将失效。

删除文件:linux的删除叫做移除removing。rm 文件名删除非空目录,采用递归-r的方法:rm -r dir;删除空目录 rm dir;文件被删除后,软连接文件将不存在,而硬连接文件依然保存文件内容。

删除指定后缀名的文件:find . -name “*.o” | xargs rm -f(以后缀名.o为例)

创建目录:mkdir dir;

3、查看文件内容

stat filename,可以查看文件内部内容;

cat filename;然后cat命令一旦执行就无法停止,若文件内容过多则会一直输出。可采用more来弥补这个缺陷,more会显示文本文件的内容,但是会在显示每页数据之后停下来。命令:more filename

q退出,显示一页后停止,按回车继续查看后续内容。

less命令为more的升级版本,less filename。less可以显示文件内容而不读取整个文件,这是cat和more的最大缺陷。less每次只显示一屏文件文本,并且提供文件行数和当前显示行号信息。less支持more的所有参数,可以识别上下键进行翻页(正确配置终端的情况下),这样保证可以对文件有完全控制权。

查看部分文件: tail filename,默认显示文件末尾10行。可以用参数指定行数,tail filename -n lines 显示文件最后n行;tail filename-n bytes,显示最后n个字节。head与tail对应,显示文件开头的内容:如 head filename -n lines

二、ssh远程操作

登录 ssh 用户名@远程ip地址,然后输入密码即可远程访问。

ssh远程使用jupyter notebook:

参考:远程访问jupyter notebook

1、登陆远程服务器

$ssh 用户名@远程ip地址


2、生成配置文件

$jupyter notebook --generate-config


3、 生成密码

打开ipython,创建一个密文的密码:

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274'
#将上面的加密字符串复制


4、修改默认配置文件

$vim ~/.jupyter/jupyter_notebook_config.py


进行如下修改:

c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #随便指定一个端口如8888


5、启动jupyter notebook:

$jupyter notebook


6、远程访问

此时应该可以直接从本地浏览器直接访问http://远程IP地址:8888

就可以看到jupyter的登陆界面。

补充:建立ssh通道

如果登陆失败,则有可能是服务器防火墙设置的问题,此时最简单的方法是在本地建立一个ssh通道:

在本地终端中输入ssh username@远程的ip地址 -L127.0.0.1:1234:127.0.0.1:8888

便可以在localhost:1234直接访问远程的jupyter了。

ssh本地与服务器传输文件

参考ssh传输文件

1、从服务器上下载文件

scp username@servername:/path/filename /var/www/local_dir(本地目录)

例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2、上传本地文件到服务器

scp /path/filename username@servername:/path

例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3、从服务器下载整个目录

scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

例如:scp -r root@192.168.0.101:/var/www/test /var/www/

4、上传目录到服务器

scp -r local_dir username@servername:remote_dir

例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录

三、linux系统管理

1、进程管理 ps查看状态,top查看实时进程状态;kiil/killall结束进程;

2、磁盘管理:mount挂载情况,umount取消挂载,磁盘空间检测:df -h,目录空间du -h

3、数据管理:排序sort;搜索grep:在文件中检索关键词 grep key filename

4、数据压缩:linux压缩文件有很多方式 bunzip2/gzip filename;压缩后查看 bzcat filename。压缩zip**zip 如testzip test**

5、数据归档:tar -xvf test.tar 解压缩;tar -xvf test.tar test1/ test2/ (将test12目录归档为一个压缩包)

四、linux环境变量

查看全局变量:printenv(bash shell已设置);

显示单个环境变量的值 :echo $HOME(以HOME为例);

查看局部变量:set

1、设置环境变量

a、局部环境变量设置:局部变量仅在当前shell有效

test=zq

echo $test(可以看到zq输出)

bash(创建新的shell,exit推出当前shell)用过后就消除了test;

b、全局

使用export完成,先创建局部,再导入全局变量中。

test=zq

echo $test

export test(使用bash不会消失)

2、删除环境变量

unset 变量名

3、添加path环境变量

PATH=$PATH:/home/yourname/yourpath(.代表当前目录)

登录linux系统时,bash shell会作为登录shell启动,登录shell从四个启动文件里读取命令,分别是/etc/profile;HOME/.bashprofile;HOME/.bash_login;$HOME/.profile。第一个为bash shell主启动文件,另外3个为用户专有的,根据需求定制。

4、使用命令别名

查看已有的别名列表 alias -p

创建自己的命令别名:alias li=’ls -il’(输入li等价于ls -il)

定义的别名仅仅在定义它们的shell中有效,如果永久创建需要修改.bashrc文件。

五、linux文件权限

linux各用户密码信息存储在/etc/passwd里,用户记录在/etc/shadow里。

1、添加新用户:useradd;useradd -D显示添加用户采用的默认值。

删除用户 userdel;

修改用户 usermod 修改密码 passwd/chpasswd;

2、linux组

系统允许一组用户共享资源 /etc/group 文件信息包含:组名,组密码,GID,该组下的user list。

Groupadd groupmod 等命令。

3、改变权限

改变某个文件的权限:chmod [options] mode file

补充:mkdir创建文件夹 touch file 创建空文本文档。

文件管理系统与安装软件程序章节略过

创建分区 sudo fdisk /dev/sdc

六、编辑器

当创建shell脚本时需要文本编辑器,这里只介绍当下最流行的vim和方便使用的图形化界面gedit。

1、Vim (alias vi=’vim’)

vi filename(查看或创建某个文件)

光标:h j k l 分别对应左、下、上、右;g 最后一行 ,gg第一行

编辑:a 插入模式,esc退出。 u撤销前一条编辑命令,x删除当前光标所在字符,dd删除所在行。

复制粘贴:复制y(yank) 粘贴p;采用可视模式输入v,方便复制粘贴。

查找替换:查找 /,输入关键词 n下翻,N上翻;替换 :s/old/new 光标跳到old的位置用new来替换。

替换命令: (1):s/old/new/g 一行替换所有的old为new(2):%s/old/new/g 替换整个文件中所有old

Emacs、KDE编辑器略过。

2、GNOME编辑器

采用gnome作为桌面环境,就会用到一个图形化文本编辑器gedit。

Gedit factorial.sh myprog.c 启动;gedit支持一些插件,可以拓展其功能。因为是图形化编辑器,这里就不多说了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: