Linux常用shell命令

1.>>>>>刚安装好的ubuntu需要为root创建密码
【解决】
passwd root


2.>>>>>安装完ubuntu后需要更新
【解决】
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade


3.>>>>>ubuntu vi不能正常使用方向键与退格键的问题
【解决】
ubuntu预装的是vim tiny版本,而需要的是vim full版本,sudo apt-get install vim


4.>>>>>ubuntu远程登录不了
【解决】
第一步 检测是否真的启用了SST -server
使用命令 ps -e |grep ssh

如果只有ssh-agent, 没有sst-server

则说明ssh-server还没有安装或者没有启用.需要检验一下它是否真的被安装到了你的ubuntu上。(默认情况下是没有被安装的)
第二步 检验是否安装了 SST -server
在终端中输入命令:/etc/init.d/ssh start,如果在返回结果中看到sshd那说明ssh-server已经启动了。
第三步 安装 SST -server
在终端中输入命令 :sudo apt-get install openssh-server

Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。

然后确认sshserver是否启动了:

ps -e |grep ssh


5.>>>>>创建samba用户
【解决】
安装samba:
sudo apt-get install samba
sudo apt-get install smbclient
sudo smbpasswd usrname
Samba服务器的启动、关闭和重启
启动Samba服务器只需执行如下命令:
#sudo /etc/init.d/samba start
关闭Samba服务器:
#sudo /etc/init.d/samba stop
重新启动Samba服务器:
#sudo /etc/init.d/samba restart
#sudo service smbd restart
启动Samba服务器后,可以使用ps命令查看进程:
#ps -aux

配置samba账户
[andy]
comment = andy samba
path = /home/andy
browseable = yes
writeable = yes
valid users = andy
admin users = andy


6.>>>>>两台ubuntu计算机相互传输文件
【解决】
查看防火墙状态:
/etc/init.d/iptables status
若防火墙启用,暂时关闭防火墙:
/etc/init.d/iptables stop
检查两台linux系统服务器网络是否通畅。
在A上pingB。
保证两台linux服务器网络是畅通的。
在本地A拷贝远端的服务器B上的文件:
scp root@[B的ip地址或主机名]:[B上存放文件路径] /文件 [A上存放的文件路径]
如:scp root@192.168.3.58:/home/oracle/test.sql /home/oracle
在本地A拷贝远端的服务器B上的文件夹及文件夹下的文件:
scp -r root@[B的ip地址或主机名]:[B上存放文件路径] [A上存放的文件路径]
如:scp -r root@192.168.3.58:/test /test


7.>>>>>使用rsync命令从网络服务器下载代码
【解决】
rsync –avz rsync://10.10.10.254/iSDK/ /home/iSDK/


8.>>>>>在ubuntu下安装rpm包
【解决】
下载rpm包后,可以通过安装 fakeroot 和 alien 工具将 rpm 包转换为 deb
包, 安装命令为: sudo apt-get install alien fakeroot
使用 alien 将 rpm 包转换为 deb 包:fakeroot alien package.rpm
一旦转换成功,我们可以即刻使用以下指令来安装:sudo dpkg -i package.deb


9.>>>>>修改下载源镜像
【解决】
可以使用以下列表中的任何一个源镜像只要往 /etc/apt/sources.list 文件中像下面这样添加一行:
deb http://cz.archive.ubuntu.com/ubuntu utopic main universe

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine

安装好的软件也可以直接到這裏找 deb 檔案 (如果還未被移除的話)
sudo ls -al /var/cache/apt/archives/


