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

这里记录个人学习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支持一些插件,可以拓展其功能。因为是图形化编辑器,这里就不多说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值