10.>>>>>编译vlc开源代码
【解决】
1.下载vlc源码包
sudo apt-get install vlc
2.把源代码解压之后也是先运行一下bootstrap,看看缺什么工具没有,例如gcc、make、libtool、automake、autoconfig等是否有合适的版本
#sudo apt-get build-dep vlc
3.安装必须的工具包否则后面会出错
#apt-get install autoconf automake libtool git subversion
4.安装最新的VLC
#cd /home/git_work
#git clone git://git.videolan.org/vlc.git
5.配置环境
./configure --prefix=/home/andy/project/git_work/vlc/ (指定make install 要安装的目录)
6.如果显示错误,则分别安装下面的软件
sudo apt-get install liblua5.2
sudo apt-get install libxcb-shm0-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavformat-dev
sudo apt-get install libswscale-dev
sudo apt-get install libpostproc-dev
sudo apt-get install liba52-dev
sudo apt-get install libxcb-xv0-dev
7.然后执行下面的命令
./configure --disable-lua --disable-mad --disable-avcodec --disable-avformat --disable-swscale --disable-postproc --disable-a52
然后执行make


11.>>>>>ubuntu下格式化U盘
【解决】
首先执行sudo fdisk -l查看你的u盘的序号,通常是/dev/sdb之类的,U盘分区通常是/dev/sdb1
对于u盘我们一般格式化为FAT格式或者FAT32格式,不过在linux下这些会都显示为FAT格式。我们只需要执行命令:
sudo mkfs.vfat -F 32 /dev/sdb1即可将u盘格式化为fat32格式。
假如你要把指定磁盘格式化为NTFS格式那么你需要sudo apt-get install ntfsprogs来安装ntfs读写工具,然后执行sudo mkfs.ntfs /dev/sda1,此过程会很慢。对于要格式化为linux ext格式的分区就更容易了:
sudo mkfs.ext4 /dev/sda1 # 格式化为ext4分区
sudo mkfs.ext3 /dev/sda1 # 格式化为ext3分区
sudo mkfs.ext2 /dev/sda1 #格式化为ext2分区
PS:对于要格式化的分区必须要先用umount卸载掉才能格式化哦。


12.>>>>>安装doxygen工具
【解决】
apt-get install doxygen doxygen-gui graphviz
http://www.doxygen.org/官网
使用命令:doxywizard


13.>>>>>ubuntu脚本sh默认使用dash,建议使用bash
【解决】
ls -al /bin/sh可以查看当前使用哪种方式,sudo dpkg-reconfigure dash命令选择NO选项改为Bash


14.>>>>>设置网络IP、mask、GW
【解决】
ifconfig eth0 10.8.11.245 netmask 255.255.248.0
route add default gw 10.8.8.1
LC640415040000000020


15.>>>>>修改默认进入图形界面
【解决】
每次都进入unity界面再进入命令行很不方便,不需要界面的话,可以通过设置来开机进入命令行模式。
命令:sudo vi /etc/default/grub找到这一行
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 改成 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"
在输入命令:sudo update-grub
开机后就自动进入tty1了。


16.>>>>>使用git命令下载json-c代码并编译
【解决】
下载命令:
$ git clone https://github.com/json-c/json-c.git ./
$ cd json-c
$ sh autogen.sh
编译命令:
$ ./configure
$ make
$ make install
运行test程序:
$ make check
If your system has pkgconfig , then you can just add this to your makefile :
CFLAGS += $(shell pkg-config --cflags json-c)
LDFLAGS += $(shell pkg-config --libs json-c)


17.>>>>>编译命令
【产测】
source build.sh husky HEAD mtest /home/andy/project/xtest/trunk/output
【SDK】
source mickey_build.sh /home/andy/project/bcm7583/trunk/output_mickey/ mickey


18.>>>>>shell脚本通配符 $* $@ $#
脚本名称叫test.sh 入参三个: 1 2 3运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)

$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]


19.>>>>>Ubuntu终端里面显示路径名称太长, 修改只显示当前目录
【解决】
$: sudo vi ~/.bashrc 这个文件记录了用户终端配置
找到
if [ "$color_prompt " = yes ]; then
PS1 ='${debian_chroot:+($debian_chroot)}
else
PS1 ='${debian_chroot:+($debian_chroot)}u@h: ——————W —修改这个——————— $ '
将红色的w由小写改成大写,可以表示只显示当前目录名称.


20.>>>>>挂在nfs文件系统
【解决】
mount -t nfs -o rw 10.140.133.9:/export/homesky /mnt/nfs
首先安装nfs-kernel-server:apt-get install nfs-kernel-server
然后创建一个目录:mkdir -p /opt/share
并赋予权限777:chmod -R 777 /opt/share
在/etc/exports文件中添加配置:/opt/share 10.112.18.0/255.255.255.0(rw,no_root_squash)
在/etc/hosts.allow中添加配置:portmap:10.112.18.0/255.255.255.0
在/etc/hosts.deny中添加配置:portmap:ALL

重新启动两个服务:service portmap restart
service nfs-kernel-server restart

在另一台Ubuntu上安装nfs-common:apt-get install nfs-common
然后创建目录test:mkdir ~/test
然后运行测试命令看一下:# showmount -e 10.112.18.158
Export list for 10.112.18.158: /opt/share 10.112.18.0/255.255.255.0
找到nfs server的挂载目录了。现在手工挂载:mount -t nfs4 10.112.18.158:/opt/share ~/test/
现在可以测试了,应该成功。


21.>>>>>设置虚拟机静态IP
【解决】
1、配置静态IP地址:
# vim /etc/network/interfaces
原内容有如下4行:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
以上表示默认使用DHCP分配IP,修改为如下:
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
#iface eth0 inet dhcp

iface eth0 inet static
address 192.168.80.129
netmask 255.255.255.0
gateway 192.168.80.2
保存退出。
注意:只需要设置address(IP地址)、netmask(子网掩码)、gateway(网关)这三项就OK,network和broadcast这两项参数是可以不写的。
2、手动设置DNS服务器:
# vim /etc/resolv.conf
添加如下内容(这点所有Linux发行版都通用):
nameserver 192.168.80.2
nameserver 8.8.8.8
保存退出。
注意:重启Ubuntu后发现又不能上网了,问题出在/etc/resolv.conf。重启后,此文件配置的dns又被自动修改为默认值。所以需要永久性修改DNS。方法如下:
# vim /etc/resolvconf/resolv.conf.d/base
nameserver 192.168.80.2
nameserver 8.8.8.8
3、重启networking服务使其生效:
# /etc/init.d/networking restart
这样网络配置就永久生效。


22.>>>>>apt-get命令参数使用
【解决】
  apt-cache search package 搜索包
  apt-cache show package 获取包的相关信息,如说明、大小、版本等
  sudo apt-get install package 安装包
  sudo apt-get install package - - reinstall 重新安装包
  sudo apt-get -f install 修复安装"-f = --fix-missing"
  sudo apt-get remove package 删除包
  sudo apt-get remove package - - purge 删除包,包括删除配置文件等
  sudo apt-get update 更新源
  sudo apt-get upgrade 更新已安装的包
  sudo apt-get dist-upgrade 升级系统
  sudo apt-get dselect-upgrade 使用 dselect 升级
  apt-cache depends package 了解使用依赖
  apt-cache rdepends package 是查看该包被哪些包依赖
  sudo apt-get build-dep package 安装相关的编译环境
  apt-get source package 下载该包的源代码
  sudo apt-get clean && sudo apt-get autoclean 清理无用的包
  sudo apt-get check 检查是否有损坏的依赖


23.>>>>>64bit系统兼容32bit问题
【解决】
使用64bit系统编译时遇到很多兼容性问题,需要安装以下兼容库,
sudo apt-get install ia32-libs, 如果提示无法安装此库可以安装下面几个兼容库
sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 lib32bz2-1.0


24.>>>>>linux下svn递归添加文件
【解决】
svn st | awk '{if ($1 == "?") {print $2} }' | xargs svn add
svn add . --no-ignore --force


25.>>>>>海思项目出现异常编译错误
【解决】
“DoorBell HD”目录不能带空格;

26.>>>>>ubuntu静态IP不能上网问题
【解决】
sudo vi /etc/network/interfaces
添加如下内容:
iface eth0 inet static
address 192.168.1.122
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 202.106.0.20
sudo /etc/init.d/networking restart
sudo reboot
ifconfig检查是否设置正确
ping www.baidu.com检查是否可以联网

原文地址:https://www.cnblogs.com/liudeen/p/10157015.html